From d3831af88dfb6a7dcba9ccc7f74b7276a219de67 Mon Sep 17 00:00:00 2001 From: 5chdn <5chdn@users.noreply.github.com> Date: Thu, 21 Sep 2017 13:12:12 +0200 Subject: [PATCH] Extend ethash params by MCIP-3 --- ethcore/src/ethereum/ethash.rs | 18 ++++++++++++++++++ ethcore/src/tests/helpers.rs | 6 ++++++ json/src/spec/ethash.rs | 19 +++++++++++++++++++ 3 files changed, 43 insertions(+) diff --git a/ethcore/src/ethereum/ethash.rs b/ethcore/src/ethereum/ethash.rs index 91e326b6462..16fad7fa8bb 100644 --- a/ethcore/src/ethereum/ethash.rs +++ b/ethcore/src/ethereum/ethash.rs @@ -96,6 +96,18 @@ pub struct EthashParams { pub ecip1010_continue_transition: u64, /// Total block number for one ECIP-1017 era. pub ecip1017_era_rounds: u64, + /// Number of first block where MCIP-3 begins. + pub mcip3_transition: u64, + /// MCIP-3 Block reward coin-base for miners. + pub mcip3_miner_reward: u64, + /// MCIP-3 Block reward ubi-base for basic income. + pub mcip3_ubi_reward: u64, + /// MCIP-3 contract address for universal basic income. + pub mcip3_ubi_contract: Address, + /// MCIP-3 Block reward dev-base for dev funds. + pub mcip3_dev_reward: u64, + /// MCIP-3 contract address for the developer funds. + pub mcip3_dev_contract: Address, /// Maximum amount of code that can be deploying into a contract. pub max_code_size: u64, /// Number of first block where the max gas limit becomes effective. @@ -137,6 +149,12 @@ impl From for EthashParams { ecip1010_pause_transition: p.ecip1010_pause_transition.map_or(u64::max_value(), Into::into), ecip1010_continue_transition: p.ecip1010_continue_transition.map_or(u64::max_value(), Into::into), ecip1017_era_rounds: p.ecip1017_era_rounds.map_or(u64::max_value(), Into::into), + mcip3_transition: p.mcip3_transition.map_or(u64::max_value(), Into::into), + mcip3_miner_reward: p.mcip3_miner_reward.map_or(u64::max_value(), Into::into), + mcip3_ubi_reward: p.mcip3_ubi_reward.map_or(u64::max_value(), Into::into), + mcip3_ubi_contract: p.mcip3_ubi_contract.map_or_else(Address::new, Into::into), + mcip3_dev_reward: p.mcip3_dev_reward.map_or(u64::max_value(), Into::into), + mcip3_dev_contract: p.mcip3_dev_contract.map_or_else(Address::new, Into::into), max_code_size: p.max_code_size.map_or(u64::max_value(), Into::into), max_gas_limit_transition: p.max_gas_limit_transition.map_or(u64::max_value(), Into::into), max_gas_limit: p.max_gas_limit.map_or(U256::max_value(), Into::into), diff --git a/ethcore/src/tests/helpers.rs b/ethcore/src/tests/helpers.rs index f61fa9d5ac5..f4c46ea3d3c 100644 --- a/ethcore/src/tests/helpers.rs +++ b/ethcore/src/tests/helpers.rs @@ -420,6 +420,12 @@ pub fn get_default_ethash_params() -> EthashParams { ecip1010_pause_transition: u64::max_value(), ecip1010_continue_transition: u64::max_value(), ecip1017_era_rounds: u64::max_value(), + mcip3_transition: u64::max_value(), + mcip3_miner_reward: u64::max_value(), + mcip3_ubi_reward: u64::max_value(), + mcip3_ubi_contract: "0000000000000000000000000000000000000001".into(), + mcip3_dev_reward: u64::max_value(), + mcip3_dev_contract: "0000000000000000000000000000000000000001".into(), max_code_size: u64::max_value(), max_gas_limit_transition: u64::max_value(), max_gas_limit: U256::max_value(), diff --git a/json/src/spec/ethash.rs b/json/src/spec/ethash.rs index bfc6fe315b8..0a1b569e925 100644 --- a/json/src/spec/ethash.rs +++ b/json/src/spec/ethash.rs @@ -92,6 +92,25 @@ pub struct EthashParams { #[serde(rename="ecip1017EraRounds")] pub ecip1017_era_rounds: Option, + /// See main EthashParams docs. + #[serde(rename="mcip3Transition")] + pub mcip3_transition: Option, + /// See main EthashParams docs. + #[serde(rename="mcip3MinerReward")] + pub mcip3_miner_reward: Option, + /// See main EthashParams docs. + #[serde(rename="mcip3UbiReward")] + pub mcip3_ubi_reward: Option, + /// See main EthashParams docs. + #[serde(rename="mcip3UbiContract")] + pub mcip3_ubi_contract: Option
, + /// See main EthashParams docs. + #[serde(rename="mcip3DevReward")] + pub mcip3_dev_reward: Option, + /// See main EthashParams docs. + #[serde(rename="mcip3DevContract")] + pub mcip3_dev_contract: Option
, + /// See main EthashParams docs. #[serde(rename="maxCodeSize")] pub max_code_size: Option,