mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-09 19:01:08 +00:00
[contracts] Stabilize "seal0" is_contract and caller_is_origin (#10971)
* stabilize `seal_is_contract` * stabilize `seal_caller_is_origin`
This commit is contained in:
committed by
GitHub
parent
ecd7568280
commit
ded1f7706d
@@ -409,7 +409,7 @@ benchmarks! {
|
||||
let code = WasmModule::<T>::from(ModuleDefinition {
|
||||
memory: Some(ImportedMemory::max::<T>()),
|
||||
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::<T>::from(ModuleDefinition {
|
||||
memory: Some(ImportedMemory::max::<T>()),
|
||||
imported_functions: vec![ImportedFunction {
|
||||
module: "__unstable__",
|
||||
module: "seal0",
|
||||
name: "seal_caller_is_origin",
|
||||
params: vec![],
|
||||
return_type: Some(ValueType::I32),
|
||||
|
||||
@@ -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))
|
||||
|
||||
|
||||
@@ -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, <E: Ext>,
|
||||
// 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: <<E as Ext>::T as frame_system::Config>::AccountId =
|
||||
ctx.read_sandbox_memory_as(account_ptr)?;
|
||||
@@ -1390,7 +1386,7 @@ define_env!(Env, <E: Ext>,
|
||||
// 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)
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user