diff --git a/bin/oe/cli/mod.rs b/bin/oe/cli/mod.rs index 871b4fc46..54e229957 100644 --- a/bin/oe/cli/mod.rs +++ b/bin/oe/cli/mod.rs @@ -248,7 +248,7 @@ usage! { ARG arg_chain: (String) = "foundation", or |c: &Config| c.parity.as_ref()?.chain.clone(), "--chain=[CHAIN]", - "Specify the blockchain type. CHAIN may be either a JSON chain specification file or ethereum, poacore, xdai, volta, ewc, musicoin, ellaism, mix, callisto, morden, ropsten, kovan, rinkeby, goerli, poasokol, testnet, or dev.", + "Specify the blockchain type. CHAIN may be either a JSON chain specification file or ethereum, poacore, xdai, volta, ewc, musicoin, ellaism, mix, callisto, morden, ropsten, kovan, rinkeby, goerli, poasokol, testnet, yolo3 or dev.", ARG arg_keys_path: (String) = "$BASE/keys", or |c: &Config| c.parity.as_ref()?.keys_path.clone(), "--keys-path=[PATH]", diff --git a/bin/oe/params.rs b/bin/oe/params.rs index 3d3163b19..b1be1cafb 100644 --- a/bin/oe/params.rs +++ b/bin/oe/params.rs @@ -51,6 +51,7 @@ pub enum SpecType { Rinkeby, Goerli, Sokol, + Yolo3, Dev, Custom(String), } @@ -81,6 +82,7 @@ impl str::FromStr for SpecType { "rinkeby" => SpecType::Rinkeby, "goerli" | "görli" | "testnet" => SpecType::Goerli, "sokol" | "poasokol" => SpecType::Sokol, + "yolo3" => SpecType::Yolo3, "dev" => SpecType::Dev, other => SpecType::Custom(other.into()), }; @@ -106,6 +108,7 @@ impl fmt::Display for SpecType { SpecType::Rinkeby => "rinkeby", SpecType::Goerli => "goerli", SpecType::Sokol => "sokol", + SpecType::Yolo3 => "yolo3", SpecType::Dev => "dev", SpecType::Custom(ref custom) => custom, }) @@ -131,6 +134,7 @@ impl SpecType { SpecType::Rinkeby => Ok(ethereum::new_rinkeby(params)), SpecType::Goerli => Ok(ethereum::new_goerli(params)), SpecType::Sokol => Ok(ethereum::new_sokol(params)), + SpecType::Yolo3 => Ok(ethereum::new_yolo3(params)), SpecType::Dev => Ok(Spec::new_instant()), SpecType::Custom(ref filename) => { let file = fs::File::open(filename).map_err(|e| { diff --git a/crates/ethcore/res/chainspec/test/yolo3_test.json b/crates/ethcore/res/chainspec/yolo3.json similarity index 99% rename from crates/ethcore/res/chainspec/test/yolo3_test.json rename to crates/ethcore/res/chainspec/yolo3.json index 30c0b91eb..d15c0a9d3 100644 --- a/crates/ethcore/res/chainspec/test/yolo3_test.json +++ b/crates/ethcore/res/chainspec/yolo3.json @@ -35,7 +35,7 @@ "gasLimitBoundDivisor": "0x0400", "maxCodeSize": 24576, "maxCodeSizeTransition": "0x0", - "maximumExtraDataSize": "0x20", + "maximumExtraDataSize": "0xffff", "minGasLimit": "0x1388", "networkID": "133519467574835", "registrar": "0xc6d9d2cd449a754c494264e1809c50e34d64562b" diff --git a/crates/ethcore/src/client/evm_test_client.rs b/crates/ethcore/src/client/evm_test_client.rs index 7e088efa0..b8a39d4e6 100644 --- a/crates/ethcore/src/client/evm_test_client.rs +++ b/crates/ethcore/src/client/evm_test_client.rs @@ -109,7 +109,6 @@ impl<'a> EvmTestClient<'a> { Some(ethereum::new_byzantium_to_constantinoplefixat5_test()) } ForkSpec::Berlin => Some(ethereum::new_berlin_test()), - ForkSpec::Yolo3 => Some(ethereum::new_yolo3_test()), ForkSpec::FrontierToHomesteadAt5 | ForkSpec::HomesteadToDaoAt5 | ForkSpec::HomesteadToEIP150At5 diff --git a/crates/ethcore/src/ethereum/mod.rs b/crates/ethcore/src/ethereum/mod.rs index 91fb5062b..3691c422c 100644 --- a/crates/ethcore/src/ethereum/mod.rs +++ b/crates/ethcore/src/ethereum/mod.rs @@ -163,6 +163,13 @@ pub fn new_sokol<'a, T: Into>>(params: T) -> Spec { include_bytes!("../../res/chainspec/poasokol.json"), ) } +/// Create a new YOLO spec +pub fn new_yolo3<'a, T: Into>>(params: T) -> Spec { + load( + params.into(), + include_bytes!("../../res/chainspec/yolo3.json"), + ) +} // For tests @@ -275,14 +282,6 @@ pub fn new_eip2930_test() -> Spec { ) } -/// Create a new YOLO spec -pub fn new_yolo3_test() -> Spec { - load( - None, - include_bytes!("../../res/chainspec/test/yolo3_test.json"), - ) -} - /// Create a new Musicoin-MCIP3-era spec. pub fn new_mcip3_test() -> Spec { load( diff --git a/crates/ethjson/src/spec/spec.rs b/crates/ethjson/src/spec/spec.rs index df3a51486..39610023b 100644 --- a/crates/ethjson/src/spec/spec.rs +++ b/crates/ethjson/src/spec/spec.rs @@ -39,7 +39,6 @@ pub enum ForkSpec { ByzantiumToConstantinopleAt5, ByzantiumToConstantinopleFixAt5, Berlin, - Yolo3, } /// Spec deserialization. diff --git a/crates/vm/evm/src/tests.rs b/crates/vm/evm/src/tests.rs index a6d359d5a..14fa06941 100644 --- a/crates/vm/evm/src/tests.rs +++ b/crates/vm/evm/src/tests.rs @@ -1046,7 +1046,7 @@ fn test_subs_simple(factory: super::Factory) { let mut params = ActionParams::default(); params.gas = U256::from(18); params.code = Some(Arc::new(code)); - let mut ext = FakeExt::new_berlin(); + let mut ext = FakeExt::new_berlin(Address::zero(), Address::zero(), &[]); let gas_left = { let vm = factory.create(params, ext.schedule(), ext.depth()); @@ -1064,7 +1064,7 @@ fn test_subs_two_levels(factory: super::Factory) { let mut params = ActionParams::default(); params.gas = U256::from(36); params.code = Some(Arc::new(code)); - let mut ext = FakeExt::new_berlin(); + let mut ext = FakeExt::new_berlin(Address::zero(), Address::zero(), &[]); let gas_left = { let vm = factory.create(params, ext.schedule(), ext.depth()); @@ -1082,7 +1082,7 @@ fn test_subs_invalid_jump(factory: super::Factory) { let mut params = ActionParams::default(); params.gas = U256::from(24); params.code = Some(Arc::new(code)); - let mut ext = FakeExt::new_berlin(); + let mut ext = FakeExt::new_berlin(Address::zero(), Address::zero(), &[]); let current = { let vm = factory.create(params, ext.schedule(), ext.depth()); @@ -1101,7 +1101,7 @@ fn test_subs_shallow_return_stack(factory: super::Factory) { let mut params = ActionParams::default(); params.gas = U256::from(24); params.code = Some(Arc::new(code)); - let mut ext = FakeExt::new_berlin(); + let mut ext = FakeExt::new_berlin(Address::zero(), Address::zero(), &[]); let current = { let vm = factory.create(params, ext.schedule(), ext.depth()); @@ -1136,7 +1136,7 @@ fn test_subs_substack_limit(factory: super::Factory) { let mut params = ActionParams::default(); params.gas = U256::from(1_000_000); params.code = Some(Arc::new(code)); - let mut ext = FakeExt::new_berlin(); + let mut ext = FakeExt::new_berlin(Address::zero(), Address::zero(), &[]); let gas_left = { let vm = factory.create(params, ext.schedule(), ext.depth()); @@ -1154,7 +1154,7 @@ fn test_subs_substack_out(factory: super::Factory) { let mut params = ActionParams::default(); params.gas = U256::from(1_000_000); params.code = Some(Arc::new(code)); - let mut ext = FakeExt::new_berlin(); + let mut ext = FakeExt::new_berlin(Address::zero(), Address::zero(), &[]); let current = { let vm = factory.create(params, ext.schedule(), ext.depth()); @@ -1175,7 +1175,7 @@ fn test_subs_sub_at_end(factory: super::Factory) { let mut params = ActionParams::default(); params.gas = U256::from(30); params.code = Some(Arc::new(code)); - let mut ext = FakeExt::new_berlin(); + let mut ext = FakeExt::new_berlin(Address::zero(), Address::zero(), &[]); let gas_left = { let vm = factory.create(params, ext.schedule(), ext.depth()); @@ -1192,7 +1192,7 @@ fn test_subs_walk_into_subroutine(factory: super::Factory) { let mut params = ActionParams::default(); params.gas = U256::from(100); params.code = Some(Arc::new(code)); - let mut ext = FakeExt::new_berlin(); + let mut ext = FakeExt::new_berlin(Address::zero(), Address::zero(), &[]); let current = { let vm = factory.create(params, ext.schedule(), ext.depth()); @@ -1578,7 +1578,7 @@ fn test_access_list_ext_at_precompiles(factory: super::Factory) { let mut params = ActionParams::default(); params.gas = U256::from(8653); params.code = Some(Arc::new(code)); - let mut ext = FakeExt::new_yolo3( + let mut ext = FakeExt::new_berlin( Address::from("0x0000000000000000000000000000000000000000"), Address::from("0x000000000000000000000000636F6E7472616374"), &[ @@ -1602,7 +1602,7 @@ fn test_access_list_extcodecopy_twice(factory: super::Factory) { let mut params = ActionParams::default(); params.gas = U256::from(2835); params.code = Some(Arc::new(code)); - let mut ext = FakeExt::new_yolo3( + let mut ext = FakeExt::new_berlin( Address::from("0x0000000000000000000000000000000000000000"), Address::from("0x000000000000000000000000636F6E7472616374"), &[], @@ -1628,7 +1628,7 @@ fn test_access_list_sload_sstore(factory: super::Factory) { let mut params = ActionParams::default(); params.gas = U256::from(44529); params.code = Some(Arc::new(code)); - let mut ext = FakeExt::new_yolo3( + let mut ext = FakeExt::new_berlin( Address::from("0x0000000000000000000000000000000000000000"), Address::from("0x000000000000000000000000636F6E7472616374"), &[], @@ -1648,7 +1648,7 @@ fn test_access_list_cheap_expensive_cheap(factory: super::Factory) { let mut params = ActionParams::default(); params.gas = U256::from(2869); params.code = Some(Arc::new(code)); - let mut ext = FakeExt::new_yolo3( + let mut ext = FakeExt::new_berlin( Address::from("0x0000000000000000000000000000000000000000"), Address::from("0x000000000000000000000000636F6E7472616374"), &[Address::from("0x0000000000000000000000000000000000000004")], diff --git a/crates/vm/vm/src/schedule.rs b/crates/vm/vm/src/schedule.rs index cd258b69c..80643acd2 100644 --- a/crates/vm/vm/src/schedule.rs +++ b/crates/vm/vm/src/schedule.rs @@ -335,16 +335,8 @@ impl Schedule { schedule } - /// Schedule for the Berlin fork of the Ethereum main net. - pub fn new_berlin() -> Schedule { - let mut schedule = Self::new_istanbul(); - schedule.have_subs = true; // EIP 2315 - - schedule - } - /// Schedule for the Yolov3 testnet of the Ethereum main net. - pub fn new_yolo3() -> Schedule { + pub fn new_berlin() -> Schedule { let mut schedule = Self::new_istanbul(); schedule.have_subs = true; // EIP 2315 diff --git a/crates/vm/vm/src/tests.rs b/crates/vm/vm/src/tests.rs index 17a3f09d7..6bcb46fd2 100644 --- a/crates/vm/vm/src/tests.rs +++ b/crates/vm/vm/src/tests.rs @@ -118,16 +118,9 @@ impl FakeExt { } /// New fake externalities with Berlin schedule rules - pub fn new_berlin() -> Self { + pub fn new_berlin(from: Address, to: Address, builtins: &[Address]) -> Self { let mut ext = FakeExt::default(); ext.schedule = Schedule::new_berlin(); - ext - } - - /// New fake externalities with YoloV2 schedule rules - pub fn new_yolo3(from: Address, to: Address, builtins: &[Address]) -> Self { - let mut ext = FakeExt::default(); - ext.schedule = Schedule::new_yolo3(); ext.access_list.enable(); ext.access_list.insert_address(from); ext.access_list.insert_address(to);