[][src]Enum transaction_builder::ScriptCall

pub enum ScriptCall {
    AddCurrencyToAccount {
        currency: TypeTag,
    },
    AddRecoveryRotationCapability {
        recovery_address: AccountAddress,
    },
    AddToScriptAllowList {
        hash: Vec<u8>,
        sliding_nonce: u64,
    },
    AddValidatorAndReconfigure {
        sliding_nonce: u64,
        validator_name: Vec<u8>,
        validator_address: AccountAddress,
    },
    Burn {
        token: TypeTag,
        sliding_nonce: u64,
        preburn_address: AccountAddress,
    },
    BurnTxnFees {
        coin_type: TypeTag,
    },
    CancelBurn {
        token: TypeTag,
        preburn_address: AccountAddress,
    },
    CreateChildVaspAccount {
        coin_type: TypeTag,
        child_address: AccountAddress,
        auth_key_prefix: Vec<u8>,
        add_all_currencies: bool,
        child_initial_balance: u64,
    },
    CreateDesignatedDealer {
        currency: TypeTag,
        sliding_nonce: u64,
        addr: AccountAddress,
        auth_key_prefix: Vec<u8>,
        human_name: Vec<u8>,
        add_all_currencies: bool,
    },
    CreateParentVaspAccount {
        coin_type: TypeTag,
        sliding_nonce: u64,
        new_account_address: AccountAddress,
        auth_key_prefix: Vec<u8>,
        human_name: Vec<u8>,
        add_all_currencies: bool,
    },
    CreateRecoveryAddress {},
    CreateValidatorAccount {
        sliding_nonce: u64,
        new_account_address: AccountAddress,
        auth_key_prefix: Vec<u8>,
        human_name: Vec<u8>,
    },
    CreateValidatorOperatorAccount {
        sliding_nonce: u64,
        new_account_address: AccountAddress,
        auth_key_prefix: Vec<u8>,
        human_name: Vec<u8>,
    },
    FreezeAccount {
        sliding_nonce: u64,
        to_freeze_account: AccountAddress,
    },
    PeerToPeerWithMetadata {
        currency: TypeTag,
        payee: AccountAddress,
        amount: u64,
        metadata: Vec<u8>,
        metadata_signature: Vec<u8>,
    },
    Preburn {
        token: TypeTag,
        amount: u64,
    },
    PublishSharedEd25519PublicKey {
        public_key: Vec<u8>,
    },
    RegisterValidatorConfig {
        validator_account: AccountAddress,
        consensus_pubkey: Vec<u8>,
        validator_network_addresses: Vec<u8>,
        fullnode_network_addresses: Vec<u8>,
    },
    RemoveValidatorAndReconfigure {
        sliding_nonce: u64,
        validator_name: Vec<u8>,
        validator_address: AccountAddress,
    },
    RotateAuthenticationKey {
        new_key: Vec<u8>,
    },
    RotateAuthenticationKeyWithNonce {
        sliding_nonce: u64,
        new_key: Vec<u8>,
    },
    RotateAuthenticationKeyWithNonceAdmin {
        sliding_nonce: u64,
        new_key: Vec<u8>,
    },
    RotateAuthenticationKeyWithRecoveryAddress {
        recovery_address: AccountAddress,
        to_recover: AccountAddress,
        new_key: Vec<u8>,
    },
    RotateDualAttestationInfo {
        new_url: Vec<u8>,
        new_key: Vec<u8>,
    },
    RotateSharedEd25519PublicKey {
        public_key: Vec<u8>,
    },
    SetValidatorConfigAndReconfigure {
        validator_account: AccountAddress,
        consensus_pubkey: Vec<u8>,
        validator_network_addresses: Vec<u8>,
        fullnode_network_addresses: Vec<u8>,
    },
    SetValidatorOperator {
        operator_name: Vec<u8>,
        operator_account: AccountAddress,
    },
    SetValidatorOperatorWithNonceAdmin {
        sliding_nonce: u64,
        operator_name: Vec<u8>,
        operator_account: AccountAddress,
    },
    TieredMint {
        coin_type: TypeTag,
        sliding_nonce: u64,
        designated_dealer_address: AccountAddress,
        mint_amount: u64,
        tier_index: u64,
    },
    UnfreezeAccount {
        sliding_nonce: u64,
        to_unfreeze_account: AccountAddress,
    },
    UpdateDualAttestationLimit {
        sliding_nonce: u64,
        new_micro_lbr_limit: u64,
    },
    UpdateExchangeRate {
        currency: TypeTag,
        sliding_nonce: u64,
        new_exchange_rate_numerator: u64,
        new_exchange_rate_denominator: u64,
    },
    UpdateLibraVersion {
        sliding_nonce: u64,
        major: u64,
    },
    UpdateMintingAbility {
        currency: TypeTag,
        allow_minting: bool,
    },
}

Structured representation of a call into a known Move script.

This example is not tested
impl ScriptCall {
    pub fn encode(self) -> Script { .. }
    pub fn decode(&Script) -> Option<ScriptCall> { .. }
}

Variants

AddCurrencyToAccount

Summary

Adds a zero Currency balance to the sending account. This will enable account to send, receive, and hold Libra::Libra<Currency> coins. This transaction can be successfully sent by any account that is allowed to hold balances (e.g., VASP, Designated Dealer).

Technical Description

After the successful execution of this transaction the sending account will have a LibraAccount::Balance<Currency> resource with zero balance published under it. Only accounts that can hold balances can send this transaction, the sending account cannot already have a LibraAccount::Balance<Currency> published under it.

Parameters

NameTypeDescription
CurrencyTypeThe Move type for the Currency being added to the sending account of the transaction. Currency must be an already-registered currency on-chain.
account&signerThe signer of the sending account of the transaction.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDLibra::ECURRENCY_INFOThe Currency is not a registered currency on-chain.
Errors::INVALID_ARGUMENTLibraAccount::EROLE_CANT_STORE_BALANCEThe sending account's role does not permit balances.
Errors::ALREADY_PUBLISHEDLibraAccount::EADD_EXISTING_CURRENCYA balance for Currency is already published under the sending account.

Related Scripts

Fields of AddCurrencyToAccount

currency: TypeTag
AddRecoveryRotationCapability

Summary

Stores the sending accounts ability to rotate its authentication key with a designated recovery account. Both the sending and recovery accounts need to belong to the same VASP and both be VASP accounts. After this transaction both the sending account and the specified recovery account can rotate the sender account's authentication key.

Technical Description

Adds the LibraAccount::KeyRotationCapability for the sending account (to_recover_account) to the RecoveryAddress::RecoveryAddress resource under recovery_address. After this transaction has been executed successfully the account at recovery_address and the to_recover_account may rotate the authentication key of to_recover_account (the sender of this transaction).

The sending account of this transaction (to_recover_account) must not have previously given away its unique key rotation capability, and must be a VASP account. The account at recovery_address must also be a VASP account belonging to the same VASP as the to_recover_account. Additionally the account at recovery_address must have already initialized itself as a recovery account address using the Script::create_recovery_address transaction script.

The sending account's (to_recover_account) key rotation capability is removed in this transaction and stored in the RecoveryAddress::RecoveryAddress resource stored under the account at recovery_address.

Parameters

NameTypeDescription
to_recover_account&signerThe signer reference of the sending account of this transaction.
recovery_addressaddressThe account address where the to_recover_account's LibraAccount::KeyRotationCapability will be stored.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::INVALID_STATELibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTEDto_recover_account has already delegated/extracted its LibraAccount::KeyRotationCapability.
Errors::NOT_PUBLISHEDRecoveryAddress::ERECOVERY_ADDRESSrecovery_address does not have a RecoveryAddress resource published under it.
Errors::INVALID_ARGUMENTRecoveryAddress::EINVALID_KEY_ROTATION_DELEGATIONto_recover_account and recovery_address do not belong to the same VASP.

Related Scripts

Fields of AddRecoveryRotationCapability

recovery_address: AccountAddress
AddToScriptAllowList

Summary

Adds a script hash to the transaction allowlist. This transaction can only be sent by the Libra Root account. Scripts with this hash can be sent afterward the successful execution of this script.

Technical Description

The sending account (lr_account) must be the Libra Root account. The script allow list must not already hold the script hash being added. The sliding_nonce must be a valid nonce for the Libra Root account. After this transaction has executed successfully a reconfiguration will be initiated, and the on-chain config LibraTransactionPublishingOption::LibraTransactionPublishingOption's script_allow_list field will contain the new script hash and transactions with this hash can be successfully sent to the network.

Parameters

NameTypeDescription
lr_account&signerThe signer reference of the sending account of this transaction. Must be the Libra Root signer.
hashvector<u8>The hash of the script to be added to the script allowlist.
sliding_nonceu64The sliding_nonce (see: SlidingNonce) to be used for this transaction.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDSlidingNonce::ESLIDING_NONCEA SlidingNonce resource is not published under lr_account.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_OLDThe sliding_nonce is too old and it's impossible to determine if it's duplicated or not.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_NEWThe sliding_nonce is too far in the future.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_ALREADY_RECORDEDThe sliding_nonce has been previously recorded.
Errors::REQUIRES_ADDRESSCoreAddresses::ELIBRA_ROOTThe sending account is not the Libra Root account.
Errors::REQUIRES_ROLERoles::ELIBRA_ROOTThe sending account is not the Libra Root account.
Errors::INVALID_ARGUMENTLibraTransactionPublishingOption::EINVALID_SCRIPT_HASHThe script hash is an invalid length.
Errors::INVALID_ARGUMENTLibraTransactionPublishingOption::EALLOWLIST_ALREADY_CONTAINS_SCRIPTThe on-chain allowlist already contains the script hash.

