From 2106d729745938a123ce502dcea9541d2b7b3fa5 Mon Sep 17 00:00:00 2001 From: Wei-Ning Huang Date: Thu, 14 Mar 2019 19:55:48 +0800 Subject: core: vm: group min gas price with related state variables (#257) --- core/vm/oracle_contract_abi.go | 8 ++++---- core/vm/oracle_contracts.go | 20 ++++++++++---------- core/vm/oracle_contracts_test.go | 4 ++-- params/config.go | 16 ++++++++-------- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/core/vm/oracle_contract_abi.go b/core/vm/oracle_contract_abi.go index e06adf633..cd45e2754 100644 --- a/core/vm/oracle_contract_abi.go +++ b/core/vm/oracle_contract_abi.go @@ -762,6 +762,10 @@ const GovernanceABIJSON = ` "name": "LockupPeriod", "type": "uint256" }, + { + "name": "MinGasPrice", + "type": "uint256" + }, { "name": "BlockGasLimit", "type": "uint256" @@ -793,10 +797,6 @@ const GovernanceABIJSON = ` { "name": "FineValues", "type": "uint256[]" - }, - { - "name": "MinGasPrice", - "type": "uint256" } ], "name": "updateConfiguration", diff --git a/core/vm/oracle_contracts.go b/core/vm/oracle_contracts.go index 836489420..37e734a5f 100644 --- a/core/vm/oracle_contracts.go +++ b/core/vm/oracle_contracts.go @@ -84,7 +84,7 @@ const ( minBlockIntervalLoc fineValuesLoc finedRecordsLoc - minGasPriceLoc + minGasPriceLoc // TODO(w): reorder this before mainnet ) func publicKeyToNodeKeyAddress(pkBytes []byte) (common.Address, error) { @@ -729,6 +729,11 @@ func (s *GovernanceState) MiningHalved() { s.IncNextHalvingSupply(s.LastHalvedAmount()) } +// uint256 public minGasPrice; +func (s *GovernanceState) MinGasPrice() *big.Int { + return s.getStateBigInt(big.NewInt(minGasPriceLoc)) +} + // uint256 public blockGasLimit; func (s *GovernanceState) BlockGasLimit() *big.Int { return s.getStateBigInt(big.NewInt(blockGasLimitLoc)) @@ -803,11 +808,6 @@ func (s *GovernanceState) SetFineRecords(recordHash Bytes32, status bool) { s.setStateBigInt(loc, big.NewInt(value)) } -// uint256 public minGasPrice; -func (s *GovernanceState) MinGasPrice() *big.Int { - return s.getStateBigInt(big.NewInt(minGasPriceLoc)) -} - // Initialize initializes governance contract state. func (s *GovernanceState) Initialize(config *params.DexconConfig, totalSupply *big.Int) { if config.NextHalvingSupply.Cmp(totalSupply) <= 0 { @@ -875,6 +875,7 @@ func (s *GovernanceState) Configuration() *params.DexconConfig { MiningVelocity: float32(s.getStateBigInt(big.NewInt(miningVelocityLoc)).Uint64()) / decimalMultiplier, NextHalvingSupply: s.getStateBigInt(big.NewInt(nextHalvingSupplyLoc)), LastHalvedAmount: s.getStateBigInt(big.NewInt(lastHalvedAmountLoc)), + MinGasPrice: s.getStateBigInt(big.NewInt(minGasPriceLoc)), BlockGasLimit: s.getStateBigInt(big.NewInt(blockGasLimitLoc)).Uint64(), LambdaBA: s.getStateBigInt(big.NewInt(lambdaBALoc)).Uint64(), LambdaDKG: s.getStateBigInt(big.NewInt(lambdaDKGLoc)).Uint64(), @@ -883,7 +884,6 @@ func (s *GovernanceState) Configuration() *params.DexconConfig { RoundLength: s.getStateBigInt(big.NewInt(roundLengthLoc)).Uint64(), MinBlockInterval: s.getStateBigInt(big.NewInt(minBlockIntervalLoc)).Uint64(), FineValues: s.FineValues(), - MinGasPrice: s.getStateBigInt(big.NewInt(minGasPriceLoc)), } } @@ -894,6 +894,7 @@ func (s *GovernanceState) UpdateConfiguration(cfg *params.DexconConfig) { s.setStateBigInt(big.NewInt(miningVelocityLoc), big.NewInt(int64(cfg.MiningVelocity*decimalMultiplier))) s.setStateBigInt(big.NewInt(nextHalvingSupplyLoc), cfg.NextHalvingSupply) s.setStateBigInt(big.NewInt(lastHalvedAmountLoc), cfg.LastHalvedAmount) + s.setStateBigInt(big.NewInt(minGasPriceLoc), cfg.MinGasPrice) s.setStateBigInt(big.NewInt(blockGasLimitLoc), big.NewInt(int64(cfg.BlockGasLimit))) s.setStateBigInt(big.NewInt(lambdaBALoc), big.NewInt(int64(cfg.LambdaBA))) s.setStateBigInt(big.NewInt(lambdaDKGLoc), big.NewInt(int64(cfg.LambdaDKG))) @@ -902,13 +903,13 @@ func (s *GovernanceState) UpdateConfiguration(cfg *params.DexconConfig) { s.setStateBigInt(big.NewInt(roundLengthLoc), big.NewInt(int64(cfg.RoundLength))) s.setStateBigInt(big.NewInt(minBlockIntervalLoc), big.NewInt(int64(cfg.MinBlockInterval))) s.SetFineValues(cfg.FineValues) - s.setStateBigInt(big.NewInt(minGasPriceLoc), cfg.MinGasPrice) } type rawConfigStruct struct { MinStake *big.Int LockupPeriod *big.Int BlockGasLimit *big.Int + MinGasPrice *big.Int LambdaBA *big.Int LambdaDKG *big.Int NotarySetSize *big.Int @@ -916,13 +917,13 @@ type rawConfigStruct struct { RoundLength *big.Int MinBlockInterval *big.Int FineValues []*big.Int - MinGasPrice *big.Int } // UpdateConfigurationRaw updates system configuration. func (s *GovernanceState) UpdateConfigurationRaw(cfg *rawConfigStruct) { s.setStateBigInt(big.NewInt(minStakeLoc), cfg.MinStake) s.setStateBigInt(big.NewInt(lockupPeriodLoc), cfg.LockupPeriod) + s.setStateBigInt(big.NewInt(minGasPriceLoc), cfg.MinGasPrice) s.setStateBigInt(big.NewInt(blockGasLimitLoc), cfg.BlockGasLimit) s.setStateBigInt(big.NewInt(lambdaBALoc), cfg.LambdaBA) s.setStateBigInt(big.NewInt(lambdaDKGLoc), cfg.LambdaDKG) @@ -931,7 +932,6 @@ func (s *GovernanceState) UpdateConfigurationRaw(cfg *rawConfigStruct) { s.setStateBigInt(big.NewInt(roundLengthLoc), cfg.RoundLength) s.setStateBigInt(big.NewInt(minBlockIntervalLoc), cfg.MinBlockInterval) s.SetFineValues(cfg.FineValues) - s.setStateBigInt(big.NewInt(minGasPriceLoc), cfg.MinGasPrice) } // event ConfigurationChanged(); diff --git a/core/vm/oracle_contracts_test.go b/core/vm/oracle_contracts_test.go index 436923aa3..4539f0864 100644 --- a/core/vm/oracle_contracts_test.go +++ b/core/vm/oracle_contracts_test.go @@ -487,6 +487,7 @@ func (g *OracleContractsTestSuite) TestUpdateConfiguration() { input, err := GovernanceABI.ABI.Pack("updateConfiguration", new(big.Int).Mul(big.NewInt(1e18), big.NewInt(1e6)), big.NewInt(1000), + big.NewInt(2e9), big.NewInt(8000000), big.NewInt(250), big.NewInt(2500), @@ -494,8 +495,7 @@ func (g *OracleContractsTestSuite) TestUpdateConfiguration() { big.NewInt(4), big.NewInt(600), big.NewInt(900), - []*big.Int{big.NewInt(1), big.NewInt(1), big.NewInt(1)}, - big.NewInt(2e9)) + []*big.Int{big.NewInt(1), big.NewInt(1), big.NewInt(1)}) g.Require().NoError(err) // Call with non-owner. diff --git a/params/config.go b/params/config.go index 08a57e97a..8cf986f55 100644 --- a/params/config.go +++ b/params/config.go @@ -61,6 +61,7 @@ var ( MiningVelocity: 0.1875, NextHalvingSupply: new(big.Int).Mul(big.NewInt(1e18), big.NewInt(2.5e9)), LastHalvedAmount: new(big.Int).Mul(big.NewInt(1e18), big.NewInt(1.5e9)), + MinGasPrice: new(big.Int).Mul(big.NewInt(1e9), big.NewInt(1)), BlockGasLimit: 40000000, LambdaBA: 250, LambdaDKG: 2500, @@ -73,7 +74,6 @@ var ( new(big.Int).Mul(big.NewInt(1e18), big.NewInt(1e4)), new(big.Int).Mul(big.NewInt(1e18), big.NewInt(1e5)), }, - MinGasPrice: new(big.Int).Mul(big.NewInt(1e9), big.NewInt(1)), }, } @@ -107,6 +107,7 @@ var ( MiningVelocity: 0.1875, NextHalvingSupply: new(big.Int).Mul(big.NewInt(1e18), big.NewInt(1.8e8)), LastHalvedAmount: new(big.Int).Mul(big.NewInt(1e18), big.NewInt(1.6e7)), + MinGasPrice: new(big.Int).Mul(big.NewInt(1e9), big.NewInt(1)), BlockGasLimit: 80000000, LambdaBA: 250, LambdaDKG: 10000, @@ -119,7 +120,6 @@ var ( new(big.Int).Mul(big.NewInt(1e18), big.NewInt(1e4)), new(big.Int).Mul(big.NewInt(1e18), big.NewInt(1e5)), }, - MinGasPrice: new(big.Int).Mul(big.NewInt(1e9), big.NewInt(1)), }, } @@ -144,6 +144,7 @@ var ( MiningVelocity: 0.1875, NextHalvingSupply: new(big.Int).Mul(big.NewInt(1e18), big.NewInt(1.8e8)), LastHalvedAmount: new(big.Int).Mul(big.NewInt(1e18), big.NewInt(1.6e7)), + MinGasPrice: new(big.Int).Mul(big.NewInt(1e9), big.NewInt(1)), BlockGasLimit: 21000 * 5000, LambdaBA: 250, LambdaDKG: 10000, @@ -156,7 +157,6 @@ var ( new(big.Int).Mul(big.NewInt(1e18), big.NewInt(1e4)), new(big.Int).Mul(big.NewInt(1e18), big.NewInt(1e5)), }, - MinGasPrice: new(big.Int).Mul(big.NewInt(1e9), big.NewInt(1)), }, } @@ -189,6 +189,7 @@ var ( MiningVelocity: 0.1875, NextHalvingSupply: new(big.Int).Mul(big.NewInt(1e18), big.NewInt(2e7)), LastHalvedAmount: new(big.Int).Mul(big.NewInt(1e18), big.NewInt(4e6)), + MinGasPrice: new(big.Int).Mul(big.NewInt(1e9), big.NewInt(1)), BlockGasLimit: 21000 * 5000, LambdaBA: 250, LambdaDKG: 10000, @@ -201,7 +202,6 @@ var ( new(big.Int).Mul(big.NewInt(1e18), big.NewInt(1e4)), new(big.Int).Mul(big.NewInt(1e18), big.NewInt(1e5)), }, - MinGasPrice: new(big.Int).Mul(big.NewInt(1e9), big.NewInt(1)), }, } @@ -331,6 +331,7 @@ type DexconConfig struct { MiningVelocity float32 `json:"miningVelocity"` NextHalvingSupply *big.Int `json:"nextHalvingSupply"` LastHalvedAmount *big.Int `json:"lastHalvedAmount"` + MinGasPrice *big.Int `json:"minGasPrice"` BlockGasLimit uint64 `json:"blockGasLimit"` LambdaBA uint64 `json:"lambdaBA"` LambdaDKG uint64 `json:"lambdaDKG"` @@ -339,20 +340,19 @@ type DexconConfig struct { RoundLength uint64 `json:"roundLength"` MinBlockInterval uint64 `json:"minBlockInterval"` FineValues []*big.Int `json:"fineValues"` - MinGasPrice *big.Int `json:"minGasPrice"` } type dexconConfigSpecMarshaling struct { MinStake *math.HexOrDecimal256 NextHalvingSupply *math.HexOrDecimal256 LastHalvedAmount *math.HexOrDecimal256 - FineValues []*math.HexOrDecimal256 MinGasPrice *math.HexOrDecimal256 + FineValues []*math.HexOrDecimal256 } // String implements the stringer interface, returning the consensus engine details. func (d *DexconConfig) String() string { - return fmt.Sprintf("{GenesisCRSText: %v Owner: %v MinStake: %v LockupPeriod: %v MiningVelocity: %v NextHalvingSupply: %v LastHalvedAmount: %v BlockGasLimit: %v LambdaBA: %v LambdaDKG: %v NotarySetSize: %v DKGSetSize: %v RoundLength: %v MinBlockInterval: %v FineValues: %v MinGasPrice: %v}", + return fmt.Sprintf("{GenesisCRSText: %v Owner: %v MinStake: %v LockupPeriod: %v MiningVelocity: %v NextHalvingSupply: %v LastHalvedAmount: %v MinGasPrice: %v BlockGasLimit: %v LambdaBA: %v LambdaDKG: %v NotarySetSize: %v DKGSetSize: %v RoundLength: %v MinBlockInterval: %v FineValues: %v}", d.GenesisCRSText, d.Owner, d.MinStake, @@ -360,6 +360,7 @@ func (d *DexconConfig) String() string { d.MiningVelocity, d.NextHalvingSupply, d.LastHalvedAmount, + d.MinGasPrice, d.BlockGasLimit, d.LambdaBA, d.LambdaDKG, @@ -368,7 +369,6 @@ func (d *DexconConfig) String() string { d.RoundLength, d.MinBlockInterval, d.FineValues, - d.MinGasPrice, ) } -- cgit v1.2.3