aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorWei-Ning Huang <aitjcize@gmail.com>2018-11-09 14:16:06 +0800
committerWei-Ning Huang <w@byzantine-lab.io>2019-06-12 17:27:18 +0800
commit05498519b7815e0362978bdd1879a7aae805609d (patch)
tree74f4f38456b9d34ce726db13eaaa9d4c919885f7 /core
parent3911752697b6718fd8014146776378c465a8e88e (diff)
downloadgo-tangerine-05498519b7815e0362978bdd1879a7aae805609d.tar
go-tangerine-05498519b7815e0362978bdd1879a7aae805609d.tar.gz
go-tangerine-05498519b7815e0362978bdd1879a7aae805609d.tar.bz2
go-tangerine-05498519b7815e0362978bdd1879a7aae805609d.tar.lz
go-tangerine-05498519b7815e0362978bdd1879a7aae805609d.tar.xz
go-tangerine-05498519b7815e0362978bdd1879a7aae805609d.tar.zst
go-tangerine-05498519b7815e0362978bdd1879a7aae805609d.zip
core: genesis: make ToBlock() compatible with legacy ethereum code (#3)
Make ToBlock() compatible with legacy ethereum code so we can run tests normally.
Diffstat (limited to 'core')
-rw-r--r--core/genesis.go64
1 files changed, 36 insertions, 28 deletions
diff --git a/core/genesis.go b/core/genesis.go
index 38b8c360b..b444ea4fe 100644
--- a/core/genesis.go
+++ b/core/genesis.go
@@ -266,48 +266,56 @@ func (g *Genesis) ToBlock(db ethdb.Database) *types.Block {
totalStaked := big.NewInt(0)
for addr, account := range g.Alloc {
- if account.Staked == nil {
+ // For DEXON consensus genesis staking.
+ if g.Config != nil && g.Config.Dexcon != nil {
account.Staked = big.NewInt(0)
+ statedb.AddBalance(addr, new(big.Int).Sub(account.Balance, account.Staked))
+ totalStaked = new(big.Int).Add(totalStaked, account.Staked)
+ } else {
+ statedb.AddBalance(addr, account.Balance)
}
- statedb.AddBalance(addr, new(big.Int).Sub(account.Balance, account.Staked))
+
statedb.SetCode(addr, account.Code)
statedb.SetNonce(addr, account.Nonce)
for key, value := range account.Storage {
statedb.SetState(addr, key, value)
}
- totalStaked = new(big.Int).Add(totalStaked, account.Staked)
}
- // Move staked balance to governance contract.
- statedb.AddBalance(vm.GovernanceContractAddress, totalStaked)
-
- // Stake in governance state.
- keys := AllocKey{}
- for addr := range g.Alloc {
- keys = append(keys, addr)
- }
- sort.Sort(keys)
+ // For DEXON consensus genesis staking.
+ if g.Config != nil && g.Config.Dexcon != nil {
+ // Move staked balance to governance contract.
+ statedb.AddBalance(vm.GovernanceContractAddress, totalStaked)
- for _, addr := range keys {
- account := g.Alloc[addr]
- if account.Staked == nil {
- account.Staked = big.NewInt(0)
+ // Stake in governance state.
+ keys := AllocKey{}
+ for addr := range g.Alloc {
+ keys = append(keys, addr)
}
- if account.Staked.Cmp(big.NewInt(0)) > 0 {
- govStateHelper.Stake(addr, account.PublicKey, account.Staked,
- account.NodeInfo.Name, account.NodeInfo.Email,
- account.NodeInfo.Location, account.NodeInfo.Url)
+ sort.Sort(keys)
+
+ for _, addr := range keys {
+ account := g.Alloc[addr]
+ if account.Staked == nil {
+ account.Staked = big.NewInt(0)
+ }
+ if account.Staked.Cmp(big.NewInt(0)) > 0 {
+ govStateHelper.Stake(addr, account.PublicKey, account.Staked,
+ account.NodeInfo.Name, account.NodeInfo.Email,
+ account.NodeInfo.Location, account.NodeInfo.Url)
+ }
}
- }
- // Genesis CRS.
- crs := crypto.Keccak256([]byte(g.Config.Dexcon.GenesisCRSText))
- govStateHelper.PushCRS(common.BytesToHash(crs))
- // Owner.
- govStateHelper.SetOwner(g.Config.Dexcon.Owner)
+ // Genesis CRS.
+ crs := crypto.Keccak256([]byte(g.Config.Dexcon.GenesisCRSText))
+ govStateHelper.PushCRS(common.BytesToHash(crs))
- // Governance configuration.
- govStateHelper.UpdateConfiguration(g.Config.Dexcon)
+ // Owner.
+ govStateHelper.SetOwner(g.Config.Dexcon.Owner)
+
+ // Governance configuration.
+ govStateHelper.UpdateConfiguration(g.Config.Dexcon)
+ }
root := statedb.IntermediateRoot(false)
head := &types.Header{