From dc989276c5e50771e74206aa8807268e60cbb0d7 Mon Sep 17 00:00:00 2001 From: Alexander Gryaznov Date: Fri, 4 Mar 2022 18:28:00 +0300 Subject: [PATCH] [contracts] Stabilize "seal0" `is_contract` and `caller_is_origin` (#10971) * stabilize `seal_is_contract` * stabilize `seal_caller_is_origin` --- frame/contracts/src/benchmarking/mod.rs | 4 ++-- frame/contracts/src/wasm/mod.rs | 6 ++---- frame/contracts/src/wasm/runtime.rs | 8 ++------ 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/frame/contracts/src/benchmarking/mod.rs b/frame/contracts/src/benchmarking/mod.rs index 129b4a62581cc..5fdc5c2ab7846 100644 --- a/frame/contracts/src/benchmarking/mod.rs +++ b/frame/contracts/src/benchmarking/mod.rs @@ -409,7 +409,7 @@ benchmarks! { let code = WasmModule::::from(ModuleDefinition { memory: Some(ImportedMemory::max::()), imported_functions: vec![ImportedFunction { - module: "__unstable__", + module: "seal0", name: "seal_is_contract", params: vec![ValueType::I32], return_type: Some(ValueType::I32), @@ -441,7 +441,7 @@ benchmarks! { let code = WasmModule::::from(ModuleDefinition { memory: Some(ImportedMemory::max::()), imported_functions: vec![ImportedFunction { - module: "__unstable__", + module: "seal0", name: "seal_caller_is_origin", params: vec![], return_type: Some(ValueType::I32), diff --git a/frame/contracts/src/wasm/mod.rs b/frame/contracts/src/wasm/mod.rs index 2dbaad0d79324..d89e7c1c8037d 100644 --- a/frame/contracts/src/wasm/mod.rs +++ b/frame/contracts/src/wasm/mod.rs @@ -2321,12 +2321,11 @@ mod tests { } #[test] - #[cfg(feature = "unstable-interface")] fn is_contract_works() { const CODE_IS_CONTRACT: &str = r#" ;; This runs `is_contract` check on zero account address (module - (import "__unstable__" "seal_is_contract" (func $seal_is_contract (param i32) (result i32))) + (import "seal0" "seal_is_contract" (func $seal_is_contract (param i32) (result i32))) (import "seal0" "seal_return" (func $seal_return (param i32 i32 i32))) (import "env" "memory" (memory 1 1)) @@ -2362,12 +2361,11 @@ mod tests { } #[test] - #[cfg(feature = "unstable-interface")] fn caller_is_origin_works() { const CODE_CALLER_IS_ORIGIN: &str = r#" ;; This runs `caller_is_origin` check on zero account address (module - (import "__unstable__" "seal_caller_is_origin" (func $seal_caller_is_origin (result i32))) + (import "seal0" "seal_caller_is_origin" (func $seal_caller_is_origin (result i32))) (import "seal0" "seal_return" (func $seal_return (param i32 i32 i32))) (import "env" "memory" (memory 1 1)) diff --git a/frame/contracts/src/wasm/runtime.rs b/frame/contracts/src/wasm/runtime.rs index bb188e10e8fa0..d008fa3f1dac0 100644 --- a/frame/contracts/src/wasm/runtime.rs +++ b/frame/contracts/src/wasm/runtime.rs @@ -143,10 +143,8 @@ pub enum RuntimeCosts { /// Weight of calling `seal_caller`. Caller, /// Weight of calling `seal_is_contract`. - #[cfg(feature = "unstable-interface")] IsContract, /// Weight of calling `seal_caller_is_origin`. - #[cfg(feature = "unstable-interface")] CallerIsOrigin, /// Weight of calling `seal_address`. Address, @@ -236,9 +234,7 @@ impl RuntimeCosts { CopyFromContract(len) => s.return_per_byte.saturating_mul(len.into()), CopyToContract(len) => s.input_per_byte.saturating_mul(len.into()), Caller => s.caller, - #[cfg(feature = "unstable-interface")] IsContract => s.is_contract, - #[cfg(feature = "unstable-interface")] CallerIsOrigin => s.caller_is_origin, Address => s.address, GasLeft => s.gas_left, @@ -1372,7 +1368,7 @@ define_env!(Env, , // Should be decodable as an `T::AccountId`. Traps otherwise. // // Returned value is a u32-encoded boolean: (0 = false, 1 = true). - [__unstable__] seal_is_contract(ctx, account_ptr: u32) -> u32 => { + [seal0] seal_is_contract(ctx, account_ptr: u32) -> u32 => { ctx.charge_gas(RuntimeCosts::IsContract)?; let address: <::T as frame_system::Config>::AccountId = ctx.read_sandbox_memory_as(account_ptr)?; @@ -1390,7 +1386,7 @@ define_env!(Env, , // and `false` indicates that the caller is another contract. // // Returned value is a u32-encoded boolean: (0 = false, 1 = true). - [__unstable__] seal_caller_is_origin(ctx) -> u32 => { + [seal0] seal_caller_is_origin(ctx) -> u32 => { ctx.charge_gas(RuntimeCosts::CallerIsOrigin)?; Ok(ctx.ext.caller_is_origin() as u32) },