From 58cd6530be0898875a7a39ec6dc31dd90b114bd4 Mon Sep 17 00:00:00 2001 From: Sergei Pepyakin Date: Tue, 22 Jan 2019 13:10:14 +0100 Subject: [PATCH] Dispatch Calls to other modules (#1473) * WIP * Use system::Origin::Signed as an origin * Add a vm test for ext_dispatch_call * Take fee for dispatching a Call # Conflicts: # node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm * Clean & Rebuild # Conflicts: # node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm * Dispatch call test. * Rebuild the runtime. * Fix the length of the buffer. * Rebuild binaries. --- substrate/core/test-runtime/wasm/Cargo.lock | 2 + .../substrate_test_runtime.compact.wasm | Bin 47500 -> 47298 bytes substrate/node/runtime/src/lib.rs | 4 +- substrate/node/runtime/wasm/Cargo.lock | 2 + .../release/node_runtime.compact.wasm | Bin 818033 -> 826729 bytes substrate/srml/contract/src/exec.rs | 35 +++-- substrate/srml/contract/src/gas.rs | 7 + substrate/srml/contract/src/lib.rs | 64 +++++++-- substrate/srml/contract/src/tests.rs | 136 +++++++++++++++++- substrate/srml/contract/src/wasm/mod.rs | 48 ++++++- substrate/srml/contract/src/wasm/runtime.rs | 35 ++++- 11 files changed, 298 insertions(+), 35 deletions(-) diff --git a/substrate/core/test-runtime/wasm/Cargo.lock b/substrate/core/test-runtime/wasm/Cargo.lock index dd3ee2fea3..127b3d0a02 100644 --- a/substrate/core/test-runtime/wasm/Cargo.lock +++ b/substrate/core/test-runtime/wasm/Cargo.lock @@ -933,6 +933,7 @@ dependencies = [ name = "sr-version" version = "0.1.0" dependencies = [ + "impl-serde 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1073,6 +1074,7 @@ version = "0.1.0" dependencies = [ "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index 991bf00699648a50dfc1f3c6d377f4b31335fd0a..eb4ee4ac71263f2d457470de7fd5b7d9008d65a0 100644 GIT binary patch delta 4233 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 delta 4300 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 HP-p)eEKUZf diff --git a/substrate/node/runtime/src/lib.rs b/substrate/node/runtime/src/lib.rs index f8cfae1edf..ed8bae6968 100644 --- a/substrate/node/runtime/src/lib.rs +++ b/substrate/node/runtime/src/lib.rs @@ -206,9 +206,11 @@ impl treasury::Trait for Runtime { } impl contract::Trait for Runtime { + type Call = Call; + type Event = Event; type Gas = u64; type DetermineContractAddress = contract::SimpleAddressDeterminator; - type Event = Event; + type ComputeDispatchFee = contract::DefaultDispatchFeeComputor; } impl sudo::Trait for Runtime { diff --git a/substrate/node/runtime/wasm/Cargo.lock b/substrate/node/runtime/wasm/Cargo.lock index 0b5a12e7b0..a373a8d7d1 100644 --- a/substrate/node/runtime/wasm/Cargo.lock +++ b/substrate/node/runtime/wasm/Cargo.lock @@ -1025,6 +1025,7 @@ dependencies = [ name = "sr-version" version = "0.1.0" dependencies = [ + "impl-serde 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec-derive 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1451,6 +1452,7 @@ version = "0.1.0" dependencies = [ "byteorder 1.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index cc77de34eb99e46c3c1240efe73991af276d6999..9a868619d4693d588ea3ba788c0d38f3865b5040 100644 GIT binary patch delta 152399 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%0D%$y$ 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 J)!{0c@qc(c080P> delta 145623 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­- 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%0DKIv2q`4VQ$7 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 OEf8PmxEDIn8~zPsx>zv) diff --git a/substrate/srml/contract/src/exec.rs b/substrate/srml/contract/src/exec.rs index b78c3d7151..af900081d3 100644 --- a/substrate/srml/contract/src/exec.rs +++ b/substrate/srml/contract/src/exec.rs @@ -16,14 +16,15 @@ use super::{CodeHash, Config, ContractAddressFor, Event, RawEvent, Trait}; use account_db::{AccountDb, DirectAccountDb, OverlayAccountDb}; -use gas::{GasMeter, Token}; +use gas::{GasMeter, Token, approx_gas_for_balance}; use balances::{self, EnsureAccountLiquid}; use rstd::prelude::*; -use runtime_primitives::traits::{As, CheckedAdd, CheckedSub, Zero}; +use runtime_primitives::traits::{CheckedAdd, CheckedSub, Zero}; pub type BalanceOf = ::Balance; pub type AccountIdOf = ::AccountId; +pub type CallOf = ::Call; #[cfg_attr(test, derive(Debug))] pub struct InstantiateReceipt { @@ -77,12 +78,16 @@ pub trait Ext { empty_output_buf: EmptyOutputBuf, ) -> Result; + /// Notes a call dispatch. + fn note_dispatch_call(&mut self, call: CallOf); + /// Returns a reference to the account id of the caller. fn caller(&self) -> &AccountIdOf; /// Returns a reference to the account id of the current contract. fn address(&self) -> &AccountIdOf; + /// Returns the balance of the current contract. /// /// The `value_transferred` is already added. @@ -214,6 +219,7 @@ pub struct ExecutionContext<'a, T: Trait + 'a, V, L> { pub overlay: OverlayAccountDb<'a, T>, pub depth: usize, pub events: Vec>, + pub calls: Vec<(T::AccountId, T::Call)>, pub config: &'a Config, pub vm: &'a V, pub loader: &'a L, @@ -235,6 +241,7 @@ where depth: 0, overlay, events: Vec::new(), + calls: Vec::new(), config: &cfg, vm: &vm, loader: &loader, @@ -247,6 +254,7 @@ where self_account: dest, depth: self.depth + 1, events: Vec::new(), + calls: Vec::new(), config: self.config, vm: self.vm, loader: self.loader, @@ -276,7 +284,7 @@ where let dest_code_hash = self.overlay.get_code(&dest); let mut output_data = Vec::new(); - let (change_set, events) = { + let (change_set, events, calls) = { let mut overlay = OverlayAccountDb::new(&self.overlay); let mut nested = self.nested(overlay, dest.clone()); @@ -309,11 +317,12 @@ where .into_result()?; } - (nested.overlay.into_change_set(), nested.events) + (nested.overlay.into_change_set(), nested.events, nested.calls) }; self.overlay.commit(change_set); self.events.extend(events); + self.calls.extend(calls); Ok(CallReceipt { output_data }) } @@ -347,7 +356,7 @@ where return Err("contract already exists"); } - let (change_set, events) = { + let (change_set, events, calls) = { let mut overlay = OverlayAccountDb::new(&self.overlay); overlay.set_code(&dest, Some(code_hash.clone())); let mut nested = self.nested(overlay, dest.clone()); @@ -381,11 +390,12 @@ where // Deposit an instantiation event. nested.events.push(RawEvent::Instantiated(self.self_account.clone(), dest.clone())); - (nested.overlay.into_change_set(), nested.events) + (nested.overlay.into_change_set(), nested.events, nested.calls) }; self.overlay.commit(change_set); self.events.extend(events); + self.calls.extend(calls); Ok(InstantiateReceipt { address: dest }) } @@ -416,11 +426,7 @@ impl Token for TransferFeeToken { TransferFeeKind::AccountCreate => metadata.account_create_fee, TransferFeeKind::Transfer => metadata.transfer_fee, }; - - let amount_in_gas: T::Balance = balance_fee / self.gas_price; - let amount_in_gas: T::Gas = >::sa(amount_in_gas); - - amount_in_gas + approx_gas_for_balance::(self.gas_price, balance_fee) } } @@ -562,6 +568,13 @@ where .call(to.clone(), value, gas_meter, input_data, empty_output_buf) } + /// Notes a call dispatch. + fn note_dispatch_call(&mut self, call: CallOf) { + self.ctx.calls.push( + (self.ctx.self_account.clone(), call) + ); + } + fn address(&self) -> &T::AccountId { &self.ctx.self_account } diff --git a/substrate/srml/contract/src/gas.rs b/substrate/srml/contract/src/gas.rs index afec6dfcb7..61e915672d 100644 --- a/substrate/srml/contract/src/gas.rs +++ b/substrate/srml/contract/src/gas.rs @@ -247,6 +247,13 @@ pub fn refund_unused_gas(transactor: &T::AccountId, gas_meter: GasMete >::increase_total_stake_by(refund); } +/// A little handy utility for converting a value in balance units into approximitate value in gas units +/// at the given gas price. +pub fn approx_gas_for_balance(gas_price: T::Balance, balance: T::Balance) -> T::Gas { + let amount_in_gas: T::Balance = balance / gas_price; + >::sa(amount_in_gas) +} + /// A simple utility macro that helps to match against a /// list of tokens. #[macro_export] diff --git a/substrate/srml/contract/src/lib.rs b/substrate/srml/contract/src/lib.rs index d827b86718..9ea3d5cddd 100644 --- a/substrate/srml/contract/src/lib.rs +++ b/substrate/srml/contract/src/lib.rs @@ -104,26 +104,41 @@ use rstd::prelude::*; use rstd::marker::PhantomData; use codec::{Codec, HasCompact}; use runtime_primitives::traits::{Hash, As, SimpleArithmetic,Bounded, StaticLookup}; -use runtime_support::dispatch::Result; +use runtime_support::dispatch::{Result, Dispatchable}; use runtime_support::{Parameter, StorageMap, StorageValue, StorageDoubleMap}; -use system::ensure_signed; +use system::{ensure_signed, RawOrigin}; use runtime_io::{blake2_256, twox_128}; pub type CodeHash = ::Hash; +/// A function that generates an `AccountId` for a contract upon instantiation. +pub trait ContractAddressFor { + fn contract_address_for(code_hash: &CodeHash, data: &[u8], origin: &AccountId) -> AccountId; +} + +/// A function that returns the fee for dispatching a `Call`. +pub trait ComputeDispatchFee { + fn compute_dispatch_fee(call: &Call) -> Balance; +} + pub trait Trait: balances::Trait { - /// Function type to get the contract address given the creator. - type DetermineContractAddress: ContractAddressFor, Self::AccountId>; + /// The outer call dispatch type. + type Call: Parameter + Dispatchable::Origin>; + + /// The overarching event type. + type Event: From> + Into<::Event>; // As is needed for wasm-utils type Gas: Parameter + Default + Codec + SimpleArithmetic + Bounded + Copy + As + As + As; - /// The overarching event type. - type Event: From> + Into<::Event>; -} + /// A function type to get the contract address given the creator. + type DetermineContractAddress: ContractAddressFor, Self::AccountId>; -pub trait ContractAddressFor { - fn contract_address_for(code_hash: &CodeHash, data: &[u8], origin: &AccountId) -> AccountId; + /// A function type that computes the fee for dispatching the given `Call`. + /// + /// It is recommended (though not required) for this function to return a fee that would be taken + /// by executive module for regular dispatch. + type ComputeDispatchFee: ComputeDispatchFee::Balance>; } /// Simple contract address determintator. @@ -133,7 +148,6 @@ pub trait ContractAddressFor { /// /// Formula: `blake2_256(blake2_256(code) + blake2_256(data) + origin)` pub struct SimpleAddressDeterminator(PhantomData); - impl ContractAddressFor, T::AccountId> for SimpleAddressDeterminator where T::AccountId: From + AsRef<[u8]> @@ -150,9 +164,21 @@ where } } +/// The default dispatch fee computor computes the fee in the same way that +/// implementation of `MakePayment` for balances module does. +pub struct DefaultDispatchFeeComputor(PhantomData); +impl ComputeDispatchFee for DefaultDispatchFeeComputor { + fn compute_dispatch_fee(call: &T::Call) -> T::Balance { + let encoded_len = codec::Encode::encode(&call).len(); + let base_fee = >::transaction_base_fee(); + let byte_fee = >::transaction_byte_fee(); + base_fee + byte_fee * >::sa(encoded_len as u64) + } +} + decl_module! { /// Contracts module. - pub struct Module for enum Call where origin: T::Origin { + pub struct Module for enum Call where origin: ::Origin { fn deposit_event() = default; /// Updates the schedule for metering contracts. @@ -231,6 +257,12 @@ decl_module! { // can alter the balance of the caller. gas::refund_unused_gas::(&origin, gas_meter); + // Dispatch every recorded call with an appropriate origin. + ctx.calls.into_iter().for_each(|(who, call)| { + let result = call.dispatch(RawOrigin::Signed(who.clone()).into()); + Self::deposit_event(RawEvent::Dispatched(who, result.is_ok())); + }); + result.map(|_| ()) } @@ -280,6 +312,12 @@ decl_module! { // can alter the balance of the caller. gas::refund_unused_gas::(&origin, gas_meter); + // Dispatch every recorded call with an appropriate origin. + ctx.calls.into_iter().for_each(|(who, call)| { + let result = call.dispatch(RawOrigin::Signed(who.clone()).into()); + Self::deposit_event(RawEvent::Dispatched(who, result.is_ok())); + }); + result.map(|_| ()) } @@ -307,6 +345,10 @@ decl_event! { /// Triggered when the current schedule is updated. ScheduleUpdated(u32), + + /// A call was dispatched from the given account. The bool signals whether it was + /// successful execution or not. + Dispatched(AccountId, bool), } } diff --git a/substrate/srml/contract/src/tests.rs b/substrate/srml/contract/src/tests.rs index 542f2c258f..87c99a6753 100644 --- a/substrate/srml/contract/src/tests.rs +++ b/substrate/srml/contract/src/tests.rs @@ -25,17 +25,13 @@ use runtime_primitives::traits::{BlakeTwo256, IdentityLookup}; use runtime_primitives::BuildStorage; use runtime_support::{StorageMap, StorageDoubleMap}; use substrate_primitives::{Blake2Hasher}; -use system::{Phase, EventRecord}; +use system::{ensure_signed, Phase, EventRecord}; use wabt; use { - balances, runtime_io, system, ContractAddressFor, GenesisConfig, Module, RawEvent, StorageOf, - Trait, + balances, runtime_io, system, ComputeDispatchFee, ContractAddressFor, GenesisConfig, Module, RawEvent, StorageOf, + Trait }; -impl_outer_origin! { - pub enum Origin for Test {} -} - mod contract { // Re-export contents of the root. This basically // needs to give a name for the current crate. @@ -47,6 +43,15 @@ impl_outer_event! { balances, contract, } } +impl_outer_origin! { + pub enum Origin for Test { } +} +impl_outer_dispatch! { + pub enum Call for Test where origin: Origin { + balances::Balances, + contract::Contract, + } +} #[derive(Clone, Eq, PartialEq)] pub struct Test; @@ -71,9 +76,11 @@ impl balances::Trait for Test { type Event = MetaEvent; } impl Trait for Test { + type Call = Call; type Gas = u64; type DetermineContractAddress = DummyContractAddressFor; type Event = MetaEvent; + type ComputeDispatchFee = DummyComputeDispatchFee; } type Balances = balances::Module; @@ -87,6 +94,13 @@ impl ContractAddressFor for DummyContractAddressFor { } } +pub struct DummyComputeDispatchFee; +impl ComputeDispatchFee for DummyComputeDispatchFee { + fn compute_dispatch_fee(call: &Call) -> u64 { + 69 + } +} + const ALICE: u64 = 1; const BOB: u64 = 2; const CHARLIE: u64 = 3; @@ -298,3 +312,111 @@ fn instantiate_and_call() { }, ); } + +const CODE_DISPATCH_CALL: &str = r#" +(module + (import "env" "ext_dispatch_call" (func $ext_dispatch_call (param i32 i32))) + (import "env" "memory" (memory 1 1)) + + (func (export "call") + (call $ext_dispatch_call + (i32.const 8) ;; Pointer to the start of encoded call buffer + (i32.const 11) ;; Length of the buffer + ) + ) + (func (export "deploy")) + + (data (i32.const 8) "\00\00\03\00\00\00\00\00\00\00\C8") +) +"#; +const HASH_DISPATCH_CALL: [u8; 32] = hex!("49dfdcaf9c1553be10634467e95b8e71a3bc15a4f8bf5563c0312b0902e0afb9"); + +#[test] +fn dispatch_call() { + // This test can fail due to the encoding changes. In case it becomes too annoying + // let's rewrite so as we use this module controlled call or we serialize it in runtime. + let encoded = codec::Encode::encode(&Call::Balances(balances::Call::transfer(CHARLIE, 50.into()))); + assert_eq!(&encoded[..], &hex!("00000300000000000000C8")[..]); + + let wasm = wabt::wat2wasm(CODE_DISPATCH_CALL).unwrap(); + + with_externalities( + &mut ExtBuilder::default().existential_deposit(50).build(), + || { + Balances::set_free_balance(&ALICE, 1_000_000); + Balances::increase_total_stake_by(1_000_000); + + assert_ok!(Contract::put_code( + Origin::signed(ALICE), + 100_000.into(), + wasm, + )); + + // Let's keep this assert even though it's redundant. If you ever need to update the + // wasm source this test will fail and will show you the actual hash. + assert_eq!(System::events(), vec![ + EventRecord { + phase: Phase::ApplyExtrinsic(0), + event: MetaEvent::contract(RawEvent::CodeStored(HASH_DISPATCH_CALL.into())), + }, + ]); + + assert_ok!(Contract::create( + Origin::signed(ALICE), + 100.into(), + 100_000.into(), + HASH_DISPATCH_CALL.into(), + vec![], + )); + + assert_ok!(Contract::call( + Origin::signed(ALICE), + BOB, // newly created account + 0.into(), + 100_000.into(), + vec![], + )); + + assert_eq!(System::events(), vec![ + EventRecord { + phase: Phase::ApplyExtrinsic(0), + event: MetaEvent::contract(RawEvent::CodeStored(HASH_DISPATCH_CALL.into())), + }, + EventRecord { + phase: Phase::ApplyExtrinsic(0), + event: MetaEvent::balances( + balances::RawEvent::NewAccount(BOB, 100) + ) + }, + EventRecord { + phase: Phase::ApplyExtrinsic(0), + event: MetaEvent::contract(RawEvent::Transfer(ALICE, BOB, 100)) + }, + EventRecord { + phase: Phase::ApplyExtrinsic(0), + event: MetaEvent::contract(RawEvent::Instantiated(ALICE, BOB)) + }, + + // Dispatching the call. + EventRecord { + phase: Phase::ApplyExtrinsic(0), + event: MetaEvent::balances( + balances::RawEvent::NewAccount(CHARLIE, 50) + ) + }, + EventRecord { + phase: Phase::ApplyExtrinsic(0), + event: MetaEvent::balances( + balances::RawEvent::Transfer(BOB, CHARLIE, 50, 0) + ) + }, + + // Event emited as a result of dispatch. + EventRecord { + phase: Phase::ApplyExtrinsic(0), + event: MetaEvent::contract(RawEvent::Dispatched(BOB, true)) + } + ]); + }, + ); +} diff --git a/substrate/srml/contract/src/wasm/mod.rs b/substrate/srml/contract/src/wasm/mod.rs index 0682c008be..0633dc3162 100644 --- a/substrate/srml/contract/src/wasm/mod.rs +++ b/substrate/srml/contract/src/wasm/mod.rs @@ -174,12 +174,15 @@ mod tests { use std::collections::HashMap; use substrate_primitives::H256; use exec::{CallReceipt, Ext, InstantiateReceipt, EmptyOutputBuf}; + use balances; use gas::GasMeter; - use tests::Test; + use tests::{Test, Call}; use wabt; use wasm::prepare::prepare_contract; use CodeHash; + #[derive(Debug, PartialEq, Eq)] + struct DispatchEntry(Call); #[derive(Debug, PartialEq, Eq)] struct CreateEntry { code_hash: H256, @@ -199,6 +202,7 @@ mod tests { storage: HashMap, Vec>, creates: Vec, transfers: Vec, + dispatches: Vec, next_account_id: u64, } impl Ext for MockExt { @@ -248,6 +252,9 @@ mod tests { output_data: Vec::new(), }) } + fn note_dispatch_call(&mut self, call: Call) { + self.dispatches.push(DispatchEntry(call)); + } fn caller(&self) -> &u64 { &42 } @@ -942,6 +949,45 @@ mod tests { .unwrap(); } + const CODE_DISPATCH_CALL: &str = r#" +(module + (import "env" "ext_dispatch_call" (func $ext_dispatch_call (param i32 i32))) + (import "env" "memory" (memory 1 1)) + + (func (export "call") + (call $ext_dispatch_call + (i32.const 8) ;; Pointer to the start of encoded call buffer + (i32.const 13) ;; Length of the buffer + ) + ) + (func (export "deploy")) + + (data (i32.const 8) "\00\01\2A\00\00\00\00\00\00\00\E5\14\00") +) +"#; + + #[test] + fn dispatch_call() { + // This test can fail due to the encoding changes. In case it becomes too annoying + // let's rewrite so as we use this module controlled call or we serialize it in runtime. + + let mut mock_ext = MockExt::default(); + execute( + CODE_DISPATCH_CALL, + &[], + &mut Vec::new(), + &mut mock_ext, + &mut GasMeter::with_limit(50_000, 1), + ) + .unwrap(); + + assert_eq!( + &mock_ext.dispatches, + &[DispatchEntry( + Call::Balances(balances::Call::set_balance(42, 1337.into(), 0.into())), + )] + ); + } const CODE_RETURN_FROM_START_FN: &str = r#" (module diff --git a/substrate/srml/contract/src/wasm/runtime.rs b/substrate/srml/contract/src/wasm/runtime.rs index 314bdbf5a1..ce1bf89baa 100644 --- a/substrate/srml/contract/src/wasm/runtime.rs +++ b/substrate/srml/contract/src/wasm/runtime.rs @@ -21,11 +21,11 @@ use exec::{Ext, BalanceOf, VmExecResult, OutputBuf, EmptyOutputBuf, CallReceipt, use rstd::prelude::*; use rstd::mem; use codec::{Decode, Encode}; -use gas::{GasMeter, Token, GasMeterResult}; +use gas::{GasMeter, Token, GasMeterResult, approx_gas_for_balance}; use runtime_primitives::traits::{As, CheckedMul, Bounded}; use sandbox; use system; -use {Trait, CodeHash}; +use {Trait, CodeHash, ComputeDispatchFee}; /// Enumerates all possible *special* trap conditions. /// @@ -96,7 +96,7 @@ pub(crate) fn to_execution_result( #[cfg_attr(test, derive(Debug, PartialEq, Eq))] #[derive(Copy, Clone)] -pub enum RuntimeToken { +pub enum RuntimeToken { /// Explicit call to the `gas` function. Charge the gas meter /// with the value provided. Explicit(u32), @@ -107,9 +107,11 @@ pub enum RuntimeToken { /// The given number of bytes is read from the sandbox memory and /// is returned as the return data buffer of the call. ReturnData(u32), + /// Dispatch fee calculated by `T::ComputeDispatchFee`. + ComputedDispatchFee(Gas), } -impl Token for RuntimeToken { +impl Token for RuntimeToken { type Metadata = Schedule; fn calculate_amount(&self, metadata: &Schedule) -> T::Gas { @@ -125,6 +127,7 @@ impl Token for RuntimeToken { ReturnData(byte_count) => metadata .return_data_per_byte_cost .checked_mul(&>::sa(byte_count)), + ComputedDispatchFee(gas) => Some(gas), }; value.unwrap_or_else(|| Bounded::max_value()) @@ -482,6 +485,30 @@ define_env!(Env, , Ok(()) }, + // Decodes the given buffer as a `T::Call` and adds it to the list + // of to-be-dispatched calls. + // + // All calls made it to the top-level context will be dispatched before + // finishing the execution of the calling extrinsic. + ext_dispatch_call(ctx, call_ptr: u32, call_len: u32) => { + let call = { + let call_buf = read_sandbox_memory(ctx, call_ptr, call_len)?; + <<::T as Trait>::Call>::decode(&mut &call_buf[..]) + .ok_or_else(|| sandbox::HostError)? + }; + + // Charge gas for dispatching this call. + let fee = { + let balance_fee = <::T as Trait>::ComputeDispatchFee::compute_dispatch_fee(&call); + approx_gas_for_balance::<::T>(ctx.gas_meter.gas_price(), balance_fee) + }; + charge_gas(&mut ctx.gas_meter, ctx.schedule, RuntimeToken::ComputedDispatchFee(fee))?; + + ctx.ext.note_dispatch_call(call); + + Ok(()) + }, + // Returns the size of the input buffer. ext_input_size(ctx) -> u32 => { Ok(ctx.input_data.len() as u32)