Fields of AddToScriptAllowList

hash: Vec<u8>sliding_nonce: u64
AddValidatorAndReconfigure

Summary

Adds a validator account to the validator set, and triggers a reconfiguration of the system to admit the account to the validator set for the system. This transaction can only be successfully called by the Libra Root account.

Technical Description

This script adds the account at validator_address to the validator set. This transaction emits a LibraConfig::NewEpochEvent event and triggers a reconfiguration. Once the reconfiguration triggered by this script's execution has been performed, the account at the validator_address is considered to be a validator in the network.

This transaction script will fail if the validator_address address is already in the validator set or does not have a ValidatorConfig::ValidatorConfig resource already published under it.

Parameters

NameTypeDescription
lr_account&signerThe signer reference of the sending account of this transaction. Must be the Libra Root signer.
sliding_nonceu64The sliding_nonce (see: SlidingNonce) to be used for this transaction.
validator_namevector<u8>ASCII-encoded human name for the validator. Must match the human name in the ValidatorConfig::ValidatorConfig for the validator.
validator_addressaddressThe validator account address to be added to the validator set.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDSlidingNonce::ESLIDING_NONCEA SlidingNonce resource is not published under lr_account.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_OLDThe sliding_nonce is too old and it's impossible to determine if it's duplicated or not.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_NEWThe sliding_nonce is too far in the future.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_ALREADY_RECORDEDThe sliding_nonce has been previously recorded.
Errors::REQUIRES_ADDRESSCoreAddresses::ELIBRA_ROOTThe sending account is not the Libra Root account.
Errors::REQUIRES_ROLERoles::ELIBRA_ROOTThe sending account is not the Libra Root account.
00The provided validator_name does not match the already-recorded human name for the validator.
Errors::INVALID_ARGUMENTLibraSystem::EINVALID_PROSPECTIVE_VALIDATORThe validator to be added does not have a ValidatorConfig::ValidatorConfig resource published under it, or its config field is empty.
Errors::INVALID_ARGUMENTLibraSystem::EALREADY_A_VALIDATORThe validator_address account is already a registered validator.
Errors::INVALID_STATELibraConfig::EINVALID_BLOCK_TIMEAn invalid time value was encountered in reconfiguration. Unlikely to occur.

Related Scripts

Fields of AddValidatorAndReconfigure

sliding_nonce: u64validator_name: Vec<u8>validator_address: AccountAddress
Burn

Summary

Burns all coins held in the preburn resource at the specified preburn address and removes them from the system. The sending account must be the Treasury Compliance account. The account that holds the preburn resource will normally be a Designated Dealer, but there are no enforced requirements that it be one.

Technical Description

This transaction permanently destroys all the coins of Token type stored in the Libra::Preburn<Token> resource published under the preburn_address account address.

This transaction will only succeed if the sending account has a Libra::BurnCapability<Token>, and a Libra::Preburn<Token> resource exists under preburn_address, with a non-zero to_burn field. After the successful execution of this transaction the total_value field in the Libra::CurrencyInfo<Token> resource published under 0xA550C18 will be decremented by the value of the to_burn field of the preburn resource under preburn_address immediately before this transaction, and the to_burn field of the preburn resource will have a zero value.

Events

The successful execution of this transaction will emit a Libra::BurnEvent on the event handle held in the Libra::CurrencyInfo<Token> resource's burn_events published under 0xA550C18.

Parameters

NameTypeDescription
TokenTypeThe Move type for the Token currency being burned. Token must be an already-registered currency on-chain.
tc_account&signerThe signer reference of the sending account of this transaction, must have a burn capability for Token published under it.
sliding_nonceu64The sliding_nonce (see: SlidingNonce) to be used for this transaction.
preburn_addressaddressThe address where the coins to-be-burned are currently held.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDSlidingNonce::ESLIDING_NONCEA SlidingNonce resource is not published under account.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_OLDThe sliding_nonce is too old and it's impossible to determine if it's duplicated or not.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_NEWThe sliding_nonce is too far in the future.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_ALREADY_RECORDEDThe sliding_nonce has been previously recorded.
Errors::REQUIRES_CAPABILITYLibra::EBURN_CAPABILITYThe sending account does not have a Libra::BurnCapability<Token> published under it.
Errors::NOT_PUBLISHEDLibra::EPREBURNThe account at preburn_address does not have a Libra::Preburn<Token> resource published under it.
Errors::INVALID_STATELibra::EPREBURN_EMPTYThe Libra::Preburn<Token> resource is empty (has a value of 0).
Errors::NOT_PUBLISHEDLibra::ECURRENCY_INFOThe specified Token is not a registered currency on-chain.

Related Scripts

Fields of Burn

token: TypeTagsliding_nonce: u64preburn_address: AccountAddress
BurnTxnFees

Summary

Burns the transaction fees collected in the CoinType currency so that the Libra association may reclaim the backing coins off-chain. May only be sent by the Treasury Compliance account.

Technical Description

Burns the transaction fees collected in CoinType so that the association may reclaim the backing coins. Once this transaction has executed successfully all transaction fees that will have been collected in CoinType since the last time this script was called with that specific currency. Both balance and preburn fields in the TransactionFee::TransactionFee<CoinType> resource published under the 0xB1E55ED account address will have a value of 0 after the successful execution of this script.

Events

The successful execution of this transaction will emit a Libra::BurnEvent on the event handle held in the Libra::CurrencyInfo<CoinType> resource's burn_events published under 0xA550C18.

Parameters

NameTypeDescription
CoinTypeTypeThe Move type for the CoinType being added to the sending account of the transaction. CoinType must be an already-registered currency on-chain.
tc_account&signerThe signer reference of the sending account of this transaction. Must be the Treasury Compliance account.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::REQUIRES_ADDRESSCoreAddresses::ETREASURY_COMPLIANCEThe sending account is not the Treasury Compliance account.
Errors::NOT_PUBLISHEDTransactionFee::ETRANSACTION_FEECoinType is not an accepted transaction fee currency.
Errors::INVALID_ARGUMENTLibra::ECOINThe collected fees in CoinType are zero.

Related Scripts

Fields of BurnTxnFees

coin_type: TypeTag
CancelBurn

Summary

Cancels and returns all coins held in the preburn area under preburn_address and returns the funds to the preburn_address's balance. Can only be successfully sent by an account with Treasury Compliance role.

Technical Description

Cancels and returns all coins held in the Libra::Preburn<Token> resource under the preburn_address and return the funds to the preburn_address account's LibraAccount::Balance<Token>. The transaction must be sent by an account with a Libra::BurnCapability<Token> resource published under it. The account at preburn_address must have a Libra::Preburn<Token> resource published under it, and its value must be nonzero. The transaction removes the entire balance held in the Libra::Preburn<Token> resource, and returns it back to the account's LibraAccount::Balance<Token> under preburn_address. Due to this, the account at preburn_address must already have a balance in the Token currency published before this script is called otherwise the transaction will fail.

Events

The successful execution of this transaction will emit:

Parameters

NameTypeDescription
TokenTypeThe Move type for the Token currenty that burning is being cancelled for. Token must be an already-registered currency on-chain.
account&signerThe signer reference of the sending account of this transaction, must have a burn capability for Token published under it.
preburn_addressaddressThe address where the coins to-be-burned are currently held.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::REQUIRES_CAPABILITYLibra::EBURN_CAPABILITYThe sending account does not have a Libra::BurnCapability<Token> published under it.
Errors::NOT_PUBLISHEDLibra::EPREBURNThe account at preburn_address does not have a Libra::Preburn<Token> resource published under it.
Errors::NOT_PUBLISHEDLibra::ECURRENCY_INFOThe specified Token is not a registered currency on-chain.
Errors::INVALID_ARGUMENTLibraAccount::ECOIN_DEPOSIT_IS_ZEROThe value held in the preburn resource was zero.
Errors::INVALID_ARGUMENTLibraAccount::EPAYEE_CANT_ACCEPT_CURRENCY_TYPEThe account at preburn_address doesn't have a balance resource for Token.
Errors::LIMIT_EXCEEDEDLibraAccount::EDEPOSIT_EXCEEDS_LIMITSThe depositing of the funds held in the prebun area would exceed the account's account limits.
Errors::INVALID_STATEDualAttestation::EPAYEE_COMPLIANCE_KEY_NOT_SETThe account does not have a compliance key set on it but dual attestion checking was performed.

Related Scripts

Fields of CancelBurn

token: TypeTagpreburn_address: AccountAddress
CreateChildVaspAccount

Summary

Creates a Child VASP account with its parent being the sending account of the transaction. The sender of the transaction must be a Parent VASP account.

Technical Description

Creates a ChildVASP account for the sender parent_vasp at child_address with a balance of child_initial_balance in CoinType and an initial authentication key of auth_key_prefix | child_address.

If add_all_currencies is true, the child address will have a zero balance in all available currencies in the system.

The new account will be a child account of the transaction sender, which must be a Parent VASP account. The child account will be recorded against the limit of child accounts of the creating Parent VASP account.

Events

Successful execution with a child_initial_balance greater than zero will emit:

