diff --git a/substrate/Cargo.lock b/substrate/Cargo.lock index e27589d5f6..ed97668987 100644 --- a/substrate/Cargo.lock +++ b/substrate/Cargo.lock @@ -1229,9 +1229,9 @@ dependencies = [ [[package]] name = "evm" -version = "0.14.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a2c6961fdc9952371fc5f0416f03a9d90378a9dfb6862f6a7a9a3b8986b8dd" +checksum = "73f887b371f9999682ccc5b1cb771e7d4408ae61e93fc0343ceaeb761fca42d1" dependencies = [ "evm-core", "evm-gasometer", @@ -8190,7 +8190,7 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3bfd5b7557925ce778ff9b9ef90e3ade34c524b5ff10e239c69a42d546d2af56" dependencies = [ - "rand 0.7.3", + "rand 0.3.23", ] [[package]] diff --git a/substrate/bin/node/runtime/src/lib.rs b/substrate/bin/node/runtime/src/lib.rs index f2c374cedd..65e09e99d2 100644 --- a/substrate/bin/node/runtime/src/lib.rs +++ b/substrate/bin/node/runtime/src/lib.rs @@ -79,7 +79,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion { // and set impl_version to 0. If only runtime // implementation changes and behavior does not, then leave spec_version as // is and increment impl_version. - spec_version: 212, + spec_version: 213, impl_version: 0, apis: RUNTIME_API_VERSIONS, }; diff --git a/substrate/frame/evm/src/lib.rs b/substrate/frame/evm/src/lib.rs index 9c79274b4a..edd3d46a9a 100644 --- a/substrate/frame/evm/src/lib.rs +++ b/substrate/frame/evm/src/lib.rs @@ -174,6 +174,8 @@ decl_event! { pub enum Event { /// Ethereum events from contracts. Log(Log), + /// A contract has been created at given address. + Created(H160), } } @@ -343,6 +345,7 @@ decl_module! { } executor.withdraw(source, total_fee).map_err(|_| Error::::WithdrawFailed)?; + let create_address = executor.create_address(source, evm::CreateScheme::Dynamic); let reason = executor.transact_create( source, value, @@ -351,7 +354,10 @@ decl_module! { ); let ret = match reason { - ExitReason::Succeed(_) => Ok(()), + ExitReason::Succeed(_) => { + Module::::deposit_event(Event::Created(create_address)); + Ok(()) + }, ExitReason::Error(_) => Err(Error::::ExitReasonFailed), ExitReason::Revert(_) => Err(Error::::ExitReasonRevert), ExitReason::Fatal(_) => Err(Error::::ExitReasonFatal),