pub trait VmCallerCheckedEnv {
type VmUserState;
type Error: Debug;
Show 92 methods
fn escalate_error_to_panic(&self, e: Self::Error) -> !;
fn log_value(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: RawVal
) -> Result<RawVal, Self::Error>;
fn get_invoking_contract(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>;
fn obj_cmp(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
a: RawVal,
b: RawVal
) -> Result<i64, Self::Error>;
fn contract_event(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
topics: Object,
data: RawVal
) -> Result<RawVal, Self::Error>;
fn get_current_contract(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>;
fn get_ledger_version(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<RawVal, Self::Error>;
fn get_ledger_sequence(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<RawVal, Self::Error>;
fn get_ledger_timestamp(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>;
fn get_ledger_network_passphrase(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>;
fn get_current_call_stack(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>;
fn fail_with_status(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
status: Status
) -> Result<RawVal, Self::Error>;
fn log_fmt_values(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
fmt: Object,
args: Object
) -> Result<RawVal, Self::Error>;
fn get_invoker_type(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<u64, Self::Error>;
fn get_invoking_account(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>;
fn get_ledger_network_id(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>;
fn obj_from_u64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: u64
) -> Result<Object, Self::Error>;
fn obj_to_u64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: Object
) -> Result<u64, Self::Error>;
fn obj_from_i64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: i64
) -> Result<Object, Self::Error>;
fn obj_to_i64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: Object
) -> Result<i64, Self::Error>;
fn obj_from_u128_pieces(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
lo: u64,
hi: u64
) -> Result<Object, Self::Error>;
fn obj_to_u128_lo64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: Object
) -> Result<u64, Self::Error>;
fn obj_to_u128_hi64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: Object
) -> Result<u64, Self::Error>;
fn obj_from_i128_pieces(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
lo: u64,
hi: u64
) -> Result<Object, Self::Error>;
fn obj_to_i128_lo64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: Object
) -> Result<u64, Self::Error>;
fn obj_to_i128_hi64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: Object
) -> Result<u64, Self::Error>;
fn map_new(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>;
fn map_put(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object,
k: RawVal,
v: RawVal
) -> Result<Object, Self::Error>;
fn map_get(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object,
k: RawVal
) -> Result<RawVal, Self::Error>;
fn map_del(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object,
k: RawVal
) -> Result<Object, Self::Error>;
fn map_len(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object
) -> Result<RawVal, Self::Error>;
fn map_has(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object,
k: RawVal
) -> Result<RawVal, Self::Error>;
fn map_prev_key(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object,
k: RawVal
) -> Result<RawVal, Self::Error>;
fn map_next_key(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object,
k: RawVal
) -> Result<RawVal, Self::Error>;
fn map_min_key(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object
) -> Result<RawVal, Self::Error>;
fn map_max_key(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object
) -> Result<RawVal, Self::Error>;
fn map_keys(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object
) -> Result<Object, Self::Error>;
fn map_values(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object
) -> Result<Object, Self::Error>;
fn vec_new(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
c: RawVal
) -> Result<Object, Self::Error>;
fn vec_put(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
i: RawVal,
x: RawVal
) -> Result<Object, Self::Error>;
fn vec_get(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
i: RawVal
) -> Result<RawVal, Self::Error>;
fn vec_del(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
i: RawVal
) -> Result<Object, Self::Error>;
fn vec_len(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object
) -> Result<RawVal, Self::Error>;
fn vec_push_front(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
x: RawVal
) -> Result<Object, Self::Error>;
fn vec_pop_front(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object
) -> Result<Object, Self::Error>;
fn vec_push_back(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
x: RawVal
) -> Result<Object, Self::Error>;
fn vec_pop_back(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object
) -> Result<Object, Self::Error>;
fn vec_front(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object
) -> Result<RawVal, Self::Error>;
fn vec_back(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object
) -> Result<RawVal, Self::Error>;
fn vec_insert(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
i: RawVal,
x: RawVal
) -> Result<Object, Self::Error>;
fn vec_append(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v1: Object,
v2: Object
) -> Result<Object, Self::Error>;
fn vec_slice(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
start: RawVal,
end: RawVal
) -> Result<Object, Self::Error>;
fn vec_first_index_of(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
x: RawVal
) -> Result<RawVal, Self::Error>;
fn vec_last_index_of(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
x: RawVal
) -> Result<RawVal, Self::Error>;
fn vec_binary_search(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
x: RawVal
) -> Result<u64, Self::Error>;
fn put_contract_data(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
k: RawVal,
v: RawVal
) -> Result<RawVal, Self::Error>;
fn has_contract_data(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
k: RawVal
) -> Result<RawVal, Self::Error>;
fn get_contract_data(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
k: RawVal
) -> Result<RawVal, Self::Error>;
fn del_contract_data(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
k: RawVal
) -> Result<RawVal, Self::Error>;
fn create_contract_from_contract(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
wasm_hash: Object,
salt: Object
) -> Result<Object, Self::Error>;
fn create_token_from_contract(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
salt: Object
) -> Result<Object, Self::Error>;
fn call(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
contract: Object,
func: Symbol,
args: Object
) -> Result<RawVal, Self::Error>;
fn try_call(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
contract: Object,
func: Symbol,
args: Object
) -> Result<RawVal, Self::Error>;
fn serialize_to_bytes(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: RawVal
) -> Result<Object, Self::Error>;
fn deserialize_from_bytes(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object
) -> Result<RawVal, Self::Error>;
fn bytes_copy_to_linear_memory(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
b_pos: RawVal,
lm_pos: RawVal,
len: RawVal
) -> Result<RawVal, Self::Error>;
fn bytes_copy_from_linear_memory(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
b_pos: RawVal,
lm_pos: RawVal,
len: RawVal
) -> Result<Object, Self::Error>;
fn bytes_new_from_linear_memory(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
lm_pos: RawVal,
len: RawVal
) -> Result<Object, Self::Error>;
fn bytes_new(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>;
fn bytes_put(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
i: RawVal,
u: RawVal
) -> Result<Object, Self::Error>;
fn bytes_get(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
i: RawVal
) -> Result<RawVal, Self::Error>;
fn bytes_del(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
i: RawVal
) -> Result<Object, Self::Error>;
fn bytes_len(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object
) -> Result<RawVal, Self::Error>;
fn bytes_push(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
u: RawVal
) -> Result<Object, Self::Error>;
fn bytes_pop(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object
) -> Result<Object, Self::Error>;
fn bytes_front(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object
) -> Result<RawVal, Self::Error>;
fn bytes_back(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object
) -> Result<RawVal, Self::Error>;
fn bytes_insert(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
i: RawVal,
u: RawVal
) -> Result<Object, Self::Error>;
fn bytes_append(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b1: Object,
b2: Object
) -> Result<Object, Self::Error>;
fn bytes_slice(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
start: RawVal,
end: RawVal
) -> Result<Object, Self::Error>;
fn hash_from_bytes(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
x: Object
) -> Result<Object, Self::Error>;
fn hash_to_bytes(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
x: Object
) -> Result<Object, Self::Error>;
fn public_key_from_bytes(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
x: Object
) -> Result<Object, Self::Error>;
fn public_key_to_bytes(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
x: Object
) -> Result<Object, Self::Error>;
fn compute_hash_sha256(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
x: Object
) -> Result<Object, Self::Error>;
fn verify_sig_ed25519(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
x: Object,
k: Object,
s: Object
) -> Result<RawVal, Self::Error>;
fn account_get_low_threshold(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
a: Object
) -> Result<RawVal, Self::Error>;
fn account_get_medium_threshold(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
a: Object
) -> Result<RawVal, Self::Error>;
fn account_get_high_threshold(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
a: Object
) -> Result<RawVal, Self::Error>;
fn account_get_signer_weight(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
a: Object,
s: Object
) -> Result<RawVal, Self::Error>;
fn account_exists(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
a: Object
) -> Result<RawVal, Self::Error>;
fn dummy0(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<RawVal, Self::Error>;
}
Expand description
This trait is a variant of the Env trait used to
define the interface implemented by Host. The wasmi VM dispatch
functions call methods on VmCallerCheckedEnv
, passing a
VmCaller
that wraps the wasmi Caller context, and then convert
any Result::Err(...)
return value into a VM trap, halting VM
execution.
There is also a blanket impl<T:VmCallerCheckedEnv> CheckedEnv for T
that implements the CheckedEnv
for any VmCallerCheckedEnv
by
passing VmCaller::none()
for the first argument, allowing user
code such as the native contract to avoid writing VmCaller::none()
everywhere.
Required Associated Types§
type VmUserState
type Error: Debug
Required Methods§
fn escalate_error_to_panic(&self, e: Self::Error) -> !
fn log_value(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: RawVal
) -> Result<RawVal, Self::Error>
sourcefn get_invoking_contract(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>
fn get_invoking_contract(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>
Get the contractID Bytes
of the contract which invoked the
running contract. Traps if the running contract was not
invoked by a contract.
fn obj_cmp(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
a: RawVal,
b: RawVal
) -> Result<i64, Self::Error>
sourcefn contract_event(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
topics: Object,
data: RawVal
) -> Result<RawVal, Self::Error>
fn contract_event(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
topics: Object,
data: RawVal
) -> Result<RawVal, Self::Error>
Records a contract event. topics
is expected to be a SCVec
with
length <= 4 that cannot contain Vec
, Map
, or Bytes
with length > 32
On success, returns an SCStatus::Ok
.
sourcefn get_current_contract(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>
fn get_current_contract(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>
Get the contractID Bytes
of the contract which invoked the
running contract. Traps if the running contract was not
invoked by a contract.
sourcefn get_ledger_version(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<RawVal, Self::Error>
fn get_ledger_version(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<RawVal, Self::Error>
Return the protocol version of the current ledger as a u32.
sourcefn get_ledger_sequence(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<RawVal, Self::Error>
fn get_ledger_sequence(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<RawVal, Self::Error>
Return the sequence number of the current ledger as a u32.
sourcefn get_ledger_timestamp(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>
fn get_ledger_timestamp(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>
Return the timestamp number of the current ledger as a u64.
sourcefn get_ledger_network_passphrase(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>
fn get_ledger_network_passphrase(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>
Return the network passphrase of the current ledger as Bytes
.
sourcefn get_current_call_stack(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>
fn get_current_call_stack(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>
Returns the full call stack from the first contract call to the current one as a vector of vectors, where the inside vector contains the contract id as Hash, and a function as a Symbol.
sourcefn fail_with_status(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
status: Status
) -> Result<RawVal, Self::Error>
fn fail_with_status(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
status: Status
) -> Result<RawVal, Self::Error>
Causes the currently executing contract to fail immediately
with a provided status code, which must be of error-type
ScStatusType::ContractError
. Does not actually return.
fn log_fmt_values(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
fmt: Object,
args: Object
) -> Result<RawVal, Self::Error>
sourcefn get_invoker_type(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<u64, Self::Error>
fn get_invoker_type(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<u64, Self::Error>
Get whether the contract invocation is from an account or another contract. Returns 0 for account, 1 for contract.
sourcefn get_invoking_account(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>
fn get_invoking_account(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>
Get the AccountID object type of the account which invoked the running contract. Traps if the running contract was not invoked by an account.
sourcefn get_ledger_network_id(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>
fn get_ledger_network_id(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>
Return the network id (sha256 hash of network passphrase) of
the current ledger as Bytes
. The value is always 32 bytes
in length.
sourcefn obj_from_u64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: u64
) -> Result<Object, Self::Error>
fn obj_from_u64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: u64
) -> Result<Object, Self::Error>
Convert a u64 to an object containing a u64.
sourcefn obj_to_u64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: Object
) -> Result<u64, Self::Error>
fn obj_to_u64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: Object
) -> Result<u64, Self::Error>
Convert an object containing a i64 to a u64.
sourcefn obj_from_i64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: i64
) -> Result<Object, Self::Error>
fn obj_from_i64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: i64
) -> Result<Object, Self::Error>
Convert an i64 to an object containing an i64.
sourcefn obj_to_i64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: Object
) -> Result<i64, Self::Error>
fn obj_to_i64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: Object
) -> Result<i64, Self::Error>
Convert an object containing an i64 to an i64.
sourcefn obj_from_u128_pieces(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
lo: u64,
hi: u64
) -> Result<Object, Self::Error>
fn obj_from_u128_pieces(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
lo: u64,
hi: u64
) -> Result<Object, Self::Error>
Convert the low and high 64-bit words of a u128 to an object containing a u128.
sourcefn obj_to_u128_lo64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: Object
) -> Result<u64, Self::Error>
fn obj_to_u128_lo64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: Object
) -> Result<u64, Self::Error>
Extract the low 64 bits from an object containing a u128.
sourcefn obj_to_u128_hi64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: Object
) -> Result<u64, Self::Error>
fn obj_to_u128_hi64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: Object
) -> Result<u64, Self::Error>
Extract the high 64 bits from an object containing a u128.
sourcefn obj_from_i128_pieces(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
lo: u64,
hi: u64
) -> Result<Object, Self::Error>
fn obj_from_i128_pieces(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
lo: u64,
hi: u64
) -> Result<Object, Self::Error>
Convert the lo and hi 64-bit words of an i128 to an object containing an i128.
sourcefn obj_to_i128_lo64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: Object
) -> Result<u64, Self::Error>
fn obj_to_i128_lo64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: Object
) -> Result<u64, Self::Error>
Extract the low 64 bits from an object containing an i128.
sourcefn obj_to_i128_hi64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: Object
) -> Result<u64, Self::Error>
fn obj_to_i128_hi64(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
obj: Object
) -> Result<u64, Self::Error>
Extract the high 64 bits from an object containing an i128.
sourcefn map_new(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>
fn map_new(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>
Create an empty new map.
sourcefn map_put(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object,
k: RawVal,
v: RawVal
) -> Result<Object, Self::Error>
fn map_put(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object,
k: RawVal,
v: RawVal
) -> Result<Object, Self::Error>
Insert a key/value mapping into an existing map, and return the map object handle. If the map already has a mapping for the given key, the previous value is overwritten.
sourcefn map_get(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object,
k: RawVal
) -> Result<RawVal, Self::Error>
fn map_get(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object,
k: RawVal
) -> Result<RawVal, Self::Error>
Get the value for a key from a map. Traps if key is not found.
sourcefn map_del(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object,
k: RawVal
) -> Result<Object, Self::Error>
fn map_del(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object,
k: RawVal
) -> Result<Object, Self::Error>
Remove a key/value mapping from a map if it exists, traps if doesn’t.
sourcefn map_len(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object
) -> Result<RawVal, Self::Error>
fn map_len(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object
) -> Result<RawVal, Self::Error>
Get the size of a map.
sourcefn map_has(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object,
k: RawVal
) -> Result<RawVal, Self::Error>
fn map_has(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object,
k: RawVal
) -> Result<RawVal, Self::Error>
Test for the presence of a key in a map. Returns (SCStatic) TRUE/FALSE.
sourcefn map_prev_key(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object,
k: RawVal
) -> Result<RawVal, Self::Error>
fn map_prev_key(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object,
k: RawVal
) -> Result<RawVal, Self::Error>
Given a key, find the first key less than itself in the map’s sorted order. If such a key does not exist, return an SCStatus containing the error code (TBD).
sourcefn map_next_key(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object,
k: RawVal
) -> Result<RawVal, Self::Error>
fn map_next_key(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object,
k: RawVal
) -> Result<RawVal, Self::Error>
Given a key, find the first key greater than itself in the map’s sorted order. If such a key does not exist, return an SCStatus containing the error code (TBD).
sourcefn map_min_key(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object
) -> Result<RawVal, Self::Error>
fn map_min_key(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object
) -> Result<RawVal, Self::Error>
Find the minimum key from a map. If the map is empty, return an SCStatus containing the error code (TBD).
sourcefn map_max_key(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object
) -> Result<RawVal, Self::Error>
fn map_max_key(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object
) -> Result<RawVal, Self::Error>
Find the maximum key from a map. If the map is empty, return an SCStatus containing the error code (TBD).
sourcefn map_keys(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object
) -> Result<Object, Self::Error>
fn map_keys(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object
) -> Result<Object, Self::Error>
Return a new vector containing all the keys in a map. The new vector is ordered in the original map’s key-sorted order.
sourcefn map_values(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object
) -> Result<Object, Self::Error>
fn map_values(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
m: Object
) -> Result<Object, Self::Error>
Return a new vector containing all the values in a map. The new vector is ordered in the original map’s key-sorted order.
sourcefn vec_new(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
c: RawVal
) -> Result<Object, Self::Error>
fn vec_new(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
c: RawVal
) -> Result<Object, Self::Error>
Creates a new vector with an optional capacity hint c
.
If c
is ScStatic::Void
, no hint is assumed and the new vector is empty.
Otherwise, c
is parsed as an u32
that represents the initial capacity of the new vector.
sourcefn vec_put(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
i: RawVal,
x: RawVal
) -> Result<Object, Self::Error>
fn vec_put(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
i: RawVal,
x: RawVal
) -> Result<Object, Self::Error>
Update the value at index i
in the vector. Return the new vector.
Trap if the index is out of bounds.
sourcefn vec_get(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
i: RawVal
) -> Result<RawVal, Self::Error>
fn vec_get(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
i: RawVal
) -> Result<RawVal, Self::Error>
Returns the element at index i
of the vector. Traps if the index is out of bound.
sourcefn vec_del(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
i: RawVal
) -> Result<Object, Self::Error>
fn vec_del(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
i: RawVal
) -> Result<Object, Self::Error>
Delete an element in a vector at index i
, shifting all elements after it to the left.
Return the new vector. Traps if the index is out of bound.
sourcefn vec_len(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object
) -> Result<RawVal, Self::Error>
fn vec_len(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object
) -> Result<RawVal, Self::Error>
Returns length of the vector.
sourcefn vec_push_front(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
x: RawVal
) -> Result<Object, Self::Error>
fn vec_push_front(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
x: RawVal
) -> Result<Object, Self::Error>
Push a value to the front of a vector.
sourcefn vec_pop_front(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object
) -> Result<Object, Self::Error>
fn vec_pop_front(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object
) -> Result<Object, Self::Error>
Removes the first element from the vector and returns the new vector. Traps if original vector is empty.
sourcefn vec_push_back(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
x: RawVal
) -> Result<Object, Self::Error>
fn vec_push_back(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
x: RawVal
) -> Result<Object, Self::Error>
Appends an element to the back of the vector.
sourcefn vec_pop_back(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object
) -> Result<Object, Self::Error>
fn vec_pop_back(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object
) -> Result<Object, Self::Error>
Removes the last element from the vector and returns the new vector. Traps if original vector is empty.
sourcefn vec_front(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object
) -> Result<RawVal, Self::Error>
fn vec_front(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object
) -> Result<RawVal, Self::Error>
Return the first element in the vector. Traps if the vector is empty
sourcefn vec_back(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object
) -> Result<RawVal, Self::Error>
fn vec_back(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object
) -> Result<RawVal, Self::Error>
Return the last element in the vector. Traps if the vector is empty
sourcefn vec_insert(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
i: RawVal,
x: RawVal
) -> Result<Object, Self::Error>
fn vec_insert(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
i: RawVal,
x: RawVal
) -> Result<Object, Self::Error>
Inserts an element at index i
within the vector, shifting all elements after it to the right.
Traps if the index is out of bound
sourcefn vec_append(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v1: Object,
v2: Object
) -> Result<Object, Self::Error>
fn vec_append(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v1: Object,
v2: Object
) -> Result<Object, Self::Error>
Clone the vector v1
, then moves all the elements of vector v2
into it.
Return the new vector. Traps if number of elements in the vector overflows a u32.
sourcefn vec_slice(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
start: RawVal,
end: RawVal
) -> Result<Object, Self::Error>
fn vec_slice(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
start: RawVal,
end: RawVal
) -> Result<Object, Self::Error>
Copy the elements from start
index until end
index, exclusive, in the vector and create a new vector from it.
Return the new vector. Traps if the index is out of bound.
sourcefn vec_first_index_of(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
x: RawVal
) -> Result<RawVal, Self::Error>
fn vec_first_index_of(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
x: RawVal
) -> Result<RawVal, Self::Error>
Get the index of the first occurrence of a given element in the vector.
Returns the u32 index of the value if it’s there. Otherwise, it returns ScStatic::Void
.
sourcefn vec_last_index_of(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
x: RawVal
) -> Result<RawVal, Self::Error>
fn vec_last_index_of(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
x: RawVal
) -> Result<RawVal, Self::Error>
Get the index of the last occurrence of a given element in the vector.
Returns the u32 index of the value if it’s there. Otherwise, it returns ScStatic::Void
.
sourcefn vec_binary_search(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
x: RawVal
) -> Result<u64, Self::Error>
fn vec_binary_search(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: Object,
x: RawVal
) -> Result<u64, Self::Error>
Binary search a sorted vector for a given element. If it exists, the high-32 bits of the return value is 0x0001 and the low-32 bits contain the u32 index of the element. If it does not exist, the high-32 bits of the return value is 0x0000 and the low-32 bits contain the u32 index at which the element would need to be inserted into the vector to maintain sorted order.
fn put_contract_data(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
k: RawVal,
v: RawVal
) -> Result<RawVal, Self::Error>
fn has_contract_data(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
k: RawVal
) -> Result<RawVal, Self::Error>
fn get_contract_data(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
k: RawVal
) -> Result<RawVal, Self::Error>
fn del_contract_data(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
k: RawVal
) -> Result<RawVal, Self::Error>
sourcefn create_contract_from_contract(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
wasm_hash: Object,
salt: Object
) -> Result<Object, Self::Error>
fn create_contract_from_contract(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
wasm_hash: Object,
salt: Object
) -> Result<Object, Self::Error>
Deploys a contract from the current contract. wasm_hash
must
be a hash of the contract code that has already been installed
on this network. salt
is used to create a unique contract id.
sourcefn create_token_from_contract(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
salt: Object
) -> Result<Object, Self::Error>
fn create_token_from_contract(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
salt: Object
) -> Result<Object, Self::Error>
Deploys a built-in token contract from the current contract.
salt
is used to create a unique contract id for the token.
sourcefn call(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
contract: Object,
func: Symbol,
args: Object
) -> Result<RawVal, Self::Error>
fn call(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
contract: Object,
func: Symbol,
args: Object
) -> Result<RawVal, Self::Error>
Calls a function in another contract with arguments contained in vector args
.
If the call is successful, forwards the result of the called function. Traps otherwise.
sourcefn try_call(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
contract: Object,
func: Symbol,
args: Object
) -> Result<RawVal, Self::Error>
fn try_call(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
contract: Object,
func: Symbol,
args: Object
) -> Result<RawVal, Self::Error>
Calls a function in another contract with arguments contained in vector args
. Returns:
- if successful, result of the called function.
- otherwise, an
SCStatus
containing the error status code.
sourcefn serialize_to_bytes(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: RawVal
) -> Result<Object, Self::Error>
fn serialize_to_bytes(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
v: RawVal
) -> Result<Object, Self::Error>
Serializes an (SC)Val into XDR opaque Bytes
object.
sourcefn deserialize_from_bytes(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object
) -> Result<RawVal, Self::Error>
fn deserialize_from_bytes(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object
) -> Result<RawVal, Self::Error>
Deserialize a Bytes
object to get back the (SC)Val.
sourcefn bytes_copy_to_linear_memory(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
b_pos: RawVal,
lm_pos: RawVal,
len: RawVal
) -> Result<RawVal, Self::Error>
fn bytes_copy_to_linear_memory(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
b_pos: RawVal,
lm_pos: RawVal,
len: RawVal
) -> Result<RawVal, Self::Error>
Copies a slice of bytes from a Bytes
object specified at offset b_pos
with
length len
into the linear memory at position lm_pos
.
Traps if either the Bytes
object or the linear memory doesn’t have enough bytes.
sourcefn bytes_copy_from_linear_memory(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
b_pos: RawVal,
lm_pos: RawVal,
len: RawVal
) -> Result<Object, Self::Error>
fn bytes_copy_from_linear_memory(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
b_pos: RawVal,
lm_pos: RawVal,
len: RawVal
) -> Result<Object, Self::Error>
Copies a segment of the linear memory specified at position lm_pos
with
length len
, into a Bytes
object at offset b_pos
. The Bytes
object may
grow in size to accommodate the new bytes.
Traps if the linear memory doesn’t have enough bytes.
sourcefn bytes_new_from_linear_memory(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
lm_pos: RawVal,
len: RawVal
) -> Result<Object, Self::Error>
fn bytes_new_from_linear_memory(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
lm_pos: RawVal,
len: RawVal
) -> Result<Object, Self::Error>
Constructs a new Bytes
object initialized with bytes copied from a linear memory slice specified at position lm_pos
with length len
.
sourcefn bytes_new(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>
fn bytes_new(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>
) -> Result<Object, Self::Error>
Create an empty new Bytes
object.
sourcefn bytes_put(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
i: RawVal,
u: RawVal
) -> Result<Object, Self::Error>
fn bytes_put(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
i: RawVal,
u: RawVal
) -> Result<Object, Self::Error>
Update the value at index i
in the Bytes
object. Return the new Bytes
.
Trap if the index is out of bounds.
sourcefn bytes_get(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
i: RawVal
) -> Result<RawVal, Self::Error>
fn bytes_get(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
i: RawVal
) -> Result<RawVal, Self::Error>
Returns the element at index i
of the Bytes
object. Traps if the index is out of bound.
sourcefn bytes_del(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
i: RawVal
) -> Result<Object, Self::Error>
fn bytes_del(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
i: RawVal
) -> Result<Object, Self::Error>
Delete an element in a Bytes
object at index i
, shifting all elements after it to the left.
Return the new Bytes
. Traps if the index is out of bound.
sourcefn bytes_len(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object
) -> Result<RawVal, Self::Error>
fn bytes_len(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object
) -> Result<RawVal, Self::Error>
Returns length of the Bytes
object.
sourcefn bytes_push(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
u: RawVal
) -> Result<Object, Self::Error>
fn bytes_push(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
u: RawVal
) -> Result<Object, Self::Error>
Appends an element to the back of the Bytes
object.
sourcefn bytes_pop(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object
) -> Result<Object, Self::Error>
fn bytes_pop(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object
) -> Result<Object, Self::Error>
Removes the last element from the Bytes
object and returns the new Bytes
.
Traps if original Bytes
is empty.
sourcefn bytes_front(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object
) -> Result<RawVal, Self::Error>
fn bytes_front(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object
) -> Result<RawVal, Self::Error>
Return the first element in the Bytes
object. Traps if the Bytes
is empty
sourcefn bytes_back(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object
) -> Result<RawVal, Self::Error>
fn bytes_back(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object
) -> Result<RawVal, Self::Error>
Return the last element in the Bytes
object. Traps if the Bytes
is empty
sourcefn bytes_insert(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
i: RawVal,
u: RawVal
) -> Result<Object, Self::Error>
fn bytes_insert(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
i: RawVal,
u: RawVal
) -> Result<Object, Self::Error>
Inserts an element at index i
within the Bytes
object, shifting all elements after it to the right.
Traps if the index is out of bound
sourcefn bytes_append(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b1: Object,
b2: Object
) -> Result<Object, Self::Error>
fn bytes_append(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b1: Object,
b2: Object
) -> Result<Object, Self::Error>
Clone the Bytes
object b1
, then moves all the elements of Bytes
object b2
into it.
Return the new Bytes
. Traps if its length overflows a u32.
sourcefn bytes_slice(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
start: RawVal,
end: RawVal
) -> Result<Object, Self::Error>
fn bytes_slice(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
b: Object,
start: RawVal,
end: RawVal
) -> Result<Object, Self::Error>
Copies the elements from start
index until end
index, exclusive, in the Bytes
object and creates a new Bytes
from it.
Returns the new Bytes
. Traps if the index is out of bound.
fn hash_from_bytes(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
x: Object
) -> Result<Object, Self::Error>
fn hash_to_bytes(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
x: Object
) -> Result<Object, Self::Error>
fn public_key_from_bytes(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
x: Object
) -> Result<Object, Self::Error>
fn public_key_to_bytes(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
x: Object
) -> Result<Object, Self::Error>
fn compute_hash_sha256(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
x: Object
) -> Result<Object, Self::Error>
fn verify_sig_ed25519(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
x: Object,
k: Object,
s: Object
) -> Result<RawVal, Self::Error>
sourcefn account_get_low_threshold(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
a: Object
) -> Result<RawVal, Self::Error>
fn account_get_low_threshold(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
a: Object
) -> Result<RawVal, Self::Error>
Get the low threshold for the account with ID a
(a
is
AccountId
). Traps if no such account exists.
sourcefn account_get_medium_threshold(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
a: Object
) -> Result<RawVal, Self::Error>
fn account_get_medium_threshold(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
a: Object
) -> Result<RawVal, Self::Error>
Get the medium threshold for the account with ID a
(a
is
AccountId
). Traps if no such account exists.
sourcefn account_get_high_threshold(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
a: Object
) -> Result<RawVal, Self::Error>
fn account_get_high_threshold(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
a: Object
) -> Result<RawVal, Self::Error>
Get the high threshold for the account with ID a
(a
is
AccountId
). Traps if no such account exists.
sourcefn account_get_signer_weight(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
a: Object,
s: Object
) -> Result<RawVal, Self::Error>
fn account_get_signer_weight(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
a: Object,
s: Object
) -> Result<RawVal, Self::Error>
Get the signer weight for the signer with ed25519 public key
s
(s
is Bytes
) on the account with ID a
(a
is AccountId
). Returns the master weight if the signer is the
master, and returns 0 if no such signer exists. Traps if no
such account exists.
sourcefn account_exists(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
a: Object
) -> Result<RawVal, Self::Error>
fn account_exists(
&self,
vmcaller: &mut VmCaller<'_, Self::VmUserState>,
a: Object
) -> Result<RawVal, Self::Error>
Given an ID a
(a
is AccountId
) of an account, check if
it exists. Returns (SCStatic) TRUE/FALSE.