Parameters

NameTypeDescription
CoinTypeTypeThe Move type for the CoinType that the child account should be created with. CoinType must be an already-registered currency on-chain.
parent_vasp&signerThe signer reference of the sending account. Must be a Parent VASP account.
child_addressaddressAddress of the to-be-created Child VASP account.
auth_key_prefixvector<u8>The authentication key prefix that will be used initially for the newly created account.
add_all_currenciesboolWhether to publish balance resources for all known currencies when the account is created.
child_initial_balanceu64The initial balance in CoinType to give the child account when it's created.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::INVALID_ARGUMENTLibraAccount::EMALFORMED_AUTHENTICATION_KEYThe auth_key_prefix was not of length 32.
Errors::REQUIRES_ROLERoles::EPARENT_VASPThe sending account wasn't a Parent VASP account.
Errors::ALREADY_PUBLISHEDRoles::EROLE_IDThe child_address address is already taken.
Errors::LIMIT_EXCEEDEDVASP::ETOO_MANY_CHILDRENThe sending account has reached the maximum number of allowed child accounts.
Errors::NOT_PUBLISHEDLibra::ECURRENCY_INFOThe CoinType is not a registered currency on-chain.
Errors::INVALID_STATELibraAccount::EWITHDRAWAL_CAPABILITY_ALREADY_EXTRACTEDThe withdrawal capability for the sending account has already been extracted.
Errors::NOT_PUBLISHEDLibraAccount::EPAYER_DOESNT_HOLD_CURRENCYThe sending account doesn't have a balance in CoinType.
Errors::LIMIT_EXCEEDEDLibraAccount::EINSUFFICIENT_BALANCEThe sending account doesn't have at least child_initial_balance of CoinType balance.
Errors::INVALID_ARGUMENTLibraAccount::ECANNOT_CREATE_AT_VM_RESERVEDThe child_address is the reserved address 0x0.

Related Scripts

Fields of CreateChildVaspAccount

coin_type: TypeTagchild_address: AccountAddressauth_key_prefix: Vec<u8>add_all_currencies: boolchild_initial_balance: u64
CreateDesignatedDealer

Summary

Creates a Designated Dealer account with the provided information, and initializes it with default mint tiers. The transaction can only be sent by the Treasury Compliance account.

Technical Description

Creates an account with the Designated Dealer role at addr with authentication key auth_key_prefix | addr and a 0 balance of type Currency. If add_all_currencies is true, 0 balances for all available currencies in the system will also be added. This can only be invoked by an account with the TreasuryCompliance role.

At the time of creation the account is also initialized with default mint tiers of (500_000, 5000_000, 50_000_000, 500_000_000), and preburn areas for each currency that is added to the account.

Parameters

NameTypeDescription
CurrencyTypeThe Move type for the Currency that the Designated Dealer should be initialized with. Currency must be an already-registered currency on-chain.
tc_account&signerThe signer reference of the sending account of this transaction. Must be the Treasury Compliance account.
sliding_nonceu64The sliding_nonce (see: SlidingNonce) to be used for this transaction.
addraddressAddress of the to-be-created Designated Dealer account.
auth_key_prefixvector<u8>The authentication key prefix that will be used initially for the newly created account.
human_namevector<u8>ASCII-encoded human name for the Designated Dealer.
add_all_currenciesboolWhether to publish preburn, balance, and tier info resources for all known (SCS) currencies or just Currency when the account is created.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDSlidingNonce::ESLIDING_NONCEA SlidingNonce resource is not published under tc_account.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_OLDThe sliding_nonce is too old and it's impossible to determine if it's duplicated or not.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_NEWThe sliding_nonce is too far in the future.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_ALREADY_RECORDEDThe sliding_nonce has been previously recorded.
Errors::REQUIRES_ADDRESSCoreAddresses::ETREASURY_COMPLIANCEThe sending account is not the Treasury Compliance account.
Errors::REQUIRES_ROLERoles::ETREASURY_COMPLIANCEThe sending account is not the Treasury Compliance account.
Errors::NOT_PUBLISHEDLibra::ECURRENCY_INFOThe Currency is not a registered currency on-chain.
Errors::ALREADY_PUBLISHEDRoles::EROLE_IDThe addr address is already taken.

Related Scripts

Fields of CreateDesignatedDealer

currency: TypeTagsliding_nonce: u64addr: AccountAddressauth_key_prefix: Vec<u8>human_name: Vec<u8>add_all_currencies: bool
CreateParentVaspAccount

Summary

Creates a Parent VASP account with the specified human name. Must be called by the Treasury Compliance account.

Technical Description

Creates an account with the Parent VASP role at address with authentication key auth_key_prefix | new_account_address and a 0 balance of type CoinType. If add_all_currencies is true, 0 balances for all available currencies in the system will also be added. This can only be invoked by an TreasuryCompliance account. sliding_nonce is a unique nonce for operation, see SlidingNonce for details.

Parameters

NameTypeDescription
CoinTypeTypeThe Move type for the CoinType currency that the Parent VASP account should be initialized with. CoinType must be an already-registered currency on-chain.
tc_account&signerThe signer reference of the sending account of this transaction. Must be the Treasury Compliance account.
sliding_nonceu64The sliding_nonce (see: SlidingNonce) to be used for this transaction.
new_account_addressaddressAddress of the to-be-created Parent VASP account.
auth_key_prefixvector<u8>The authentication key prefix that will be used initially for the newly created account.
human_namevector<u8>ASCII-encoded human name for the Parent VASP.
add_all_currenciesboolWhether to publish balance resources for all known currencies when the account is created.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDSlidingNonce::ESLIDING_NONCEA SlidingNonce resource is not published under tc_account.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_OLDThe sliding_nonce is too old and it's impossible to determine if it's duplicated or not.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_NEWThe sliding_nonce is too far in the future.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_ALREADY_RECORDEDThe sliding_nonce has been previously recorded.
Errors::REQUIRES_ADDRESSCoreAddresses::ETREASURY_COMPLIANCEThe sending account is not the Treasury Compliance account.
Errors::REQUIRES_ROLERoles::ETREASURY_COMPLIANCEThe sending account is not the Treasury Compliance account.
Errors::NOT_PUBLISHEDLibra::ECURRENCY_INFOThe CoinType is not a registered currency on-chain.
Errors::ALREADY_PUBLISHEDRoles::EROLE_IDThe new_account_address address is already taken.

Related Scripts

Fields of CreateParentVaspAccount

coin_type: TypeTagsliding_nonce: u64new_account_address: AccountAddressauth_key_prefix: Vec<u8>human_name: Vec<u8>add_all_currencies: bool
CreateRecoveryAddress

Summary

Initializes the sending account as a recovery address that may be used by the VASP that it belongs to. The sending account must be a VASP account. Multiple recovery addresses can exist for a single VASP, but accounts in each must be disjoint.

Technical Description

Publishes a RecoveryAddress::RecoveryAddress resource under account. It then extracts the LibraAccount::KeyRotationCapability for account and adds it to the resource. After the successful execution of this transaction other accounts may add their key rotation to this resource so that account may be used as a recovery account for those accounts.

Parameters

NameTypeDescription
account&signerThe signer of the sending account of the transaction.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::INVALID_STATELibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTEDaccount has already delegated/extracted its LibraAccount::KeyRotationCapability.
Errors::INVALID_ARGUMENTRecoveryAddress::ENOT_A_VASPaccount is not a VASP account.
Errors::INVALID_ARGUMENTRecoveryAddress::EKEY_ROTATION_DEPENDENCY_CYCLEA key rotation recovery cycle would be created by adding account's key rotation capability.
Errors::ALREADY_PUBLISHEDRecoveryAddress::ERECOVERY_ADDRESSA RecoveryAddress::RecoveryAddress resource has already been published under account.

Related Scripts

Fields of CreateRecoveryAddress

CreateValidatorAccount

Summary

Creates a Validator account. This transaction can only be sent by the Libra Root account.

Technical Description

Creates an account with a Validator role at new_account_address, with authentication key auth_key_prefix | new_account_address. It publishes a ValidatorConfig::ValidatorConfig resource with empty config, and operator_account fields. The human_name field of the ValidatorConfig::ValidatorConfig is set to the passed in human_name. This script does not add the validator to the validator set or the system, but only creates the account.

Parameters

NameTypeDescription
lr_account&signerThe signer reference of the sending account of this transaction. Must be the Libra Root signer.
sliding_nonceu64The sliding_nonce (see: SlidingNonce) to be used for this transaction.
new_account_addressaddressAddress of the to-be-created Validator account.
auth_key_prefixvector<u8>The authentication key prefix that will be used initially for the newly created account.
human_namevector<u8>ASCII-encoded human name for the validator.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDSlidingNonce::ESLIDING_NONCEA SlidingNonce resource is not published under lr_account.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_OLDThe sliding_nonce is too old and it's impossible to determine if it's duplicated or not.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_NEWThe sliding_nonce is too far in the future.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_ALREADY_RECORDEDThe sliding_nonce has been previously recorded.
Errors::REQUIRES_ADDRESSCoreAddresses::ELIBRA_ROOTThe sending account is not the Libra Root account.
Errors::REQUIRES_ROLERoles::ELIBRA_ROOTThe sending account is not the Libra Root account.
Errors::ALREADY_PUBLISHEDRoles::EROLE_IDThe new_account_address address is already taken.

