Function diem_transaction_builder::stdlib::encode_preburn_script
source · pub fn encode_preburn_script(token: TypeTag, amount: u64) -> ScriptExpand description
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
DiemAccount::Balance<Token> to the Diem::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:
DiemAccount::SentPaymentEventonaccount’sDiemAccount::DiemAccountsent_eventshandle with thepayeeandpayerfields beingaccount’s address; and- A
Diem::PreburnEventwithToken’s currency code on theDiem::CurrencyInfo<Token’spreburn_eventshandle forTokenand withpreburn_addressset toaccount’s address.
Parameters
| Name | Type | Description |
|---|---|---|
Token | Type | The Move type for the Token currency being moved to the preburn area. Token must be an already-registered currency on-chain. |
account | &signer | The signer reference of the sending account. |
amount | u64 | The amount in Token to be moved to the preburn area. |
Common Abort Conditions
| Error Category | Error Reason | Description |
|---|---|---|
Errors::NOT_PUBLISHED | Diem::ECURRENCY_INFO | The Token is not a registered currency on-chain. |
Errors::INVALID_STATE | DiemAccount::EWITHDRAWAL_CAPABILITY_ALREADY_EXTRACTED | The withdrawal capability for account has already been extracted. |
Errors::LIMIT_EXCEEDED | DiemAccount::EINSUFFICIENT_BALANCE | amount is greater than payer’s balance in Token. |
Errors::NOT_PUBLISHED | DiemAccount::EPAYER_DOESNT_HOLD_CURRENCY | account doesn’t hold a balance in Token. |
Errors::NOT_PUBLISHED | Diem::EPREBURN | account doesn’t have a Diem::Preburn<Token> resource published under it. |
Errors::INVALID_STATE | Diem::EPREBURN_OCCUPIED | The value field in the Diem::Preburn<Token> resource under the sender is non-zero. |
Errors::NOT_PUBLISHED | Roles::EROLE_ID | The account did not have a role assigned to it. |
Errors::REQUIRES_ROLE | Roles::EDESIGNATED_DEALER | The account did not have the role of DesignatedDealer. |
Related Scripts
Script::cancel_burnScript::burnScript::burn_txn_fees