Struct concordium_std::ExternHost
source · pub struct ExternHost<State> {
pub state: State,
pub state_builder: StateBuilder<ExternStateApi>,
}
Expand description
Operations backed by host functions for the high-level interface.
Typically referred to via the alias Host
.
Fields§
§state: State
§state_builder: StateBuilder<ExternStateApi>
Trait Implementations§
source§impl<S> HasHost<S> for ExternHost<S>
impl<S> HasHost<S> for ExternHost<S>
§type StateApiType = ExternStateApi
type StateApiType = ExternStateApi
The type of low-level state that is associated with the host.
This provides access to low-level state operations.
source§fn invoke_transfer(
&self,
receiver: &AccountAddress,
amount: Amount
) -> TransferResult
fn invoke_transfer( &self, receiver: &AccountAddress, amount: Amount ) -> TransferResult
Perform a transfer to the given account if the contract has sufficient
balance.
source§fn invoke_contract_raw(
&mut self,
to: &ContractAddress,
parameter: Parameter<'_>,
method: EntrypointName<'_>,
amount: Amount
) -> CallContractResult<Self::ReturnValueType>
fn invoke_contract_raw( &mut self, to: &ContractAddress, parameter: Parameter<'_>, method: EntrypointName<'_>, amount: Amount ) -> CallContractResult<Self::ReturnValueType>
Invoke a given method of a contract with the amount and parameter
provided. If invocation succeeds then the return value is a pair of
a boolean which indicates whether the state of the contract has changed
or not, and a possible return value. The return value is present if and
only if a V1 contract was invoked.
source§fn invoke_contract_raw_read_only(
&self,
to: &ContractAddress,
parameter: Parameter<'_>,
method: EntrypointName<'_>,
amount: Amount
) -> ReadOnlyCallContractResult<Self::ReturnValueType>
fn invoke_contract_raw_read_only( &self, to: &ContractAddress, parameter: Parameter<'_>, method: EntrypointName<'_>, amount: Amount ) -> ReadOnlyCallContractResult<Self::ReturnValueType>
Invoke a given method of a contract with the amount and parameter
provided. If invocation succeeds and the state of the contract
instance is not modified then the return value is the return value
of the contract that was invoked. The return value is present (i.e.,
not
None
) if and only if a V1 contract was invoked. If the
invocation succeeds but the state of the contract is modified then
this method will panic.source§fn account_balance(&self, address: AccountAddress) -> QueryAccountBalanceResult
fn account_balance(&self, address: AccountAddress) -> QueryAccountBalanceResult
Get the current public balance of an account. Here public means
unencrypted or unshielded. See
AccountBalance
for
more. This query will fail if the provided address does not exist on
chain. Read moresource§fn contract_balance(
&self,
address: ContractAddress
) -> QueryContractBalanceResult
fn contract_balance( &self, address: ContractAddress ) -> QueryContractBalanceResult
Get the current balance of a contract instance. Read more
source§fn exchange_rates(&self) -> ExchangeRates
fn exchange_rates(&self) -> ExchangeRates
Get the current exchange rates used by the chain. That is a Euro per
Energy rate and micro CCD per Euro rate.
source§fn upgrade(&mut self, module: ModuleReference) -> UpgradeResult
fn upgrade(&mut self, module: ModuleReference) -> UpgradeResult
Upgrade the module for this instance to a given module. The new module
must contain a smart contract with a matching name.
Invocations of this instance after the point of a successful upgrade,
will use the new smart contract module. The remaining code after a
successful upgrade in the same invokation is executed as normal. Read more
source§fn account_public_keys(
&self,
address: AccountAddress
) -> QueryAccountPublicKeysResult
fn account_public_keys( &self, address: AccountAddress ) -> QueryAccountPublicKeysResult
Get the account’s public keys.
source§fn check_account_signature(
&self,
address: AccountAddress,
signatures: &AccountSignatures,
data: &[u8]
) -> CheckAccountSignatureResult
fn check_account_signature( &self, address: AccountAddress, signatures: &AccountSignatures, data: &[u8] ) -> CheckAccountSignatureResult
Verify the signature with account’s public keys. Read more
source§fn commit_state(&mut self)
fn commit_state(&mut self)
Make sure the contract state is fully written out, so that any changes
that were done in-memory up to the point in contract execution are
reflected in the actual contract state maintained by the node.
source§fn self_balance(&self) -> Amount
fn self_balance(&self) -> Amount
Get the contract’s own current balance. Upon entry to the entrypoint the
balance that is returned is the sum of balance of the contract at
the time of the invocation and the amount that is being transferred to
the contract.
source§fn state_builder(&mut self) -> &mut StateBuilder<Self::StateApiType>
fn state_builder(&mut self) -> &mut StateBuilder<Self::StateApiType>
Get the state_builder for the contract state.
source§fn state_and_builder(
&mut self
) -> (&mut S, &mut StateBuilder<Self::StateApiType>)
fn state_and_builder( &mut self ) -> (&mut S, &mut StateBuilder<Self::StateApiType>)
Get a mutable reference to both the state and the builder.
This is required due to limitations of the Rust type system, since
otherwise it is not possible to get the reference to the state and
the state builder at the same time. Once some incarnation of “view
types” is stable this will likely be possible to remove, and the
types of
state_builder
and state_mut
can be refined.source§fn invoke_contract<P: Serial>(
&mut self,
to: &ContractAddress,
parameter: &P,
method: EntrypointName<'_>,
amount: Amount
) -> CallContractResult<Self::ReturnValueType>
fn invoke_contract<P: Serial>( &mut self, to: &ContractAddress, parameter: &P, method: EntrypointName<'_>, amount: Amount ) -> CallContractResult<Self::ReturnValueType>
Like
invoke_contract_raw
, except that the
parameter is automatically serialized. If the parameter already
implements AsRef<[u8]>
or can be equivalently cheaply
converted to a byte array, then
invoke_contract_raw
should be
used, since it avoids intermediate allocations.source§fn invoke_contract_read_only<P: Serial>(
&self,
to: &ContractAddress,
parameter: &P,
method: EntrypointName<'_>,
amount: Amount
) -> ReadOnlyCallContractResult<Self::ReturnValueType>
fn invoke_contract_read_only<P: Serial>( &self, to: &ContractAddress, parameter: &P, method: EntrypointName<'_>, amount: Amount ) -> ReadOnlyCallContractResult<Self::ReturnValueType>
Like
invoke_contract_raw_read_only
, except that the parameter is
automatically serialized. If the parameter already implements
AsRef<[u8]>
or can be equivalently cheaply converted to a
byte array, then invoke_contract_raw
should be used, since it avoids intermediate allocations.Auto Trait Implementations§
impl<State> RefUnwindSafe for ExternHost<State>where
State: RefUnwindSafe,
impl<State> Send for ExternHost<State>where
State: Send,
impl<State> Sync for ExternHost<State>where
State: Sync,
impl<State> Unpin for ExternHost<State>where
State: Unpin,
impl<State> UnwindSafe for ExternHost<State>where
State: UnwindSafe,
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