Related Scripts

Fields of CreateValidatorAccount

sliding_nonce: u64new_account_address: AccountAddressauth_key_prefix: Vec<u8>human_name: Vec<u8>
CreateValidatorOperatorAccount

Summary

Creates a Validator Operator account. This transaction can only be sent by the Libra Root account.

Technical Description

Creates an account with a Validator Operator role at new_account_address, with authentication key auth_key_prefix | new_account_address. It publishes a ValidatorOperatorConfig::ValidatorOperatorConfig resource with the specified human_name. This script does not assign the validator operator to any validator accounts but only creates the account.

Parameters

NameTypeDescription
lr_account&signerThe signer reference of the sending account of this transaction. Must be the Libra Root signer.
sliding_nonceu64The sliding_nonce (see: SlidingNonce) to be used for this transaction.
new_account_addressaddressAddress of the to-be-created Validator account.
auth_key_prefixvector<u8>The authentication key prefix that will be used initially for the newly created account.
human_namevector<u8>ASCII-encoded human name for the validator.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDSlidingNonce::ESLIDING_NONCEA SlidingNonce resource is not published under lr_account.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_OLDThe sliding_nonce is too old and it's impossible to determine if it's duplicated or not.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_NEWThe sliding_nonce is too far in the future.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_ALREADY_RECORDEDThe sliding_nonce has been previously recorded.
Errors::REQUIRES_ADDRESSCoreAddresses::ELIBRA_ROOTThe sending account is not the Libra Root account.
Errors::REQUIRES_ROLERoles::ELIBRA_ROOTThe sending account is not the Libra Root account.
Errors::ALREADY_PUBLISHEDRoles::EROLE_IDThe new_account_address address is already taken.

Related Scripts

Fields of CreateValidatorOperatorAccount

sliding_nonce: u64new_account_address: AccountAddressauth_key_prefix: Vec<u8>human_name: Vec<u8>
FreezeAccount

Summary

Freezes the account at address. The sending account of this transaction must be the Treasury Compliance account. The account being frozen cannot be the Libra Root or Treasury Compliance account. After the successful execution of this transaction no transactions may be sent from the frozen account, and the frozen account may not send or receive coins.

Technical Description

Sets the AccountFreezing::FreezingBit to true and emits a AccountFreezing::FreezeAccountEvent. The transaction sender must be the Treasury Compliance account, but the account at to_freeze_account must not be either 0xA550C18 (the Libra Root address), or 0xB1E55ED (the Treasury Compliance address). Note that this is a per-account property e.g., freezing a Parent VASP will not effect the status any of its child accounts and vice versa.

Events

Successful execution of this transaction will emit a AccountFreezing::FreezeAccountEvent on the freeze_event_handle held in the AccountFreezing::FreezeEventsHolder resource published under 0xA550C18 with the frozen_address being the to_freeze_account.

Parameters

NameTypeDescription
tc_account&signerThe signer reference of the sending account of this transaction. Must be the Treasury Compliance account.
sliding_nonceu64The sliding_nonce (see: SlidingNonce) to be used for this transaction.
to_freeze_accountaddressThe account address to be frozen.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDSlidingNonce::ESLIDING_NONCEA SlidingNonce resource is not published under tc_account.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_OLDThe sliding_nonce is too old and it's impossible to determine if it's duplicated or not.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_NEWThe sliding_nonce is too far in the future.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_ALREADY_RECORDEDThe sliding_nonce has been previously recorded.
Errors::REQUIRES_ADDRESSCoreAddresses::ETREASURY_COMPLIANCEThe sending account is not the Treasury Compliance account.
Errors::REQUIRES_ROLERoles::ETREASURY_COMPLIANCEThe sending account is not the Treasury Compliance account.
Errors::INVALID_ARGUMENTAccountFreezing::ECANNOT_FREEZE_TCto_freeze_account was the Treasury Compliance account (0xB1E55ED).
Errors::INVALID_ARGUMENTAccountFreezing::ECANNOT_FREEZE_LIBRA_ROOTto_freeze_account was the Libra Root account (0xA550C18).

Related Scripts

Fields of FreezeAccount

sliding_nonce: u64to_freeze_account: AccountAddress
PeerToPeerWithMetadata

Summary

Transfers a given number of coins in a specified currency from one account to another. Transfers over a specified amount defined on-chain that are between two different VASPs, or other accounts that have opted-in will be subject to on-chain checks to ensure the receiver has agreed to receive the coins. This transaction can be sent by any account that can hold a balance, and to any account that can hold a balance. Both accounts must hold balances in the currency being transacted.

Technical Description

Transfers amount coins of type Currency from payer to payee with (optional) associated metadata and an (optional) metadata_signature on the message metadata | Signer::address_of(payer) | amount | DualAttestation::DOMAIN_SEPARATOR. The metadata and metadata_signature parameters are only required if amount >= DualAttestation::get_cur_microlibra_limit LBR and payer and payee are distinct VASPs. However, a transaction sender can opt in to dual attestation even when it is not required (e.g., a DesignatedDealer -> VASP payment) by providing a non-empty metadata_signature. Standardized metadata LCS format can be found in libra_types::transaction::metadata::Metadata.

Events

Successful execution of this script emits two events:

Parameters

NameTypeDescription
CurrencyTypeThe Move type for the Currency being sent in this transaction. Currency must be an already-registered currency on-chain.
payer&signerThe signer reference of the sending account that coins are being transferred from.
payeeaddressThe address of the account the coins are being transferred to.
metadatavector<u8>Optional metadata about this payment.
metadata_signaturevector<u8>Optional signature over metadata and payment information. See

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDLibraAccount::EPAYER_DOESNT_HOLD_CURRENCYpayer doesn't hold a balance in Currency.
Errors::LIMIT_EXCEEDEDLibraAccount::EINSUFFICIENT_BALANCEamount is greater than payer's balance in Currency.
Errors::INVALID_ARGUMENTLibraAccount::ECOIN_DEPOSIT_IS_ZEROamount is zero.
Errors::NOT_PUBLISHEDLibraAccount::EPAYEE_DOES_NOT_EXISTNo account exists at the payee address.
Errors::INVALID_ARGUMENTLibraAccount::EPAYEE_CANT_ACCEPT_CURRENCY_TYPEAn account exists at payee, but it does not accept payments in Currency.
Errors::INVALID_STATEAccountFreezing::EACCOUNT_FROZENThe payee account is frozen.
Errors::INVALID_ARGUMENTDualAttestation::EMALFORMED_METADATA_SIGNATUREmetadata_signature is not 64 bytes.
Errors::INVALID_ARGUMENTDualAttestation::EINVALID_METADATA_SIGNATUREmetadata_signature does not verify on the against the payee's DualAttestation::Credential compliance_public_key public key.
Errors::LIMIT_EXCEEDEDLibraAccount::EWITHDRAWAL_EXCEEDS_LIMITSpayer has exceeded its daily withdrawal limits for the backing coins of LBR.
Errors::LIMIT_EXCEEDEDLibraAccount::EDEPOSIT_EXCEEDS_LIMITSpayee has exceeded its daily deposit limits for LBR.

Related Scripts

Fields of PeerToPeerWithMetadata

currency: TypeTagpayee: AccountAddressamount: u64metadata: Vec<u8>metadata_signature: Vec<u8>
Preburn

Summary

Moves a specified number of coins in a given currency from the account's balance to its preburn area after which the coins may be burned. This transaction may be sent by any account that holds a balance and preburn area in the specified currency.

Technical Description

Moves the specified amount of coins in Token currency from the sending account's LibraAccount::Balance<Token> to the Libra::Preburn<Token> published under the same account. account must have both of these resources published under it at the start of this transaction in order for it to execute successfully.

Events

Successful execution of this script emits two events:

Parameters

NameTypeDescription
TokenTypeThe Move type for the Token currency being moved to the preburn area. Token must be an already-registered currency on-chain.
account&signerThe signer reference of the sending account.
amountu64The amount in Token to be moved to the preburn area.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDLibra::ECURRENCY_INFOThe Token is not a registered currency on-chain.
Errors::INVALID_STATELibraAccount::EWITHDRAWAL_CAPABILITY_ALREADY_EXTRACTEDThe withdrawal capability for account has already been extracted.
Errors::LIMIT_EXCEEDEDLibraAccount::EINSUFFICIENT_BALANCEamount is greater than payer's balance in Token.
Errors::NOT_PUBLISHEDLibraAccount::EPAYER_DOESNT_HOLD_CURRENCYaccount doesn't hold a balance in Token.
Errors::NOT_PUBLISHEDLibra::EPREBURNaccount doesn't have a Libra::Preburn<Token> resource published under it.
Errors::INVALID_STATELibra::EPREBURN_OCCUPIEDThe value field in the Libra::Preburn<Token> resource under the sender is non-zero.
Errors::NOT_PUBLISHEDRoles::EROLE_IDThe account did not have a role assigned to it.
Errors::REQUIRES_ROLERoles::EDESIGNATED_DEALERThe account did not have the role of DesignatedDealer.

Related Scripts

Fields of Preburn

token: TypeTagamount: u64
PublishSharedEd25519PublicKey

Summary

Rotates the authentication key of the sending account to the newly-specified public key and publishes a new shared authentication key under the sender's account. Any account can send this transaction.

Technical Description

