mirror of
https://github.com/XRPLF/xrpl-dev-portal.git
synced 2026-04-15 08:12:31 +00:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2fd46e197b | ||
|
|
cf92ef36ae | ||
|
|
02b275e157 |
@@ -23,7 +23,7 @@ const softwallets = [
|
||||
{ href: "https://coin.space/", id: "wallet-coin", alt: "Coin Space" },
|
||||
{ href: "https://crossmark.io/", id: "wallet-crossmark", alt: "Crossmark Wallet" },
|
||||
{ href: "https://gatehub.net/", id: "wallet-gatehub", alt: "Gatehub", imgclasses: "invertible-img" },
|
||||
{ href: "https://gemwallet.app/", id: "wallet-gem", alt: "Gem Wallet" },
|
||||
{ href: "https://gemwallet.com/", id: "wallet-gem", alt: "Gem Wallet" },
|
||||
{ href: "https://joeywallet.xyz/", id: "wallet-joey", alt: "Joey Wallet" },
|
||||
{ href: "https://trustwallet.com/", id: "wallet-trust", alt: "Trust Wallet" },
|
||||
{ href: "https://xaman.app/", id: "wallet-xumm", alt: "Xaman" }
|
||||
|
||||
@@ -168,40 +168,3 @@ If Alice just signs her part of the Batch transaction, Bob can modify his transa
|
||||
An inner batch transaction is a special case. It doesn't include a signature or a fee (since those are both included in the outer transaction). Therefore, they must be handled carefully to ensure that someone can't somehow directly submit an inner `Batch` transaction without it being included in an outer transaction.
|
||||
|
||||
Inner transactions cannot be broadcast (and won't be accepted if they happen to be broadcast, for example, from a malicious node). They must be generated from the `Batch` outer transaction instead. Inner transactions cannot be directly submitted via the submit RPC.
|
||||
|
||||
## Integration Considerations
|
||||
|
||||
`Batch` transactions have some unique integration considerations:
|
||||
|
||||
- Since the outer transaction returns `tesSUCCESS` even when inner transactions fail (see [Metadata](#metadata)), you must check each inner transaction's metadata and result codes to determine its actual outcome.
|
||||
- If inner transactions are validated, they are included in the same ledger as the outer transaction. If an inner transaction appears in a different ledger, it is likely a fraud attempt.
|
||||
- Systems that don't specifically handle `Batch` transactions should be able to support them without any changes, since each inner transaction is a valid transaction on its own. All inner transactions that have a `tes` (success) or `tec` result code are accessible via standard transaction-fetching mechanisms such as [`tx`](/docs/references/http-websocket-apis/public-api-methods/transaction-methods/tx.md) and [`account_tx`](/docs/references/http-websocket-apis/public-api-methods/account-methods/account_tx.md).
|
||||
- In a multi-account `Batch` transaction, only the inner transactions and batch mode flags are signed by all parties. This means the submitter of the outer transaction can adjust the sequence number and fee of the outer transaction as needed, without coordinating with the other parties.
|
||||
|
||||
The following sections cover additional recommendations for specific types of integrations.
|
||||
|
||||
### Client Libraries
|
||||
|
||||
Client libraries that implement `Batch` transaction support should:
|
||||
|
||||
- Provide a helper method to calculate the fee for a `Batch` transaction, since the fee includes the sum of all inner transaction fees. See [XRPL Batch Transaction Fees](#xrpl-batch-transaction-fees).
|
||||
- Provide a helper method to construct and sign multi-account `Batch` transactions, where one party signs the outer transaction and the other parties sign the inner transactions.
|
||||
- Provide an auto-fill method that sets each inner transaction's `Fee` to `"0"` and the `SigningPubKey` to an empty string (`""`), while omitting the `TxnSignature` field.
|
||||
|
||||
### Wallets
|
||||
|
||||
Wallets that display or sign `Batch` transactions should:
|
||||
|
||||
- Clearly display all inner transactions to users before requesting a signature, so users understand the full scope of what they are approving.
|
||||
- For multi-account `Batch` transactions, provide a workflow for users to review and sign their portion of the batch, then export it for other parties to sign.
|
||||
- Warn users if they are signing a `Batch` transaction that includes inner transactions from other accounts, since they are approving the entire batch.
|
||||
- Display the batch mode (`ALLORNOTHING`, `ONLYONE`, `UNTILFAILURE`, `INDEPENDENT`) and explain its implications.
|
||||
- Avoid auto-incrementing sequence numbers after successes or failures, since the number of validated transactions depends on the batch mode and which inner transactions succeed.
|
||||
|
||||
### Explorers and Indexers
|
||||
|
||||
Explorers and indexers that display `Batch` transactions should:
|
||||
|
||||
- Display the relationship between outer `Batch` transactions and their inner transactions using the `ParentBatchID` field in the inner transaction metadata.
|
||||
- Show inner transactions in context with their parent `Batch` transaction, rather than as standalone transactions.
|
||||
- Consider grouping inner transactions with their outer transaction in transaction lists for clarity.
|
||||
|
||||
@@ -23,6 +23,11 @@ The following is a list of [amendments](../docs/concepts/networks-and-servers/am
|
||||
|:----------------------------------|:------------------------------------------|:-------------------------------|
|
||||
| [Hooks][] | {% badge %}In Development: TBD{% /badge %} | [XRPL Hooks](https://hooks.xrpl.org/) |
|
||||
| [InvariantsV1_1][] | {% badge %}In Development: TBD{% /badge %} | |
|
||||
| [DynamicMPT][] | {% badge %}In Development: TBD{% /badge %} | [XLS-94 Dynamic MPTs](https://opensource.ripple.com/docs/xls-94-dynamic-mpts) |
|
||||
| [ConfidentialTransfer][] | {% badge %}In Development: TBD{% /badge %} | [XLS-96 Confidential Transfers](https://opensource.ripple.com/docs/xls-96-confidential-transfers) |
|
||||
| [MPTokensV2][] | {% badge %}In Development: TBD{% /badge %} | [XLS-82 MPT DEX Integration](https://opensource.ripple.com/docs/xls-82-mpt-dex) |
|
||||
| [Sponsor][] | {% badge %}In Development: TBD{% /badge %} | [XLS-68 Sponsored Fees and Reserves](https://opensource.ripple.com/docs/xls-68-sponsored-fees-and-reserves) |
|
||||
| [SmartEscrow][] | {% badge %}In Development: TBD{% /badge %} | [XLS-100 Smart Escrows](https://opensource.ripple.com/docs/xls-100-smart-escrows) |
|
||||
|
||||
{% admonition type="success" name="Tip" %}
|
||||
This list is updated manually. If you're working on an amendment and have a private network to test the changes, you can edit this page to add your in-development amendment to this list. For more information on contributing to the XRP Ledger, see [Contribute Code to the XRP Ledger](contribute-code/index.md).
|
||||
@@ -203,7 +208,22 @@ Modifies an existing type of ledger entry:
|
||||
|
||||
Also extends the `deposit_authorized` API method to check for credential-based auth and extends the `ledger_entry` method to allow lookup of Credential entries.
|
||||
|
||||
For more details, see the [XLS-70: Credentials specification](https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0070-credentials).
|
||||
For more details, see [XLS-70: Credentials specification](https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0070-credentials).
|
||||
|
||||
|
||||
### ConfidentialTransfer
|
||||
[ConfidentialTransfer]: #confidentialtransfer
|
||||
|
||||
| Amendment | ConfidentialTransfer |
|
||||
|:-------------|:---------------------|
|
||||
| Amendment ID | 2110E4A19966E2EF517C0A8C56A5F35099D7665B0BB89D7B126B30D50B86AAD5 |
|
||||
| Status | In Development |
|
||||
| Default Vote (Latest stable release) | No |
|
||||
| Pre-amendment functionality retired? | No |
|
||||
|
||||
Provides institutional-grade privacy for Multi-Purpose Tokens (MPTs) using advanced cryptography (EC-ElGamal and ZKPs). Individual balances and transfer amounts remain shielded from the public ledger while maintaining compliance mechanisms for authorized parties (issuers, auditors, or designated entities) to verify total supply and meet regulatory obligations.
|
||||
|
||||
For more details, see [XLS-96: Confidential Transfers](https://opensource.ripple.com/docs/xls-96-confidential-transfers).
|
||||
|
||||
|
||||
### CryptoConditions
|
||||
@@ -371,6 +391,21 @@ Adds functionality to update the `URI` field of an `NFToken` ledger entry. This
|
||||
2. `tfMutable`: New flag that enables authorized accounts to modify the `URI` of an NFT. This flag must be enabled when the NFT is initially minted.
|
||||
|
||||
|
||||
### DynamicMPT
|
||||
[DynamicMPT]: #dynamicmpt
|
||||
|
||||
| Amendment | DynamicMPT |
|
||||
|:-------------|:-----------|
|
||||
| Amendment ID | 58E92F338758479C06084E1B6BA366BAD8F75E5329A7F0EEAFFFDA51E5106B7F |
|
||||
| Status | In Development |
|
||||
| Default Vote (Latest stable release) | No |
|
||||
| Pre-amendment functionality retired? | No |
|
||||
|
||||
Extends Multi-Purpose Tokens to allow issuers to designate specific properties as mutable during token creation, enabling selected attributes to be updated later as business needs change.
|
||||
|
||||
For more details, see [XLS-94: Dynamic MPTs](https://opensource.ripple.com/docs/xls-94-dynamic-mpts).
|
||||
|
||||
|
||||
### EnforceInvariants
|
||||
[EnforceInvariants]: #enforceinvariants
|
||||
|
||||
@@ -1532,6 +1567,21 @@ Implements a new type of fungible token, called a _Multi-Purpose Token_ (MPT). T
|
||||
- (Updated) `ledger_entry` method - Can look up MPToken and MPTokenIssuance ledger entry types.
|
||||
|
||||
|
||||
### MPTokensV2
|
||||
[MPTokensV2]: #mptokensv2
|
||||
|
||||
| Amendment | MPTokensV2 |
|
||||
|:-------------|:-----------|
|
||||
| Amendment ID | BE2D87DF21B690ED1497B593FDC013CC04276302380B1BD50A033DCF8DEFB2EB |
|
||||
| Status | In Development |
|
||||
| Default Vote (Latest stable release) | No |
|
||||
| Pre-amendment functionality retired? | No |
|
||||
|
||||
Extends the XRPL's Decentralized Exchange to natively support Multi-Purpose Tokens (MPTs) as a tradeable asset class. MPTs can be paired with XRP, Trust Line tokens, or other MPTs across existing DEX transactions such as OfferCreate, Payment, AMM, and Checks.
|
||||
|
||||
For more details, see [XLS-82: MPT DEX Integration](https://opensource.ripple.com/docs/xls-82-mpt-dex).
|
||||
|
||||
|
||||
### MultiSign
|
||||
[MultiSign]: #multisign
|
||||
|
||||
@@ -1826,6 +1876,21 @@ Creates a structure for aggregating assets from multiple depositors. This is int
|
||||
|
||||
Specification: [XLS-65](https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0065-single-asset-vault).
|
||||
|
||||
### SmartEscrow
|
||||
[SmartEscrow]: #smartescrow
|
||||
|
||||
| Amendment | SmartEscrow |
|
||||
|:-------------|:--------------|
|
||||
| Amendment ID | 78ECD9CE17B0BF5B83BB3B275921FB5F5E0F672E9D24BD2E848B7C6277AE296E |
|
||||
| Status | In Development |
|
||||
| Default Vote (Latest stable release) | No |
|
||||
| Pre-amendment functionality retired? | No |
|
||||
|
||||
The Smart Escrows amendment introduces a new programmability layer to the XRPL, powered by a WebAssembly (WASM) engine. Developers can write custom functions that control when an escrow can be finished.
|
||||
|
||||
For more details, see [XLS-100: Smart Escrows](https://opensource.ripple.com/docs/xls-100-smart-escrows).
|
||||
|
||||
|
||||
### SortedDirectories
|
||||
[SortedDirectories]: #sorteddirectories
|
||||
|
||||
@@ -1841,6 +1906,21 @@ Sorts the entries in [DirectoryNode ledger objects](../docs/references/protocol/
|
||||
{% admonition type="danger" name="Warning" %}Older versions of `rippled` that do not know about this amendment may crash when they find a DirectoryNode sorted by the new rules. To avoid this problem, [upgrade](../docs/infrastructure/installation/index.md) to `rippled` version 0.80.0 or later.{% /admonition %}
|
||||
|
||||
|
||||
### Sponsor
|
||||
[Sponsor]: #sponsor
|
||||
|
||||
| Amendment | Sponsor |
|
||||
|:-------------|:--------|
|
||||
| Amendment ID | BE1F90581635DBCEBFC4678C4B54FEDDC1A17B50FD02CFE765A4132A342126AC |
|
||||
| Status | In Development |
|
||||
| Default Vote (Latest stable release) | No |
|
||||
| Pre-amendment functionality retired? | No |
|
||||
|
||||
The Sponsor amendment removes onboarding friction by allowing companies, token issuers, and other entities to subsidize transaction costs and reserve requirements for end users. Sponsors can co-sign transactions or pre-fund sponsorships, covering fees and reserves, while sponsees retain full control of their accounts and keys.
|
||||
|
||||
For more details, see [XLS-68: Sponsored Fees and Reserves](https://opensource.ripple.com/docs/xls-68-sponsored-fees-and-reserves).
|
||||
|
||||
|
||||
### SusPay
|
||||
[SusPay]: #suspay
|
||||
|
||||
|
||||
Reference in New Issue
Block a user