openethereum/src/networkparams.rs

74 lines
2.4 KiB
Rust

use util::uint::*;
use denominations::*;
// TODO: move to params.rs.
/// Network related const params
/// TODO: make it configurable from json file
pub struct NetworkParams {
maximum_extra_data_size: U256,
min_gas_limit: U256,
gas_limit_bounds_divisor: U256,
minimum_difficulty: U256,
difficulty_bound_divisor: U256,
duration_limit: U256,
block_reward: U256,
gas_floor_target: U256,
account_start_nonce: U256
}
impl NetworkParams {
pub fn olympic() -> NetworkParams {
NetworkParams {
maximum_extra_data_size: U256::from(1024u64),
min_gas_limit: U256::from(125_000u64),
gas_floor_target: U256::from(3_141_592u64),
gas_limit_bounds_divisor: U256::from(1024u64),
minimum_difficulty: U256::from(131_072u64),
difficulty_bound_divisor: U256::from(2048u64),
duration_limit: U256::from(8u64),
block_reward: finney() * U256::from(1500u64),
account_start_nonce: U256::from(0u64)
}
}
pub fn frontier() -> NetworkParams {
NetworkParams {
maximum_extra_data_size: U256::from(32u64),
min_gas_limit: U256::from(5000u64),
gas_floor_target: U256::from(3_141_592u64),
gas_limit_bounds_divisor: U256::from(1024u64),
minimum_difficulty: U256::from(131_072u64),
difficulty_bound_divisor: U256::from(2048u64),
duration_limit: U256::from(13u64),
block_reward: ether() * U256::from(5u64),
account_start_nonce: U256::from(0u64)
}
}
pub fn morden() -> NetworkParams {
NetworkParams {
maximum_extra_data_size: U256::from(32u64),
min_gas_limit: U256::from(5000u64),
gas_floor_target: U256::from(3_141_592u64),
gas_limit_bounds_divisor: U256::from(1024u64),
minimum_difficulty: U256::from(131_072u64),
difficulty_bound_divisor: U256::from(2048u64),
duration_limit: U256::from(13u64),
block_reward: ether() * U256::from(5u64),
account_start_nonce: U256::from(1u64) << 20
}
}
pub fn maximum_extra_data_size(&self) -> U256 { self.maximum_extra_data_size }
pub fn min_gas_limit(&self) -> U256 { self.min_gas_limit }
pub fn gas_limit_bounds_divisor(&self) -> U256 { self.gas_limit_bounds_divisor }
pub fn minimum_difficulty(&self) -> U256 { self.minimum_difficulty }
pub fn difficulty_bound_divisor(&self) -> U256 { self.difficulty_bound_divisor }
pub fn duration_limit(&self) -> U256 { self.duration_limit }
pub fn block_reward(&self) -> U256 { self.block_reward }
pub fn gas_floor_target(&self) -> U256 { self.gas_floor_target }
pub fn account_start_nonce(&self) -> U256 { self.account_start_nonce }
}