Make contract a separate runtime module (#345)
* decl_module and extract runtime mod * Invert dependency staking←→contract * Remove CodeOf * Remove StorageOf and move double_map * Comment staking test * Clean * Add gas_price and gas_limit * Commit. * Renames * Params * WIP * Rename transfer to call * WIP * Rebuild binaries. * WIP * Backport ctro changes * Call wiring * Commit overlay. * Rename merge → commit, into_state → ..._change_set * WIP * Contract creation routines * Set code of the created account. * Fix the ID of `create` Call * Fix most of the warning. * Add the simplest test in the contract crate * Transfers work! * Add contract_create test. * Clean * Add top-level create test * Clean a bit. * Pass gas_limit and data via create. * Introduce OnAccountKill callback in staking * Hook up OnAccountKill * Comments * Pay for gas. * Refund unused gas in call * Tests for zero call and zero endownment. * Add todo about rewriting docs * Pay for gas in create transactions * Fix refunds * Clean unrelevant comments * fixup! Fix refunds * fixup! Clean unrelevant comments * Move DetermineContractAddress to contract Also restore account removal test * fixup! Clean unrelevant comments * Inline effect_transfer, remove effect_create Remove account_db! * Use own new_test_ext. * Don't account for liability * Add some docs * Move contract_fee into contract module * Take GasMeter in vm::execute * Use GasMeter throughout contract module for meter * gas module refactoring * Clean * Add base call fee * note about gas price should be taken from storage * Add base fee for create * Rename send → call * Clean * Take fee expressed in dots in gas * Add Checked{Add,Sub,Mul,Div} to SimpleArithmetic * Make Gas generic * Store {call,create}_base_fee in storage * Clean * Rename buy_gas * Store gas_price in the storage * Remove unneeded comment. * Bail out if contract already has code. * Todos * Refund even if top-level contract fails. * Fix error msg * Fix caller issue * Extract tests module * Add max_depth var in storage * Remove left over gas_left * Refactor exec * Add test oog test. * set_free_balance_creating * Docs and comments. * Update storage roots because of ContractFee move * Rebuild binaries. * Simplify vm code. * Wrapping. * Refactor a bit. * Typo * UpdateBalanceOutcome enum * Style grumbles. * Rebuild binaries. * Always consume the given amount of gas. * [skip ci] endownment → endowment * Rename `AccountId` generic in on_account_kill * Fix Cargo.lock * Refine docs for gas meter. * [skip ci] Add comments for gas module * Directly assign to `return_data` at declaration * Use slices instead of vecs to pass the input data * Add todo about passing return data without copy * Use checked_add instead of add with overflow * Use return_data directly. * Rebuild binaries. * Rebuild binaries.
Showing
- substrate/Cargo.lock 10 additions, 1 deletionsubstrate/Cargo.lock
- substrate/demo/cli/src/lib.rs 0 additions, 1 deletionsubstrate/demo/cli/src/lib.rs
- substrate/demo/executor/src/lib.rs 3 additions, 4 deletionssubstrate/demo/executor/src/lib.rs
- substrate/demo/runtime/src/lib.rs 1 addition, 1 deletionsubstrate/demo/runtime/src/lib.rs
- substrate/demo/runtime/wasm/Cargo.lock 0 additions, 23 deletionssubstrate/demo/runtime/wasm/Cargo.lock
- substrate/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm 0 additions, 0 deletions.../wasm32-unknown-unknown/release/demo_runtime.compact.wasm
- substrate/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm 0 additions, 0 deletions...m/target/wasm32-unknown-unknown/release/demo_runtime.wasm
- substrate/polkadot/runtime/src/lib.rs 1 addition, 1 deletionsubstrate/polkadot/runtime/src/lib.rs
- substrate/polkadot/runtime/wasm/Cargo.lock 0 additions, 23 deletionssubstrate/polkadot/runtime/wasm/Cargo.lock
- substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm 0 additions, 0 deletions...m32-unknown-unknown/release/polkadot_runtime.compact.wasm
- substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm 0 additions, 0 deletions...rget/wasm32-unknown-unknown/release/polkadot_runtime.wasm
- substrate/polkadot/service/src/chain_spec.rs 0 additions, 2 deletionssubstrate/polkadot/service/src/chain_spec.rs
- substrate/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm 0 additions, 0 deletions.../wasm32-unknown-unknown/release/runtime_test.compact.wasm
- substrate/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm 0 additions, 0 deletions...m/target/wasm32-unknown-unknown/release/runtime_test.wasm
- substrate/substrate/runtime/contract/Cargo.toml 20 additions, 0 deletionssubstrate/substrate/runtime/contract/Cargo.toml
- substrate/substrate/runtime/contract/src/account_db.rs 37 additions, 81 deletionssubstrate/substrate/runtime/contract/src/account_db.rs
- substrate/substrate/runtime/contract/src/double_map.rs 0 additions, 0 deletionssubstrate/substrate/runtime/contract/src/double_map.rs
- substrate/substrate/runtime/contract/src/exec.rs 259 additions, 0 deletionssubstrate/substrate/runtime/contract/src/exec.rs
- substrate/substrate/runtime/contract/src/gas.rs 150 additions, 0 deletionssubstrate/substrate/runtime/contract/src/gas.rs
- substrate/substrate/runtime/contract/src/genesis_config.rs 48 additions, 0 deletionssubstrate/substrate/runtime/contract/src/genesis_config.rs
Please register or sign in to comment