denominations and networkparams
This commit is contained in:
parent
1468145110
commit
74368663db
17
src/denominations.rs
Normal file
17
src/denominations.rs
Normal file
@ -0,0 +1,17 @@
|
||||
use util::uint::*;
|
||||
|
||||
#[inline]
|
||||
pub fn ether() -> U256 { U256::exp10(18) }
|
||||
|
||||
#[inline]
|
||||
pub fn finney() -> U256 { U256::exp10(15) }
|
||||
|
||||
#[inline]
|
||||
pub fn szabo() -> U256 { U256::exp10(12) }
|
||||
|
||||
#[inline]
|
||||
pub fn shannon() -> U256 { U256::exp10(9) }
|
||||
|
||||
#[inline]
|
||||
pub fn wei() -> U256 { U256::exp10(0) }
|
||||
|
@ -78,6 +78,8 @@ extern crate evmjit;
|
||||
|
||||
pub mod blockheader;
|
||||
pub mod transaction;
|
||||
pub mod networkparams;
|
||||
pub mod denominations;
|
||||
|
||||
#[test]
|
||||
fn it_works() {
|
||||
|
71
src/networkparams.rs
Normal file
71
src/networkparams.rs
Normal file
@ -0,0 +1,71 @@
|
||||
use util::uint::*;
|
||||
use denominations::*;
|
||||
|
||||
/// 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 }
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user