difftreelog
Contracts rpc runtime added
in: master
4 files changed
Cargo.lockdiffbeforeafterboth--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2553,6 +2553,7 @@
"pallet-balances",
"pallet-contracts",
"pallet-contracts-primitives",
+ "pallet-contracts-rpc-runtime-api",
"pallet-grandpa",
"pallet-nft",
"pallet-randomness-collective-flip",
node/src/chain_spec.rsdiffbeforeafterboth--- a/node/src/chain_spec.rs
+++ b/node/src/chain_spec.rs
@@ -122,7 +122,7 @@
key: root_key,
}),
contracts: Some(ContractsConfig {
- gas_price: 1_000_000_000,
+ gas_price: 1_000,
current_schedule: ContractsSchedule {
// enable_println,
..Default::default()
runtime/Cargo.tomldiffbeforeafterboth1[dependencies.aura]2default-features = false3package = 'pallet-aura'4version = '2.0.0-alpha.6'56[dependencies.balances]7default-features = false8package = 'pallet-balances'9version = '2.0.0-alpha.6'1011[dependencies.codec]12default-features = false13features = ['derive']14package = 'parity-scale-codec'15version = '1.3.0'1617[dependencies.contracts]18default-features = false19package = 'pallet-contracts'20version = '2.0.0-alpha.6'2122[dependencies.contracts-primitives]23default-features = false24package = 'pallet-contracts-primitives'25version = '2.0.0-alpha.6'2627[dependencies.frame-executive]28default-features = false29version = '2.0.0-alpha.6'3031[dependencies.frame-support]32default-features = false33version = '2.0.0-alpha.6'3435[dependencies.grandpa]36default-features = false37package = 'pallet-grandpa'38version = '2.0.0-alpha.6'3940[dependencies.randomness-collective-flip]41default-features = false42package = 'pallet-randomness-collective-flip'43version = '2.0.0-alpha.6'4445[dependencies.serde]46features = ['derive']47optional = true48version = '1.0.101'4950[dependencies.sp-api]51default-features = false52version = '2.0.0-alpha.6'5354[dependencies.sp-block-builder]55default-features = false56version = '2.0.0-alpha.6'5758[dependencies.sp-consensus-aura]59default-features = false60version = '0.8.0-alpha.6'6162[dependencies.sp-core]63default-features = false64version = '2.0.0-alpha.6'6566[dependencies.sp-inherents]67default-features = false68version = '2.0.0-alpha.6'6970[dependencies.sp-io]71default-features = false72version = '2.0.0-alpha.6'7374[dependencies.sp-offchain]75default-features = false76version = '2.0.0-alpha.6'7778[dependencies.sp-runtime]79default-features = false80version = '2.0.0-alpha.6'8182[dependencies.sp-session]83default-features = false84version = '2.0.0-alpha.6'8586[dependencies.sp-std]87default-features = false88version = '2.0.0-alpha.6'8990[dependencies.sp-transaction-pool]91default-features = false92version = '2.0.0-alpha.6'9394[dependencies.sp-version]95default-features = false96version = '2.0.0-alpha.6'9798[dependencies.sudo]99default-features = false100package = 'pallet-sudo'101version = '2.0.0-alpha.6'102103[dependencies.system]104default-features = false105package = 'frame-system'106version = '2.0.0-alpha.6'107108[dependencies.nft]109default-features = false110package = 'pallet-nft'111path = '../pallets/nft'112version = '2.0.0-alpha.6'113114[dependencies.timestamp]115default-features = false116package = 'pallet-timestamp'117version = '2.0.0-alpha.6'118119[dependencies.transaction-payment]120default-features = false121package = 'pallet-transaction-payment'122version = '2.0.0-alpha.6'123124[build-dependencies.wasm-builder-runner]125package = 'substrate-wasm-builder-runner'126version = '1.0.5'127128[package]129authors = ['Anonymous']130edition = '2018'131homepage = 'https://substrate.dev'132license = 'Unlicense'133name = 'nft-runtime'134repository = 'https://github.com/paritytech/substrate/'135version = '2.0.0-alpha.6'136137[package.metadata.docs.rs]138targets = ['x86_64-unknown-linux-gnu']139140[features]141default = ['std']142std = [143 'aura/std',144 'balances/std',145 'codec/std',146 'contracts/std',147 'contracts-primitives/std',148 'frame-executive/std',149 'frame-support/std',150 'grandpa/std',151 'randomness-collective-flip/std',152 'serde',153 'sp-api/std',154 'sp-block-builder/std',155 'sp-consensus-aura/std',156 'sp-core/std',157 'sp-inherents/std',158 'sp-io/std',159 'sp-offchain/std',160 'sp-runtime/std',161 'sp-session/std',162 'sp-std/std',163 'sp-transaction-pool/std',164 'sp-version/std',165 'sudo/std',166 'system/std',167 'timestamp/std',168 'transaction-payment/std',169 'nft/std',170]runtime/src/lib.rsdiffbeforeafterboth--- a/runtime/src/lib.rs
+++ b/runtime/src/lib.rs
@@ -36,6 +36,9 @@
pub use sp_runtime::{Perbill, Permill};
pub use timestamp::Call as TimestampCall;
pub use contracts::Schedule as ContractsSchedule;
+pub use contracts_rpc_runtime_api::{
+ self as runtime_api, ContractExecResult
+};
/// Importing a template pallet
pub use nft;
@@ -403,4 +406,39 @@
Grandpa::grandpa_authorities()
}
}
+
+ impl contracts_rpc_runtime_api::ContractsApi<Block, AccountId, Balance, BlockNumber>
+ for Runtime
+ {
+ fn call(
+ origin: AccountId,
+ dest: AccountId,
+ value: Balance,
+ gas_limit: u64,
+ input_data: Vec<u8>,
+ ) -> ContractExecResult {
+ let exec_result =
+ Contracts::bare_call(origin, dest.into(), value, gas_limit, input_data);
+ match exec_result {
+ Ok(v) => ContractExecResult::Success {
+ status: v.status,
+ data: v.data,
+ },
+ Err(_) => ContractExecResult::Error,
+ }
+ }
+
+ fn get_storage(
+ address: AccountId,
+ key: [u8; 32],
+ ) -> contracts_primitives::GetStorageResult {
+ Contracts::get_storage(address, key)
+ }
+
+ fn rent_projection(
+ address: AccountId,
+ ) -> contracts_primitives::RentProjectionResult<BlockNumber> {
+ Contracts::rent_projection(address)
+ }
+ }
}