Rotates the authentication key of the sending account to public_key, and publishes a SharedEd25519PublicKey::SharedEd25519PublicKey resource containing the 32-byte ed25519 public_key and the LibraAccount::KeyRotationCapability for account under account.

Parameters

NameTypeDescription
account&signerThe signer reference of the sending account of the transaction.
public_keyvector<u8>32-byte Ed25519 public key for account' authentication key to be rotated to and stored.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::INVALID_STATELibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTEDaccount has already delegated/extracted its LibraAccount::KeyRotationCapability resource.
Errors::ALREADY_PUBLISHEDSharedEd25519PublicKey::ESHARED_KEYThe SharedEd25519PublicKey::SharedEd25519PublicKey resource is already published under account.
Errors::INVALID_ARGUMENTSharedEd25519PublicKey::EMALFORMED_PUBLIC_KEYpublic_key is an invalid ed25519 public key.

Related Scripts

Fields of PublishSharedEd25519PublicKey

public_key: Vec<u8>
RegisterValidatorConfig

Summary

Updates a validator's configuration. This does not reconfigure the system and will not update the configuration in the validator set that is seen by other validators in the network. Can only be successfully sent by a Validator Operator account that is already registered with a validator.

Technical Description

This updates the fields with corresponding names held in the ValidatorConfig::ValidatorConfig config resource held under validator_account. It does not emit a LibraConfig::NewEpochEvent so the copy of this config held in the validator set will not be updated, and the changes are only "locally" under the validator_account account address.

Parameters

NameTypeDescription
validator_operator_account&signerSigner reference of the sending account. Must be the registered validator operator for the validator at validator_address.
validator_accountaddressThe address of the validator's ValidatorConfig::ValidatorConfig resource being updated.
consensus_pubkeyvector<u8>New Ed25519 public key to be used in the updated ValidatorConfig::ValidatorConfig.
validator_network_addressesvector<u8>New set of validator_network_addresses to be used in the updated ValidatorConfig::ValidatorConfig.
fullnode_network_addressesvector<u8>New set of fullnode_network_addresses to be used in the updated ValidatorConfig::ValidatorConfig.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDValidatorConfig::EVALIDATOR_CONFIGvalidator_address does not have a ValidatorConfig::ValidatorConfig resource published under it.
Errors::INVALID_ARGUMENTValidatorConfig::EINVALID_TRANSACTION_SENDERvalidator_operator_account is not the registered operator for the validator at validator_address.
Errors::INVALID_ARGUMENTValidatorConfig::EINVALID_CONSENSUS_KEYconsensus_pubkey is not a valid ed25519 public key.

Related Scripts

Fields of RegisterValidatorConfig

validator_account: AccountAddressconsensus_pubkey: Vec<u8>validator_network_addresses: Vec<u8>fullnode_network_addresses: Vec<u8>
RemoveValidatorAndReconfigure

Summary

This script removes a validator account from the validator set, and triggers a reconfiguration of the system to remove the validator from the system. This transaction can only be successfully called by the Libra Root account.

Technical Description

This script removes the account at validator_address from the validator set. This transaction emits a LibraConfig::NewEpochEvent event. Once the reconfiguration triggered by this event has been performed, the account at validator_address is no longer considered to be a validator in the network. This transaction will fail if the validator at validator_address is not in the validator set.

Parameters

NameTypeDescription
lr_account&signerThe signer reference of the sending account of this transaction. Must be the Libra Root signer.
sliding_nonceu64The sliding_nonce (see: SlidingNonce) to be used for this transaction.
validator_namevector<u8>ASCII-encoded human name for the validator. Must match the human name in the ValidatorConfig::ValidatorConfig for the validator.
validator_addressaddressThe validator account address to be removed from the validator set.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDSlidingNonce::ESLIDING_NONCEA SlidingNonce resource is not published under lr_account.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_OLDThe sliding_nonce is too old and it's impossible to determine if it's duplicated or not.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_NEWThe sliding_nonce is too far in the future.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_ALREADY_RECORDEDThe sliding_nonce has been previously recorded.
Errors::NOT_PUBLISHEDSlidingNonce::ESLIDING_NONCEThe sending account is not the Libra Root account or Treasury Compliance account
00The provided validator_name does not match the already-recorded human name for the validator.
Errors::INVALID_ARGUMENTLibraSystem::ENOT_AN_ACTIVE_VALIDATORThe validator to be removed is not in the validator set.
Errors::REQUIRES_ADDRESSCoreAddresses::ELIBRA_ROOTThe sending account is not the Libra Root account.
Errors::REQUIRES_ROLERoles::ELIBRA_ROOTThe sending account is not the Libra Root account.
Errors::INVALID_STATELibraConfig::EINVALID_BLOCK_TIMEAn invalid time value was encountered in reconfiguration. Unlikely to occur.

Related Scripts

Fields of RemoveValidatorAndReconfigure

sliding_nonce: u64validator_name: Vec<u8>validator_address: AccountAddress
RotateAuthenticationKey

Summary

Rotates the transaction sender's authentication key to the supplied new authentication key. May be sent by any account.

Technical Description

Rotate the account's LibraAccount::LibraAccount authentication_key field to new_key. new_key must be a valid ed25519 public key, and account must not have previously delegated its LibraAccount::KeyRotationCapability.

Parameters

NameTypeDescription
account&signerSigner reference of the sending account of the transaction.
new_keyvector<u8>New ed25519 public key to be used for account.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::INVALID_STATELibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTEDaccount has already delegated/extracted its LibraAccount::KeyRotationCapability.
Errors::INVALID_ARGUMENTLibraAccount::EMALFORMED_AUTHENTICATION_KEYnew_key was an invalid length.

Related Scripts

Fields of RotateAuthenticationKey

new_key: Vec<u8>
RotateAuthenticationKeyWithNonce

Summary

Rotates the sender's authentication key to the supplied new authentication key. May be sent by any account that has a sliding nonce resource published under it (usually this is Treasury Compliance or Libra Root accounts).

Technical Description

Rotates the account's LibraAccount::LibraAccount authentication_key field to new_key. new_key must be a valid ed25519 public key, and account must not have previously delegated its LibraAccount::KeyRotationCapability.

Parameters

NameTypeDescription
account&signerSigner reference of the sending account of the transaction.
sliding_nonceu64The sliding_nonce (see: SlidingNonce) to be used for this transaction.
new_keyvector<u8>New ed25519 public key to be used for account.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDSlidingNonce::ESLIDING_NONCEA SlidingNonce resource is not published under account.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_OLDThe sliding_nonce is too old and it's impossible to determine if it's duplicated or not.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_NEWThe sliding_nonce is too far in the future.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_ALREADY_RECORDEDThe sliding_nonce has been previously recorded.
Errors::INVALID_STATELibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTEDaccount has already delegated/extracted its LibraAccount::KeyRotationCapability.
Errors::INVALID_ARGUMENTLibraAccount::EMALFORMED_AUTHENTICATION_KEYnew_key was an invalid length.

Related Scripts

Fields of RotateAuthenticationKeyWithNonce

sliding_nonce: u64new_key: Vec<u8>
RotateAuthenticationKeyWithNonceAdmin

Summary

Rotates the specified account's authentication key to the supplied new authentication key. May only be sent by the Libra Root account as a write set transaction.

Technical Description

Rotate the account's LibraAccount::LibraAccount authentication_key field to new_key. new_key must be a valid ed25519 public key, and account must not have previously delegated its LibraAccount::KeyRotationCapability.

Parameters

NameTypeDescription
lr_account&signerThe signer reference of the sending account of the write set transaction. May only be the Libra Root signer.
account&signerSigner reference of account specified in the execute_as field of the write set transaction.
sliding_nonceu64The sliding_nonce (see: SlidingNonce) to be used for this transaction for Libra Root.
new_keyvector<u8>New ed25519 public key to be used for account.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDSlidingNonce::ESLIDING_NONCEA SlidingNonce resource is not published under lr_account.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_OLDThe sliding_nonce in lr_account is too old and it's impossible to determine if it's duplicated or not.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_NEWThe sliding_nonce in lr_account is too far in the future.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_ALREADY_RECORDEDThe sliding_nonce in lr_account has been previously recorded.
Errors::INVALID_STATELibraAccount::EKEY_ROTATION_CAPABILITY_ALREADY_EXTRACTEDaccount has already delegated/extracted its LibraAccount::KeyRotationCapability.
Errors::INVALID_ARGUMENTLibraAccount::EMALFORMED_AUTHENTICATION_KEYnew_key was an invalid length.

Related Scripts

Fields of RotateAuthenticationKeyWithNonceAdmin

sliding_nonce: u64new_key: Vec<u8>
RotateAuthenticationKeyWithRecoveryAddress

Summary

Rotates the authentication key of a specified account that is part of a recovery address to a new authentication key. Only used for accounts that are part of a recovery address (see Script::add_recovery_rotation_capability for account restrictions).

Technical Description

Rotates the authentication key of the to_recover account to new_key using the LibraAccount::KeyRotationCapability stored in the RecoveryAddress::RecoveryAddress resource published under recovery_address. This transaction can be sent either by the to_recover account, or by the account where the RecoveryAddress::RecoveryAddress resource is published that contains to_recover's LibraAccount::KeyRotationCapability.

Parameters

