From 7d53965dce0013f8c75a3ae556f57b8a22a484e6 Mon Sep 17 00:00:00 2001 From: Wei-Ning Huang Date: Thu, 18 Oct 2018 21:56:12 +0800 Subject: core: set governance owner in genesis --- core/genesis.go | 4 +++- params/config.go | 28 +++++++++++++++------------- params/gen_dexcon_config.go | 7 +++++++ test/genesis.json | 3 ++- 4 files changed, 27 insertions(+), 15 deletions(-) diff --git a/core/genesis.go b/core/genesis.go index a176deb00..c9f4e2499 100644 --- a/core/genesis.go +++ b/core/genesis.go @@ -255,7 +255,6 @@ func (g *Genesis) ToBlock(db ethdb.Database) *types.Block { govStateHelper := vm.GovernanceStateHelper{statedb} for addr, account := range g.Alloc { - fmt.Println(account) statedb.AddBalance(addr, new(big.Int).Sub(account.Balance, account.Staked)) statedb.SetCode(addr, account.Code) statedb.SetNonce(addr, account.Nonce) @@ -277,6 +276,9 @@ func (g *Genesis) ToBlock(db ethdb.Database) *types.Block { govStateHelper.Stake(addr, account.PublicKey, account.Staked) } } + // Owner. + govStateHelper.SetOwner(g.Config.Dexcon.Owner) + // Governance configuration. govStateHelper.UpdateConfiguration(g.Config.Dexcon) diff --git a/params/config.go b/params/config.go index fdf716661..c5437256b 100644 --- a/params/config.go +++ b/params/config.go @@ -232,18 +232,19 @@ func (c *CliqueConfig) String() string { // DexconConfig is the consensus engine configs for DEXON consensus. type DexconConfig struct { - GenesisCRSText string `json:"genesisCRSText"` - NumChains uint32 `json:"numChains"` - LambdaBA uint64 `json:"lambdaBA"` - LambdaDKG uint64 `json:"lambdaDKG"` - K int `json:"k"` - PhiRatio float32 `json:"phiRatio"` - NotarySetSize uint32 `json:"notarySetSize"` - DKGSetSize uint32 `json:"dkgSetSize"` - RoundInterval uint64 `json:"roundInterval"` - MinBlockInterval uint64 `json:"minBlockInterval"` - MaxBlockInterval uint64 `json:"maxBlockInterval"` - BlockReward *big.Int `json:"blockReward"` + Owner common.Address `json:"owner"` + GenesisCRSText string `json:"genesisCRSText"` + NumChains uint32 `json:"numChains"` + LambdaBA uint64 `json:"lambdaBA"` + LambdaDKG uint64 `json:"lambdaDKG"` + K int `json:"k"` + PhiRatio float32 `json:"phiRatio"` + NotarySetSize uint32 `json:"notarySetSize"` + DKGSetSize uint32 `json:"dkgSetSize"` + RoundInterval uint64 `json:"roundInterval"` + MinBlockInterval uint64 `json:"minBlockInterval"` + MaxBlockInterval uint64 `json:"maxBlockInterval"` + BlockReward *big.Int `json:"blockReward"` } type dexconConfigSpecMarshaling struct { @@ -252,7 +253,8 @@ type dexconConfigSpecMarshaling struct { // String implements the stringer interface, returning the consensus engine details. func (d *DexconConfig) String() string { - return fmt.Sprintf("{GenesisCRSText: %v NumChains: %v LambdaBA: %v LambdaDKG: %v K: %v PhiRatio: %v NotarySetSize: %v DKGSetSize: %v RoundInterval: %v MinBlockInterval: %v MaxBlockInterval: %v BlockReward: %v", + return fmt.Sprintf("{Owner: %v GenesisCRSText: %v NumChains: %v LambdaBA: %v LambdaDKG: %v K: %v PhiRatio: %v NotarySetSize: %v DKGSetSize: %v RoundInterval: %v MinBlockInterval: %v MaxBlockInterval: %v BlockReward: %v", + d.Owner, d.GenesisCRSText, d.NumChains, d.LambdaBA, diff --git a/params/gen_dexcon_config.go b/params/gen_dexcon_config.go index bd169584f..e53560e47 100644 --- a/params/gen_dexcon_config.go +++ b/params/gen_dexcon_config.go @@ -6,6 +6,7 @@ import ( "encoding/json" "math/big" + "github.com/dexon-foundation/dexon/common" "github.com/dexon-foundation/dexon/common/math" ) @@ -14,6 +15,7 @@ var _ = (*dexconConfigSpecMarshaling)(nil) // MarshalJSON marshals as JSON. func (d DexconConfig) MarshalJSON() ([]byte, error) { type DexconConfig struct { + Owner common.Address `json:"owner"` GenesisCRSText string `json:"genesisCRSText"` NumChains uint32 `json:"numChains"` LambdaBA uint64 `json:"lambdaBA"` @@ -28,6 +30,7 @@ func (d DexconConfig) MarshalJSON() ([]byte, error) { BlockReward *math.HexOrDecimal256 `json:"blockReward"` } var enc DexconConfig + enc.Owner = d.Owner enc.GenesisCRSText = d.GenesisCRSText enc.NumChains = d.NumChains enc.LambdaBA = d.LambdaBA @@ -46,6 +49,7 @@ func (d DexconConfig) MarshalJSON() ([]byte, error) { // UnmarshalJSON unmarshals from JSON. func (d *DexconConfig) UnmarshalJSON(input []byte) error { type DexconConfig struct { + Owner *common.Address `json:"owner"` GenesisCRSText *string `json:"genesisCRSText"` NumChains *uint32 `json:"numChains"` LambdaBA *uint64 `json:"lambdaBA"` @@ -63,6 +67,9 @@ func (d *DexconConfig) UnmarshalJSON(input []byte) error { if err := json.Unmarshal(input, &dec); err != nil { return err } + if dec.Owner != nil { + d.Owner = *dec.Owner + } if dec.GenesisCRSText != nil { d.GenesisCRSText = *dec.GenesisCRSText } diff --git a/test/genesis.json b/test/genesis.json index f5bf4036b..ba5965988 100644 --- a/test/genesis.json +++ b/test/genesis.json @@ -7,9 +7,10 @@ "eip155Block": 0, "eip158Block": 0, "dexcon": { + "owner": "0x7C3c31B19395A5e2627F921Cc2802560B71f1caB", "genesisCRSText": "In DEXON, we trust.", "numChains": 1, - "lambdaBA": 250, + "lambdaBA": 50, "lambdaDKG": 2500, "k": 0, "phiRatio": 667000, -- cgit v1.2.3