pub trait ContractHookApi<BigInt, BigUint>: Sized
where BigInt: NestedEncode + 'static, BigUint: NestedEncode + 'static,
{
Show 42 methods // Required methods fn get_sc_address(&self) -> Address; fn get_owner_address(&self) -> Address; fn get_caller(&self) -> Address; fn get_balance(&self, address: &Address) -> BigUint; fn storage_store_slice_u8(&self, key: &[u8], value: &[u8]); fn storage_load_len(&self, key: &[u8]) -> usize; fn storage_load_vec_u8(&self, key: &[u8]) -> Vec<u8>; fn storage_store_bytes32(&self, key: &[u8], value: &[u8; 32]); fn storage_load_bytes32(&self, key: &[u8]) -> [u8; 32]; fn storage_store_big_uint(&self, key: &[u8], value: &BigUint); fn storage_load_big_uint(&self, key: &[u8]) -> BigUint; fn storage_store_big_uint_raw(&self, key: &[u8], handle: i32); fn storage_load_big_uint_raw(&self, key: &[u8]) -> i32; fn storage_store_big_int(&self, key: &[u8], value: &BigInt); fn storage_load_big_int(&self, key: &[u8]) -> BigInt; fn storage_store_u64(&self, key: &[u8], value: u64); fn storage_store_i64(&self, key: &[u8], value: i64); fn storage_load_u64(&self, key: &[u8]) -> u64; fn storage_load_i64(&self, key: &[u8]) -> i64; fn get_call_value_big_uint(&self) -> BigUint; fn get_dct_value_big_uint(&self) -> BigUint; fn get_dct_token_name(&self) -> Vec<u8>; fn send_tx(&self, to: &Address, amount: &BigUint, data: &[u8]); fn async_call(&self, to: &Address, amount: &BigUint, data: &[u8]); fn deploy_contract( &self, gas: u64, amount: &BigUint, code: &BoxedBytes, code_metadata: CodeMetadata, arg_buffer: &ArgBuffer ) -> Address; fn get_tx_hash(&self) -> H256; 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 get_block_random_seed(&self) -> Box<[u8; 48]>; 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(&self) -> Box<[u8; 48]>; fn sha256(&self, data: &[u8]) -> H256; fn keccak256(&self, data: &[u8]) -> H256; // Provided methods fn get_sc_balance(&self) -> BigUint { ... } fn storage_load_boxed_bytes(&self, key: &[u8]) -> BoxedBytes { ... } fn storage_load_cumulated_validator_reward(&self) -> BigUint { ... }
}
Expand description

Interface to be used by the actual smart contract code.

Note: contracts and the api are not mutable. They simply pass on/retrieve data to/from the protocol. When mocking the blockchain state, we use the Rc/RefCell pattern to isolate mock state mutability from the contract interface.

Required Methods§

source

fn get_sc_address(&self) -> Address

source

fn get_owner_address(&self) -> Address

source

fn get_caller(&self) -> Address

source

fn get_balance(&self, address: &Address) -> BigUint

source

fn storage_store_slice_u8(&self, key: &[u8], value: &[u8])

source

fn storage_load_len(&self, key: &[u8]) -> usize

source

fn storage_load_vec_u8(&self, key: &[u8]) -> Vec<u8>

source

fn storage_store_bytes32(&self, key: &[u8], value: &[u8; 32])

source

fn storage_load_bytes32(&self, key: &[u8]) -> [u8; 32]

source

fn storage_store_big_uint(&self, key: &[u8], value: &BigUint)

source

fn storage_load_big_uint(&self, key: &[u8]) -> BigUint

source

fn storage_store_big_uint_raw(&self, key: &[u8], handle: i32)

source

fn storage_load_big_uint_raw(&self, key: &[u8]) -> i32

source

fn storage_store_big_int(&self, key: &[u8], value: &BigInt)

source

fn storage_load_big_int(&self, key: &[u8]) -> BigInt

source

fn storage_store_u64(&self, key: &[u8], value: u64)

source

fn storage_store_i64(&self, key: &[u8], value: i64)

source

fn storage_load_u64(&self, key: &[u8]) -> u64

source

fn storage_load_i64(&self, key: &[u8]) -> i64

source

fn get_call_value_big_uint(&self) -> BigUint

source

fn get_dct_value_big_uint(&self) -> BigUint

source

fn get_dct_token_name(&self) -> Vec<u8>

source

fn send_tx(&self, to: &Address, amount: &BigUint, data: &[u8])

source

fn async_call(&self, to: &Address, amount: &BigUint, data: &[u8])

source

fn deploy_contract( &self, gas: u64, amount: &BigUint, code: &BoxedBytes, code_metadata: CodeMetadata, arg_buffer: &ArgBuffer ) -> Address

source

fn get_tx_hash(&self) -> H256

source

fn get_gas_left(&self) -> u64

source

fn get_block_timestamp(&self) -> u64

source

fn get_block_nonce(&self) -> u64

source

fn get_block_round(&self) -> u64

source

fn get_block_epoch(&self) -> u64

source

fn get_block_random_seed(&self) -> Box<[u8; 48]>

source

fn get_prev_block_timestamp(&self) -> u64

source

fn get_prev_block_nonce(&self) -> u64

source

fn get_prev_block_round(&self) -> u64

source

fn get_prev_block_epoch(&self) -> u64

source

fn get_prev_block_random_seed(&self) -> Box<[u8; 48]>

source

fn sha256(&self, data: &[u8]) -> H256

source

fn keccak256(&self, data: &[u8]) -> H256

Provided Methods§

Object Safety§

This trait is not object safe.

Implementors§