pub struct TIP20Token {Show 21 fields
pub roles: <Mapping<Address, Mapping<B256, bool>> as StorableType>::Handler,
pub role_admins: <Mapping<B256, B256> as StorableType>::Handler,
pub name: <String as StorableType>::Handler,
pub symbol: <String as StorableType>::Handler,
pub currency: <String as StorableType>::Handler,
pub _domain_separator: <B256 as StorableType>::Handler,
pub quote_token: <Address as StorableType>::Handler,
pub next_quote_token: <Address as StorableType>::Handler,
pub transfer_policy_id: <u64 as StorableType>::Handler,
pub total_supply: <U256 as StorableType>::Handler,
pub balances: <Mapping<Address, U256> as StorableType>::Handler,
pub allowances: <Mapping<Address, Mapping<Address, U256>> as StorableType>::Handler,
pub permit_nonces: <Mapping<Address, U256> as StorableType>::Handler,
pub paused: <bool as StorableType>::Handler,
pub supply_cap: <U256 as StorableType>::Handler,
pub _salts: <Mapping<B256, bool> as StorableType>::Handler,
pub global_reward_per_token: <U256 as StorableType>::Handler,
pub opted_in_supply: <u128 as StorableType>::Handler,
pub user_reward_info: <Mapping<Address, UserRewardInfo> as StorableType>::Handler,
address: Address,
storage: StorageCtx,
}Fields§
§roles: <Mapping<Address, Mapping<B256, bool>> as StorableType>::Handler§role_admins: <Mapping<B256, B256> as StorableType>::Handler§name: <String as StorableType>::Handler§symbol: <String as StorableType>::Handler§currency: <String as StorableType>::Handler§_domain_separator: <B256 as StorableType>::Handler§quote_token: <Address as StorableType>::Handler§next_quote_token: <Address as StorableType>::Handler§transfer_policy_id: <u64 as StorableType>::Handler§total_supply: <U256 as StorableType>::Handler§balances: <Mapping<Address, U256> as StorableType>::Handler§allowances: <Mapping<Address, Mapping<Address, U256>> as StorableType>::Handler§permit_nonces: <Mapping<Address, U256> as StorableType>::Handler§paused: <bool as StorableType>::Handler§supply_cap: <U256 as StorableType>::Handler§_salts: <Mapping<B256, bool> as StorableType>::Handler§global_reward_per_token: <U256 as StorableType>::Handler§opted_in_supply: <u128 as StorableType>::Handler§user_reward_info: <Mapping<Address, UserRewardInfo> as StorableType>::Handler§address: Address§storage: StorageCtxImplementations§
Source§impl TIP20Token
impl TIP20Token
Sourcepub fn distribute_reward(
&mut self,
msg_sender: Address,
call: distributeRewardCall,
) -> Result<()>
pub fn distribute_reward( &mut self, msg_sender: Address, call: distributeRewardCall, ) -> Result<()>
Distributes amount of reward tokens from the caller into the opted-in reward pool.
Transfers tokens to the contract and increases the global reward-per-token accumulator
proportionally to the opted-in supply.
§Errors
Paused— token transfers are currently pausedInvalidAmount—amountis zeroPolicyForbids— TIP-403 policy rejects the transferSpendingLimitExceeded— access key spending limit exceededInsufficientBalance— caller balance lower thanamountNoOptedInSupply— no tokens are currently opted into rewards
Sourcepub fn update_rewards(&mut self, holder: Address) -> Result<Address>
pub fn update_rewards(&mut self, holder: Address) -> Result<Address>
Updates and accumulates accrued rewards for a specific token holder.
This function calculates the rewards earned by a holder based on their balance and the reward per token difference since their last update. Rewards are accumulated in the delegated recipient’s rewardBalance. Returns the holder’s delegated recipient address.
Sourcepub fn set_reward_recipient(
&mut self,
msg_sender: Address,
call: setRewardRecipientCall,
) -> Result<()>
pub fn set_reward_recipient( &mut self, msg_sender: Address, call: setRewardRecipientCall, ) -> Result<()>
Sets or changes the reward recipient for a token holder.
This function allows a token holder to designate who should receive their share of rewards. Setting to zero address opts out of rewards.
§Errors
Paused— token transfers are currently pausedPolicyForbids— TIP-403 policy rejects the sender→recipient transfer authorization
Sourcepub fn claim_rewards(&mut self, msg_sender: Address) -> Result<U256>
pub fn claim_rewards(&mut self, msg_sender: Address) -> Result<U256>
Claims accumulated rewards for a recipient.
This function allows a reward recipient to claim their accumulated rewards and receive them as token transfers to their own balance.
§Errors
Paused— token transfers are currently pausedPolicyForbids— TIP-403 policy rejects the contract→caller transfer authorization
Sourcepub fn get_global_reward_per_token(&self) -> Result<U256>
pub fn get_global_reward_per_token(&self) -> Result<U256>
Gets the accumulated global reward per token.
Sourcefn set_global_reward_per_token(&mut self, value: U256) -> Result<()>
fn set_global_reward_per_token(&mut self, value: U256) -> Result<()>
Sets the accumulated global reward per token in storage.
Sourcepub fn get_opted_in_supply(&self) -> Result<u128>
pub fn get_opted_in_supply(&self) -> Result<u128>
Gets the total supply of tokens opted into rewards from storage.
Sourcepub fn set_opted_in_supply(&mut self, value: u128) -> Result<()>
pub fn set_opted_in_supply(&mut self, value: u128) -> Result<()>
Sets the total supply of tokens opted into rewards.
Sourcepub fn handle_rewards_on_transfer(
&mut self,
from: Address,
to: Address,
amount: U256,
) -> Result<()>
pub fn handle_rewards_on_transfer( &mut self, from: Address, to: Address, amount: U256, ) -> Result<()>
Handles reward accounting for both sender and receiver during token transfers.
Sourcepub fn handle_rewards_on_mint(
&mut self,
to: Address,
amount: U256,
) -> Result<()>
pub fn handle_rewards_on_mint( &mut self, to: Address, amount: U256, ) -> Result<()>
Handles reward accounting when tokens are minted to an address.
Sourcepub fn get_user_reward_info(&self, account: Address) -> Result<UserRewardInfo>
pub fn get_user_reward_info(&self, account: Address) -> Result<UserRewardInfo>
Retrieves user reward information for a given account.
Sourcepub fn get_pending_rewards(&self, account: Address) -> Result<u128>
pub fn get_pending_rewards(&self, account: Address) -> Result<u128>
Calculates the pending claimable rewards for an account without modifying state.
This function returns the total pending claimable reward amount, which includes:
- The stored reward balance from previous updates
- Newly accrued rewards based on the current global reward per token
For accounts that have delegated their rewards to another recipient, this returns 0 since their rewards accrue to their delegate instead.
Source§impl TIP20Token
impl TIP20Token
Sourcepub fn initialize_roles(&mut self) -> Result<()>
pub fn initialize_roles(&mut self) -> Result<()>
Initializes the roles precompile by setting UNGRANTABLE_ROLE to be self-administered.
Sourcepub fn grant_default_admin(
&mut self,
msg_sender: Address,
admin: Address,
) -> Result<()>
pub fn grant_default_admin( &mut self, msg_sender: Address, admin: Address, ) -> Result<()>
Grants DEFAULT_ADMIN_ROLE to admin. Used during token initialization.
Sourcepub fn has_role(&self, call: hasRoleCall) -> Result<bool>
pub fn has_role(&self, call: hasRoleCall) -> Result<bool>
Returns whether account holds the given role.
Sourcepub fn get_role_admin(&self, call: getRoleAdminCall) -> Result<B256>
pub fn get_role_admin(&self, call: getRoleAdminCall) -> Result<B256>
Returns the admin role that governs role.
Sourcepub fn grant_role(
&mut self,
msg_sender: Address,
call: grantRoleCall,
) -> Result<()>
pub fn grant_role( &mut self, msg_sender: Address, call: grantRoleCall, ) -> Result<()>
Sourcepub fn revoke_role(
&mut self,
msg_sender: Address,
call: revokeRoleCall,
) -> Result<()>
pub fn revoke_role( &mut self, msg_sender: Address, call: revokeRoleCall, ) -> Result<()>
Sourcepub fn renounce_role(
&mut self,
msg_sender: Address,
call: renounceRoleCall,
) -> Result<()>
pub fn renounce_role( &mut self, msg_sender: Address, call: renounceRoleCall, ) -> Result<()>
Allows the caller to voluntarily give up their own role.
§Errors
Unauthorized— caller does not holdrole
Sourcepub fn set_role_admin(
&mut self,
msg_sender: Address,
call: setRoleAdminCall,
) -> Result<()>
pub fn set_role_admin( &mut self, msg_sender: Address, call: setRoleAdminCall, ) -> Result<()>
Changes the admin role that governs role.
§Errors
Unauthorized— caller does not hold the current admin role forrole
Sourcepub fn check_role(&self, account: Address, role: B256) -> Result<()>
pub fn check_role(&self, account: Address, role: B256) -> Result<()>
Sourcepub fn has_role_internal(&self, account: Address, role: B256) -> Result<bool>
pub fn has_role_internal(&self, account: Address, role: B256) -> Result<bool>
Low-level role check without calldata decoding.
Sourcepub fn grant_role_internal(
&mut self,
account: Address,
role: B256,
) -> Result<()>
pub fn grant_role_internal( &mut self, account: Address, role: B256, ) -> Result<()>
Low-level role grant without authorization checks or events.
fn revoke_role_internal(&mut self, account: Address, role: B256) -> Result<()>
Sourcefn get_role_admin_internal(&self, role: B256) -> Result<B256>
fn get_role_admin_internal(&self, role: B256) -> Result<B256>
If sloads 0, will be equal to DEFAULT_ADMIN_ROLE
fn set_role_admin_internal( &mut self, role: B256, admin_role: B256, ) -> Result<()>
fn check_role_internal(&self, account: Address, role: B256) -> Result<()>
Source§impl TIP20Token
impl TIP20Token
fn __new(address: Address) -> Self
fn __initialize(&mut self) -> Result<()>
fn emit_event(&mut self, event: impl IntoLogData) -> Result<()>
pub fn emitted_events(&self) -> &Vec<LogData>
test-utils only.pub fn clear_emitted_events(&mut self)
test-utils only.pub fn assert_emitted_events(&self, expected: Vec<impl IntoLogData>)
test-utils only.Source§impl TIP20Token
impl TIP20Token
Sourcepub fn currency(&self) -> Result<String>
pub fn currency(&self) -> Result<String>
Returns the token’s currency denomination (e.g. "USD").
Sourcepub fn total_supply(&self) -> Result<U256>
pub fn total_supply(&self) -> Result<U256>
Returns the current total supply.
Sourcepub fn quote_token(&self) -> Result<Address>
pub fn quote_token(&self) -> Result<Address>
Returns the active quote token address used for pricing.
Sourcepub fn next_quote_token(&self) -> Result<Address>
pub fn next_quote_token(&self) -> Result<Address>
Returns the pending next quote token address (set but not yet finalized).
Sourcepub fn supply_cap(&self) -> Result<U256>
pub fn supply_cap(&self) -> Result<U256>
Returns the maximum mintable supply.
Sourcepub fn transfer_policy_id(&self) -> Result<u64>
pub fn transfer_policy_id(&self) -> Result<u64>
Returns the TIP-403 transfer policy ID governing this token’s transfers.
Sourcepub fn pause_role() -> B256
pub fn pause_role() -> B256
Returns the PAUSE_ROLE constant
This role identifier grants permission to pause the token contract.
The role is computed as keccak256("PAUSE_ROLE").
Sourcepub fn unpause_role() -> B256
pub fn unpause_role() -> B256
Returns the UNPAUSE_ROLE constant
This role identifier grants permission to unpause the token contract.
The role is computed as keccak256("UNPAUSE_ROLE").
Sourcepub fn issuer_role() -> B256
pub fn issuer_role() -> B256
Returns the ISSUER_ROLE constant
This role identifier grants permission to mint and burn tokens.
The role is computed as keccak256("ISSUER_ROLE").
Sourcepub fn burn_blocked_role() -> B256
pub fn burn_blocked_role() -> B256
Returns the BURN_BLOCKED_ROLE constant
This role identifier grants permission to burn tokens from blocked accounts.
The role is computed as keccak256("BURN_BLOCKED_ROLE").
Sourcepub fn balance_of(&self, call: balanceOfCall) -> Result<U256>
pub fn balance_of(&self, call: balanceOfCall) -> Result<U256>
Returns the token balance of account.
Sourcepub fn allowance(&self, call: allowanceCall) -> Result<U256>
pub fn allowance(&self, call: allowanceCall) -> Result<U256>
Returns the remaining allowance that spender can transfer on behalf of owner.
Sourcepub fn change_transfer_policy_id(
&mut self,
msg_sender: Address,
call: changeTransferPolicyIdCall,
) -> Result<()>
pub fn change_transfer_policy_id( &mut self, msg_sender: Address, call: changeTransferPolicyIdCall, ) -> Result<()>
Updates the TIP403Registry transfer policy governing this token’s transfers.
§Errors
Unauthorized— caller does not holdDEFAULT_ADMIN_ROLEInvalidTransferPolicyId— policy does not exist in theTIP403Registry
Sourcepub fn set_supply_cap(
&mut self,
msg_sender: Address,
call: setSupplyCapCall,
) -> Result<()>
pub fn set_supply_cap( &mut self, msg_sender: Address, call: setSupplyCapCall, ) -> Result<()>
Sourcepub fn unpause(&mut self, msg_sender: Address, _call: unpauseCall) -> Result<()>
pub fn unpause(&mut self, msg_sender: Address, _call: unpauseCall) -> Result<()>
Sourcepub fn set_next_quote_token(
&mut self,
msg_sender: Address,
call: setNextQuoteTokenCall,
) -> Result<()>
pub fn set_next_quote_token( &mut self, msg_sender: Address, call: setNextQuoteTokenCall, ) -> Result<()>
Stages a new quote token. Must be finalized via Self::complete_quote_token_update.
Validates that the candidate is a deployed TIP-20 token (via TIP20Factory) and, for
USD-denominated tokens, that the candidate is also USD-denominated.
§Errors
Unauthorized— caller does not holdDEFAULT_ADMIN_ROLEInvalidQuoteToken— token is pathUSD, candidate is not a deployed TIP-20, or USD currency mismatch
Sourcepub fn complete_quote_token_update(
&mut self,
msg_sender: Address,
_call: completeQuoteTokenUpdateCall,
) -> Result<()>
pub fn complete_quote_token_update( &mut self, msg_sender: Address, _call: completeQuoteTokenUpdateCall, ) -> Result<()>
Finalizes the staged quote token update. Walks the quote-token chain to detect cycles before committing the change.
§Errors
Unauthorized— caller does not holdDEFAULT_ADMIN_ROLEInvalidQuoteToken— update would create a cycle in the quote-token graph
Sourcepub fn mint(&mut self, msg_sender: Address, call: mintCall) -> Result<()>
pub fn mint(&mut self, msg_sender: Address, call: mintCall) -> Result<()>
Mints amount tokens to the specified to address.
Enforces mint-recipient compliance via TIP403Registry and validates against supply cap.
§Errors
PolicyForbids— TIP-403 policy rejects the mint recipientUnauthorized— caller does not hold theISSUER_ROLEroleSupplyCapExceeded— minting would push total supply above the cap
Sourcepub fn mint_with_memo(
&mut self,
msg_sender: Address,
call: mintWithMemoCall,
) -> Result<()>
pub fn mint_with_memo( &mut self, msg_sender: Address, call: mintWithMemoCall, ) -> Result<()>
Like Self::mint, but attaches a 32-byte memo.
Sourcefn _mint(
&mut self,
msg_sender: Address,
to: Address,
amount: U256,
) -> Result<()>
fn _mint( &mut self, msg_sender: Address, to: Address, amount: U256, ) -> Result<()>
Internal helper to mint new tokens and update balances
Sourcepub fn burn(&mut self, msg_sender: Address, call: burnCall) -> Result<()>
pub fn burn(&mut self, msg_sender: Address, call: burnCall) -> Result<()>
Burns amount from the caller’s balance and reduces total supply.
§Errors
Unauthorized— caller does not hold theISSUER_ROLEroleInsufficientBalance— caller balance lower than burn amount
Sourcepub fn burn_with_memo(
&mut self,
msg_sender: Address,
call: burnWithMemoCall,
) -> Result<()>
pub fn burn_with_memo( &mut self, msg_sender: Address, call: burnWithMemoCall, ) -> Result<()>
Like Self::burn, but attaches a 32-byte memo.
Sourcepub fn burn_blocked(
&mut self,
msg_sender: Address,
call: burnBlockedCall,
) -> Result<()>
pub fn burn_blocked( &mut self, msg_sender: Address, call: burnBlockedCall, ) -> Result<()>
Burns tokens from addresses blocked by TIP403Registry policy.
§Errors
Unauthorized— caller does not holdBURN_BLOCKED_ROLEPolicyForbids— target address is not blocked by policyProtectedAddress— cannot burn from fee manager or stablecoin DEX addresses
fn _burn(&mut self, msg_sender: Address, amount: U256) -> Result<()>
Sourcepub fn approve(
&mut self,
msg_sender: Address,
call: approveCall,
) -> Result<bool>
pub fn approve( &mut self, msg_sender: Address, call: approveCall, ) -> Result<bool>
Sets spender’s allowance to amount for the caller’s tokens.
Deducts from the caller’s AccountKeychain spending limit
when the new allowance exceeds the previous one.
§Errors
SpendingLimitExceeded— new allowance exceeds access key spending limit
Sourcepub fn nonces(&self, call: noncesCall) -> Result<U256>
pub fn nonces(&self, call: noncesCall) -> Result<U256>
Returns the current nonce for an address (EIP-2612)
Sourcepub fn domain_separator(&self) -> Result<B256>
pub fn domain_separator(&self) -> Result<B256>
Returns the EIP-712 domain separator, computed dynamically from the token name and chain ID.
Sourcepub fn permit(&mut self, call: permitCall) -> Result<()>
pub fn permit(&mut self, call: permitCall) -> Result<()>
Sourcepub fn transfer(
&mut self,
msg_sender: Address,
call: transferCall,
) -> Result<bool>
pub fn transfer( &mut self, msg_sender: Address, call: transferCall, ) -> Result<bool>
Transfers amount tokens from the caller to to. Enforces compliance via the
TIP403Registry and deducts from the caller’s AccountKeychain spending limit.
§Errors
Paused— token transfers are currently pausedInvalidRecipient— recipient address is zeroPolicyForbids— TIP-403 policy rejects sender or recipientSpendingLimitExceeded— access key spending limit exceededInsufficientBalance— sender balance lower than transfer amount
Sourcepub fn transfer_from(
&mut self,
msg_sender: Address,
call: transferFromCall,
) -> Result<bool>
pub fn transfer_from( &mut self, msg_sender: Address, call: transferFromCall, ) -> Result<bool>
Transfers amount on behalf of from using the caller’s allowance.
Enforces compliance via the TIP403Registry.
§Errors
Paused— token transfers are currently pausedInvalidRecipient— recipient address is zeroPolicyForbids— TIP-403 policy rejects sender or recipientInsufficientAllowance— caller allowance lower than transfer amountInsufficientBalance—frombalance lower than transfer amount
Sourcepub fn transfer_from_with_memo(
&mut self,
msg_sender: Address,
call: transferFromWithMemoCall,
) -> Result<bool>
pub fn transfer_from_with_memo( &mut self, msg_sender: Address, call: transferFromWithMemoCall, ) -> Result<bool>
Like Self::transfer_from, but attaches a 32-byte memo.
Sourcepub fn system_transfer_from(
&mut self,
from: Address,
to: Address,
amount: U256,
) -> Result<bool>
pub fn system_transfer_from( &mut self, from: Address, to: Address, amount: U256, ) -> Result<bool>
Transfers amount from from to to without approval, for use
by other precompiles only (not exposed via ABI). Enforces
compliance via the TIP403Registry and AccountKeychain.
§Errors
Paused— token transfers are currently pausedInvalidRecipient— recipient address is zeroPolicyForbids— TIP-403 policy rejects sender or recipientSpendingLimitExceeded— access key spending limit exceededInsufficientBalance—frombalance lower than transfer amount
fn _transfer_from( &mut self, msg_sender: Address, from: Address, to: Address, amount: U256, ) -> Result<bool>
Sourcepub fn transfer_with_memo(
&mut self,
msg_sender: Address,
call: transferWithMemoCall,
) -> Result<()>
pub fn transfer_with_memo( &mut self, msg_sender: Address, call: transferWithMemoCall, ) -> Result<()>
Like Self::transfer, but attaches a 32-byte memo.
Source§impl TIP20Token
impl TIP20Token
Sourcepub fn from_address(address: Address) -> Result<Self>
pub fn from_address(address: Address) -> Result<Self>
Creates a TIP20Token handle from a raw address.
§Errors
InvalidToken— address does not carry the0x20C0TIP-20 prefix
Sourcepub fn from_address_unchecked(address: Address) -> Self
pub fn from_address_unchecked(address: Address) -> Self
Creates a TIP20Token without validating the prefix.
§Safety
Caller must ensure is_tip20_prefix(address) returns true.
Sourcepub fn initialize(
&mut self,
msg_sender: Address,
name: &str,
symbol: &str,
currency: &str,
quote_token: Address,
admin: Address,
) -> Result<()>
pub fn initialize( &mut self, msg_sender: Address, name: &str, symbol: &str, currency: &str, quote_token: Address, admin: Address, ) -> Result<()>
Initializes the TIP-20 token precompile with metadata, quote token, supply cap, and
default admin role. Called once by TIP20Factory during token creation.
fn get_balance(&self, account: Address) -> Result<U256>
fn set_balance(&mut self, account: Address, amount: U256) -> Result<()>
fn get_allowance(&self, owner: Address, spender: Address) -> Result<U256>
fn set_allowance( &mut self, owner: Address, spender: Address, amount: U256, ) -> Result<()>
fn set_total_supply(&mut self, amount: U256) -> Result<()>
fn check_not_paused(&self) -> Result<()>
Sourcefn check_recipient(&self, to: Address) -> Result<()>
fn check_recipient(&self, to: Address) -> Result<()>
Validates that the recipient is not:
- the zero address (preventing accidental burns)
- another TIP20 token
Check whether a transfer is authorized by the token’s TIP403Registry policy.
TIP-1015: For T2+, uses directional sender/recipient checks.
Ensures the transfer is authorized by the token’s TIP403Registry policy.
§Errors
PolicyForbids— sender or recipient is not authorized by the active transfer policy
Sourcepub fn check_and_update_spending_limit(
&mut self,
from: Address,
amount: U256,
) -> Result<()>
pub fn check_and_update_spending_limit( &mut self, from: Address, amount: U256, ) -> Result<()>
Checks and deducts amount from the caller’s AccountKeychain spending limit.
§Errors
SpendingLimitExceeded— access key spending limit exceeded
fn _transfer(&mut self, from: Address, to: Address, amount: U256) -> Result<()>
Sourcepub fn transfer_fee_pre_tx(&mut self, from: Address, amount: U256) -> Result<()>
pub fn transfer_fee_pre_tx(&mut self, from: Address, amount: U256) -> Result<()>
Transfers fee tokens from from to the fee manager before transaction execution.
Respects the token’s pause state and deducts from the AccountKeychain spending limit.
§Errors
Paused— token transfers are currently pausedInsufficientBalance— sender balance lower than fee amountSpendingLimitExceeded— access key spending limit exceeded
Sourcepub fn transfer_fee_post_tx(
&mut self,
to: Address,
refund: U256,
actual_spending: U256,
) -> Result<()>
pub fn transfer_fee_post_tx( &mut self, to: Address, refund: U256, actual_spending: U256, ) -> Result<()>
Refunds unused fee tokens from the fee manager back to to and emits a transfer event for
the actual gas spent. Intentionally allowed when paused so that a pause transaction can
still receive its fee refund. On T1C+, also restores the AccountKeychain spending limit
by the refund amount.
Source§impl TIP20Token
impl TIP20Token
Sourcepub fn create_precompile(
address: Address,
cfg: &CfgEnv<TempoHardfork>,
) -> DynPrecompile
pub fn create_precompile( address: Address, cfg: &CfgEnv<TempoHardfork>, ) -> DynPrecompile
Creates the EVM precompile for this type.
Trait Implementations§
Source§impl ContractStorage for TIP20Token
impl ContractStorage for TIP20Token
Source§fn storage(&self) -> &StorageCtx
fn storage(&self) -> &StorageCtx
Source§fn storage_mut(&mut self) -> &mut StorageCtx
fn storage_mut(&mut self) -> &mut StorageCtx
Source§fn is_initialized(&self) -> Result<bool>
fn is_initialized(&self) -> Result<bool>
Source§impl Precompile for TIP20Token
impl Precompile for TIP20Token
Auto Trait Implementations§
impl !Freeze for TIP20Token
impl !RefUnwindSafe for TIP20Token
impl Send for TIP20Token
impl !Sync for TIP20Token
impl Unpin for TIP20Token
impl UnsafeUnpin for TIP20Token
impl UnwindSafe for TIP20Token
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
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<TxEnv, T> FromRecoveredTx<&T> for TxEnvwhere
TxEnv: FromRecoveredTx<T>,
impl<TxEnv, T> FromRecoveredTx<&T> for TxEnvwhere
TxEnv: FromRecoveredTx<T>,
§fn from_recovered_tx(tx: &&T, sender: Address) -> TxEnv
fn from_recovered_tx(tx: &&T, sender: Address) -> TxEnv
TxEnv] from a transaction and a sender address.§impl<TxEnv, T> FromTxWithEncoded<&T> for TxEnvwhere
TxEnv: FromTxWithEncoded<T>,
impl<TxEnv, T> FromTxWithEncoded<&T> for TxEnvwhere
TxEnv: FromTxWithEncoded<T>,
§fn from_encoded_tx(tx: &&T, sender: Address, encoded: Bytes) -> TxEnv
fn from_encoded_tx(tx: &&T, sender: Address, encoded: Bytes) -> TxEnv
TxEnv] from a transaction, its sender, and encoded transaction bytes.§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> ServiceExt for T
impl<T> ServiceExt for T
§fn propagate_header(self, header: HeaderName) -> PropagateHeader<Self>where
Self: Sized,
fn propagate_header(self, header: HeaderName) -> PropagateHeader<Self>where
Self: Sized,
propagate-header only.§fn add_extension<T>(self, value: T) -> AddExtension<Self, T>where
Self: Sized,
fn add_extension<T>(self, value: T) -> AddExtension<Self, T>where
Self: Sized,
add-extension only.§fn map_request_body<F>(self, f: F) -> MapRequestBody<Self, F>where
Self: Sized,
fn map_request_body<F>(self, f: F) -> MapRequestBody<Self, F>where
Self: Sized,
map-request-body only.§fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
map-response-body only.§fn compression(self) -> Compression<Self>where
Self: Sized,
fn compression(self) -> Compression<Self>where
Self: Sized,
compression-br or compression-deflate or compression-gzip or compression-zstd only.§fn decompression(self) -> Decompression<Self>where
Self: Sized,
fn decompression(self) -> Decompression<Self>where
Self: Sized,
decompression-br or decompression-deflate or decompression-gzip or decompression-zstd only.§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
trace only.§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
trace only.§fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
follow-redirect only.§fn sensitive_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<SetSensitiveResponseHeaders<Self>>where
Self: Sized,
fn sensitive_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<SetSensitiveResponseHeaders<Self>>where
Self: Sized,
sensitive-headers only.§fn sensitive_request_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<Self>where
Self: Sized,
fn sensitive_request_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<Self>where
Self: Sized,
sensitive-headers only.§fn sensitive_response_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveResponseHeaders<Self>where
Self: Sized,
fn sensitive_response_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveResponseHeaders<Self>where
Self: Sized,
sensitive-headers only.§fn override_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
fn override_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
set-header only.§fn append_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
fn append_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
set-header only.§fn insert_request_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
fn insert_request_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
set-header only.§fn override_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
fn override_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
set-header only.§fn append_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
fn append_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
set-header only.§fn insert_response_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
fn insert_response_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
set-header only.§fn set_request_id<M>(
self,
header_name: HeaderName,
make_request_id: M,
) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
fn set_request_id<M>(
self,
header_name: HeaderName,
make_request_id: M,
) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
request-id only.§fn set_x_request_id<M>(self, make_request_id: M) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
fn set_x_request_id<M>(self, make_request_id: M) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
request-id only.x-request-id as the header name. Read more§fn propagate_request_id(
self,
header_name: HeaderName,
) -> PropagateRequestId<Self>where
Self: Sized,
fn propagate_request_id(
self,
header_name: HeaderName,
) -> PropagateRequestId<Self>where
Self: Sized,
request-id only.§fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
Self: Sized,
fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
Self: Sized,
request-id only.x-request-id as the header name. Read more§fn catch_panic(self) -> CatchPanic<Self, DefaultResponseForPanic>where
Self: Sized,
fn catch_panic(self) -> CatchPanic<Self, DefaultResponseForPanic>where
Self: Sized,
catch-panic only.500 Internal Server responses. Read more§fn request_body_limit(self, limit: usize) -> RequestBodyLimit<Self>where
Self: Sized,
fn request_body_limit(self, limit: usize) -> RequestBodyLimit<Self>where
Self: Sized,
limit only.413 Payload Too Large responses. Read more§fn trim_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
fn trim_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
normalize-path only.§fn append_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
fn append_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
normalize-path only.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<T> ErasedDestructor for Twhere
T: 'static,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 1552 bytes