pub struct VmApiImpl {}
Expand description
The reference to the API implementation based on Arwen hooks. It continas no data, can be embedded at no cost. Cloning it is a no-op.
Trait Implementations§
Source§impl BigFloatApiImpl for VmApiImpl
impl BigFloatApiImpl for VmApiImpl
fn bf_from_parts( &self, integral_part_value: i32, fractional_part_value: i32, exponent_value: i32, ) -> Self::BigFloatHandle
fn bf_from_frac( &self, numerator_value: i64, denominator_value: i64, ) -> Self::BigFloatHandle
fn bf_from_sci( &self, significand_value: i64, exponent_value: i64, ) -> Self::ManagedBufferHandle
fn bf_add( &self, dest: Self::BigFloatHandle, x: Self::BigFloatHandle, y: Self::BigFloatHandle, )
fn bf_sub( &self, dest: Self::BigFloatHandle, x: Self::BigFloatHandle, y: Self::BigFloatHandle, )
fn bf_mul( &self, dest: Self::BigFloatHandle, x: Self::BigFloatHandle, y: Self::BigFloatHandle, )
fn bf_div( &self, dest: Self::BigFloatHandle, x: Self::BigFloatHandle, y: Self::BigFloatHandle, )
fn bf_neg(&self, dest: Self::BigFloatHandle, x: Self::BigFloatHandle)
fn bf_abs(&self, dest: Self::BigFloatHandle, x: Self::BigFloatHandle)
fn bf_cmp( &self, x: Self::ManagedBufferHandle, y: Self::ManagedBufferHandle, ) -> Ordering
fn bf_sign(&self, x: Self::ManagedBufferHandle) -> Sign
fn bf_clone(&self, dest: Self::BigFloatHandle, x: Self::BigFloatHandle)
fn bf_sqrt(&self, dest: Self::BigFloatHandle, x: Self::BigFloatHandle)
fn bf_pow(&self, dest: Self::BigFloatHandle, x: Self::BigFloatHandle, exp: i32)
fn bf_floor(&self, dest: Self::BigIntHandle, x: Self::BigFloatHandle)
fn bf_ceil(&self, dest: Self::BigIntHandle, x: Self::BigFloatHandle)
fn bf_trunc(&self, dest: Self::BigIntHandle, x: Self::BigFloatHandle)
fn bf_is_bi(&self, x: Self::BigFloatHandle) -> bool
fn bf_set_i64(&self, dest: Self::BigFloatHandle, value: i64)
fn bf_set_bi(&self, dest: Self::BigFloatHandle, x: Self::BigIntHandle)
fn bf_get_const_e(&self, dest: Self::BigFloatHandle)
fn bf_get_const_pi(&self, dest: Self::BigFloatHandle)
fn bf_new_zero(&self) -> Self::BigFloatHandle
Source§impl BigIntApiImpl for VmApiImpl
impl BigIntApiImpl for VmApiImpl
fn bi_new(&self, value: i64) -> Self::BigIntHandle
fn bi_set_int64(&self, destination: Self::BigIntHandle, value: i64)
fn bi_to_i64(&self, reference: Self::BigIntHandle) -> Option<i64>
fn bi_add( &self, dest: Self::BigIntHandle, x: Self::BigIntHandle, y: Self::BigIntHandle, )
fn bi_sub( &self, dest: Self::BigIntHandle, x: Self::BigIntHandle, y: Self::BigIntHandle, )
fn bi_mul( &self, dest: Self::BigIntHandle, x: Self::BigIntHandle, y: Self::BigIntHandle, )
fn bi_t_div( &self, dest: Self::BigIntHandle, x: Self::BigIntHandle, y: Self::BigIntHandle, )
fn bi_t_mod( &self, dest: Self::BigIntHandle, x: Self::BigIntHandle, y: Self::BigIntHandle, )
fn bi_abs(&self, dest: Self::BigIntHandle, x: Self::BigIntHandle)
fn bi_neg(&self, dest: Self::BigIntHandle, x: Self::BigIntHandle)
fn bi_sign(&self, x: Self::BigIntHandle) -> Sign
fn bi_cmp(&self, x: Self::BigIntHandle, y: Self::BigIntHandle) -> Ordering
fn bi_sqrt(&self, dest: Self::BigIntHandle, x: Self::BigIntHandle)
fn bi_pow( &self, dest: Self::BigIntHandle, x: Self::BigIntHandle, y: Self::BigIntHandle, )
fn bi_log2(&self, x: Self::BigIntHandle) -> i32
fn bi_and( &self, dest: Self::BigIntHandle, x: Self::BigIntHandle, y: Self::BigIntHandle, )
fn bi_or( &self, dest: Self::BigIntHandle, x: Self::BigIntHandle, y: Self::BigIntHandle, )
fn bi_xor( &self, dest: Self::BigIntHandle, x: Self::BigIntHandle, y: Self::BigIntHandle, )
fn bi_shr(&self, dest: Self::BigIntHandle, x: Self::BigIntHandle, bits: usize)
fn bi_shl(&self, dest: Self::BigIntHandle, x: Self::BigIntHandle, bits: usize)
fn bi_to_string( &self, bi_handle: Self::BigIntHandle, result_handle: Self::ManagedBufferHandle, )
fn bi_new_zero(&self) -> Self::BigIntHandle
fn bi_sub_unsigned( &self, dest: Self::BigIntHandle, x: Self::BigIntHandle, y: Self::BigIntHandle, )
Source§impl BlockchainApi for VmApiImpl
impl BlockchainApi for VmApiImpl
type BlockchainApiImpl = VmApiImpl
fn blockchain_api_impl() -> Self::BlockchainApiImpl
Source§impl BlockchainApiImpl for VmApiImpl
impl BlockchainApiImpl for VmApiImpl
fn get_caller_legacy(&self) -> Address
fn load_caller_managed(&self, dest: Self::ManagedBufferHandle)
fn get_sc_address_legacy(&self) -> Address
fn load_sc_address_managed(&self, dest: Self::ManagedBufferHandle)
fn load_owner_address_managed(&self, dest: Self::ManagedBufferHandle)
fn get_shard_of_address_legacy(&self, address: &Address) -> u32
fn get_shard_of_address(&self, address_handle: Self::ManagedBufferHandle) -> u32
fn is_smart_contract_legacy(&self, address: &Address) -> bool
fn is_smart_contract(&self, address_handle: Self::ManagedBufferHandle) -> bool
fn load_balance_legacy(&self, dest: Self::BigIntHandle, address: &Address)
fn load_balance( &self, dest: Self::BigIntHandle, address_handle: Self::ManagedBufferHandle, )
fn load_state_root_hash_managed(&self, dest: Self::ManagedBufferHandle)
fn get_tx_hash_legacy(&self) -> H256
fn load_tx_hash_managed(&self, dest: Self::ManagedBufferHandle)
fn get_gas_left(&self) -> u64
fn get_block_timestamp(&self) -> u64
fn get_block_nonce(&self) -> u64
fn get_block_round(&self) -> u64
fn get_block_epoch(&self) -> u64
fn load_block_random_seed_managed(&self, dest: Self::ManagedBufferHandle)
fn get_prev_block_timestamp(&self) -> u64
fn get_prev_block_nonce(&self) -> u64
fn get_prev_block_round(&self) -> u64
fn get_prev_block_epoch(&self) -> u64
fn get_prev_block_random_seed_legacy(&self) -> Box<[u8; 48]>
fn load_prev_block_random_seed_managed(&self, dest: Self::ManagedBufferHandle)
fn get_current_esdt_nft_nonce( &self, address_handle: Self::ManagedBufferHandle, token_id_handle: Self::ManagedBufferHandle, ) -> u64
fn load_esdt_balance( &self, address_handle: Self::ManagedBufferHandle, token_id_handle: Self::ManagedBufferHandle, nonce: u64, dest: Self::BigIntHandle, )
fn managed_get_esdt_token_data( &self, address_handle: RawHandle, token_id_handle: RawHandle, nonce: u64, value_handle: RawHandle, properties_handle: RawHandle, hash_handle: RawHandle, name_handle: RawHandle, attributes_handle: RawHandle, creator_handle: RawHandle, royalties_handle: RawHandle, uris_handle: RawHandle, )
fn managed_get_back_transfers( &self, esdt_transfer_value_handle: RawHandle, call_value_handle: RawHandle, )
fn check_esdt_frozen( &self, address_handle: Self::ManagedBufferHandle, token_id_handle: Self::ManagedBufferHandle, nonce: u64, ) -> bool
fn check_esdt_paused(&self, token_id_handle: Self::ManagedBufferHandle) -> bool
fn check_esdt_limited_transfer( &self, token_id_handle: Self::ManagedBufferHandle, ) -> bool
fn load_esdt_local_roles( &self, token_id_handle: Self::ManagedBufferHandle, ) -> EsdtLocalRoleFlags
fn managed_is_builtin_function( &self, function_name_handle: Self::ManagedBufferHandle, ) -> bool
fn managed_get_code_metadata( &self, address_handle: Self::ManagedBufferHandle, response_handle: Self::ManagedBufferHandle, )
Source§impl CallValueApi for VmApiImpl
impl CallValueApi for VmApiImpl
type CallValueApiImpl = VmApiImpl
fn call_value_api_impl() -> Self::CallValueApiImpl
Source§impl CallValueApiImpl for VmApiImpl
impl CallValueApiImpl for VmApiImpl
fn check_not_payable(&self)
Source§fn load_egld_value(&self, dest: Self::BigIntHandle)
fn load_egld_value(&self, dest: Self::BigIntHandle)
Retrieves the EGLD call value from the VM.
Will return 0 in case of an ESDT transfer (cannot have both EGLD and ESDT transfer simultaneously).
Source§fn load_all_esdt_transfers(&self, dest_handle: Self::ManagedBufferHandle)
fn load_all_esdt_transfers(&self, dest_handle: Self::ManagedBufferHandle)
Loads all ESDT call values into a managed vec. Overwrites destination.
Source§fn esdt_num_transfers(&self) -> usize
fn esdt_num_transfers(&self) -> usize
Gets the total number of ESDT transfers (Fungible/SFT/NFT). Read more
Source§impl CryptoApi for VmApiImpl
impl CryptoApi for VmApiImpl
type CryptoApiImpl = VmApiImpl
fn crypto_api_impl() -> Self::CryptoApiImpl
Source§impl CryptoApiImpl for VmApiImpl
impl CryptoApiImpl for VmApiImpl
fn sha256_managed( &self, result_handle: Self::ManagedBufferHandle, data_handle: Self::ManagedBufferHandle, )
fn keccak256_managed( &self, result_handle: Self::ManagedBufferHandle, data_handle: Self::ManagedBufferHandle, )
fn ripemd160_managed( &self, dest: Self::ManagedBufferHandle, data_handle: Self::ManagedBufferHandle, )
fn verify_bls_managed( &self, key: Self::ManagedBufferHandle, message: Self::ManagedBufferHandle, signature: Self::ManagedBufferHandle, )
fn verify_ed25519_managed( &self, key: Self::ManagedBufferHandle, message: Self::ManagedBufferHandle, signature: Self::ManagedBufferHandle, )
Source§fn verify_secp256k1_managed(
&self,
key: Self::ManagedBufferHandle,
message: Self::ManagedBufferHandle,
signature: Self::ManagedBufferHandle,
) -> bool
fn verify_secp256k1_managed( &self, key: Self::ManagedBufferHandle, message: Self::ManagedBufferHandle, signature: Self::ManagedBufferHandle, ) -> bool
Note: the signature is minimum 2 bytes in length,
the second byte encodes the length of the remaining signature bytes.
fn verify_custom_secp256k1_managed( &self, key: Self::ManagedBufferHandle, message: Self::ManagedBufferHandle, signature: Self::ManagedBufferHandle, hash_type: MessageHashType, ) -> bool
fn encode_secp256k1_der_signature_managed( &self, r: Self::ManagedBufferHandle, s: Self::ManagedBufferHandle, dest_sig_handle: Self::ManagedBufferHandle, )
fn verify_secp256r1_managed( &self, key: Self::ManagedBufferHandle, message: Self::ManagedBufferHandle, signature: Self::ManagedBufferHandle, )
fn verify_bls_aggregated_signature_managed( &self, key: Self::ManagedBufferHandle, message: Self::ManagedBufferHandle, signature: Self::ManagedBufferHandle, )
Source§impl EllipticCurveApiImpl for VmApiImpl
impl EllipticCurveApiImpl for VmApiImpl
fn ec_create_from_name_bytes(&self, name: &[u8]) -> Self::EllipticCurveHandle
fn ec_create_from_name_mb( &self, name_handle: Self::ManagedBufferHandle, ) -> Self::ManagedBufferHandle
fn ec_get_values( &self, ec_handle: Self::EllipticCurveHandle, field_order_handle: Self::BigIntHandle, base_point_order_handle: Self::BigIntHandle, eq_constant_handle: Self::BigIntHandle, x_base_point_handle: Self::BigIntHandle, y_base_point_handle: Self::BigIntHandle, )
fn ec_curve_length(&self, ec_handle: Self::EllipticCurveHandle) -> u32
fn ec_private_key_byte_length( &self, ec_handle: Self::EllipticCurveHandle, ) -> u32
fn ec_add( &self, x_result_handle: Self::BigIntHandle, y_result_handle: Self::BigIntHandle, ec_handle: Self::EllipticCurveHandle, x_first_point: Self::BigIntHandle, y_first_point: Self::BigIntHandle, x_second_point: Self::BigIntHandle, y_second_point: Self::BigIntHandle, )
fn ec_double( &self, x_result_handle: Self::BigIntHandle, y_result_handle: Self::BigIntHandle, ec_handle: Self::EllipticCurveHandle, x_point_handle: Self::BigIntHandle, y_point_handle: Self::BigIntHandle, )
fn ec_is_on_curve( &self, ec_handle: Self::EllipticCurveHandle, x_point_handle: Self::BigIntHandle, y_point_handle: Self::BigIntHandle, ) -> bool
fn ec_scalar_mult_legacy( &self, x_result_handle: Self::BigIntHandle, y_result_handle: Self::BigIntHandle, ec_handle: Self::EllipticCurveHandle, x_point_handle: Self::BigIntHandle, y_point_handle: Self::BigIntHandle, data: &[u8], )
fn ec_scalar_mult( &self, x_result_handle: Self::BigIntHandle, y_result_handle: Self::BigIntHandle, ec_handle: Self::EllipticCurveHandle, x_point_handle: Self::BigIntHandle, y_point_handle: Self::BigIntHandle, data: Self::ManagedBufferHandle, )
fn ec_scalar_base_mult_legacy( &self, x_result_handle: Self::BigIntHandle, y_result_handle: Self::BigIntHandle, ec_handle: Self::EllipticCurveHandle, data: &[u8], )
fn ec_scalar_base_mult( &self, x_result_handle: Self::BigIntHandle, y_result_handle: Self::BigIntHandle, ec_handle: Self::EllipticCurveHandle, data_handle: Self::ManagedBufferHandle, )
fn ec_marshal_legacy( &self, ec_handle: Self::EllipticCurveHandle, x_pair_handle: Self::BigIntHandle, y_pair_handle: Self::BigIntHandle, ) -> BoxedBytes
fn ec_marshal( &self, ec_handle: Self::EllipticCurveHandle, x_pair_handle: Self::BigIntHandle, y_pair_handle: Self::BigIntHandle, result_handle: Self::ManagedBufferHandle, )
fn ec_marshal_compressed_legacy( &self, ec_handle: Self::EllipticCurveHandle, x_pair_handle: Self::BigIntHandle, y_pair_handle: Self::BigIntHandle, ) -> BoxedBytes
fn ec_marshal_compressed( &self, ec_handle: Self::EllipticCurveHandle, x_pair_handle: Self::BigIntHandle, y_pair_handle: Self::BigIntHandle, result_handle: Self::ManagedBufferHandle, )
fn ec_unmarshal_legacy( &self, x_result_handle: Self::BigIntHandle, y_result_handle: Self::BigIntHandle, ec_handle: Self::EllipticCurveHandle, data: &[u8], )
fn ec_unmarshal( &self, x_result_handle: Self::BigIntHandle, y_result_handle: Self::BigIntHandle, ec_handle: Self::EllipticCurveHandle, data_handle: Self::ManagedBufferHandle, )
fn ec_unmarshal_compressed_legacy( &self, x_result_handle: Self::BigIntHandle, y_result_handle: Self::BigIntHandle, ec_handle: Self::EllipticCurveHandle, data: &[u8], )
fn ec_unmarshal_compressed( &self, x_result_handle: Self::BigIntHandle, y_result_handle: Self::BigIntHandle, ec_handle: Self::EllipticCurveHandle, data_handle: Self::ManagedBufferHandle, )
fn ec_generate_key_legacy( &self, x_pub_key_handle: Self::BigIntHandle, y_pub_key_handle: Self::BigIntHandle, ec_handle: Self::EllipticCurveHandle, ) -> BoxedBytes
fn ec_generate_key( &self, x_pub_key_handle: Self::BigIntHandle, y_pub_key_handle: Self::BigIntHandle, ec_handle: Self::EllipticCurveHandle, result_handle: Self::ManagedBufferHandle, )
Source§impl EndpointArgumentApi for VmApiImpl
impl EndpointArgumentApi for VmApiImpl
type EndpointArgumentApiImpl = VmApiImpl
fn argument_api_impl() -> Self::EndpointArgumentApiImpl
Source§impl EndpointArgumentApiImpl for VmApiImpl
Interface to only be used by code generated by the macros.
The smart contract code doesn’t have access to these methods directly.
impl EndpointArgumentApiImpl for VmApiImpl
Interface to only be used by code generated by the macros. The smart contract code doesn’t have access to these methods directly.
fn get_num_arguments(&self) -> i32
fn get_argument_len(&self, arg_index: i32) -> usize
fn load_argument_managed_buffer( &self, arg_index: i32, dest: Self::ManagedBufferHandle, )
fn get_argument_boxed_bytes(&self, arg_index: i32) -> BoxedBytes
fn load_argument_big_int_unsigned( &self, arg_index: i32, dest: Self::ManagedBufferHandle, )
fn load_argument_big_int_signed( &self, arg_index: i32, dest: Self::ManagedBufferHandle, )
fn get_argument_u64(&self, arg_index: i32) -> u64
fn get_argument_i64(&self, arg_index: i32) -> i64
fn load_callback_closure_buffer(&self, dest: Self::ManagedBufferHandle)
Source§impl EndpointFinishApi for VmApiImpl
impl EndpointFinishApi for VmApiImpl
type EndpointFinishApiImpl = VmApiImpl
fn finish_api_impl() -> Self::EndpointFinishApiImpl
Source§impl EndpointFinishApiImpl for VmApiImpl
Interface to only be used by code generated by the macros.
The smart contract code doesn’t have access to these methods directly.
impl EndpointFinishApiImpl for VmApiImpl
Interface to only be used by code generated by the macros. The smart contract code doesn’t have access to these methods directly.
fn finish_slice_u8(&self, slice: &[u8])
fn finish_big_int_raw(&self, handle: Self::BigIntHandle)
fn finish_big_uint_raw(&self, handle: Self::BigIntHandle)
fn finish_managed_buffer_raw(&self, handle: Self::ManagedBufferHandle)
fn finish_u64(&self, value: u64)
fn finish_i64(&self, value: i64)
Source§impl ErrorApi for VmApiImpl
impl ErrorApi for VmApiImpl
type ErrorApiImpl = VmApiImpl
fn error_api_impl() -> Self
Source§impl ErrorApiImpl for VmApiImpl
impl ErrorApiImpl for VmApiImpl
fn signal_error(&self, message: &[u8]) -> !
fn signal_error_from_buffer( &self, message_handle: Self::ManagedBufferHandle, ) -> !
Source§impl HandleTypeInfo for VmApiImpl
impl HandleTypeInfo for VmApiImpl
type ManagedBufferHandle = i32
type BigIntHandle = i32
type BigFloatHandle = i32
type EllipticCurveHandle = i32
type ManagedMapHandle = i32
Source§impl LogApi for VmApiImpl
impl LogApi for VmApiImpl
type LogApiImpl = VmApiImpl
fn log_api_impl() -> Self::LogApiImpl
Source§impl LogApiImpl for VmApiImpl
impl LogApiImpl for VmApiImpl
Source§fn managed_write_log(
&self,
topics_handle: Self::ManagedBufferHandle,
data_handle: Self::ManagedBufferHandle,
)
fn managed_write_log( &self, topics_handle: Self::ManagedBufferHandle, data_handle: Self::ManagedBufferHandle, )
Saves an event log.
Source§impl ManagedBufferApiImpl for VmApiImpl
impl ManagedBufferApiImpl for VmApiImpl
Source§fn mb_new_empty(&self) -> Self::ManagedBufferHandle
fn mb_new_empty(&self) -> Self::ManagedBufferHandle
Requests a new handle from the VM. No longer used extensively.
Source§fn mb_new_from_bytes(&self, bytes: &[u8]) -> Self::ManagedBufferHandle
fn mb_new_from_bytes(&self, bytes: &[u8]) -> Self::ManagedBufferHandle
Requests a new handle from the VM, initialized with some data. No longer used extensively.
fn mb_len(&self, handle: Self::ManagedBufferHandle) -> usize
fn mb_to_boxed_bytes(&self, handle: Self::ManagedBufferHandle) -> BoxedBytes
Source§fn mb_load_slice(
&self,
source_handle: Self::ManagedBufferHandle,
starting_position: usize,
dest_slice: &mut [u8],
) -> Result<(), InvalidSliceError>
fn mb_load_slice( &self, source_handle: Self::ManagedBufferHandle, starting_position: usize, dest_slice: &mut [u8], ) -> Result<(), InvalidSliceError>
TODO: investigate the impact of using
Result<(), ()>
on the wasm output.Source§fn mb_copy_slice(
&self,
source_handle: Self::ManagedBufferHandle,
starting_pos: usize,
slice_len: usize,
dest_handle: Self::ManagedBufferHandle,
) -> Result<(), InvalidSliceError>
fn mb_copy_slice( &self, source_handle: Self::ManagedBufferHandle, starting_pos: usize, slice_len: usize, dest_handle: Self::ManagedBufferHandle, ) -> Result<(), InvalidSliceError>
TODO: investigate the impact of using
Result<(), ()>
on the wasm output.fn mb_overwrite(&self, handle: Self::ManagedBufferHandle, bytes: &[u8])
fn mb_set_slice( &self, dest_handle: Self::ManagedBufferHandle, starting_position: usize, source_slice: &[u8], ) -> Result<(), InvalidSliceError>
fn mb_set_random(&self, dest_handle: Self::ManagedBufferHandle, length: usize)
fn mb_append( &self, accumulator_handle: Self::ManagedBufferHandle, data_handle: Self::ManagedBufferHandle, )
fn mb_append_bytes( &self, accumulator_handle: Self::ManagedBufferHandle, bytes: &[u8], )
fn mb_eq( &self, handle1: Self::ManagedBufferHandle, handle2: Self::ManagedBufferHandle, ) -> bool
fn mb_to_hex( &self, source_handle: Self::ManagedBufferHandle, dest_handle: Self::ManagedBufferHandle, )
Source§impl ManagedMapApiImpl for VmApiImpl
impl ManagedMapApiImpl for VmApiImpl
Source§fn mm_new(&self) -> Self::ManagedBufferHandle
fn mm_new(&self) -> Self::ManagedBufferHandle
Requests a new handle from the VM.
fn mm_get( &self, map_handle: Self::ManagedMapHandle, key_handle: Self::ManagedBufferHandle, out_value_handle: Self::ManagedBufferHandle, )
fn mm_put( &self, map_handle: Self::ManagedMapHandle, key_handle: Self::ManagedBufferHandle, out_value_handle: Self::ManagedBufferHandle, )
fn mm_remove( &self, map_handle: Self::ManagedMapHandle, key_handle: Self::ManagedBufferHandle, out_value_handle: Self::ManagedBufferHandle, )
fn mm_contains( &self, map_handle: Self::ManagedMapHandle, key_handle: Self::ManagedBufferHandle, ) -> bool
Source§impl ManagedTypeApi for VmApiImpl
impl ManagedTypeApi for VmApiImpl
type ManagedTypeApiImpl = VmApiImpl
fn managed_type_impl() -> Self
Source§impl ManagedTypeApiImpl for VmApiImpl
impl ManagedTypeApiImpl for VmApiImpl
fn mb_to_big_int_unsigned( &self, buffer_handle: Self::ManagedBufferHandle, big_int_handle: Self::BigIntHandle, )
fn mb_to_big_int_signed( &self, buffer_handle: Self::ManagedBufferHandle, big_int_handle: Self::BigIntHandle, )
fn mb_from_big_int_unsigned( &self, big_int_handle: Self::BigIntHandle, buffer_handle: Self::ManagedBufferHandle, )
fn mb_from_big_int_signed( &self, big_int_handle: Self::BigIntHandle, buffer_handle: Self::ManagedBufferHandle, )
fn mb_to_big_float( &self, buffer_handle: Self::ManagedBufferHandle, big_float_handle: Self::BigFloatHandle, )
fn mb_from_big_float( &self, big_float_handle: Self::BigFloatHandle, buffer_handle: Self::ManagedBufferHandle, )
fn validate_token_identifier( &self, token_id_handle: Self::ManagedBufferHandle, ) -> bool
fn get_token_ticker_len(&self, token_id_len: usize) -> usize
Source§impl PrintApi for VmApiImpl
impl PrintApi for VmApiImpl
type PrintApiImpl = VmApiImpl
fn print_api_impl() -> Self::PrintApiImpl
Source§impl PrintApiImpl for VmApiImpl
impl PrintApiImpl for VmApiImpl
Source§type Buffer = FormatBufferIgnore
type Buffer = FormatBufferIgnore
Buffer used for printing only.
fn print_buffer(&self, _buffer: Self::Buffer)
Source§impl SendApi for VmApiImpl
impl SendApi for VmApiImpl
type SendApiImpl = VmApiImpl
fn send_api_impl() -> Self::SendApiImpl
Source§impl SendApiImpl for VmApiImpl
impl SendApiImpl for VmApiImpl
Source§fn transfer_value_execute(
&self,
to_handle: RawHandle,
amount_handle: RawHandle,
gas_limit: u64,
endpoint_name_handle: RawHandle,
arg_buffer_handle: RawHandle,
) -> Result<(), &'static [u8]>
fn transfer_value_execute( &self, to_handle: RawHandle, amount_handle: RawHandle, gas_limit: u64, endpoint_name_handle: RawHandle, arg_buffer_handle: RawHandle, ) -> Result<(), &'static [u8]>
Sends EGLD to an address (optionally) and executes like an async call, but without callback.
fn multi_transfer_esdt_nft_execute( &self, to_handle: RawHandle, payments_handle: RawHandle, gas_limit: u64, endpoint_name_handle: RawHandle, arg_buffer_handle: RawHandle, ) -> Result<(), &'static [u8]>
Source§fn async_call_raw(
&self,
to_handle: RawHandle,
egld_value_handle: RawHandle,
endpoint_name_handle: RawHandle,
arg_buffer_handle: RawHandle,
) -> !
fn async_call_raw( &self, to_handle: RawHandle, egld_value_handle: RawHandle, endpoint_name_handle: RawHandle, arg_buffer_handle: RawHandle, ) -> !
Sends an asynchronous call to another contract.
Calling this method immediately terminates tx execution.
Using it directly is generally discouraged.
fn create_async_call_raw( &self, to_handle: RawHandle, egld_value_handle: RawHandle, endpoint_name_handle: RawHandle, arg_buffer_handle: RawHandle, success_callback: &'static str, error_callback: &'static str, gas: u64, extra_gas_for_callback: u64, callback_closure_handle: RawHandle, )
Source§fn deploy_contract(
&self,
gas: u64,
egld_value_handle: RawHandle,
code_handle: RawHandle,
code_metadata_handle: RawHandle,
arg_buffer_handle: RawHandle,
new_address_handle: RawHandle,
result_handle: RawHandle,
)
fn deploy_contract( &self, gas: u64, egld_value_handle: RawHandle, code_handle: RawHandle, code_metadata_handle: RawHandle, arg_buffer_handle: RawHandle, new_address_handle: RawHandle, result_handle: RawHandle, )
Deploys a new contract in the same shard.
Unlike
async_call_raw
, the deployment is synchronous and tx execution continues afterwards.
Also unlike async_call_raw
, it uses an argument buffer to pass arguments
If the deployment fails, Option::None is returnedSource§fn deploy_from_source_contract(
&self,
gas: u64,
egld_value_handle: RawHandle,
source_contract_address_handle: RawHandle,
code_metadata_handle: RawHandle,
arg_buffer_handle: RawHandle,
new_address_handle: RawHandle,
result_handle: RawHandle,
)
fn deploy_from_source_contract( &self, gas: u64, egld_value_handle: RawHandle, source_contract_address_handle: RawHandle, code_metadata_handle: RawHandle, arg_buffer_handle: RawHandle, new_address_handle: RawHandle, result_handle: RawHandle, )
Deploys a new contract in the same shard by re-using the code of an already deployed source contract.
The deployment is done synchronously and the new contract’s address is returned.
If the deployment fails, Option::None is returned
fn upgrade_from_source_contract( &self, sc_address_handle: RawHandle, gas: u64, egld_value_handle: RawHandle, source_contract_address_handle: RawHandle, code_metadata_handle: RawHandle, arg_buffer_handle: RawHandle, )
Source§fn upgrade_contract(
&self,
sc_address_handle: RawHandle,
gas: u64,
egld_value_handle: RawHandle,
code_handle: RawHandle,
code_metadata_handle: RawHandle,
arg_buffer_handle: RawHandle,
)
fn upgrade_contract( &self, sc_address_handle: RawHandle, gas: u64, egld_value_handle: RawHandle, code_handle: RawHandle, code_metadata_handle: RawHandle, arg_buffer_handle: RawHandle, )
Upgrades a child contract of the currently executing contract.
The upgrade is synchronous, and the current transaction will fail if the upgrade fails.
The child contract’s new init function will be called with the provided arguments
Source§fn execute_on_dest_context_raw(
&self,
gas: u64,
to_handle: RawHandle,
egld_value_handle: RawHandle,
endpoint_name_handle: RawHandle,
arg_buffer_handle: RawHandle,
result_handle: RawHandle,
)
fn execute_on_dest_context_raw( &self, gas: u64, to_handle: RawHandle, egld_value_handle: RawHandle, endpoint_name_handle: RawHandle, arg_buffer_handle: RawHandle, result_handle: RawHandle, )
Same shard, in-line execution of another contract.
fn execute_on_same_context_raw( &self, gas: u64, to_handle: RawHandle, egld_value_handle: RawHandle, endpoint_name_handle: RawHandle, arg_buffer_handle: RawHandle, result_handle: RawHandle, )
fn execute_on_dest_context_readonly_raw( &self, gas: u64, to_handle: RawHandle, endpoint_name_handle: RawHandle, arg_buffer_handle: RawHandle, result_handle: RawHandle, )
fn clean_return_data(&self)
fn delete_from_return_data(&self, index: usize)
Source§impl StaticVarApi for VmApiImpl
impl StaticVarApi for VmApiImpl
type StaticVarApiImpl = VmApiImpl
fn static_var_api_impl() -> Self::StaticVarApiImpl
Source§impl StaticVarApiImpl for VmApiImpl
impl StaticVarApiImpl for VmApiImpl
fn with_lockable_static_buffer<R, F: FnOnce(&mut LockableStaticBuffer) -> R>( &self, f: F, ) -> R
fn set_external_view_target_address_handle(&self, handle: RawHandle)
fn get_external_view_target_address_handle(&self) -> RawHandle
fn next_handle(&self) -> RawHandle
fn set_num_arguments(&self, num_arguments: i32)
fn get_num_arguments(&self) -> i32
fn set_flags(&self, flags: StaticVarApiFlags)
fn get_flags(&self) -> StaticVarApiFlags
fn is_scaling_factor_cached(&self, decimals: usize) -> bool
fn set_scaling_factor_cached(&self, decimals: usize)
Source§fn flag_is_set_or_update(&self, flag: StaticVarApiFlags) -> bool
fn flag_is_set_or_update(&self, flag: StaticVarApiFlags) -> bool
Returns true if the flag is set, false if is default (false). Read more
Source§impl StorageReadApi for VmApiImpl
impl StorageReadApi for VmApiImpl
type StorageReadApiImpl = VmApiImpl
fn storage_read_api_impl() -> Self::StorageReadApiImpl
Source§impl StorageReadApiImpl for VmApiImpl
impl StorageReadApiImpl for VmApiImpl
fn storage_load_managed_buffer_raw( &self, key_handle: Self::ManagedBufferHandle, dest: Self::ManagedBufferHandle, )
fn storage_load_from_address( &self, address_handle: Self::ManagedBufferHandle, key_handle: Self::ManagedBufferHandle, dest: Self::ManagedBufferHandle, )
fn storage_read_api_init(&self)
Source§impl StorageWriteApi for VmApiImpl
impl StorageWriteApi for VmApiImpl
type StorageWriteApiImpl = VmApiImpl
fn storage_write_api_impl() -> Self::StorageWriteApiImpl
Source§impl StorageWriteApiImpl for VmApiImpl
impl StorageWriteApiImpl for VmApiImpl
fn storage_store_managed_buffer_raw( &self, key_handle: Self::ManagedBufferHandle, value_handle: Self::ManagedBufferHandle, )
Source§impl VMApi for VmApiImpl
impl VMApi for VmApiImpl
Source§fn external_view_init_override() -> bool
fn external_view_init_override() -> bool
Slightly hacky way of overriding the constructor for external view contracts. Read more
fn init_static()
impl CallTypeApi for VmApiImpl
impl Eq for VmApiImpl
impl StorageMapperApi for VmApiImpl
Auto Trait Implementations§
impl Freeze for VmApiImpl
impl RefUnwindSafe for VmApiImpl
impl Send for VmApiImpl
impl Sync for VmApiImpl
impl Unpin for VmApiImpl
impl UnwindSafe for VmApiImpl
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more