NameTypeDescription
account&signerSigner reference of the sending account of the transaction.
recovery_addressaddressAddress where RecoveryAddress::RecoveryAddress that holds to_recover's LibraAccount::KeyRotationCapability is published.
to_recoveraddressThe address of the account whose authentication key will be updated.
new_keyvector<u8>New ed25519 public key to be used for the account at the to_recover address.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDRecoveryAddress::ERECOVERY_ADDRESSrecovery_address does not have a RecoveryAddress::RecoveryAddress resource published under it.
Errors::INVALID_ARGUMENTRecoveryAddress::ECANNOT_ROTATE_KEYThe address of account is not recovery_address or to_recover.
Errors::INVALID_ARGUMENTRecoveryAddress::EACCOUNT_NOT_RECOVERABLEto_recover's LibraAccount::KeyRotationCapability is not in the RecoveryAddress::RecoveryAddress resource published under recovery_address.
Errors::INVALID_ARGUMENTLibraAccount::EMALFORMED_AUTHENTICATION_KEYnew_key was an invalid length.

Related Scripts

Fields of RotateAuthenticationKeyWithRecoveryAddress

recovery_address: AccountAddressto_recover: AccountAddressnew_key: Vec<u8>
RotateDualAttestationInfo

Summary

Updates the url used for off-chain communication, and the public key used to verify dual attestation on-chain. Transaction can be sent by any account that has dual attestation information published under it. In practice the only such accounts are Designated Dealers and Parent VASPs.

Technical Description

Updates the base_url and compliance_public_key fields of the DualAttestation::Credential resource published under account. The new_key must be a valid ed25519 public key.

Events

Successful execution of this transaction emits two events:

Parameters

NameTypeDescription
account&signerSigner reference of the sending account of the transaction.
new_urlvector<u8>ASCII-encoded url to be used for off-chain communication with account.
new_keyvector<u8>New ed25519 public key to be used for on-chain dual attestation checking.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDDualAttestation::ECREDENTIALA DualAttestation::Credential resource is not published under account.
Errors::INVALID_ARGUMENTDualAttestation::EINVALID_PUBLIC_KEYnew_key is not a valid ed25519 public key.

Related Scripts

Fields of RotateDualAttestationInfo

new_url: Vec<u8>new_key: Vec<u8>
RotateSharedEd25519PublicKey

Summary

Rotates the authentication key in a SharedEd25519PublicKey. This transaction can be sent by any account that has previously published a shared ed25519 public key using Script::publish_shared_ed25519_public_key.

Technical Description

This first rotates the public key stored in account's SharedEd25519PublicKey::SharedEd25519PublicKey resource to public_key, after which it rotates the authentication key using the capability stored in account's SharedEd25519PublicKey::SharedEd25519PublicKey to a new value derived from public_key

Parameters

NameTypeDescription
account&signerThe signer reference of the sending account of the transaction.
public_keyvector<u8>32-byte Ed25519 public key.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDSharedEd25519PublicKey::ESHARED_KEYA SharedEd25519PublicKey::SharedEd25519PublicKey resource is not published under account.
Errors::INVALID_ARGUMENTSharedEd25519PublicKey::EMALFORMED_PUBLIC_KEYpublic_key is an invalid ed25519 public key.

Related Scripts

Fields of RotateSharedEd25519PublicKey

public_key: Vec<u8>
SetValidatorConfigAndReconfigure

Summary

Updates a validator's configuration, and triggers a reconfiguration of the system to update the validator set with this new validator configuration. Can only be successfully sent by a Validator Operator account that is already registered with a validator.

Technical Description

This updates the fields with corresponding names held in the ValidatorConfig::ValidatorConfig config resource held under validator_account. It then emits a LibraConfig::NewEpochEvent to trigger a reconfiguration of the system. This reconfiguration will update the validator set on-chain with the updated ValidatorConfig::ValidatorConfig.

Parameters

NameTypeDescription
validator_operator_account&signerSigner reference of the sending account. Must be the registered validator operator for the validator at validator_address.
validator_accountaddressThe address of the validator's ValidatorConfig::ValidatorConfig resource being updated.
consensus_pubkeyvector<u8>New Ed25519 public key to be used in the updated ValidatorConfig::ValidatorConfig.
validator_network_addressesvector<u8>New set of validator_network_addresses to be used in the updated ValidatorConfig::ValidatorConfig.
fullnode_network_addressesvector<u8>New set of fullnode_network_addresses to be used in the updated ValidatorConfig::ValidatorConfig.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDValidatorConfig::EVALIDATOR_CONFIGvalidator_address does not have a ValidatorConfig::ValidatorConfig resource published under it.
Errors::REQUIRES_ROLERoles::EVALIDATOR_OPERATORvalidator_operator_account does not have a Validator Operator role.
Errors::INVALID_ARGUMENTValidatorConfig::EINVALID_TRANSACTION_SENDERvalidator_operator_account is not the registered operator for the validator at validator_address.
Errors::INVALID_ARGUMENTValidatorConfig::EINVALID_CONSENSUS_KEYconsensus_pubkey is not a valid ed25519 public key.
Errors::INVALID_STATELibraConfig::EINVALID_BLOCK_TIMEAn invalid time value was encountered in reconfiguration. Unlikely to occur.

Related Scripts

Fields of SetValidatorConfigAndReconfigure

validator_account: AccountAddressconsensus_pubkey: Vec<u8>validator_network_addresses: Vec<u8>fullnode_network_addresses: Vec<u8>
SetValidatorOperator

Summary

Sets the validator operator for a validator in the validator's configuration resource "locally" and does not reconfigure the system. Changes from this transaction will not picked up by the system until a reconfiguration of the system is triggered. May only be sent by an account with Validator role.

Technical Description

Sets the account at operator_account address and with the specified human_name as an operator for the sending validator account. The account at operator_account address must have a Validator Operator role and have a ValidatorOperatorConfig::ValidatorOperatorConfig resource published under it. The sending account must be a Validator and have a ValidatorConfig::ValidatorConfig resource published under it. This script does not emit a LibraConfig::NewEpochEvent and no reconfiguration of the system is initiated by this script.

Parameters

NameTypeDescription
account&signerThe signer reference of the sending account of the transaction.
operator_namevector<u8>Validator operator's human name.
operator_accountaddressAddress of the validator operator account to be added as the account validator's operator.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDValidatorOperatorConfig::EVALIDATOR_OPERATOR_CONFIGThe ValidatorOperatorConfig::ValidatorOperatorConfig resource is not published under operator_account.
00The human_name field of the ValidatorOperatorConfig::ValidatorOperatorConfig resource under operator_account does not match the provided human_name.
Errors::REQUIRES_ROLERoles::EVALIDATORaccount does not have a Validator account role.
Errors::INVALID_ARGUMENTValidatorConfig::ENOT_A_VALIDATOR_OPERATORThe account at operator_account does not have a ValidatorOperatorConfig::ValidatorOperatorConfig resource.
Errors::NOT_PUBLISHEDValidatorConfig::EVALIDATOR_CONFIGA ValidatorConfig::ValidatorConfig is not published under account.

Related Scripts

Fields of SetValidatorOperator

operator_name: Vec<u8>operator_account: AccountAddress
SetValidatorOperatorWithNonceAdmin

Summary

Sets the validator operator for a validator in the validator's configuration resource "locally" and does not reconfigure the system. Changes from this transaction will not picked up by the system until a reconfiguration of the system is triggered. May only be sent by the Libra Root account as a write set transaction.

Technical Description

Sets the account at operator_account address and with the specified human_name as an operator for the validator account. The account at operator_account address must have a Validator Operator role and have a ValidatorOperatorConfig::ValidatorOperatorConfig resource published under it. The account represented by the account signer must be a Validator and have a ValidatorConfig::ValidatorConfig resource published under it. No reconfiguration of the system is initiated by this script.

Parameters

NameTypeDescription
lr_account&signerThe signer reference of the sending account of the write set transaction. May only be the Libra Root signer.
account&signerSigner reference of account specified in the execute_as field of the write set transaction.
sliding_nonceu64The sliding_nonce (see: SlidingNonce) to be used for this transaction for Libra Root.
operator_namevector<u8>Validator operator's human name.
operator_accountaddressAddress of the validator operator account to be added as the account validator's operator.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDSlidingNonce::ESLIDING_NONCEA SlidingNonce resource is not published under lr_account.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_OLDThe sliding_nonce in lr_account is too old and it's impossible to determine if it's duplicated or not.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_NEWThe sliding_nonce in lr_account is too far in the future.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_ALREADY_RECORDEDThe sliding_nonce in lr_account has been previously recorded.
Errors::NOT_PUBLISHEDSlidingNonce::ESLIDING_NONCEThe sending account is not the Libra Root account or Treasury Compliance account
Errors::NOT_PUBLISHEDValidatorOperatorConfig::EVALIDATOR_OPERATOR_CONFIGThe ValidatorOperatorConfig::ValidatorOperatorConfig resource is not published under operator_account.
00The human_name field of the ValidatorOperatorConfig::ValidatorOperatorConfig resource under operator_account does not match the provided human_name.
Errors::REQUIRES_ROLERoles::EVALIDATORaccount does not have a Validator account role.
Errors::INVALID_ARGUMENTValidatorConfig::ENOT_A_VALIDATOR_OPERATORThe account at operator_account does not have a ValidatorOperatorConfig::ValidatorOperatorConfig resource.
Errors::NOT_PUBLISHEDValidatorConfig::EVALIDATOR_CONFIGA ValidatorConfig::ValidatorConfig is not published under account.

