lib.rs 38.8 KiB
Newer Older
		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],
		) -> pallet_contracts_primitives::GetStorageResult {
			Contracts::get_storage(address, key)
		}

		fn rent_projection(
			address: AccountId,
		) -> pallet_contracts_primitives::RentProjectionResult<BlockNumber> {
			Contracts::rent_projection(address)
	impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentApi<
		Block,
		Balance,
		UncheckedExtrinsic,
	> for Runtime {
		fn query_info(uxt: UncheckedExtrinsic, len: u32) -> RuntimeDispatchInfo<Balance> {
			TransactionPayment::query_info(uxt, len)
		}
	}

	impl sp_session::SessionKeys<Block> for Runtime {
		fn generate_session_keys(seed: Option<Vec<u8>>) -> Vec<u8> {
			SessionKeys::generate(seed)
		}
		) -> Option<Vec<(Vec<u8>, KeyTypeId)>> {
			SessionKeys::decode_into_raw_public_keys(&encoded)
		}
	#[cfg(feature = "runtime-benchmarks")]
	impl frame_benchmarking::Benchmark<Block> for Runtime {
		fn dispatch_benchmark(
			pallet: Vec<u8>,
			benchmark: Vec<u8>,
			lowest_range_values: Vec<u32>,
			highest_range_values: Vec<u32>,
			steps: Vec<u32>,
		) -> Result<Vec<frame_benchmarking::BenchmarkBatch>, sp_runtime::RuntimeString> {
			use frame_benchmarking::{Benchmarking, BenchmarkBatch, add_benchmark};
			// Trying to add benchmarks directly to the Session Pallet caused cyclic dependency issues.
			// To get around that, we separated the Session benchmarks into its own crate, which is why
			// we need these two lines below.
			use pallet_session_benchmarking::Module as SessionBench;
			use pallet_offences_benchmarking::Module as OffencesBench;
			use frame_system_benchmarking::Module as SystemBench;
			impl pallet_session_benchmarking::Trait for Runtime {}
			impl pallet_offences_benchmarking::Trait for Runtime {}
			impl frame_system_benchmarking::Trait for Runtime {}
			let mut batches = Vec::<BenchmarkBatch>::new();
			let params = (&pallet, &benchmark, &lowest_range_values, &highest_range_values, &steps, repeat);
			add_benchmark!(params, batches, b"balances", Balances);
			add_benchmark!(params, batches, b"collective", Council);
			add_benchmark!(params, batches, b"democracy", Democracy);
			add_benchmark!(params, batches, b"elections", Elections);
			add_benchmark!(params, batches, b"identity", Identity);
			add_benchmark!(params, batches, b"im-online", ImOnline);
			add_benchmark!(params, batches, b"indices", Indices);
			add_benchmark!(params, batches, b"multisig", Multisig);
			add_benchmark!(params, batches, b"offences", OffencesBench::<Runtime>);
Gavin Wood's avatar
Gavin Wood committed
			add_benchmark!(params, batches, b"proxy", Proxy);
			add_benchmark!(params, batches, b"scheduler", Scheduler);
			add_benchmark!(params, batches, b"session", SessionBench::<Runtime>);
			add_benchmark!(params, batches, b"staking", Staking);
			add_benchmark!(params, batches, b"system", SystemBench::<Runtime>);
			add_benchmark!(params, batches, b"timestamp", Timestamp);
			add_benchmark!(params, batches, b"treasury", Treasury);
			add_benchmark!(params, batches, b"utility", Utility);
			add_benchmark!(params, batches, b"vesting", Vesting);
			if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) }
			Ok(batches)
#[cfg(test)]
mod tests {
	use super::*;
Rakan Alhneiti's avatar
Rakan Alhneiti committed
	use frame_system::offchain::CreateSignedTransaction;
	fn validate_transaction_submitter_bounds() {
		fn is_submit_signed_transaction<T>() where
Rakan Alhneiti's avatar
Rakan Alhneiti committed
			T: CreateSignedTransaction<Call>,
Rakan Alhneiti's avatar
Rakan Alhneiti committed
		is_submit_signed_transaction::<Runtime>();