diff options
author | Wei-Ning Huang <w@cobinhood.com> | 2018-10-18 21:22:45 +0800 |
---|---|---|
committer | Wei-Ning Huang <w@dexon.org> | 2018-12-19 20:54:27 +0800 |
commit | ab787f1ea7365b2befe6cd1bc9135637c32ec453 (patch) | |
tree | 46a169a06932e86c7da6efe53c51215ce6d994d1 /params | |
parent | 61bd9d4acef98adedc72543b40be8468d167f6c7 (diff) | |
download | dexon-ab787f1ea7365b2befe6cd1bc9135637c32ec453.tar.gz dexon-ab787f1ea7365b2befe6cd1bc9135637c32ec453.tar.zst dexon-ab787f1ea7365b2befe6cd1bc9135637c32ec453.zip |
params: load blockReward from genesis JSON file
Diffstat (limited to 'params')
-rw-r--r-- | params/config.go | 7 | ||||
-rw-r--r-- | params/gen_dexcon_config.go | 103 |
2 files changed, 110 insertions, 0 deletions
diff --git a/params/config.go b/params/config.go index 86f89de35..24be741d9 100644 --- a/params/config.go +++ b/params/config.go @@ -21,6 +21,7 @@ import ( "math/big" "github.com/dexon-foundation/dexon/common" + "github.com/dexon-foundation/dexon/common/math" ) // Genesis hashes to enforce below configs on. @@ -186,6 +187,8 @@ func (c *CliqueConfig) String() string { return "clique" } +//go:generate gencodec -type DexconConfig -field-override dexconConfigSpecMarshaling -out gen_dexcon_config.go + // DexconConfig is the consensus engine configs for DEXON consensus. type DexconConfig struct { GenesisCRSText string `json:"genesisCRSText"` @@ -202,6 +205,10 @@ type DexconConfig struct { BlockReward *big.Int `json:"blockReward"` } +type dexconConfigSpecMarshaling struct { + BlockReward *math.HexOrDecimal256 +} + // 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", diff --git a/params/gen_dexcon_config.go b/params/gen_dexcon_config.go new file mode 100644 index 000000000..bd169584f --- /dev/null +++ b/params/gen_dexcon_config.go @@ -0,0 +1,103 @@ +// Code generated by github.com/fjl/gencodec. DO NOT EDIT. + +package params + +import ( + "encoding/json" + "math/big" + + "github.com/dexon-foundation/dexon/common/math" +) + +var _ = (*dexconConfigSpecMarshaling)(nil) + +// MarshalJSON marshals as JSON. +func (d DexconConfig) MarshalJSON() ([]byte, error) { + 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 *math.HexOrDecimal256 `json:"blockReward"` + } + var enc DexconConfig + enc.GenesisCRSText = d.GenesisCRSText + enc.NumChains = d.NumChains + enc.LambdaBA = d.LambdaBA + enc.LambdaDKG = d.LambdaDKG + enc.K = d.K + enc.PhiRatio = d.PhiRatio + enc.NotarySetSize = d.NotarySetSize + enc.DKGSetSize = d.DKGSetSize + enc.RoundInterval = d.RoundInterval + enc.MinBlockInterval = d.MinBlockInterval + enc.MaxBlockInterval = d.MaxBlockInterval + enc.BlockReward = (*math.HexOrDecimal256)(d.BlockReward) + return json.Marshal(&enc) +} + +// UnmarshalJSON unmarshals from JSON. +func (d *DexconConfig) UnmarshalJSON(input []byte) error { + 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 *math.HexOrDecimal256 `json:"blockReward"` + } + var dec DexconConfig + if err := json.Unmarshal(input, &dec); err != nil { + return err + } + if dec.GenesisCRSText != nil { + d.GenesisCRSText = *dec.GenesisCRSText + } + if dec.NumChains != nil { + d.NumChains = *dec.NumChains + } + if dec.LambdaBA != nil { + d.LambdaBA = *dec.LambdaBA + } + if dec.LambdaDKG != nil { + d.LambdaDKG = *dec.LambdaDKG + } + if dec.K != nil { + d.K = *dec.K + } + if dec.PhiRatio != nil { + d.PhiRatio = *dec.PhiRatio + } + if dec.NotarySetSize != nil { + d.NotarySetSize = *dec.NotarySetSize + } + if dec.DKGSetSize != nil { + d.DKGSetSize = *dec.DKGSetSize + } + if dec.RoundInterval != nil { + d.RoundInterval = *dec.RoundInterval + } + if dec.MinBlockInterval != nil { + d.MinBlockInterval = *dec.MinBlockInterval + } + if dec.MaxBlockInterval != nil { + d.MaxBlockInterval = *dec.MaxBlockInterval + } + if dec.BlockReward != nil { + d.BlockReward = (*big.Int)(dec.BlockReward) + } + return nil +} |