aboutsummaryrefslogtreecommitdiffstats
path: root/params
diff options
context:
space:
mode:
authorWei-Ning Huang <w@cobinhood.com>2018-10-18 21:22:45 +0800
committerWei-Ning Huang <w@dexon.org>2018-12-19 20:54:27 +0800
commitab787f1ea7365b2befe6cd1bc9135637c32ec453 (patch)
tree46a169a06932e86c7da6efe53c51215ce6d994d1 /params
parent61bd9d4acef98adedc72543b40be8468d167f6c7 (diff)
downloaddexon-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.go7
-rw-r--r--params/gen_dexcon_config.go103
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
+}