Related Scripts

Fields of SetValidatorOperatorWithNonceAdmin

sliding_nonce: u64operator_name: Vec<u8>operator_account: AccountAddress
TieredMint

Summary

Mints a specified number of coins in a currency to a Designated Dealer. The sending account must be the Treasury Compliance account, and coins can only be minted to a Designated Dealer account.

Technical Description

Mints mint_amount of coins in the CoinType currency to Designated Dealer account at designated_dealer_address. The tier_index parameter specifies which tier should be used to check verify the off-chain approval policy, and is based in part on the on-chain tier values for the specific Designated Dealer, and the number of CoinType coins that have been minted to the dealer over the past 24 hours. Every Designated Dealer has 4 tiers for each currency that they support. The sending tc_account must be the Treasury Compliance account, and the receiver an authorized Designated Dealer account.

Events

Successful execution of the transaction will emit two events:

Parameters

NameTypeDescription
CoinTypeTypeThe Move type for the CoinType being minted. CoinType must be an already-registered currency on-chain.
tc_account&signerThe signer reference of the sending account of this transaction. Must be the Treasury Compliance account.
sliding_nonceu64The sliding_nonce (see: SlidingNonce) to be used for this transaction.
designated_dealer_addressaddressThe address of the Designated Dealer account being minted to.
mint_amountu64The number of coins to be minted.
tier_indexu64The mint tier index to use for the Designated Dealer account.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDSlidingNonce::ESLIDING_NONCEA SlidingNonce resource is not published under tc_account.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_OLDThe sliding_nonce is too old and it's impossible to determine if it's duplicated or not.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_NEWThe sliding_nonce is too far in the future.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_ALREADY_RECORDEDThe sliding_nonce has been previously recorded.
Errors::REQUIRES_ADDRESSCoreAddresses::ETREASURY_COMPLIANCEtc_account is not the Treasury Compliance account.
Errors::REQUIRES_ROLERoles::ETREASURY_COMPLIANCEtc_account is not the Treasury Compliance account.
Errors::INVALID_ARGUMENTDesignatedDealer::EINVALID_MINT_AMOUNTmint_amount is zero.
Errors::NOT_PUBLISHEDDesignatedDealer::EDEALERDesignatedDealer::Dealer or DesignatedDealer::TierInfo<CoinType> resource does not exist at designated_dealer_address.
Errors::INVALID_ARGUMENTDesignatedDealer::EINVALID_TIER_INDEXThe tier_index is out of bounds.
Errors::INVALID_ARGUMENTDesignatedDealer::EINVALID_AMOUNT_FOR_TIERmint_amount exceeds the maximum allowed amount for tier_index.
Errors::REQUIRES_CAPABILITYLibra::EMINT_CAPABILITYtc_account does not have a Libra::MintCapability<CoinType> resource published under it.
Errors::INVALID_STATELibra::EMINTING_NOT_ALLOWEDMinting is not currently allowed for CoinType coins.
Errors::LIMIT_EXCEEDEDLibraAccount::EDEPOSIT_EXCEEDS_LIMITSThe depositing of the funds would exceed the account's account limits.

Related Scripts

Fields of TieredMint

coin_type: TypeTagsliding_nonce: u64designated_dealer_address: AccountAddressmint_amount: u64tier_index: u64
UnfreezeAccount

Summary

Unfreezes the account at address. The sending account of this transaction must be the Treasury Compliance account. After the successful execution of this transaction transactions may be sent from the previously frozen account, and coins may be sent and received.

Technical Description

Sets the AccountFreezing::FreezingBit to false and emits a AccountFreezing::UnFreezeAccountEvent. The transaction sender must be the Treasury Compliance account. Note that this is a per-account property so unfreezing a Parent VASP will not effect the status any of its child accounts and vice versa.

Events

Successful execution of this script will emit a AccountFreezing::UnFreezeAccountEvent with the unfrozen_address set the to_unfreeze_account's address.

Parameters

NameTypeDescription
tc_account&signerThe signer reference of the sending account of this transaction. Must be the Treasury Compliance account.
sliding_nonceu64The sliding_nonce (see: SlidingNonce) to be used for this transaction.
to_unfreeze_accountaddressThe account address to be frozen.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDSlidingNonce::ESLIDING_NONCEA SlidingNonce resource is not published under account.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_OLDThe sliding_nonce is too old and it's impossible to determine if it's duplicated or not.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_NEWThe sliding_nonce is too far in the future.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_ALREADY_RECORDEDThe sliding_nonce has been previously recorded.
Errors::REQUIRES_ADDRESSCoreAddresses::ETREASURY_COMPLIANCEThe sending account is not the Treasury Compliance account.

Related Scripts

Fields of UnfreezeAccount

sliding_nonce: u64to_unfreeze_account: AccountAddress
UpdateDualAttestationLimit

Summary

Update the dual attestation limit on-chain. Defined in terms of micro-LBR. The transaction can only be sent by the Treasury Compliance account. After this transaction all inter-VASP payments over this limit must be checked for dual attestation.

Technical Description

Updates the micro_lbr_limit field of the DualAttestation::Limit resource published under 0xA550C18. The amount is set in micro-LBR.

Parameters

NameTypeDescription
tc_account&signerThe signer reference of the sending account of this transaction. Must be the Treasury Compliance account.
sliding_nonceu64The sliding_nonce (see: SlidingNonce) to be used for this transaction.
new_micro_lbr_limitu64The new dual attestation limit to be used on-chain.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDSlidingNonce::ESLIDING_NONCEA SlidingNonce resource is not published under tc_account.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_OLDThe sliding_nonce is too old and it's impossible to determine if it's duplicated or not.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_NEWThe sliding_nonce is too far in the future.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_ALREADY_RECORDEDThe sliding_nonce has been previously recorded.
Errors::REQUIRES_ADDRESSCoreAddresses::ETREASURY_COMPLIANCEtc_account is not the Treasury Compliance account.

Related Scripts

Fields of UpdateDualAttestationLimit

sliding_nonce: u64new_micro_lbr_limit: u64
UpdateExchangeRate

Summary

Update the rough on-chain exchange rate between a specified currency and LBR (as a conversion to micro-LBR). The transaction can only be sent by the Treasury Compliance account. After this transaction the updated exchange rate will be used for normalization of gas prices, and for dual attestation checking.

Technical Description

Updates the on-chain exchange rate from the given Currency to micro-LBR. The exchange rate is given by new_exchange_rate_numerator/new_exchange_rate_denominator.

Parameters

NameTypeDescription
CurrencyTypeThe Move type for the Currency whose exchange rate is being updated. Currency must be an already-registered currency on-chain.
tc_account&signerThe signer reference of the sending account of this transaction. Must be the Treasury Compliance account.
sliding_nonceu64The sliding_nonce (see: SlidingNonce) to be used for the transaction.
new_exchange_rate_numeratoru64The numerator for the new to micro-LBR exchange rate for Currency.
new_exchange_rate_denominatoru64The denominator for the new to micro-LBR exchange rate for Currency.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDSlidingNonce::ESLIDING_NONCEA SlidingNonce resource is not published under tc_account.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_OLDThe sliding_nonce is too old and it's impossible to determine if it's duplicated or not.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_NEWThe sliding_nonce is too far in the future.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_ALREADY_RECORDEDThe sliding_nonce has been previously recorded.
Errors::REQUIRES_ADDRESSCoreAddresses::ETREASURY_COMPLIANCEtc_account is not the Treasury Compliance account.
Errors::REQUIRES_ROLERoles::ETREASURY_COMPLIANCEtc_account is not the Treasury Compliance account.
Errors::INVALID_ARGUMENTFixedPoint32::EDENOMINATORnew_exchange_rate_denominator is zero.
Errors::INVALID_ARGUMENTFixedPoint32::ERATIO_OUT_OF_RANGEThe quotient is unrepresentable as a FixedPoint32.
Errors::LIMIT_EXCEEDEDFixedPoint32::ERATIO_OUT_OF_RANGEThe quotient is unrepresentable as a FixedPoint32.

Related Scripts

Fields of UpdateExchangeRate

currency: TypeTagsliding_nonce: u64new_exchange_rate_numerator: u64new_exchange_rate_denominator: u64
UpdateLibraVersion

Summary

Updates the Libra major version that is stored on-chain and is used by the VM. This transaction can only be sent from the Libra Root account.

Technical Description

Updates the LibraVersion on-chain config and emits a LibraConfig::NewEpochEvent to trigger a reconfiguration of the system. The major version that is passed in must be strictly greater than the current major version held on-chain. The VM reads this information and can use it to preserve backwards compatibility with previous major versions of the VM.

Parameters

NameTypeDescription
account&signerSigner reference of the sending account. Must be the Libra Root account.
sliding_nonceu64The sliding_nonce (see: SlidingNonce) to be used for this transaction.
majoru64The major version of the VM to be used from this transaction on.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::NOT_PUBLISHEDSlidingNonce::ESLIDING_NONCEA SlidingNonce resource is not published under account.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_OLDThe sliding_nonce is too old and it's impossible to determine if it's duplicated or not.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_TOO_NEWThe sliding_nonce is too far in the future.
Errors::INVALID_ARGUMENTSlidingNonce::ENONCE_ALREADY_RECORDEDThe sliding_nonce has been previously recorded.
Errors::REQUIRES_ADDRESSCoreAddresses::ELIBRA_ROOTaccount is not the Libra Root account.
Errors::INVALID_ARGUMENTLibraVersion::EINVALID_MAJOR_VERSION_NUMBERmajor is less-than or equal to the current major version stored on-chain.

