Use amendment disclaimer & update tx ref intros

This commit is contained in:
mDuo13
2025-10-03 16:17:49 -07:00
parent 3a0abdefd8
commit 28de18d7d6
174 changed files with 404 additions and 478 deletions

View File

@@ -13,9 +13,9 @@ Every transaction has the same set of common fields, plus additional fields base
| `Account` | String - [Address][] | AccountID | Yes | The [account](../../../concepts/accounts/index.md) that initiated the transaction. |
| `TransactionType` | String | UInt16 | Yes | The type of transaction. Valid [transaction types](types/index.md) include: `Payment`, `OfferCreate`, `TrustSet`, and many others. |
| `Fee` | String - Number | Amount | Yes; [auto-fillable][] | Integer amount of XRP, in drops, to be destroyed as a cost for sending this transaction. Some transaction types have different minimum requirements. See [Transaction Cost][] for details. |
| `Sequence` | Number | UInt32 | Yes; [auto-fillable][] | The [sequence number](../data-types/basic-data-types.md#account-sequence) of the account sending the transaction. A transaction is only valid if the `Sequence` number is exactly 1 greater than the previous transaction from the same account. The special case `0` means the transaction is using a [Ticket](../../../concepts/accounts/tickets.md) instead _(Added by the [TicketBatch amendment][].)_. |
| `Sequence` | Number | UInt32 | Yes; [auto-fillable][] | The [sequence number](../data-types/basic-data-types.md#account-sequence) of the account sending the transaction. A transaction is only valid if the `Sequence` number is exactly 1 greater than the previous transaction from the same account. The special case `0` means the transaction is using a [Ticket](../../../concepts/accounts/tickets.md) instead {% amendment-disclaimer name="TicketBatch" /%}. |
| [`AccountTxnID`](#accounttxnid) | String - [Hash][] | UInt256 | No | Hash value identifying another transaction. If provided, this transaction is only valid if the sending account's previously-sent transaction matches the provided hash. |
| [`Delegate`](#delegate) | String - [Address][] | AccountID | No | A delegate account that is sending the transaction on behalf of the `Account`. _(Requires the [PermissionDelegation amendment][] {% not-enabled /%})_ |
| [`Delegate`](#delegate) | String - [Address][] | AccountID | No | A delegate account that is sending the transaction on behalf of the `Account`. {% amendment-disclaimer name="PermissionDelegation" /%} |
| [`Flags`](#flags-field) | Number | UInt32 | No | Set of bit-flags for this transaction. |
| `LastLedgerSequence` | Number | UInt32 | No; [auto-fillable][] | Highest ledger index this transaction can appear in. Specifying this field places a strict upper limit on how long the transaction can wait to be validated or rejected. See [Reliable Transaction Submission](../../../concepts/transactions/reliable-transaction-submission.md) for more details. |
| [`Memos`](#memos-field) | Array of Objects | Array | No | Additional arbitrary information attached to this transaction. |
@@ -67,7 +67,7 @@ If the `Delegate` field is provided, this transaction is being sent by a differe
Sending a transaction this way is only possible if the delegating account has granted the appropriate transaction permissions to the delegate account. For more information, see [Permission Delegation](/docs/concepts/accounts/permission-delegation.md).
_(Requires the [PermissionDelegation amendment][] {% not-enabled /%}.)_
{% amendment-disclaimer name="PermissionDelegation" /%}
## Flags Field

View File

@@ -256,7 +256,7 @@ Transactions (`tx` and `account_tx`) involving NFTs can contain the following fi
| `offer_id` | String | Shows the `OfferID`of a new `NFTokenOffer` in a response from a `NFTokenCreateOffer` transaction. |
## MPT Fields
_(Requires the [MPTokensV1 amendment][] {% not-enabled /%})_
{% amendment-disclaimer name="MPTokensV1" /%}
### Synthetic mpt_issuance_id field
`MPTokenIssuanceID` is an identifier that allows you to specify an `MPTokenIssuance` in RPCs. The server adds a synthetically parsed `mpt_issuance_id` field to API responses to avoid the need for client-side parsing of the `MPTokenIssuanceID`.

View File

@@ -9,7 +9,7 @@ labels:
# UNLModify
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/Change.cpp "Source")
_(Added by the [NegativeUNL amendment][].)_
{% amendment-disclaimer name="NegativeUNL" /%}
A `UNLModify` [pseudo-transaction](pseudo-transaction-types.md) marks a change to the [Negative UNL](../../../../concepts/consensus-protocol/negative-unl.md), indicating that a trusted validator has gone offline or come back online.

View File

@@ -17,20 +17,20 @@ A transaction that fails with a `tec` code destroys the XRP paid as a [transacti
| Code | Value | Explanation |
|:---------------------------|:------|:----------------------------------------|
| `tecAMM_ACCOUNT` | 168 | The transaction failed because the operation is not allowed on Automated Market Maker (AMM) accounts. _(Added by the [AMM amendment][])_ |
| `tecAMM_UNFUNDED` | 162 | The [AMMCreate transaction][] failed because the sender does not have enough of the specified assets to fund it. _(Added by the [AMM amendment][])_ |
| `tecAMM_BALANCE` | 163 | The [AMMDeposit][] or [AMMWithdraw][] transaction failed because either the AMM or the user does not hold enough of one of the specified assets. (For example, you tried to withdraw more than the AMM holds.) _(Added by the [AMM amendment][])_ |
| `tecAMM_EMPTY` | 166 | The AMM-related transaction failed because the AMM has no assets in its pool. In this state, you can only delete the AMM or fund it with a new deposit. _(Added by the [AMM amendment][])_ |
| `tecAMM_FAILED` | 164 | The AMM-related transaction failed. For [AMMDeposit][] or [AMMWithdraw][] this could be because the sender does not have enough of the specified assets, or the transaction requested an effective price that isn't possible with the available amounts. For [AMMBid][] this could be because the account does not have enough to win the bid or needs more than their specified maximum bid. For [AMMVote][], this could be because there are already too many votes from other accounts that hold more of this AMM's LP Tokens. _(Added by the [AMM amendment][])_ |
| `tecAMM_INVALID_TOKENS` | 165 | The AMM-related transaction failed due to insufficient LP Tokens or problems with rounding; for example, depositing a very small amount of assets could fail if the amount of LP Tokens to be returned rounds down to zero. _(Added by the [AMM amendment][])_ |
| `tecAMM_NOT_EMPTY` | 167 | The transaction was meant to operate on an AMM with empty asset pools, but the specified AMM currently holds assets. _(Added by the [AMM amendment][])_ |
| `tecCANT_ACCEPT_OWN_NFTOKEN_OFFER` | 157 | The transaction tried to accept an offer that was placed by the same account to buy or sell a [non-fungible token](../../../../concepts/tokens/nfts/index.md). _(Added by the [NonFungibleTokensV1_1 amendment][].)_ |
| `tecAMM_ACCOUNT` | 168 | The transaction failed because the operation is not allowed on Automated Market Maker (AMM) accounts. {% amendment-disclaimer name="AMM" /%} |
| `tecAMM_UNFUNDED` | 162 | The [AMMCreate transaction][] failed because the sender does not have enough of the specified assets to fund it. {% amendment-disclaimer name="AMM" /%} |
| `tecAMM_BALANCE` | 163 | The [AMMDeposit][] or [AMMWithdraw][] transaction failed because either the AMM or the user does not hold enough of one of the specified assets. (For example, you tried to withdraw more than the AMM holds.) {% amendment-disclaimer name="AMM" /%} |
| `tecAMM_EMPTY` | 166 | The AMM-related transaction failed because the AMM has no assets in its pool. In this state, you can only delete the AMM or fund it with a new deposit. {% amendment-disclaimer name="AMM" /%} |
| `tecAMM_FAILED` | 164 | The AMM-related transaction failed. For [AMMDeposit][] or [AMMWithdraw][] this could be because the sender does not have enough of the specified assets, or the transaction requested an effective price that isn't possible with the available amounts. For [AMMBid][] this could be because the account does not have enough to win the bid or needs more than their specified maximum bid. For [AMMVote][], this could be because there are already too many votes from other accounts that hold more of this AMM's LP Tokens. {% amendment-disclaimer name="AMM" /%} |
| `tecAMM_INVALID_TOKENS` | 165 | The AMM-related transaction failed due to insufficient LP Tokens or problems with rounding; for example, depositing a very small amount of assets could fail if the amount of LP Tokens to be returned rounds down to zero. {% amendment-disclaimer name="AMM" /%} |
| `tecAMM_NOT_EMPTY` | 167 | The transaction was meant to operate on an AMM with empty asset pools, but the specified AMM currently holds assets. {% amendment-disclaimer name="AMM" /%} |
| `tecCANT_ACCEPT_OWN_NFTOKEN_OFFER` | 157 | The transaction tried to accept an offer that was placed by the same account to buy or sell a [non-fungible token](../../../../concepts/tokens/nfts/index.md). {% amendment-disclaimer name="NonFungibleTokensV1_1" /%} |
| `tecCLAIM` | 100 | Unspecified failure, with transaction cost destroyed. |
| `tecCRYPTOCONDITION_ERROR` | 146 | This [EscrowCreate][] or [EscrowFinish][] transaction contained a malformed or mismatched crypto-condition. |
| `tecDIR_FULL` | 121 | The transaction tried to add an object (such as a trust line, Check, Escrow, or Payment Channel) to an account's owner directory, but that account cannot own any more objects in the ledger. |
| `tecDUPLICATE` | 149 | The transaction tried to create an object (such as a [DepositPreauth][] authorization) that already exists. |
| `tecDST_TAG_NEEDED` | 143 | The [Payment transaction][] omitted a [destination tag](../../../../concepts/transactions/source-and-destination-tags.md), but the destination account has the `lsfRequireDestTag` flag enabled. |
| `tecEMPTY_DID` | 187 | The transaction tried to create a [DID entry][] with no contents. A DID must not be empty. _(Added by the [DID amendment][] {% not-enabled /%})_ |
| `tecEMPTY_DID` | 187 | The transaction tried to create a [DID entry][] with no contents. A DID must not be empty. {% amendment-disclaimer name="DID" /%} |
| `tecEXPIRED` | 148 | The transaction tried to create an object (such as an Offer or a Check) whose provided Expiration time has already passed. |
| `tecFAILED_PROCESSING` | 105 | An unspecified error occurred when processing the transaction. |
| `tecFROZEN` | 137 | The [OfferCreate transaction][] failed because one or both of the assets involved are subject to a [global freeze](../../../../concepts/tokens/fungible-tokens/freezes.md). |
@@ -38,17 +38,17 @@ A transaction that fails with a `tec` code destroys the XRP paid as a [transacti
| `tecINSUF_RESERVE_LINE` | 122 | The transaction failed because the sending account does not have enough XRP to create a new trust line. (See: [Reserves](../../../../concepts/accounts/reserves.md)) This error occurs when the counterparty already has a trust line in a non-default state to the sending account for the same currency. (See `tecNO_LINE_INSUF_RESERVE` for the other case.) |
| `tecINSUF_RESERVE_OFFER` | 123 | The transaction failed because the sending account does not have enough XRP to create a new Offer. (See: [Reserves](../../../../concepts/accounts/reserves.md)) |
| `tecINSUFF_FEE` | 136 | The transaction failed because the sending account does not have enough XRP to pay the [transaction cost](../../../../concepts/transactions/transaction-cost.md) that it specified. (In this case, the transaction processing destroys all of the sender's XRP even though that amount is lower than the specified transaction cost.) This result only occurs if the account's balance decreases _after_ this transaction has been distributed to enough of the network to be included in a consensus set. Otherwise, the transaction fails with [`terINSUF_FEE_B`](ter-codes.md) before being distributed. |
| `tecINSUFFICIENT_FUNDS` | 158 | One of the accounts involved does not hold enough of a necessary asset. _(Added by the [NonFungibleTokensV1_1 amendment][].)_ |
| `tecINSUFFICIENT_PAYMENT` | 161 | The amount specified is not enough to pay all fees involved in the transaction. For example, when trading a non-fungible token, the buy amount may not be enough to pay both the broker fee and the sell amount. _(Added by the [NonFungibleTokensV1_1 amendment][].)_ |
| `tecINSUFFICIENT_FUNDS` | 158 | One of the accounts involved does not hold enough of a necessary asset. {% amendment-disclaimer name="NonFungibleTokensV1_1" /%} |
| `tecINSUFFICIENT_PAYMENT` | 161 | The amount specified is not enough to pay all fees involved in the transaction. For example, when trading a non-fungible token, the buy amount may not be enough to pay both the broker fee and the sell amount. {% amendment-disclaimer name="NonFungibleTokensV1_1" /%} |
| `tecINSUFFICIENT_RESERVE` | 141 | The transaction would increase the [reserve requirement](../../../../concepts/accounts/reserves.md) higher than the sending account's balance. [SignerListSet][], [PaymentChannelCreate][], [PaymentChannelFund][], and [EscrowCreate][] can return this error code. See [Signer Lists and Reserves](../../ledger-data/ledger-entry-types/signerlist.md#signer-lists-and-reserves) for more information. |
| `tecINTERNAL` | 144 | Unspecified internal error, with transaction cost applied. This error code should not normally be returned. If you can reproduce this error, please [report an issue](https://github.com/XRPLF/rippled/issues). |
| `tecINVALID_UPDATE_TIME` | 188 | The [OracleSet transaction][] failed because the `LastUpdateTime` is invalid. This can occur when the time is more than 300 seconds before or after the ledger close time, or when updating an existing oracle, the new `LastUpdateTime` is not greater than the previous value. _(Added by the [PriceOracle amendment][])_ |
| `tecINVARIANT_FAILED` | 147 | An invariant check failed when trying to execute this transaction. Added by the [EnforceInvariants amendment][]. If you can reproduce this error, please [report an issue](https://github.com/XRPLF/rippled/issues). |
| `tecKILLED` | 150 | The [OfferCreate transaction][] specified the `tfFillOrKill` flag and could not be filled, so it was killed. _(Added by the [fix1578 amendment][].)_ |
| `tecMAX_SEQUENCE_REACHED` | 153 | A sequence number field is already at its maximum. This includes the `MintedNFTokens` field. _(Added by the [NonFungibleTokensV1_1 amendment][].)_ |
| `tecINVALID_UPDATE_TIME` | 188 | The [OracleSet transaction][] failed because the `LastUpdateTime` is invalid. This can occur when the time is more than 300 seconds before or after the ledger close time, or when updating an existing oracle, the new `LastUpdateTime` is not greater than the previous value. {% amendment-disclaimer name="PriceOracle" /%} |
| `tecINVARIANT_FAILED` | 147 | An invariant check failed when trying to execute this transaction. If you can reproduce this error, please [report an issue](https://github.com/XRPLF/rippled/issues). {% amendment-disclaimer name="EnforceInvariants" /%} |
| `tecKILLED` | 150 | The [OfferCreate transaction][] specified the `tfFillOrKill` flag and could not be filled, so it was killed. {% amendment-disclaimer name="fix1578" /%} |
| `tecMAX_SEQUENCE_REACHED` | 153 | A sequence number field is already at its maximum. This includes the `MintedNFTokens` field. {% amendment-disclaimer name="NonFungibleTokensV1_1" /%} |
| `tecNEED_MASTER_KEY` | 142 | This transaction tried to cause changes that require the master key, such as [disabling the master key or giving up the ability to freeze balances](../types/accountset.md#accountset-flags). |
| `tecNFTOKEN_BUY_SELL_MISMATCH` | 155 | The [NFTokenAcceptOffer transaction][] attempted to match incompatible offers to buy and sell a non-fungible token. _(Added by the [NonFungibleTokensV1_1 amendment][].)_ |
| `tecNFTOKEN_OFFER_TYPE_MISMATCH` | 156 | One or more of the offers specified in the transaction was not the right type of offer. (For example, a buy offer was specified in the `NFTokenSellOffer` field.) _(Added by the [NonFungibleTokensV1_1 amendment][].)_ |
| `tecNFTOKEN_BUY_SELL_MISMATCH` | 155 | The [NFTokenAcceptOffer transaction][] attempted to match incompatible offers to buy and sell a non-fungible token. {% amendment-disclaimer name="NonFungibleTokensV1_1" /%} |
| `tecNFTOKEN_OFFER_TYPE_MISMATCH` | 156 | One or more of the offers specified in the transaction was not the right type of offer. (For example, a buy offer was specified in the `NFTokenSellOffer` field.) {% amendment-disclaimer name="NonFungibleTokensV1_1" /%} |
| `tecNO_ALTERNATIVE_KEY` | 130 | The transaction tried to remove the only available method of [authorizing transactions](../../../../concepts/transactions/index.md#authorizing-transactions). This could be a [SetRegularKey transaction][] to remove the regular key, a [SignerListSet transaction][] to delete a SignerList, or an [AccountSet transaction][] to disable the master key. (Prior to `rippled` 0.30.0, this was called `tecMASTER_DISABLED`.) |
| `tecNO_AUTH` | 134 | The transaction failed because it needs to add a balance on a trust line to an account with the `lsfRequireAuth` flag enabled, and that trust line has not been authorized. If the trust line does not exist at all, `tecNO_LINE` occurs instead. |
| `tecNO_DST` | 124 | The account on the receiving end of the transaction does not exist. This includes Payment and TrustSet transaction types. (It could be created if it received enough XRP.) |
@@ -60,9 +60,9 @@ A transaction that fails with a `tec` code destroys the XRP paid as a [transacti
| `tecNO_LINE_REDUNDANT` | 127 | The transaction failed because it tried to set a trust line to its default state, but the trust line did not exist. |
| `tecNO_PERMISSION` | 139 | The sender does not have permission to do this operation. For example, the [EscrowFinish transaction][] tried to release a held payment before its `FinishAfter` time, someone tried to use [PaymentChannelFund][] on a channel the sender does not own, or a [Payment][] tried to deliver funds to an account with the "DepositAuth" flag enabled. |
| `tecNO_REGULAR_KEY` | 131 | The [AccountSet transaction][] tried to disable the master key, but the account does not have another way to [authorize transactions](../../../../concepts/transactions/index.md#authorizing-transactions). If [multi-signing](../../../../concepts/accounts/multi-signing.md) is enabled, this code is deprecated and `tecNO_ALTERNATIVE_KEY` is used instead. |
| `tecNO_SUITABLE_NFTOKEN_PAGE` | 154 | The transaction tried to mint or acquire a non-fungible token but the account receiving the `NFToken` does not have a directory page that can hold it. This situation is rare. _(Added by the [NonFungibleTokensV1_1 amendment][].)_ |
| `tecNO_SUITABLE_NFTOKEN_PAGE` | 154 | The transaction tried to mint or acquire a non-fungible token but the account receiving the `NFToken` does not have a directory page that can hold it. This situation is rare. {% amendment-disclaimer name="NonFungibleTokensV1_1" /%} |
| `tecNO_TARGET` | 138 | The transaction referenced an Escrow or PayChannel ledger object that doesn't exist, either because it never existed or it has already been deleted. (For example, another [EscrowFinish transaction][] has already executed the held payment.) Alternatively, the destination account has `asfDisallowXRP` set so it cannot be the destination of this [PaymentChannelCreate][] or [EscrowCreate][] transaction. |
| `tecOBJECT_NOT_FOUND` | 160 | One of the objects specified by this transaction did not exist in the ledger. _(Added by the [NonFungibleTokensV1_1 amendment][].)_ |
| `tecOBJECT_NOT_FOUND` | 160 | One of the objects specified by this transaction did not exist in the ledger. {% amendment-disclaimer name="NonFungibleTokensV1_1" /%} |
| `tecOVERSIZE` | 145 | This transaction could not be processed, because the server created an excessively large amount of [metadata](../metadata.md) when it tried to apply the transaction. |
| `tecOWNERS` | 132 | The transaction cannot succeed because the sender already owns objects in the ledger. For example, an account cannot enable the [`lsfRequireAuth`](../types/accountset.md#accountset-flags) flag if it has any trust lines or available offers. |
| `tecPATH_DRY` | 128 | The transaction failed because the provided [paths](../../../../concepts/tokens/fungible-tokens/paths.md) did not have enough liquidity to send anything at all. This could mean that the source and destination accounts are not linked by [trust lines](../../../../concepts/tokens/fungible-tokens/index.md). |

View File

@@ -1,6 +1,4 @@
---
html: tef-codes.html
parent: transaction-results.html
seo:
description: tef codes indicate that the transaction failed and was not included in a ledger, but the transaction could have succeeded in some theoretical ledger.
labels:
@@ -26,10 +24,10 @@ These codes indicate that the transaction failed and was not included in a ledge
| `tefEXCEPTION` | While processing the transaction, the server entered an unexpected state. This may be caused by unexpected inputs, for example if the binary data for the transaction is grossly malformed. If you can reproduce this error, please [report an issue](https://github.com/XRPLF/rippled/issues) to get it fixed. |
| `tefFAILURE` | Unspecified failure in applying the transaction. |
| `tefINTERNAL` | When trying to apply the transaction, the server entered an unexpected state. If you can reproduce this error, please [report an issue](https://github.com/XRPLF/rippled/issues) to get it fixed. |
| `tefINVARIANT_FAILED` | An invariant check failed when trying to claim the [transaction cost](../../../../concepts/transactions/transaction-cost.md). Added by the [EnforceInvariants amendment][]. If you can reproduce this error, please [report an issue](https://github.com/XRPLF/rippled/issues). |
| `tefINVARIANT_FAILED` | An invariant check failed when trying to claim the [transaction cost](../../../../concepts/transactions/transaction-cost.md). If you can reproduce this error, please [report an issue](https://github.com/XRPLF/rippled/issues). {% amendment-disclaimer name="EnfroceInvariants" /%} |
| `tefMASTER_DISABLED` | The transaction was signed with the account's master key, but the account has the `lsfDisableMaster` field set. |
| `tefMAX_LEDGER` | The transaction included a [`LastLedgerSequence`](../../../../concepts/transactions/reliable-transaction-submission.md#lastledgersequence) parameter, but the current ledger's sequence number is already higher than the specified value. |
| `tefNFTOKEN_IS_NOT_TRANSFERABLE` | The transaction attempted to send a [non-fungible token](../../../../concepts/tokens/nfts/index.md) to another account, but the `NFToken` has the `lsfTransferable` flag disabled and the transfer would not be to or from the issuer. _(Added by the [NonFungibleTokensV1_1 amendment][].)_ |
| `tefNFTOKEN_IS_NOT_TRANSFERABLE` | The transaction attempted to send a [non-fungible token](../../../../concepts/tokens/nfts/index.md) to another account, but the `NFToken` has the `lsfTransferable` flag disabled and the transfer would not be to or from the issuer. {% amendment-disclaimer name="NonFungibleTokensV1_1" /%} |
| `tefNO_AUTH_REQUIRED` | The [TrustSet transaction][] tried to mark a trust line as authorized, but the `lsfRequireAuth` flag is not enabled for the corresponding account, so authorization is not necessary. |
| `tefNO_TICKET` | The transaction attempted to use a [Ticket](../../../../concepts/accounts/tickets.md), but the specified `TicketSequence` number does not exist in the ledger, and cannot be created in the future because it is earlier than the sender's current sequence number. |
| `tefNOT_MULTI_SIGNING` | The transaction was [multi-signed](../../../../concepts/accounts/multi-signing.md), but the sending account has no SignerList defined. |

View File

@@ -1,10 +1,8 @@
---
html: tem-codes.html
parent: transaction-results.html
seo:
description: tem codes indicate that the transaction was malformed, and cannot succeed according to the XRP Ledger protocol.
labels:
- Transaction Sending
- Transaction Sending
---
# tem Codes
@@ -14,7 +12,7 @@ These codes indicate that the transaction was malformed, and cannot succeed acco
| Code | Explanation |
|:------------------------------|:----------------------------------------------|
| `temBAD_AMM_TOKENS` | The transaction incorrectly specified one or more assets. For example, the asset's issuer does not match the corresponding asset in the AMM's pool, or the transaction specified the same asset twice. _(Added by the [AMM amendment][])_ |
| `temBAD_AMM_TOKENS` | The transaction incorrectly specified one or more assets. For example, the asset's issuer does not match the corresponding asset in the AMM's pool, or the transaction specified the same asset twice. {% amendment-disclaimer name="AMM" /%} |
| `temBAD_AMOUNT` | An amount specified by the transaction (for example the destination `Amount` or `SendMax` values of a [Payment][]) was invalid, possibly because it was a negative number. |
| `temBAD_AUTH_MASTER` | The key used to sign this transaction does not match the master key for the account sending it, and the account does not have a [Regular Key](../../../../concepts/accounts/cryptographic-keys.md) set. |
| `temBAD_CURRENCY` | The transaction improperly specified a currency field. See [Specifying Currency Amounts][Currency Amount] for the correct format. |
@@ -22,7 +20,7 @@ These codes indicate that the transaction was malformed, and cannot succeed acco
| `temBAD_FEE` | The transaction improperly specified its `Fee` value, for example by listing a non-XRP currency or some negative amount of XRP. |
| `temBAD_ISSUER` | The transaction improperly specified the `issuer` field of some currency included in the request. |
| `temBAD_LIMIT` | The [TrustSet transaction][] improperly specified the `LimitAmount` value of a trust line. |
| `temBAD_NFTOKEN_TRANSFER_FEE` | The [NFTokenMint transaction][] improperly specified the `TransferFee` field of the transaction. _(Added by the [NonFungibleTokensV1_1 amendment][].)_ |
| `temBAD_NFTOKEN_TRANSFER_FEE` | The [NFTokenMint transaction][] improperly specified the `TransferFee` field of the transaction. {% amendment-disclaimer name="NonFungibleTokensV1_1" /%} |
| `temBAD_OFFER` | The [OfferCreate transaction][] specifies an invalid offer, such as offering to trade XRP for itself, or offering a negative amount. |
| `temBAD_PATH` | The [Payment transaction][] specifies one or more [Paths](../../../../concepts/tokens/fungible-tokens/paths.md) improperly, for example including an issuer for XRP, or specifying an account differently. |
| `temBAD_PATH_LOOP` | One of the [Paths](../../../../concepts/tokens/fungible-tokens/paths.md) in the [Payment transaction][] was flagged as a loop, so it cannot be processed in a bounded amount of time. |
@@ -45,7 +43,7 @@ These codes indicate that the transaction was malformed, and cannot succeed acco
| `temREDUNDANT` | The transaction would do nothing; for example, it is sending a payment directly to the sending account, or creating an offer to buy and sell the same currency from the same issuer. |
| `temREDUNDANT_SEND_MAX` | {% badge href="https://github.com/XRPLF/rippled/releases/tag/0.28.0" %}Removed in: rippled 0.28.0{% /badge %} |
| `temRIPPLE_EMPTY` | The [Payment transaction][] includes an empty `Paths` field, but paths are necessary to complete this payment. |
| `temSEQ_AND_TICKET` | The transaction contains both a `TicketSequence` field and a non-zero `Sequence` value. A transaction cannot include both. _(Added by the [TicketBatch amendment][].)_ |
| `temSEQ_AND_TICKET` | The transaction contains both a `TicketSequence` field and a non-zero `Sequence` value. A transaction cannot include both. {% amendment-disclaimer name="TicketBatch" /%} |
| `temBAD_WEIGHT` | The [SignerListSet transaction][] includes a `SignerWeight` that is invalid, for example a zero or negative value. |
| `temBAD_SIGNER` | The [SignerListSet transaction][] includes a signer who is invalid. For example, there may be duplicate entries, or the owner of the SignerList may also be a member. |
| `temBAD_QUORUM` | The [SignerListSet transaction][] has an invalid `SignerQuorum` value. Either the value is not greater than zero, or it is more than the sum of all signers in the list. |

View File

@@ -20,7 +20,7 @@ Transactions with `ter` codes have not been applied to the current ledger and ha
| `terINSUF_FEE_B` | The account sending the transaction does not have enough XRP to pay the `Fee` specified in the transaction. |
| `terLAST` | Used internally only. This code should never be returned. |
| `terNO_ACCOUNT` | The address sending the transaction is not funded in the ledger (yet). |
| `terNO_AMM` | The AMM-related transaction specifies an asset pair that does not currently have an AMM instance. _(Added by the [AMM amendment][])_ |
| `terNO_AMM` | The AMM-related transaction specifies an asset pair that does not currently have an AMM instance. {% amendment-disclaimer name="AMM" /%} |
| `terNO_AUTH` | The transaction would involve adding currency issued by an account with `lsfRequireAuth` enabled to a trust line that is not authorized. For example, you placed an offer to buy a currency you aren't authorized to hold. |
| `terNO_LINE` | Used internally only. This code should never be returned. |
| `terNO_RIPPLE` | The transaction can't succeed because of [rippling settings](/docs/concepts/tokens/fungible-tokens/rippling/). For example, the transaction tried to create an AMM even though the issuer of at least one of the tokens has not enabled the Default Ripple flag. |

View File

@@ -5,12 +5,11 @@ labels:
- Accounts
---
# AccountDelete
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/DeleteAccount.cpp "Source")
An AccountDelete transaction deletes an [account](../../ledger-data/ledger-entry-types/accountroot.md) and any objects it owns in the XRP Ledger, if possible, sending the account's remaining XRP to a specified destination account. See [Deleting Accounts](../../../../concepts/accounts/deleting-accounts.md) for the requirements to delete an account.
_(Added by the [DeletableAccounts amendment][].)_
{% amendment-disclaimer name="DeletableAccounts" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -5,10 +5,9 @@ labels:
- Accounts
---
# AccountSet
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/SetAccount.cpp "Source")
An AccountSet transaction modifies the properties of an [account in the XRP Ledger](../../ledger-data/ledger-entry-types/accountroot.md).
Modify the settings or properties of an [account in the XRP Ledger](../../../../concepts/accounts/index.md).
## Example {% $frontmatter.seo.title %} JSON
@@ -34,10 +33,10 @@ An AccountSet transaction modifies the properties of an [account in the XRP Ledg
| [`Domain`](#domain) | String | Blob | The domain that owns this account, as a string of hex representing the ASCII for the domain in lowercase. [Cannot be more than 256 bytes in length.](https://github.com/XRPLF/rippled/blob/55dc7a252e08a0b02cd5aa39e9b4777af3eafe77/src/ripple/app/tx/impl/SetAccount.h#L34) |
| `EmailHash` | String | UInt128 | An arbitrary 128-bit value. Conventionally, clients treat this as the md5 hash of an email address to use for displaying a [Gravatar](http://en.gravatar.com/site/implement/hash/) image. |
| `MessageKey` | String | Blob | Public key for sending encrypted messages to this account. To set the key, it must be exactly 33 bytes, with the first byte indicating the key type: `0x02` or `0x03` for secp256k1 keys, `0xED` for Ed25519 keys. To remove the key, use an empty value. |
| `NFTokenMinter` | String - [Address][] | AccountID | Another account that can [mint NFTokens for you](../../../../tutorials/javascript/nfts/assign-an-authorized-minter.md). _(Added by the [NonFungibleTokensV1_1 amendment][].)_ |
| `NFTokenMinter` | String - [Address][] | AccountID | Another account that can [mint NFTokens for you](../../../../tutorials/javascript/nfts/assign-an-authorized-minter.md). {% amendment-disclaimer name="NonFungibleTokensV1_1" /%} |
| [`SetFlag`](#accountset-flags) | Number | UInt32 | Integer flag to enable for this account. |
| [`TransferRate`](#transferrate) | Number | UInt32 | The fee to charge when users transfer this account's tokens, represented as billionths of a unit. Cannot be more than `2000000000` or less than `1000000000`, except for the special case `0` meaning no fee. |
| [`TickSize`](../../../../concepts/tokens/decentralized-exchange/ticksize.md) | Number | UInt8 | _(Optional)_ Tick size to use for offers involving a currency issued by this address. The exchange rates of those offers is rounded to this many significant digits. Valid values are `3` to `15` inclusive, or `0` to disable. _(Added by the [TickSize amendment][])_ |
| [`TickSize`](../../../../concepts/tokens/decentralized-exchange/ticksize.md) | Number | UInt8 | _(Optional)_ Tick size to use for offers involving a currency issued by this address. The exchange rates of those offers is rounded to this many significant digits. Valid values are `3` to `15` inclusive, or `0` to disable. {% amendment-disclaimer name="TickSize" /%} |
| `WalletLocator` | String | UInt256 | An arbitrary 256-bit value. If specified, the value is stored as part of the account but has no inherent meaning or requirements. |
| `WalletSize` | Number | UInt32 | Not used. This field is valid in AccountSet transactions but does nothing. |
@@ -74,14 +73,14 @@ The available AccountSet flags are:
|:----------------------------------|:--------------|:--------------|
| `asfAccountTxnID` | 5 | Track the ID of this account's most recent transaction. Required for [`AccountTxnID`](../common-fields.md#accounttxnid) |
| `asfAllowTrustLineClawback` | 16 | Allow account to claw back tokens it has issued. _(Requires the Clawback amendment.)_ Can only be set if the account has an empty owner directory (no trust lines, offers, escrows, payment channels, checks, or signer lists). After you set this flag, it cannot be reverted. The account permanently gains the ability to claw back issued assets on trust lines. |
| `asfAuthorizedNFTokenMinter` | 10 | Enable to allow another account to mint non-fungible tokens (NFTokens) on this account's behalf. Specify the authorized account in the `NFTokenMinter` field of the [AccountRoot](../../ledger-data/ledger-entry-types/accountroot.md) object. To remove an authorized minter, enable this flag and omit the `NFTokenMinter` field. _(Added by the [NonFungibleTokensV1_1 amendment][].)_ |
| `asfAuthorizedNFTokenMinter` | 10 | Enable to allow another account to mint non-fungible tokens (NFTokens) on this account's behalf. Specify the authorized account in the `NFTokenMinter` field of the [AccountRoot](../../ledger-data/ledger-entry-types/accountroot.md) object. To remove an authorized minter, enable this flag and omit the `NFTokenMinter` field. {% amendment-disclaimer name="NonFungibleTokensV1_1" /%} |
| `asfDefaultRipple` | 8 | Enable [rippling](../../../../concepts/tokens/fungible-tokens/rippling.md) on this account's trust lines by default. |
| `asfDepositAuth` | 9 | Enable [Deposit Authorization](../../../../concepts/accounts/depositauth.md) on this account. _(Added by the [DepositAuth amendment][].)_ |
| `asfDepositAuth` | 9 | Enable [Deposit Authorization](../../../../concepts/accounts/depositauth.md) on this account. {% amendment-disclaimer name="DepositAuth" /%} |
| `asfDisableMaster` | 4 | Disallow use of the master key pair. Can only be enabled if the account has configured another way to sign transactions, such as a [Regular Key](../../../../concepts/accounts/cryptographic-keys.md) or a [Signer List](../../../../concepts/accounts/multi-signing.md). |
| `asfDisallowIncomingCheck` | 13 | Block incoming Checks. _(Requires the [DisallowIncoming amendment][].)_ |
| `asfDisallowIncomingNFTokenOffer` | 12 | Block incoming NFTokenOffers. _(Requires the [DisallowIncoming amendment][].)_ |
| `asfDisallowIncomingPayChan` | 14 | Block incoming Payment Channels. _(Requires the [DisallowIncoming amendment][].)_ |
| `asfDisallowIncomingTrustline` | 15 | Block incoming trust lines. _(Requires the [DisallowIncoming amendment][].)_ |
| `asfDisallowIncomingCheck` | 13 | Block incoming Checks. {% amendment-disclaimer name="DisallowIncoming" /%} |
| `asfDisallowIncomingNFTokenOffer` | 12 | Block incoming NFTokenOffers. {% amendment-disclaimer name="DisallowIncoming" /%} |
| `asfDisallowIncomingPayChan` | 14 | Block incoming Payment Channels. {% amendment-disclaimer name="DisallowIncoming" /%} |
| `asfDisallowIncomingTrustline` | 15 | Block incoming trust lines. {% amendment-disclaimer name="DisallowIncoming" /%} |
| `asfDisallowXRP` | 3 | XRP should not be sent to this account. (Advisory; not enforced by the XRP Ledger protocol.) |
| `asfGlobalFreeze` | 7 | [Freeze](../../../../concepts/tokens/fungible-tokens/freezes.md) all assets issued by this account. |
| `asfNoFreeze` | 6 | Permanently give up the ability to [freeze individual trust lines or disable Global Freeze](../../../../concepts/tokens/fungible-tokens/freezes.md). This flag can never be disabled after being enabled. |

View File

@@ -11,7 +11,7 @@ Bid on an [Automated Market Maker](../../../../concepts/tokens/decentralized-exc
You bid using the AMM's LP Tokens; the amount of a winning bid is returned to the AMM, decreasing the outstanding balance of LP Tokens.
_(Added by the [AMM amendment][].)_
{% amendment-disclaimer name="AMM" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -2,8 +2,8 @@
seo:
description: Claw back tokens from a holder who has deposited your issued tokens into an Automated Market Maker pool.
labels:
- AMM
- Tokens
- AMM
- Tokens
---
# AMMClawback
@@ -13,7 +13,7 @@ Claw back tokens from a holder who has deposited your issued tokens into an AMM
Clawback is disabled by default. To use clawback, you must send an [AccountSet transaction][] to enable the **Allow Trust Line Clawback** setting. An issuer with any existing tokens cannot enable clawback. You can only enable **Allow Trust Line Clawback** if you have a completely empty owner directory, meaning you must do so before you set up any trust lines, offers, escrows, payment channels, checks, or signer lists. After you enable clawback, it cannot reverted: the account permanently gains the ability to claw back issued assets on trust lines.
_(Added by the [AMMClawback amendment][].)_
{% amendment-disclaimer name="AMMClawback" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -2,7 +2,7 @@
seo:
description: Create a new Automated Market Maker for trading a given pair of assets.
labels:
- AMM
- AMM
---
# AMMCreate
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/AMMCreate.cpp "Source")
@@ -13,7 +13,7 @@ Creates both an [AMM entry][] and a [special AccountRoot entry](../../ledger-dat
{% admonition type="warning" name="Caution" %}When you create the AMM, you should fund it with (approximately) equal-value amounts of each asset. Otherwise, other users can profit at your expense by trading with this AMM ([performing arbitrage](https://www.machow.ski/posts/an_introduction_to_automated_market_makers/#price-arbitrage)). The currency risk that liquidity providers take on increases with the volatility (potential for imbalance) of the asset pair. The higher the trading fee, the more it offsets this risk, so it's best to set the trading fee based on the volatility of the asset pair.{% /admonition %}
_(Added by the [AMM amendment][].)_
{% amendment-disclaimer name="AMM" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -2,7 +2,7 @@
seo:
description: Delete an Automated Market Maker with an empty asset pool.
labels:
- AMM
- AMM
---
# AMMDelete
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/AMMDelete.cpp "Source")
@@ -11,7 +11,7 @@ Delete an empty [Automated Market Maker](../../../../concepts/tokens/decentraliz
Normally, an [AMMWithdraw transaction][] automatically deletes an AMM and all associated ledger entries when it withdraws all the assets from the AMM's pool. However, if there are too many trust lines to the AMM account to remove in one transaction, it may stop before fully removing the AMM. Similarly, an AMMDelete transaction removes up to a maximum of 512 trust lines; it may take several AMMDelete transactions to delete all the trust lines and the associated AMM. In all cases, only the last such transaction deletes the AMM and AccountRoot ledger entries.
_(Added by the [AMM amendment][].)_
{% amendment-disclaimer name="AMM" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -2,7 +2,7 @@
seo:
description: Deposit funds into an Automated Market Maker in exchange for LPTokens.
labels:
- AMM
- AMM
---
# AMMDeposit
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/AMMDeposit.cpp "Source")
@@ -17,7 +17,7 @@ You can't deposit either asset into an AMM if:
- You aren't authorized to hold at least one of the pooled assets.
{% /admonition %}
_(Added by the [AMM amendment][].)_
{% amendment-disclaimer name="AMM" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -2,14 +2,14 @@
seo:
description: Vote on the trading fee for an Automated Market Maker.
labels:
- AMM
- AMM
---
# AMMVote
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/AMMVote.cpp "Source")
Vote on the trading fee for an [Automated Market Maker](../../../../concepts/tokens/decentralized-exchange/automated-market-makers.md) instance. Up to 8 accounts can vote in proportion to the amount of the AMM's LP Tokens they hold. Each new vote re-calculates the AMM's trading fee based on a weighted average of the votes.
_(Added by the [AMM amendment][].)_
{% amendment-disclaimer name="AMM" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -2,14 +2,14 @@
seo:
description: Return LPTokens to an Automated Market Maker in exchange for a share of the assets the pool holds.
labels:
- AMM
- AMM
---
# AMMWithdraw
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/AMMWithdraw.cpp "Source")
Withdraw assets from an [Automated Market Maker](../../../../concepts/tokens/decentralized-exchange/automated-market-makers.md) (AMM) instance by returning the AMM's liquidity provider tokens (LP Tokens).
_(Added by the [AMM amendment][].)_
{% amendment-disclaimer name="AMM" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -8,9 +8,9 @@ status: not_enabled
# Batch
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/Batch.cpp "Source")
The `Batch` transaction submits up to eight transactions as a single unit. `Batch` transactions are executed atomically in one of four modes: All or Nothing, Only One, Until Failure, and Independent.
Submit up to eight transactions as a single [batch](../../../../concepts/transactions/batch-transactions.md). The transactions in the batch are executed atomically in one of four modes: All or Nothing, Only One, Until Failure, or Independent.
_(Requires the [Batch amendment][] {% not-enabled /%}.)_
{% amendment-disclaimer name="Batch" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -7,9 +7,9 @@ labels:
# CheckCancel
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/CancelCheck.cpp "Source")
Cancels an unredeemed Check, removing it from the ledger without sending any money. The source or the destination of the check can cancel a Check at any time using this transaction type. If the Check has expired, any address can cancel it.
Cancels an unredeemed [check](../../../../concepts/payment-types/checks.md), removing it from the ledger without sending any money. The source or the destination of the check can cancel a check at any time. If the check has expired, any address can cancel it.
_(Added by the [Checks amendment][].)_
{% amendment-disclaimer name="Checks" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -7,11 +7,11 @@ labels:
# CheckCash
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/CashCheck.cpp "Source")
Attempts to redeem a Check object in the ledger to receive up to the amount authorized by the corresponding [CheckCreate transaction][]. Only the `Destination` address of a Check can cash it with a CheckCash transaction. Cashing a check this way is similar to executing a [Payment][] initiated by the destination.
Attempts to redeem a [check](../../../../concepts/payment-types/checks.md) to receive up to the amount authorized by the corresponding [CheckCreate transaction][]. Only the `Destination` address of a check can cash it with a CheckCash transaction. Cashing a check this way is similar to executing a [Payment][] initiated by the destination.
Since the funds for a check are not guaranteed, redeeming a Check can fail because the sender does not have a high enough balance or because there is not enough liquidity to deliver the funds. If this happens, the Check remains in the ledger and the destination can try to cash it again later, or for a different amount.
Since the funds for a check are not guaranteed, redeeming a check can fail because the sender does not have a high enough balance or because there is not enough liquidity to deliver the funds. If this happens, the check remains in the ledger and the destination can try to cash it again later, or for a different amount.
_(Added by the [Checks amendment][].)_
{% amendment-disclaimer name="Checks" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -7,9 +7,9 @@ labels:
# CheckCreate
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/CreateCheck.cpp "Source")
Create a Check object in the ledger, which is a deferred payment that can be cashed by its intended destination. The sender of this transaction is the sender of the Check.
Create an on-ledger [check](../../../../concepts/payment-types/checks.md), which is a deferred payment that can be cashed by its intended destination. The sender of this transaction is the sender of the check.
_(Added by the [Checks amendment][].)_
{% amendment-disclaimer name="Checks" /%}
## Example {% $frontmatter.seo.title %} JSON
@@ -40,7 +40,7 @@ _(Added by the [Checks amendment][].)_
## Error Cases
- If the `Destination` account is blocking incoming Checks, the transaction fails with the result code `tecNO_PERMISSION`. _(Requires the [DisallowIncoming amendment][])_
- If the `Destination` account is blocking incoming Checks, the transaction fails with the result code `tecNO_PERMISSION`. {% amendment-disclaimer name="DisallowIncoming" /%}
- If the `Destination` is the sender of the transaction, the transaction fails with the result code `temREDUNDANT`.
- If the `Destination` [account](../../../../concepts/accounts/index.md) does not exist in the ledger, the transaction fails with the result code `tecNO_DST`.
- If the `Destination` account has the `RequireDest` flag enabled but the transaction does not include a `DestinationTag` field, the transaction fails with the result code `tecDST_TAG_NEEDED`.

View File

@@ -7,11 +7,9 @@ labels:
# Clawback
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/Clawback.cpp "Source")
Claw back tokens issued by your account.
[Claw back tokens](../../../../concepts/tokens/fungible-tokens/clawing-back-tokens.md) issued by your account. Issuers can only claw back [trust line tokens](../../../../concepts/tokens/fungible-tokens/trust-line-tokens.md) if they enabled the **Allow Trust Line Clawback** setting before issuing any tokens. Issuers can claw back [MPTs](../../../../concepts/tokens/fungible-tokens/multi-purpose-tokens.md) if the corresponding MPT Issuance has clawback enabled.
Clawback is disabled by default. To use clawback, you must send an [AccountSet transaction][] to enable the **Allow Trust Line Clawback** setting. An issuer with any existing tokens cannot enable Clawback. You can only enable **Allow Trust Line Clawback** if you have a completely empty owner directory, meaning you must do so before you set up any trust lines, offers, escrows, payment channels, checks, or signer lists. After you enable Clawback, it cannot reverted: the account permanently gains the ability to claw back issued assets on trust lines.
_(Added by the [Clawback amendment][].)_
{% amendment-disclaimer name="Clawback" /%}
## Example {% $frontmatter.seo.title %} JSON
@@ -29,16 +27,12 @@ _(Added by the [Clawback amendment][].)_
{% raw-partial file="/docs/_snippets/tx-fields-intro.md" /%}
| Field | JSON Type | [Internal Type][] | Description |
|:-------------------|:----------|:------------------|:------------------|
| `Amount` | [Currency Amount][] | Amount | The amount being clawed back, as well as the counterparty from which the amount is being clawed back. The quantity to claw back, in the `value` sub-field, must not be zero. If this is more than the current balance, the transaction claws back the entire balance. The sub-field `issuer` within `Amount` represents the token holder's account ID, rather than the issuer's.|
| `Holder` | String | AccountID | (Optional) Specifies the holder's address from which to claw back. The holder must already own an `MPToken` object with a non-zero balance. _(Requires the [MPTokensV1 amendment][] {% not-enabled /%})_ |
{% admonition type="info" name="Note" %}For an IOU (trust line) in the XRP Ledger, the party that created a token is called the _issuer_, but trust lines are bidirectional and, under some configurations, both sides can be seen as the issuer. In this transaction, the token issuer's address is in the `Account` field, and the token holder's address is in the `Amount` field's `issuer` sub-field.{% /admonition %}
{% admonition type="info" name="Note" %}To claw back funds from an MPT holder, the issuer must have specified that the MPT allows clawback by setting the `tfMPTCanClawback` flag when creating the MPT using the `MPTokenIssuanceCreate` transaction. Assuming an MPT was created with this flag set, clawbacks are allowed using the `Clawback` transaction.{% /admonition %}
| Field | JSON Type | [Internal Type][] | Required? | Description |
|:-------------------|:----------|:------------------|:----------|-------------|
| `Amount` | [Currency Amount][] | Amount | Yes | The amount to claw back. The quantity in the `value` sub-field must not be zero. If this is more than the current balance, the transaction claws back the entire balance. When clawing back trust line tokens, the `issuer` sub-field indicates the token holder to claw back tokens from.|
| `Holder` | String | AccountID | No | The holder to claw back tokens from, if clawing back MPTs. The holder must have a non-zero balance of the MPT issuance indicated in the `Amount` field. {% amendment-disclaimer name="MPTokensV1" /%} |
When clawing back trust line tokens, you must omit the `Holder` field. When clawing back MPTs, you must provide the `Holder` field.
## Error Cases
@@ -46,10 +40,10 @@ Besides errors that can occur for all transactions, {% $frontmatter.seo.title %}
| Error Code | Description |
|:-----------|:------------|
| `temDISABLED` | Occurs if the [Clawback amendment](/resources/known-amendments.md#clawback) is not enabled. |
| `temBAD_AMOUNT` | Occurs if the holder's balance is 0. It is not an error if the amount exceeds the holder's balance; in that case, the maximum available balance is clawed back. Also occurs if the counterparty listed in `Amount` is the same as the `Account` issuing this transaction. |
| `tecAMM_ACCOUNT` | This operation is not allowed with an AMM account. Use [`AMMClawback`](./ammclawback.md) instead. |
| `tecNO_LINE` | Occurs there is no trust line with the counterparty or that trust line's balance is 0. |
| `tecNO_PERMISSION` | Occurs if you attempt to set `lsfAllowTrustlineClawback` while `lsfNoFreeze` is set. Also occurs, conversely, if you try to set `lsfNoFreeze` while `lsfAllowTrustLineClawback` is set. |
| `temDISABLED` | The [Clawback amendment][] is not enabled. |
| `temBAD_AMOUNT` | The amount of tokens specified to claw back is invalid or zero, or the specified holder is the issuer. |
| `tecAMM_ACCOUNT` | The specified holder is an Automated Market Maker (AMM). To claw back tokens from an AMM, use [`AMMClawback`](./ammclawback.md) instead. |
| `tecNO_LINE` | There is no trust line with the counterparty or that trust line's balance is 0. |
| `tecNO_PERMISSION` | The sender of this transaction does not have the ability to claw back the specified tokens. |
{% raw-partial file="/docs/_snippets/common-links.md" /%}

View File

@@ -1,13 +1,13 @@
---
seo:
description: Accept a credential provisionally issued to your account.
status: not_enabled
---
# CredentialAccept
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/Credentials.cpp "Source")
A CredentialAccept transaction accepts a credential, which makes the credential valid. Only the subject of the credential can do this.
Accept a [credential](../../../../concepts/decentralized-storage/credentials.md), which makes the credential valid. Only the subject of the credential can do this.
_(Requires the [Credentials amendment][] {% not-enabled /%}.)_
{% amendment-disclaimer name="Credentials" /%}
## Example CredentialAccept JSON
@@ -46,7 +46,7 @@ The combination of `Account`, `Issuer`, and `CredentialType` must match a `Crede
| `tecNO_ENTRY` | The credential uniquely identified by the `Account`, `Issuer`, and `CredentialType` fields of the transaction does not exist in the ledger. |
| `temDISABLED` | The related amendment is not enabled. |
| `temINVALID_ACCOUNT_ID` | The provided `Issuer` field is invalid. For example, it contains [ACCOUNT_ZERO](../../../../concepts/accounts/addresses.md#special-addresses). |
| `temINVALID_FLAG` | The transaction includes a [Flag](../common-fields.md#flags-field) that does not exist, or includes a contradictory combination of flags. _(Requires the [fixInvalidTxFlags amendment][] {% not-enabled /%})_ |
| `temINVALID_FLAG` | The transaction includes a [Flag](../common-fields.md#flags-field) that does not exist, or includes a contradictory combination of flags. {% amendment-disclaimer name="fixInvalidTxFlags" /%} |
## See Also

View File

@@ -1,13 +1,13 @@
---
seo:
description: Provisionally issue a credential to a subject account.
status: not_enabled
---
# CredentialCreate
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/Credentials.cpp "Source")
A CredentialCreate transaction creates a credential in the ledger. The issuer of the credential uses this transaction to provisionally issue a credential. The credential is not valid until the subject of the credential accepts it with a [CredentialAccept transaction][].
Provisionally issue a [credential](../../../../concepts/decentralized-storage/credentials.md) in the ledger. The credential is not valid until the subject of the credential accepts it with a [CredentialAccept transaction][].
_(Requires the [Credentials amendment][] {% not-enabled /%}.)_
{% amendment-disclaimer name="Credentials" /%}
## Example CredentialCreate JSON
@@ -48,7 +48,7 @@ Besides errors that can occur for all transactions, CredentialCreate transaction
| `tecNO_TARGET` | The account specified in the `Subject` field is not a funded account in the ledger. |
| `temDISABLED` | The related amendment is not enabled. |
| `temINVALID_ACCOUNT_ID` | The provided `Subject` field is invalid. For example, it contains [ACCOUNT_ZERO](../../../../concepts/accounts/addresses.md#special-addresses). |
| `temINVALID_FLAG` | The transaction includes a [Flag](../common-fields.md#flags-field) that does not exist, or includes a contradictory combination of flags. _(Requires the [fixInvalidTxFlags amendment][] {% not-enabled /%})_ |
| `temINVALID_FLAG` | The transaction includes a [Flag](../common-fields.md#flags-field) that does not exist, or includes a contradictory combination of flags. {% amendment-disclaimer name="fixInvalidTxFlags" /%} |
## See Also

View File

@@ -1,13 +1,13 @@
---
seo:
description: Remove a credential from the ledger, effectively revoking it.
status: not_enabled
---
# CredentialDelete
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/Credentials.cpp "Source")
A CredentialDelete transaction removes a credential from the ledger, effectively revoking it. Users may also want to delete an unwanted credential to reduce their [reserve requirement](../../../../concepts/accounts/reserves.md).
Remove a [credential](../../../../concepts/decentralized-storage/credentials.md) from the ledger, effectively revoking it. Users may also want to delete an unwanted credential to reduce their [reserve requirement](../../../../concepts/accounts/reserves.md).
_(Requires the [Credentials amendment][] {% not-enabled /%}.)_
{% amendment-disclaimer name="Credentials" /%}
## Example CredentialDelete JSON
@@ -47,7 +47,7 @@ This transaction looks for a [Credential ledger entry](../../ledger-data/ledger-
| `temINVALID_ACCOUNT_ID` | A provided `Subject` or `Issuer` field is invalid. For example, it contains [ACCOUNT_ZERO](../../../../concepts/accounts/addresses.md#special-addresses). |
| `tecNO_PERMISSION` | The sender is neither the issuer nor subject of the credential, and the credential is not expired. |
| `tecNO_ENTRY` | The specified credential does not exist in the ledger. |
| `temINVALID_FLAG` | The transaction includes a [Flag](../common-fields.md#flags-field) that does not exist, or includes a contradictory combination of flags. _(Requires the [fixInvalidTxFlags amendment][] {% not-enabled /%})_ |
| `temINVALID_FLAG` | The transaction includes a [Flag](../common-fields.md#flags-field) that does not exist, or includes a contradictory combination of flags. {% amendment-disclaimer name="fixInvalidTxFlags" /%} |
## See Also

View File

@@ -12,7 +12,7 @@ status: not_enabled
[Delegate permissions](/docs/concepts/accounts/permission-delegation) to another account to send transactions on your behalf. This transaction type can grant, change, or revoke permissions; it creates, modifies, or deletes a [Delegate ledger entry][] accordingly.
_(Requires the [PermissionDelegation amendment][] {% not-enabled /%}.)_
{% amendment-disclaimer name="PermissionDelegation" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -7,11 +7,11 @@ labels:
# DepositPreauth
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/DepositPreauth.cpp "Source")
A DepositPreauth transaction grants preauthorization to deliver payments to your account. This is only useful if you are using (or plan to use) [Deposit Authorization](../../../../concepts/accounts/depositauth.md).
Grant preauthorization to send payments to your account. This is only useful if you are using (or plan to use) [Deposit Authorization](../../../../concepts/accounts/depositauth.md).
{% admonition type="success" name="Tip" %}You can use this transaction before you enable Deposit Authorization. This may be useful to ensure a smooth transition from not requiring deposit authorization to requiring it.{% /admonition %}
_(Added by the [DepositPreauth amendment][].)_
{% amendment-disclaimer name="DepositPreauth" /%}
## Example {% $frontmatter.seo.title %} JSON
@@ -57,9 +57,9 @@ _(Added by the [DepositPreauth amendment][].)_
| Field | JSON Type | [Internal Type][] | Required? | Description |
|:-------------------------|:---------------------|:------------------|:----------|:------------|
| `Authorize` | String - [Address][] | AccountID | No | An account to preauthorize. |
| `AuthorizeCredentials` | Array | Array | No | A set of credentials to authorize. _(Requires the [Credentials amendment][]. {% not-enabled /%})_ |
| `AuthorizeCredentials` | Array | Array | No | A set of credentials to authorize. {% amendment-disclaimer name="Credentials" /%} |
| `Unauthorize` | String | AccountID | No | An account whose preauthorization should be revoked. |
| `UnauthorizeCredentials` | Array | Array | No | A set of credentials whose preauthorization should be revoked. _(Requires the [Credentials amendment][]. {% not-enabled /%})_ |
| `UnauthorizeCredentials` | Array | Array | No | A set of credentials whose preauthorization should be revoked. {% amendment-disclaimer name="Credentials" /%} |
You must provide **exactly one** of `Authorize`, `AuthorizeCredentials`, `Unauthorize`, or `UnauthorizeCredentials`.

View File

@@ -2,17 +2,16 @@
seo:
description: Delete a Decentralized Identifier.
labels:
- DID
- DID
---
# DIDDelete
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/DID.cpp "Source")
Delete the [DID ledger entry](../../ledger-data/ledger-entry-types/did.md) associated with the specified `Account` field.
Delete the sender's [decentralized identifier (DID)](../../../../concepts/decentralized-storage/decentralized-identifiers.md).
{% admonition type="info" name="Note" %}This transaction only uses the [common fields][].{% /admonition %}
_(Added by the [DID amendment][].)_
{% amendment-disclaimer name="DID" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -2,15 +2,14 @@
seo:
description: Create or update a Decentralized Identifier.
labels:
- DID
- DID
---
# DIDSet
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/DID.cpp "Source")
Creates a new [DID ledger entry](../../ledger-data/ledger-entry-types/did.md) or updates the fields of an existing one.
Create or update a [decentralized identifier (DID)](../../../../concepts/decentralized-storage/decentralized-identifiers.md).
_(Added by the [DID amendment][].)_
{% amendment-disclaimer name="DID" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -2,15 +2,14 @@
seo:
description: Cancel an expired escrow, returning the funds to the sender.
labels:
- Escrow
- Escrow
---
# EscrowCancel
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/Escrow.cpp "Source")
Return escrowed XRP to the sender.
Return funds from an expired [escrow](../../../../concepts/payment-types/escrow.md) to it sender.
_(Added by the [Escrow amendment][].)_
{% amendment-disclaimer name="Escrow" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -2,15 +2,14 @@
seo:
description: Escrow funds, which can be released to the destination after a specific time or condition.
labels:
- Escrow
- Escrow
---
# EscrowCreate
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/Escrow.cpp "Source")
Sequester XRP until the escrow process either finishes or is canceled.
Set aside funds in an [escrow](../../../../concepts/payment-types/escrow.md) that delivers them to a predetermined recipient when certain conditions are met. If the escrow has an expiration, the funds can also be returned to the sender after it expires.
_(Added by the [Escrow amendment][].)_
{% amendment-disclaimer name="Escrow" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -2,15 +2,14 @@
seo:
description: Deliver escrowed funds to the intended recipient.
labels:
- Escrow
- Escrow
---
# EscrowFinish
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/Escrow.cpp "Source")
Deliver XRP from an escrow (held payment) to the recipient.
Deliver XRP from an [escrow](../../../../concepts/payment-types/escrow.md) to the recipient.
_(Added by the [Escrow amendment][].)_
{% amendment-disclaimer name="Escrow" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -2,15 +2,15 @@
seo:
description: Repair corruptions to the XRP ledger's state data.
labels:
- Utilities
- Troubleshooting
- Utilities
- Troubleshooting
---
# LedgerStateFix
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/LedgerStateFix.cpp "Source")
`LedgerStateFix` is a general purpose transaction used to fix specific issues affecting the XRP ledger. You submit the transaction with the `LedgerFixType` value set to indicate the particular error state to correct.
Repair a specific corruption affecting on-ledger data. This transaction type has a different mode for each type of error state or corruption it can fix.
_(Added by the [fixNFTokenPageLinks amendment][].)_
{% amendment-disclaimer name="fixNFTokenPageLinks" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -2,14 +2,12 @@
seo:
description: Set up your account to receive a specific MPT as a holder; or authorize a holder as an MPT issuer.
labels:
- Multi-purpose Tokens, MPTs
status: not_enabled
- Multi-purpose Tokens, MPTs
---
# MPTokenAuthorize
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/MPTokenAuthorize.cpp "Source")
An MPTokenAuthorize transaction controls whether an account can hold a given [Multi-purpose Token (MPT)](../../../../concepts/tokens/fungible-tokens/multi-purpose-tokens.md). It has several uses:
Control whether an account can hold a given [Multi-purpose Token (MPT)](../../../../concepts/tokens/fungible-tokens/multi-purpose-tokens.md). This transaction has several uses:
- An account indicates their willingness to hold an MPT. This creates a new [MPToken entry][] with an initial zero balance owned by that account. This is a prerequisite to receive that type of MPT in a payment.
- An account revokes their willingness to hold an MPT, deleting the [MPToken entry][]. This can only be done if their balance of the given MPT is zero.

View File

@@ -1,19 +1,15 @@
---
seo:
description: Define the properties of a new Multi-Purpose Token (MPT).
description: Define the properties of a new Multi-Purpose Token (MPT).
labels:
- Multi-purpose Tokens, MPTs
status: not_enabled
- Multi-purpose Tokens, MPTs
---
# MPTokenIssuanceCreate
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/MPTokenIssuanceCreate.cpp "Source")
The `MPTokenIssuanceCreate` transaction creates an [MPTokenIssuance](../../ledger-data/ledger-entry-types/mptokenissuance.md) object and adds it to the relevant directory node of the creator account. This transaction is the only opportunity an issuer has to specify any token fields that are defined as immutable (for example, MPT Flags).
Creates a new [Multi-purpose Token (MPT)](../../../../concepts/tokens/fungible-tokens/multi-purpose-tokens.md) issuance, which defines the properties of those MPTs. This is a prerequisite to actually issuing the tokens.
If the transaction is successful, the newly created token is owned by the account (the creator account) that executed the transaction.
Whenever your query returns an `MPTokenIssuance` transaction response, there will always be an `mpt_issuance_id` field on the Transaction Metadata page.
If the transaction is successful, it creates an [MPTokenIssuance entry][] where the sender of the transaction is the MPT's issuer.
{% amendment-disclaimer name="MPTokensV1" /%}

View File

@@ -2,15 +2,12 @@
seo:
description: Delete a Multi-Purpose Token definition.
labels:
- Multi-purpose Tokens, MPTs
status: not_enabled
- Multi-purpose Tokens, MPTs
---
# MPTokenIssuanceDestroy
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/MPTokenIssuanceDestroy.cpp "Source")
The `MPTokenIssuanceDestroy` transaction is used to remove an `MPTokenIssuance` object from the directory node in which it is being held, effectively removing the token from the ledger ("destroying" it).
If this operation succeeds, the corresponding `MPTokenIssuance` is removed and the owners reserve requirement is reduced by one. This operation must fail if there are any holders of the MPT in question.
Delete a [Multi-purpose Token (MPT)](../../../../concepts/tokens/fungible-tokens/multi-purpose-tokens.md) issuance. Only the issuer can delete an MPT issuance, and only if there are no holders of the MPT.
{% amendment-disclaimer name="MPTokensV1" /%}
@@ -24,7 +21,6 @@ If this operation succeeds, the corresponding `MPTokenIssuance` is removed and t
}
```
<!-- ## MPTokenIssuanceDestroy Fields -->
{% raw-partial file="/docs/_snippets/tx-fields-intro.md" /%}

View File

@@ -2,13 +2,12 @@
seo:
description: Set mutable properties of a Multi-Purpose Token definition.
labels:
- Multi-purpose Tokens, MPTs
status: not_enabled
- Multi-purpose Tokens, MPTs
---
# MPTokenIssuanceSet
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/MPTokenIssuanceSet.cpp "Source")
Use this transaction to update a mutable property for a Multi-purpose Token. The transaction flags determine which change(s) to apply.
Update a mutable property of a [Multi-purpose Token (MPT)](../../../../concepts/tokens/fungible-tokens/multi-purpose-tokens.md) issuance, including locking (freezing) or unlocking the tokens globally or for an individual holder.
{% amendment-disclaimer name="MPTokensV1" /%}

View File

@@ -7,12 +7,12 @@ labels:
# NFTokenAcceptOffer
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/NFTokenAcceptOffer.cpp "Source")
The `NFTokenAcceptOffer` transaction is used to accept offers to buy or sell an NFT. It has two possible modes:
Accept an offer to buy or sell a [non-fungible token (NFT)](../../../../concepts/tokens/nfts/index.md). This transaction has two modes:
* In _direct_ mode, a buyer can accept a sell offer directly, or a seller can accept a buy offer directly.
* In _brokered_ mode, a third party (the _broker_) can match two distinct offers, one buying and one selling. If the buy price is higher than the sell price, the broker can claim the difference as a fee for themself.
_(Added by the [NonFungibleTokensV1_1 amendment][].)_
{% amendment-disclaimer name="NonFungibleTokensV1_1" /%}
## Example NFTokenAcceptOffer JSON

View File

@@ -7,13 +7,11 @@ labels:
# NFTokenBurn
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/NFTokenBurn.cpp "Source")
The `NFTokenBurn` transaction is used to remove a `NFToken` object from the `NFTokenPage` in which it is being held, effectively removing the token from the ledger (_burning_ it).
Burn (destroy) a [non-fungible token (NFT)](../../../../concepts/tokens/nfts/index.md). The NFT's current holder can always burn it, and if the token's "Burnable" flag is enabled, the issuer and their authorized minter (if they have one) can also burn the NFT.
The sender of this transaction must be the owner of the `NFToken` to burn; or, if the `NFToken` has the `lsfBurnable` flag enabled, can be the issuer or the issuer's authorized `NFTokenMinter` account instead.
If the transaction succeeds, it removes the corresponding [NFToken][] object from the [NFTokenPage entry][] that was storing it. This can cause the pages of an NFT directory to be consolidated.
If this operation succeeds, the corresponding `NFToken` is removed. If this operation empties the `NFTokenPage` holding the `NFToken` or results in consolidation, thus removing a `NFTokenPage`, the owners reserve requirement is reduced by one.
_(Added by the [NonFungibleTokensV1_1 amendment][].)_
{% amendment-disclaimer name="NonFungibleTokensV1_1" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -7,9 +7,9 @@ labels:
# NFTokenCancelOffer
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/NFTokenCancelOffer.cpp "Source")
The `NFTokenCancelOffer` transaction can be used to cancel existing token offers created using `NFTokenCreateOffer`.
Cancel an offer to buy or sell a [non-fungible token (NFT)](../../../../concepts/tokens/nfts/index.md).
_(Added by the [NonFungibleTokensV1_1 amendment][].)_
{% amendment-disclaimer name="NonFungibleTokensV1_1" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -7,11 +7,11 @@ labels:
# NFTokenCreateOffer
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/NFTokenCreateOffer.cpp "Source")
Creates either a new _Sell_ offer for an `NFToken` owned by the account executing the transaction, or a new _Buy_ offer for an `NFToken` owned by another account.
Create a new offer to either buy or sell a [non-fungible token (NFT)](../../../../concepts/tokens/nfts/index.md). You can only offer to sell NFTs you own or buy NFTs you don't own.
If successful, the transaction creates a [NFTokenOffer object][]. Each offer counts as one object towards the [owner reserve](../../../../concepts/accounts/reserves.md) of the account that placed the offer.
If successful, the transaction creates a [NFTokenOffer object][]. To complete the sale and change ownership of the NFT, the offer must be accepted using an [NFTokenAcceptOffer transaction][].
_(Added by the [NonFungibleTokensV1_1 amendment][].)_
{% amendment-disclaimer name="NonFungibleTokensV1_1" /%}
## Example {% $frontmatter.seo.title %} JSON
@@ -64,7 +64,7 @@ Besides errors that can occur for all transactions, {% $frontmatter.seo.title %}
| `tecNO_ENTRY` | The `NFToken` is not owned by the expected account. |
| `tecNO_ISSUER` | The issuer specified in the `Amount` field does not exist. |
| `tecNO_LINE` | The `Amount` field is denominated in fungible tokens, but the `NFToken`'s issuer does not have a trust line for those tokens and the `NFToken` does not have the [`lsfTrustLine` flag](../../data-types/nftoken.md#nftoken-flags) enabled. |
| `tecNO_PERMISSION` | The `Destination` account blocks incoming NFTokenOffers. _(Requires the [DisallowIncoming amendment][] )_
| `tecNO_PERMISSION` | The `Destination` account blocks incoming NFTokenOffers. {% amendment-disclaimer name="DisallowIncoming" /%}
| `tecUNFUNDED_OFFER` | For a buy offer, the sender does have the funds specified in the `Amount` field available. If the `Amount` is XRP, this could be due to the reserve requirement; if the `Amount` is denominated in fungible tokens, this could be because they are [frozen](../../../../concepts/tokens/fungible-tokens/freezes.md). |
| `tefNFTOKEN_IS_NOT_TRANSFERABLE` | The `NFToken` has the [`lsfTransferable` flag](../../data-types/nftoken.md#nftoken-flags) disabled and this transaction would not transfer the `NFToken` to or from the issuer. |

View File

@@ -7,9 +7,11 @@ labels:
# NFTokenMint
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/NFTokenMint.cpp "Source")
The `NFTokenMint` transaction creates a non-fungible token and adds it to the relevant [NFTokenPage object][] of the `NFTokenMinter` as an [NFToken][] object. This transaction is the only opportunity the `NFTokenMinter` has to specify any token fields that are defined as immutable (for example, the `TokenFlags`).
Create a [non-fungible token (NFT)](../../../../concepts/tokens/nfts/index.md). This is the only opportunity the minter has to specify any token fields and flags that are immutable. This transaction can be sent by the NFT's issuer or by an [authorized minter](../../../../concepts/tokens/nfts/authorizing-another-minter.md).
_(Added by the [NonFungibleTokensV1_1 amendment][].)_
If successful, the transaction adds an [NFToken][] object to one of the minter's [NFTokenPage ledger entries][NFTokenPage entry].
{% amendment-disclaimer name="NonFungibleTokensV1_1" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -2,14 +2,14 @@
seo:
description: Modify a dynamic NFT.
labels:
- Non-fungible Tokens, NFTs
- Non-fungible Tokens, NFTs
---
# NFTokenModify
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/NFTokenModify.cpp "Source")
`NFTokenModify` is used to change the `URI` field of an NFT to point to a different URI in order to update the supporting data for the NFT. The NFT must have been minted with the `tfMutable` flag set. See [Dynamic Non-Fungible Tokens](../../../../concepts/tokens/nfts/dynamic-nfts.md).
Change the `URI` field of a [dynamic NFT](../../../../concepts/tokens/nfts/dynamic-nfts.md) to update the supporting data for the NFT. Only the issuer, or their authorized minter, can modify an NFT, and only if it was minted with the **Mutable** flag enabled.
_(Requires the [DynamicNFT amendment][] {% not-enabled /%}.)_
{% amendment-disclaimer name="DynamicNFT" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -1,6 +1,6 @@
---
seo:
description: Withdraw an offer to trade in the decentralized exchange.
description: Cancel an offer to trade in the decentralized exchange.
labels:
- Decentralized Exchange
---
@@ -8,7 +8,7 @@ labels:
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/CancelOffer.cpp "Source")
An OfferCancel transaction removes an Offer object from the XRP Ledger.
Cancel an [offer](../../../../concepts/tokens/decentralized-exchange/offers.md) in the decentralized exchange.
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -5,10 +5,9 @@ labels:
- Decentralized Exchange
---
# OfferCreate
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/CreateOffer.cpp "Source")
An OfferCreate transaction places an [Offer](../../../../concepts/tokens/decentralized-exchange/offers.md) in the [decentralized exchange](../../../../concepts/tokens/decentralized-exchange/index.md).
Place an [offer](../../../../concepts/tokens/decentralized-exchange/offers.md) to trade in the [decentralized exchange](../../../../concepts/tokens/decentralized-exchange/index.md).
## Example {% $frontmatter.seo.title %} JSON
@@ -36,7 +35,7 @@ An OfferCreate transaction places an [Offer](../../../../concepts/tokens/decentr
| Field | JSON Type | [Internal Type][] | Required? | Description |
|:-----------------|:--------------------|:------------------|:----------|-------------|
| `DomainID` | String - [Hash][] | UInt256 | No | The ledger entry ID of a permissioned domain. If provided, restrict this offer to the [permissioned DEX](../../../../concepts/tokens/decentralized-exchange/permissioned-dexes.md) of that domain. _(Requires the [PermissionedDEX amendment][] {% not-enabled /%})_ |
| `DomainID` | String - [Hash][] | UInt256 | No | The ledger entry ID of a permissioned domain. If provided, restrict this offer to the [permissioned DEX](../../../../concepts/tokens/decentralized-exchange/permissioned-dexes.md) of that domain. {% amendment-disclaimer name="PermissionedDEX" /%} |
| [`Expiration`](../../../../concepts/tokens/decentralized-exchange/offers.md#offer-expiration) | Number | UInt32 | No | Time after which the Offer is no longer active, in [seconds since the Ripple Epoch][]. |
| `OfferSequence` | Number | UInt32 | No | An Offer to delete first, specified in the same way as [OfferCancel][]. |
| `TakerGets` | [Currency Amount][] | Amount | Yes | The amount and type of currency being sold. |
@@ -52,7 +51,7 @@ Transactions of the OfferCreate type support additional values in the [`Flags` f
| `tfImmediateOrCancel` | `0x00020000` | 131072 | Treat the offer as an [Immediate or Cancel order](http://en.wikipedia.org/wiki/Immediate_or_cancel) and do not place an [Offer entry][] into the order books. The transaction trades as much as it can by consuming existing offers when it's processed. |
| `tfFillOrKill` | `0x00040000` | 262144 | Treat the offer as a [Fill or Kill order](http://en.wikipedia.org/wiki/Fill_or_kill), do not place an [Offer entry][] into the order books, and cancel the offer if it cannot be fully filled at the time of execution. By default, this means that the owner must receive the full `TakerPays` amount; if the `tfSell` flag is enabled, the owner must be able to spend the entire `TakerGets` amount instead. |
| `tfSell` | `0x00080000` | 524288 | Exchange the entire `TakerGets` amount, even if it means obtaining more than the `TakerPays` amount in exchange. |
| `tfHybrid` | `0x00100000` | 1048576 | Make this a hybrid offer that can use both a permissioned DEX and the open DEX. The `DomainID` field must be provided when using this flag. |
| `tfHybrid` | `0x00100000` | 1048576 | Make this a hybrid offer that can use both a permissioned DEX and the open DEX. The `DomainID` field must be provided when using this flag. {% amendment-disclaimer name="PermissionedDEX" /%} |
## Error Cases
@@ -67,7 +66,7 @@ Transactions of the OfferCreate type support additional values in the [`Flags` f
| `tecNO_AUTH` | The transaction involves a token whose issuer uses [Authorized Trust Lines](../../../../concepts/tokens/fungible-tokens/authorized-trust-lines.md) and the the trust line that would receive the tokens exists but has not been authorized. |
| `tecNO_ISSUER` | The transaction specifies a token whose `issuer` value is not a funded account in the ledger. |
| `tecNO_LINE` | The transaction involves a token whose issuer uses [Authorized Trust Lines](../../../../concepts/tokens/fungible-tokens/authorized-trust-lines.md) and the necessary trust line does not exist. |
| `tecNO_PERMISSION` | The transaction uses a `DomainID` but the sender is not a member of that domain. _(Requires the [PermissionedDEX amendment][] {% not-enabled /%})_ |
| `tecNO_PERMISSION` | The transaction uses a `DomainID` but the sender is not a member of that domain. {% amendment-disclaimer name="PermissionedDEX" /%} |
| `tecUNFUNDED_OFFER` | The owner does not hold a positive amount of the `TakerGets` currency. (Exception: if `TakerGets` specifies a token that the owner issues, the transaction can succeed.) |
| `temBAD_CURRENCY` | The transaction specifies a fungible token incorrectly, such as a fungible token with the currency code "XRP". |
| `temBAD_EXPIRATION` | The transaction contains an `Expiration` field that is not validly formatted. |

View File

@@ -5,13 +5,11 @@ labels:
- Oracle
---
# OracleDelete
_(Requires the [PriceOracle amendment][])_
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/DeleteOracle.cpp "Source")
Delete an `Oracle` ledger entry.
Delete a [price oracle](../../../../concepts/decentralized-storage/price-oracles.md). Only the owner of the price oracle can send this transaction.
_(Added by the [PriceOracle amendment][].)_
{% amendment-disclaimer name="PriceOracle" /%}
## Example OracleDelete JSON
@@ -29,8 +27,7 @@ _(Added by the [PriceOracle amendment][].)_
| Field | JSON Type | Internal Type | Required? | Description |
|--------------------|-----------|---------------|-----------|-------------|
| `Account` | String | AccountID | Yes | This account must match the account in the `Owner` field of the `Oracle` object. |
| `OracleDocumentID` | String | UInt32 | Yes | A unique identifier of the price oracle for the `Account`. |
| `OracleDocumentID` | Number | UInt32 | Yes | The identifying number of the price oracle, which must be unique per owner. |
## Error Cases

View File

@@ -7,9 +7,9 @@ labels:
# OracleSet
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/SetOracle.cpp "Source")
Creates a new `Oracle` ledger entry or updates the fields of an existing one, using the Oracle Document ID.
Create or update a [price oracle](../../../../concepts/decentralized-storage/price-oracles.md). Only the owner of an existing price oracle can update it.
_(Added by the [PriceOracle amendment][].)_
{% amendment-disclaimer name="PriceOracle" /%}
## Example OracleSet JSON
@@ -40,9 +40,8 @@ _(Added by the [PriceOracle amendment][].)_
| Field | JSON Type | Internal Type | Required? | Description |
|--------------------|-----------|---------------|-----------|-------------|
| `Account` | String | AccountID | Yes | This account must match the account in the `Owner` field of the `Oracle` object. |
| `OracleDocumentID` | Number | UInt32 | Yes | A unique identifier of the price oracle for the `Account`. |
| `Provider` | String | Blob | Variable | An arbitrary value that identifies an oracle provider, such as Chainlink, Band, or DIA. This field is a string, up to 256 ASCII hex encoded characters (0x20-0x7E). This field is required when creating a new `Oracle` ledger entry, but is optional for updates. |
| `OracleDocumentID` | Number | UInt32 | Yes | The identifying number of the price oracle, which must be unique per owner. |
| `Provider` | String | Blob | Variable | An arbitrary value that identifies an oracle provider, such as Chainlink, Band, or DIA. This field is a string, up to 256 ASCII hex encoded characters (0x20-0x7E). This field is required when creating a new price oracle, but is optional for updates. |
| `URI` | String | Blob | No | An optional Universal Resource Identifier to reference price data off-chain. This field is limited to 256 bytes. |
| `LastUpdateTime` | Number | UInt32 | Yes | The time the data was last updated, in seconds since the [UNIX Epoch](https://en.wikipedia.org/wiki/Unix_time). The value must be within 300 seconds (5 minutes) of the ledger's close time. |
| `AssetClass` | String | Blob | Variable | Describes the type of asset, such as "currency", "commodity", or "index". This field is a string, up to 16 ASCII hex encoded characters (0x20-0x7E). This field is required when creating a new `Oracle` ledger entry, but is optional for updates. |

View File

@@ -10,7 +10,7 @@ labels:
# Payment
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/Payment.cpp "Source")
A Payment transaction represents a transfer of value from one account to another. (Depending on the path taken, this can involve additional exchanges of value, which occur atomically.) This transaction type can be used for several [types of payments](#types-of-payments).
Send value to an account. (Depending on the path taken, this can involve exchanges of several types of funds, all of which occur atomically.) This transaction type can be used for several [types of payments](#types-of-payments).
Payments are also the only way to [create accounts](#creating-accounts).
@@ -40,12 +40,12 @@ Payments are also the only way to [create accounts](#creating-accounts).
| Field | JSON Type | [Internal Type][] | Required? | Description |
|:-----------------|:---------------------|:------------------|:----------|:------------|
| `Amount` | [Currency Amount][] | Amount | API v1: Yes | Alias to `DeliverMax`. |
| `CredentialIDs` | Array of Strings | Vector256 | No | Set of Credentials to authorize a deposit made by this transaction. Each member of the array must be the ledger entry ID of a Credential entry in the ledger. _(Requires the [Credentials amendment][]._ {% not-enabled /%})_ |
| `CredentialIDs` | Array of Strings | Vector256 | No | Set of Credentials to authorize a deposit made by this transaction. Each member of the array must be the ledger entry ID of a Credential entry in the ledger. {% amendment-disclaimer name="Credentials" /%} |
| `DeliverMax` | [Currency Amount][] | Amount | Yes | [API v2][]: The maximum amount of currency to deliver. [Partial payments](#partial-payments) can deliver less than this amount and still succeed; other payments fail unless they deliver the exact amount. {% badge href="https://github.com/XRPLF/rippled/releases/tag/2.0.0" %}New in: rippled 2.0.0{% /badge %} |
| `DeliverMin` | [Currency Amount][] | Amount | No | Minimum amount of destination currency this transaction should deliver. Only valid if this is a [partial payment](#partial-payments). |
| `Destination` | String - [Address][] | AccountID | Yes | The account receiving the payment. |
| `DestinationTag` | Number | UInt32 | No | Arbitrary tag that identifies the reason for the payment to the destination, or a hosted recipient to pay. |
| `DomainID` | String - [Hash][] | UInt256 | No | The ledger entry ID of a permissioned domain. If this is a cross-currency payment, only use the corresponding [permissioned DEX](../../../../concepts/tokens/decentralized-exchange/permissioned-dexes.md) to convert currency. Both the sender and the recipient must have valid credentials that grant access to the specified domain. This field has no effect if the payment is not cross-currency. _(Requires the [PermissionedDEX amendment][] {% not-enabled /%})_ |
| `DomainID` | String - [Hash][] | UInt256 | No | The ledger entry ID of a permissioned domain. If this is a cross-currency payment, only use the corresponding [permissioned DEX](../../../../concepts/tokens/decentralized-exchange/permissioned-dexes.md) to convert currency. Both the sender and the recipient must have valid credentials that grant access to the specified domain. This field has no effect if the payment is not cross-currency. {% amendment-disclaimer name="PermissionedDEX" %/} |
| `InvoiceID` | String - Hexadecimal | UInt256 | No | Arbitrary 256-bit value representing a specific reason or identifier for this payment. |
| `Paths` | Array of path arrays | PathSet | No | _(Auto-fillable)_ Array of [payment paths](../../../../concepts/tokens/fungible-tokens/paths.md) to be used for this transaction. Must be omitted for XRP-to-XRP transactions. |
| `SendMax` | [Currency Amount][] | Amount | No | Highest amount of source currency this transaction is allowed to cost, including [transfer fees](../../../../concepts/tokens/fungible-tokens/transfer-fees.md), exchange rates, and [slippage](http://en.wikipedia.org/wiki/Slippage_%28finance%29). Does not include the [XRP destroyed as a cost for submitting the transaction](../../../../concepts/transactions/transaction-cost.md). Must be supplied for cross-currency/cross-issue payments. Must be omitted for XRP-to-XRP payments. |
@@ -145,12 +145,12 @@ In the above example with a ¥95/$15 offer and a ¥5/$2 offer, the situation is
## MPT Payments
_(Requires the [MPTokensV1 amendment][] {% not-enabled /%})_
When you send a payment using [MPTs](/docs/concepts/tokens/fungible-tokens/multi-purpose-tokens), the _Amount_ field requires only the `mpt_issuance_id` and the `value`. The `MPTokenIssuanceID` is used to uniquely identify the MPT for the transaction.
Version 1 MPTokens only support direct MPT payment between accounts. They cannot be traded in the decentralized exchange.
{% amendment-disclaimer name="MPTokensV1" /%}
### Sample MPT Payment transaction
```json
@@ -175,7 +175,7 @@ Version 1 MPTokens only support direct MPT payment between accounts. They cannot
```
## Credential IDs
_(Requires the [Credentials amendment][] {% not-enabled /%})_
{% amendment-disclaimer name="Credentials" /%}
You can send money to an account that uses [Deposit Authorization](../../../../concepts/accounts/depositauth.md) by providing the `CredentialIDs` field with an exact set of credentials that are preauthorized by the recipient. The set of credentials must match a [DepositPreauth entry](../../ledger-data/ledger-entry-types/depositpreauth.md) in the ledger.

View File

@@ -7,7 +7,7 @@ labels:
# PaymentChannelClaim
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/PayChan.cpp "Source")
Claim funds from a payment channel, adjust the payment channel's expiration, or both. This transaction can be used differently depending on the transaction sender's role in the specified channel:
Claim funds from a [payment channel](../../../../concepts/payment-types/payment-channels.md), adjust the payment channel's expiration, or both. This transaction can be used differently depending on the transaction sender's role in the specified channel:
The **source address** of a channel can:
@@ -25,7 +25,7 @@ The **destination address** of a channel can:
- Cause a channel to be closed if its `Expiration` or `CancelAfter` time is older than the previous ledger's close time. Any validly formed `PaymentChannelClaim` transaction has this effect, regardless of the contents of the transaction.
_(Added by the [PayChan amendment][].)_
{% amendment-disclaimer name="PayChan" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -9,7 +9,7 @@ labels:
Create a [payment channel](../../../../concepts/payment-types/payment-channels.md) and fund it. The address sending this transaction becomes the "source address" of the payment channel.
_(Added by the [PayChan amendment][].)_
{% amendment-disclaimer name="PayChan" /%}
## Example {% $frontmatter.seo.title %} JSON
@@ -41,7 +41,7 @@ _(Added by the [PayChan amendment][].)_
| `CancelAfter` | Number | UInt32 | No | The time, in [seconds since the Ripple Epoch][], when this channel expires. Any transaction that would modify the channel after this time closes the channel without otherwise affecting it. This value is immutable; the channel can be closed earlier than this time but cannot remain open after this time. |
| `DestinationTag` | Number | UInt32 | No | Arbitrary tag to further specify the destination for this payment channel, such as a hosted recipient at the destination address. |
If the `Destination` account is blocking incoming payment channels, the transaction fails with result code `tecNO_PERMISSION`. _(Requires the [DisallowIncoming amendment][] )_
If the `Destination` account is blocking incoming payment channels, the transaction fails with result code `tecNO_PERMISSION`. {% amendment-disclaimer name="DisallowIncoming" /%}
## See Also

View File

@@ -9,7 +9,7 @@ labels:
Add an additional amount to an open [payment channel](../../../../concepts/payment-types/payment-channels.md), and optionally update the expiration time of the channel. Only the source account of the channel can use this transaction.
_(Added by the [PayChan amendment][].)_
{% amendment-disclaimer name="PayChan" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -2,15 +2,16 @@
seo:
description: Delete a permissioned domain.
labels:
- Compliance
- Permissioned Domains
- Compliance
- Permissioned Domains
status: not_enabled
---
# PermissionedDomainDelete
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/PermissionedDomainDelete.cpp "Source")
Delete a [permissioned domain][] that you own.
_(Requires the [PermissionedDomains amendment][] {% not-enabled /%})_
{% amendment-disclaimer name="PermissionedDomains" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -2,15 +2,16 @@
seo:
description: Create or update a permissioned domain.
labels:
- Compliance
- Permissioned Domains
- Compliance
- Permissioned Domains
status: not_enabled
---
# PermissionedDomainSet
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/PermissionedDomainSet.cpp "Source")
Create a [permissioned domain][], or modify one that you own.
_(Requires the [PermissionedDomains amendment][] {% not-enabled /%})_
{% amendment-disclaimer name="PermissionedDomains" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -2,13 +2,13 @@
seo:
description: Add, remove, or modify an account's regular key pair.
labels:
- Security
- Security
---
# SetRegularKey
[[Source]](https://github.com/XRPLF/rippled/blob/4239880acb5e559446d2067f00dabb31cf102a23/src/ripple/app/transactors/SetRegularKey.cpp "Source")
A `SetRegularKey` transaction assigns, changes, or removes the regular key pair associated with an account.
Assign, change, or remove the [regular key pair](../../../../concepts/accounts/cryptographic-keys.md) associated with your account.
You can protect your account by assigning a regular key pair to it and using it instead of the master key pair to sign transactions whenever possible. If your regular key pair is compromised, but your master key pair is not, you can use a `SetRegularKey` transaction to regain control of your account.
@@ -27,7 +27,6 @@ You can protect your account by assigning a regular key pair to it and using it
{% tx-example txid="6AA6F6EAAAB56E65F7F738A9A2A8A7525439D65BA990E9BA08F6F4B1C2D349B4" /%}
{% raw-partial file="/docs/_snippets/tx-fields-intro.md" /%}
<!--{# fix md highlighting_ #}-->
| Field | JSON Type | [Internal Type][] | Description |
|:-------------|:----------|:------------------|:------------------------------|

View File

@@ -5,10 +5,12 @@ labels:
- Security
---
# SignerListSet
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/SetSignerList.cpp "Source")
The SignerListSet transaction creates, replaces, or removes a list of signers that can be used to [multi-sign](../../../../concepts/accounts/multi-signing.md) a transaction. This transaction type was introduced by the [MultiSign amendment][].
Create, replace, or remove a list of signers that can be used to [multi-sign](../../../../concepts/accounts/multi-signing.md) a transaction.
{% amendment-disclaimer name="MultiSign" /%}
## Example {% $frontmatter.seo.title %} JSON
@@ -45,7 +47,6 @@ The SignerListSet transaction creates, replaces, or removes a list of signers th
{% tx-example txid="09A9C86BF20695735AB03620EB1C32606635AC3DA0B70282F37C674FC889EFE7" /%}
{% raw-partial file="/docs/_snippets/tx-fields-intro.md" /%}
<!--{# fix md highlighting_ #}-->
| Field | JSON Type | [Internal Type][] | Description |
|:----------------|:----------|:------------------|:-----------------------------|

View File

@@ -5,12 +5,11 @@ labels:
- Transaction Sending
---
# TicketCreate
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/CreateTicket.cpp "Source")
_(Added by the [TicketBatch amendment][].)_
Set aside one or more [sequence numbers][Sequence Number] as [tickets](../../../../concepts/accounts/tickets.md).
A TicketCreate transaction sets aside one or more [sequence numbers][Sequence Number] as [Tickets](../../../../concepts/accounts/tickets.md).
{% amendment-disclaimer name="TicketBatch" /%}
## Example {% $frontmatter.seo.title %} JSON

View File

@@ -5,7 +5,6 @@ labels:
- Tokens
---
# TrustSet
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/SetTrust.cpp "Source")
Create or modify a [trust line](../../../../concepts/tokens/fungible-tokens/index.md) linking two accounts.
@@ -31,7 +30,6 @@ Create or modify a [trust line](../../../../concepts/tokens/fungible-tokens/inde
{% tx-example txid="8566673ECD0A9731C516906E5D2F47129C5C13713602140733831A56CEAE1A05" /%}
{% raw-partial file="/docs/_snippets/tx-fields-intro.md" /%}
<!--{# fix md highlighting_ #}-->
| Field | JSON Type | [Internal Type][] | Description |
|:-------------------------|:----------|:------------------|:------------------|
@@ -42,7 +40,7 @@ Create or modify a [trust line](../../../../concepts/tokens/fungible-tokens/inde
| `QualityIn` | Number | UInt32 | _(Optional)_ Value incoming balances on this trust line at the ratio of this number per 1,000,000,000 units. A value of `0` is shorthand for treating balances at face value. For example, if you set the value to 10,000,000, 1% of incoming funds remain with the sender. If an account sends 100 currency, the sender retains 1 currency unit and the destination receives 99 units. This option is included for parity: in practice, you are much more likely to set a `QualityOut` value. Note that this fee is separate and independent from token transfer fees. |
| `QualityOut` | Number | UInt32 | _(Optional)_ Value outgoing balances on this trust line at the ratio of this number per 1,000,000,000 units. A value of `0` is shorthand for treating balances at face value. For example, if you set the value to 10,000,000, 1% of outgoing funds would remain with the issuer. If the sender sends 100 currency units, the issuer retains 1 currency unit and the destination receives 99 units. Note that this fee is separate and independent from token transfer fees. |
If the account specified in `LimitAmount.issuer` is blocking incoming trust lines, the transaction fails with the result code `tecNO_PERMISSION`. _(Requires the [DisallowIncoming amendment][] )_
If the account specified in `LimitAmount.issuer` is blocking incoming trust lines, the transaction fails with the result code `tecNO_PERMISSION`. {% amendment-disclaimer name="DisallowIncoming" /%}
## TrustSet Flags

View File

@@ -8,15 +8,13 @@ status: not_enabled
# XChainAccountCreateCommit
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/ripple/protocol/impl/TxFormats.cpp#L466-L474 "Source")
_(Requires the [XChainBridge amendment][] {% not-enabled /%})_
This transaction can only be used for XRP-XRP bridges.
The `XChainAccountCreateCommit` transaction creates a new account for a witness server to submit transactions on an issuing chain.
Create a new account for a [witness server](../../../../concepts/xrpl-sidechains/witness-servers.md) to submit transactions on an issuing chain. This transaction can only be used for XRP-XRP bridges.
{% admonition type="danger" name="Warning" %}This transaction should only be executed if the witness attestations will be reliably delivered to the destination chain. If the signatures aren't delivered, then account creation will be blocked until attestations are received. This can be used maliciously; to disable this transaction on XRP-XRP bridges, omit the bridge's `MinAccountCreateAmount` field.{% /admonition %}
{% amendment-disclaimer name="XChainBridge" /%}
## Example XChainAccountCreateCommit JSON
```json

View File

@@ -8,9 +8,7 @@ status: not_enabled
# XChainAddAccountCreateAttestation
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/ripple/protocol/impl/TxFormats.cpp#L447-L464 "Source")
_(Requires the [XChainBridge amendment][] {% not-enabled /%})_
The `XChainAddAccountCreateAttestation` transaction provides an attestation from a witness server that an `XChainAccountCreateCommit` transaction occurred on the other chain.
Provide an attestation from a [witness server](../../../../concepts/xrpl-sidechains/witness-servers.md) that an `XChainAccountCreateCommit` transaction occurred on the other chain.
The signature must be from one of the keys on the door's signer list at the time the signature was provided. If the signature list changes between the time the signature was submitted and the quorum is reached, the new signature set is used and some of the currently collected signatures may be removed.
@@ -18,6 +16,7 @@ Any account can submit signatures.
{% admonition type="info" name="Note" %}The reward is only sent to accounts that have keys on the current list. A quorum of signers need to agree on the `SignatureReward`, the same way they need to agree on the other data. A single witness server can't provide an incorrect value for this in an attempt to collect a larger reward.{% /admonition %}
{% amendment-disclaimer name="XChainBridge" /%}
## Example XChainAddAccountCreateAttestation JSON

View File

@@ -8,9 +8,7 @@ status: not_enabled
# XChainAddClaimAttestation
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/ripple/protocol/impl/TxFormats.cpp#L429-L445 "Source")
_(Requires the [XChainBridge amendment][] {% not-enabled /%})_
The `XChainAddClaimAttestation` transaction provides proof from a witness server, attesting to an `XChainCommit` transaction.
Provide proof from a [witness server](../../../../concepts/xrpl-sidechains/witness-servers.md) attesting to an `XChainCommit` transaction.
The signature must be from one of the keys on the door's signer list at the time the signature was provided. However, if the signature list changes between the time the signature was submitted and the quorum is reached, the new signature set is used and some of the currently collected signatures may be removed.
@@ -18,6 +16,7 @@ Any account can submit signatures.
{% admonition type="info" name="Note" %}The reward is only sent to accounts that have keys on the current list. A quorum of signers need to agree on the `SignatureReward`, the same way they need to agree on the other data. A single witness server can't provide an incorrect value for this in an attempt to collect a larger reward.{% /admonition %}
{% amendment-disclaimer name="XChainBridge" /%}
## Example XChainAddClaimAttestation JSON

View File

@@ -6,14 +6,13 @@ labels:
status: not_enabled
---
# XChainClaim
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/ripple/protocol/impl/TxFormats.cpp#L418-L427 "Source")
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/XChainBridge.cpp "Source")
_(Requires the [XChainBridge amendment][] {% not-enabled /%})_
The `XChainClaim` transaction completes a cross-chain transfer of value. It allows a user to claim the value on the destination chain - the equivalent of the value locked on the source chain. A user can only claim the value if they own the cross-chain claim ID associated with the value locked on the source chain (the `Account` field). The user can send the funds to anyone (the `Destination` field). This transaction is only needed if an `OtherChainDestination` isn't specified in the `XChainCommit` transaction, or if something goes wrong with the automatic transfer of funds.
Complete a [cross-chain transfer of value](../../../../concepts/xrpl-sidechains/cross-chain-bridges.md). It allows a user to claim the value on the destination chain - the equivalent of the value locked on the source chain. A user can only claim the value if they own the cross-chain claim ID associated with the value locked on the source chain (the `Account` field). The user can send the funds to anyone (the `Destination` field). This transaction is only needed if an `OtherChainDestination` isn't specified in the `XChainCommit` transaction, or if something goes wrong with the automatic transfer of funds.
If the transaction succeeds in moving funds, the referenced `XChainOwnedClaimID` ledger object will be destroyed. This prevents transaction replay. If the transaction fails, the `XChainOwnedClaimID` won't be destroyed and the transaction can be re-run with different parameters.
{% amendment-disclaimer name="XChainBridge" /%}
## Example XChainClaim JSON

View File

@@ -6,12 +6,14 @@ labels:
status: not_enabled
---
# XChainCommit
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/ripple/protocol/impl/TxFormats.cpp#L408-L416 "Source")
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/XChainBridge.cpp "Source")
_(Requires the [XChainBridge amendment][] {% not-enabled /%})_
Do the second step in a [cross-chain transfer](../../../../concepts/xrpl-sidechains/cross-chain-bridges.md). This transaciton has two modes:
The `XChainCommit` is the second step in a cross-chain transfer. It puts assets into trust on the locking chain so that they can be wrapped on the issuing chain, or burns wrapped assets on the issuing chain so that they can be returned on the locking chain.
- Put assets into trust on the locking chain so that they can be wrapped on the issuing chain.
- Burns wrapped assets on the issuing chain so that they can be returned on the locking chain.
{% amendment-disclaimer name="XChainBridge" /%}
## Example XChainCommit JSON

View File

@@ -6,11 +6,9 @@ labels:
status: not_enabled
---
# XChainCreateBridge
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/ripple/protocol/impl/TxFormats.cpp#L381-L388 "Source")
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/XChainBridge.cpp "Source")
_(Requires the [XChainBridge amendment][] {% not-enabled /%})_
The `XChainCreateBridge` transaction creates a new `Bridge` ledger object and defines a new cross-chain bridge entrance on the chain that the transaction is submitted on. It includes information about door accounts and assets for the bridge.
Creates a new [cross-chain bridge](../../../../concepts/xrpl-sidechains/cross-chain-bridges.md) on the chain that the transaction is submitted on, providing information about door accounts and assets for the bridge.
The transaction must be submitted first by the locking chain door account. To set up a valid bridge, door accounts on both chains must submit this transaction, in addition to setting up witness servers.
@@ -18,6 +16,7 @@ The complete production-grade setup would also include a `SignerListSet` transac
{% admonition type="info" name="Note" %}Each door account can only have one bridge. This prevents the creation of duplicate bridges for the same asset, which can cause asset imbalances on either chain.{% /admonition %}
{% amendment-disclaimer name="XChainBridge" /%}
## Example XChainCreateBridge JSON

View File

@@ -6,16 +6,15 @@ labels:
status: not_enabled
---
# XChainCreateClaimID
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/ripple/protocol/impl/TxFormats.cpp#L399-L406 "Source")
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/XChainBridge.cpp "Source")
_(Requires the [XChainBridge amendment][] {% not-enabled /%})_
The `XChainCreateClaimID` transaction creates a new cross-chain claim ID that is used for a cross-chain transfer. A cross-chain claim ID represents *one* cross-chain transfer of value.
Create a new cross-chain claim ID that is used for a [cross-chain transfer](../../../../concepts/xrpl-sidechains/cross-chain-bridges.md). A cross-chain claim ID represents *one* cross-chain transfer of value.
This transaction is the first step of a cross-chain transfer of value and is submitted on the destination chain, not the source chain.
It also includes the account on the source chain that locks or burns the funds on the source chain.
{% amendment-disclaimer name="XChainBridge" /%}
## Example XChainCreateClaimID JSON

View File

@@ -6,16 +6,15 @@ labels:
status: not_enabled
---
# XChainModifyBridge
[[Source]](https://github.com/XRPLF/rippled/blob/develop/src/ripple/protocol/impl/TxFormats.cpp#L390-L397 "Source")
[[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/XChainBridge.cpp "Source")
_(Requires the [XChainBridge amendment][] {% not-enabled /%})_
The `XChainModifyBridge` transaction allows bridge managers to modify the parameters of the bridge. They can only change the `SignatureReward` and the `MinAccountCreateAmount`.
Modify the parameters of a [cross-chain bridge](../../../../concepts/xrpl-sidechains/cross-chain-bridges.md). Only managers can send this transaction, and they can only change the `SignatureReward` and the `MinAccountCreateAmount`.
This transaction must be sent by the door account and requires the entities that control the witness servers to coordinate and provide the signatures for this transaction. This coordination happens outside the ledger.
{% admonition type="info" name="Note" %}You can't modify the signer list for the bridge with this transaction. The signer list is on the door account itself and is changed in the same way signer lists are changed on accounts (via a `SignerListSet` transaction).{% /admonition %}
{% amendment-disclaimer name="XChainBridge" /%}
## Example XChainModifyBridge JSON