Fields of UpdateLibraVersion

sliding_nonce: u64major: u64
UpdateMintingAbility

Summary

Script to allow or disallow minting of new coins in a specified currency. This transaction can only be sent by the Treasury Compliance account. Turning minting off for a currency will have no effect on coins already in circulation, and coins may still be removed from the system.

Technical Description

This transaction sets the can_mint field of the Libra::CurrencyInfo<Currency> resource published under 0xA550C18 to the value of allow_minting. Minting of coins if allowed if this field is set to true and minting of new coins in Currency is disallowed otherwise. This transaction needs to be sent by the Treasury Compliance account.

Parameters

NameTypeDescription
CurrencyTypeThe Move type for the Currency whose minting ability is being updated. Currency must be an already-registered currency on-chain.
account&signerSigner reference of the sending account. Must be the Libra Root account.
allow_mintingboolWhether to allow minting of new coins in Currency.

Common Abort Conditions

Error CategoryError ReasonDescription
Errors::REQUIRES_ADDRESSCoreAddresses::ETREASURY_COMPLIANCEtc_account is not the Treasury Compliance account.
Errors::NOT_PUBLISHEDLibra::ECURRENCY_INFOCurrency is not a registered currency on-chain.

Related Scripts

Fields of UpdateMintingAbility

currency: TypeTagallow_minting: bool

Implementations

impl ScriptCall[src]

pub fn encode(self) -> Script[src]

Build a Libra Script from a structured object ScriptCall.

pub fn decode(script: &Script) -> Option<ScriptCall>[src]

Try to recognize a Libra Script and convert it into a structured object ScriptCall.

Trait Implementations

impl Arbitrary for ScriptCall[src]

type Parameters = ()

The type of parameters that arbitrary_with accepts for configuration of the generated Strategy. Parameters must implement Default. Read more

type Strategy = TupleUnion<((u32, Arc<Map<(<TypeTag as Arbitrary>::Strategy,), fn((TypeTag,)) -> ScriptCall>>), (u32, Arc<Map<(<AccountAddress as Arbitrary>::Strategy,), fn((AccountAddress,)) -> ScriptCall>>), (u32, Arc<Map<(<Vec<u8> as Arbitrary>::Strategy, <u64 as Arbitrary>::Strategy), fn((Vec<u8>, u64)) -> ScriptCall>>), (u32, Arc<Map<(<u64 as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy, <AccountAddress as Arbitrary>::Strategy), fn((u64, Vec<u8>, AccountAddress)) -> ScriptCall>>), (u32, Arc<Map<(<TypeTag as Arbitrary>::Strategy, <u64 as Arbitrary>::Strategy, <AccountAddress as Arbitrary>::Strategy), fn((TypeTag, u64, AccountAddress)) -> ScriptCall>>), (u32, Arc<Map<(<TypeTag as Arbitrary>::Strategy,), fn((TypeTag,)) -> ScriptCall>>), (u32, Arc<Map<(<TypeTag as Arbitrary>::Strategy, <AccountAddress as Arbitrary>::Strategy), fn((TypeTag, AccountAddress)) -> ScriptCall>>), (u32, Arc<Map<(<TypeTag as Arbitrary>::Strategy, <AccountAddress as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy, <bool as Arbitrary>::Strategy, <u64 as Arbitrary>::Strategy), fn((TypeTag, AccountAddress, Vec<u8>, bool, u64)) -> ScriptCall>>), (u32, Arc<Map<(<TypeTag as Arbitrary>::Strategy, <u64 as Arbitrary>::Strategy, <AccountAddress as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy, <bool as Arbitrary>::Strategy), fn((TypeTag, u64, AccountAddress, Vec<u8>, Vec<u8>, bool)) -> ScriptCall>>), (u32, Arc<TupleUnion<((u32, Arc<Map<(<TypeTag as Arbitrary>::Strategy, <u64 as Arbitrary>::Strategy, <AccountAddress as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy, <bool as Arbitrary>::Strategy), fn((TypeTag, u64, AccountAddress, Vec<u8>, Vec<u8>, bool)) -> ScriptCall>>), (u32, Arc<fn() -> ScriptCall>), (u32, Arc<Map<(<u64 as Arbitrary>::Strategy, <AccountAddress as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy), fn((u64, AccountAddress, Vec<u8>, Vec<u8>)) -> ScriptCall>>), (u32, Arc<Map<(<u64 as Arbitrary>::Strategy, <AccountAddress as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy), fn((u64, AccountAddress, Vec<u8>, Vec<u8>)) -> ScriptCall>>), (u32, Arc<Map<(<u64 as Arbitrary>::Strategy, <AccountAddress as Arbitrary>::Strategy), fn((u64, AccountAddress)) -> ScriptCall>>), (u32, Arc<Map<(<TypeTag as Arbitrary>::Strategy, <AccountAddress as Arbitrary>::Strategy, <u64 as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy), fn((TypeTag, AccountAddress, u64, Vec<u8>, Vec<u8>)) -> ScriptCall>>), (u32, Arc<Map<(<TypeTag as Arbitrary>::Strategy, <u64 as Arbitrary>::Strategy), fn((TypeTag, u64)) -> ScriptCall>>), (u32, Arc<Map<(<Vec<u8> as Arbitrary>::Strategy,), fn((Vec<u8>,)) -> ScriptCall>>), (u32, Arc<Map<(<AccountAddress as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy), fn((AccountAddress, Vec<u8>, Vec<u8>, Vec<u8>)) -> ScriptCall>>), (u32, Arc<TupleUnion<((u32, Arc<Map<(<u64 as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy, <AccountAddress as Arbitrary>::Strategy), fn((u64, Vec<u8>, AccountAddress)) -> ScriptCall>>), (u32, Arc<Map<(<Vec<u8> as Arbitrary>::Strategy,), fn((Vec<u8>,)) -> ScriptCall>>), (u32, Arc<Map<(<u64 as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy), fn((u64, Vec<u8>)) -> ScriptCall>>), (u32, Arc<Map<(<u64 as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy), fn((u64, Vec<u8>)) -> ScriptCall>>), (u32, Arc<Map<(<AccountAddress as Arbitrary>::Strategy, <AccountAddress as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy), fn((AccountAddress, AccountAddress, Vec<u8>)) -> ScriptCall>>), (u32, Arc<Map<(<Vec<u8> as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy), fn((Vec<u8>, Vec<u8>)) -> ScriptCall>>), (u32, Arc<Map<(<Vec<u8> as Arbitrary>::Strategy,), fn((Vec<u8>,)) -> ScriptCall>>), (u32, Arc<Map<(<AccountAddress as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy), fn((AccountAddress, Vec<u8>, Vec<u8>, Vec<u8>)) -> ScriptCall>>), (u32, Arc<Map<(<Vec<u8> as Arbitrary>::Strategy, <AccountAddress as Arbitrary>::Strategy), fn((Vec<u8>, AccountAddress)) -> ScriptCall>>), (u32, Arc<TupleUnion<((u32, Arc<Map<(<u64 as Arbitrary>::Strategy, <Vec<u8> as Arbitrary>::Strategy, <AccountAddress as Arbitrary>::Strategy), fn((u64, Vec<u8>, AccountAddress)) -> ScriptCall>>), (u32, Arc<Map<(<TypeTag as Arbitrary>::Strategy, <u64 as Arbitrary>::Strategy, <AccountAddress as Arbitrary>::Strategy, <u64 as Arbitrary>::Strategy, <u64 as Arbitrary>::Strategy), fn((TypeTag, u64, AccountAddress, u64, u64)) -> ScriptCall>>), (u32, Arc<Map<(<u64 as Arbitrary>::Strategy, <AccountAddress as Arbitrary>::Strategy), fn((u64, AccountAddress)) -> ScriptCall>>), (u32, Arc<Map<(<u64 as Arbitrary>::Strategy, <u64 as Arbitrary>::Strategy), fn((u64, u64)) -> ScriptCall>>), (u32, Arc<Map<(<TypeTag as Arbitrary>::Strategy, <u64 as Arbitrary>::Strategy, <u64 as Arbitrary>::Strategy, <u64 as Arbitrary>::Strategy), fn((TypeTag, u64, u64, u64)) -> ScriptCall>>), (u32, Arc<Map<(<u64 as Arbitrary>::Strategy, <u64 as Arbitrary>::Strategy), fn((u64, u64)) -> ScriptCall>>), (u32, Arc<Map<(<TypeTag as Arbitrary>::Strategy, <bool as Arbitrary>::Strategy), fn((TypeTag, bool)) -> ScriptCall>>))>>))>>))>>))>

The type of Strategy used to generate values of type Self. Read more

impl Clone for ScriptCall[src]

impl Debug for ScriptCall[src]

impl PartialEq<ScriptCall> for ScriptCall[src]

impl PartialOrd<ScriptCall> for ScriptCall[src]

impl StructuralPartialEq for ScriptCall[src]

Auto Trait Implementations

impl RefUnwindSafe for ScriptCall

impl Send for ScriptCall

impl Sync for ScriptCall

impl Unpin for ScriptCall

impl UnwindSafe for ScriptCall

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Pointable for T

type Init = T

The type for initializers.

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,