Skip to content

Commit 293b025

Browse files
authored
Merge branch 'master' into xls-54d
2 parents 245b9d6 + a76ff99 commit 293b025

File tree

8 files changed

+461
-32
lines changed

8 files changed

+461
-32
lines changed

XLS-0006-visual-account-icons/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
xls: 6
33
title: Standard for Visual Account Icons
44
description: A standard for visually distinguishing XRPL accounts by generating unique icons for each account, regardless of address format.
5-
author: Richard Holland (RichardAH)
5+
author: Richard Holland (@RichardAH)
66
discussion-from: https://github.com/XRPLF/XRPL-Standards/discussions/24
77
status: Final
88
category: Community

XLS-0022-api-versioning/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
xls: 22
33
title: rippled API Versioning
44
description: The API version number allows for evolving the `rippled` API while maintaining backward compatibility
5-
author: Elliot Lee (intelliot), Peng Wang (pwang200)
5+
author: Elliot Lee (@intelliot), Peng Wang (@pwang200)
66
status: Final
77
category: Protocol
88
created: 2021-08-11

XLS-0025-enhanced-secret-numbers/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
xls: 25
33
title: Enhanced Secret Numbers
44
description: Enhances XLS-12 secret number format by introducing an additional block for encoding ancillary information, and supporingt for longer secrets.
5-
author: Nik Bougalis (nikb@bougalis.net)
5+
author: Nik Bougalis <nikb@bougalis.net>
66
status: Final
77
category: Community
88
created: 2021-12-10

XLS-0041-xpop/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<pre>
22
xls: 41
33
title: XRPL Proof of Payment Standard (XPOP)
4-
author: Richard Holland (RichardAH)
4+
author: Richard Holland (@RichardAH)
55
description: An offline non-interactive cryptographic proof that a transaction was successfully submitted to the XRP Ledger and what its impact (metadata) was
66
created: 2023-05-04
77
status: Final

XLS-0064-pseudo-account/README.md

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ updated: 2025-08-29
1111

1212
### Abstract
1313

14-
This document proposes a standard for a *pseudo-account*, an `AccountRoot` ledger entry that can be associated with one or more other ledger entries. A pseudo-account is designed to hold and/or issue assets on behalf of its associated entries, enabling protocol-level functionality that requires an on-ledger entity to manage funds.
14+
This document proposes a standard for a _pseudo-account_, an `AccountRoot` ledger entry that can be associated with one or more other ledger entries. A pseudo-account is designed to hold and/or issue assets on behalf of its associated entries, enabling protocol-level functionality that requires an on-ledger entity to manage funds.
1515

1616
### Motivation
1717

18-
The XRP Ledger is an account-based system where assets (XRP, IOUs, etc.) can only be held by an `AccountRoot` entry. However, several advanced protocols, such as Automated Market Makers (AMMs), lending pools, and vaults, require a ledger *object* itself to hold and manage assets.
18+
The XRP Ledger is an account-based system where assets (XRP, IOUs, etc.) can only be held by an `AccountRoot` entry. However, several advanced protocols, such as Automated Market Makers (AMMs), lending pools, and vaults, require a ledger _object_ itself to hold and manage assets.
1919

2020
The [XLS-30 (AMM)](https://github.com/XRPLF/XRPL-Standards/tree/master/XLS-0030-automated-market-maker#readme) specification pioneered this concept by introducing a pseudo-account linked to each `AMM` instance. This allows the AMM to track its token balances and issue Liquidity Provider Tokens (`LPTokens`).
2121

@@ -43,30 +43,30 @@ A nonce-based approach is used to generate the unique `AccountRoot` ID:
4343

4444
###### **Fields**
4545

46-
| Field Name | Constant | Required | Internal Type | Default Value | Description |
47-
| :--- | :---: | :---: | :---: | :---: | :--- |
48-
| `<Object>ID` | Yes | Yes | `HASH256` | N/A | The unique identifier of the ledger object this pseudo-account is associated with. |
49-
| `Flags` | Yes | Yes | `UINT32` | N/A | A set of flags that must be set for a pseudo-account. |
50-
| `Sequence` | Yes | Yes | `UINT32` | `0` | The sequence number, which must be `0`. |
51-
| `RegularKey` | Yes | No | `ACCOUNT` | N/A | A regular key, which must not be set for a pseudo-account. |
46+
| Field Name | Constant | Required | Internal Type | Default Value | Description |
47+
| :----------- | :------: | :------: | :-----------: | :-----------: | :--------------------------------------------------------------------------------- |
48+
| `<Object>ID` | Yes | Yes | `HASH256` | N/A | The unique identifier of the ledger object this pseudo-account is associated with. |
49+
| `Flags` | Yes | Yes | `UINT32` | N/A | A set of flags that must be set for a pseudo-account. |
50+
| `Sequence` | Yes | Yes | `UINT32` | `0` | The sequence number, which must be `0`. |
51+
| `RegularKey` | Yes | No | `ACCOUNT` | N/A | A regular key, which must not be set for a pseudo-account. |
5252

5353
A detailed description of these fields follows:
5454

5555
**`<Object>ID`**
5656

5757
This field links the pseudo-account to its parent ledger object. Any protocol introducing a pseudo-account must define a new, optional field on the `AccountRoot` object to store this ID. The field name must follow this convention:
5858

59-
* `<Object>` is the name of the associated ledger object (e.g., `AMM`, `Vault`). Names that are acronyms should be fully capitalized (`AMMID`). Otherwise, use PascalCase (`VaultID`).
60-
* The suffix `ID` must always be appended.
59+
- `<Object>` is the name of the associated ledger object (e.g., `AMM`, `Vault`). Names that are acronyms should be fully capitalized (`AMMID`). Otherwise, use PascalCase (`VaultID`).
60+
- The suffix `ID` must always be appended.
6161

6262
**`Flags`**
6363

6464
The following flags must be set on a pseudo-account's `AccountRoot` and must be immutable:
6565

66-
| Flag Name | Hex Value | Description |
67-
| :--- | :---: | :--- |
68-
| `lsfDisableMaster` | `0x00040000` | Disables the master key pair, ensuring no entity can sign transactions directly for this account. Control is ceded entirely to protocol rules. |
69-
| `lsfDepositAuth` | `0x01000000` | Requires authorization for deposits, typically meaning that funds can only be sent to this account via specific protocol transactions rather than standard `Payment` transactions. |
66+
| Flag Name | Hex Value | Description |
67+
| :----------------- | :----------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
68+
| `lsfDisableMaster` | `0x00040000` | Disables the master key pair, ensuring no entity can sign transactions directly for this account. Control is ceded entirely to protocol rules. |
69+
| `lsfDepositAuth` | `0x01000000` | Requires authorization for deposits, typically meaning that funds can only be sent to this account via specific protocol transactions rather than standard `Payment` transactions. |
7070

7171
**`Sequence`**
7272

@@ -80,9 +80,9 @@ A `RegularKey` must not be set on a pseudo-account.
8080

8181
The cost of creating a pseudo-account depends on whether it is owned and controlled by another account.
8282

83-
* **Owned Pseudo-Accounts:** For objects like a `Vault` where a single account owns and controls the associated pseudo-account, the transaction must increase the owner's XRP reserve by one increment. This is in addition to any other reserve requirements of the transaction (e.g., for the `Vault` object itself). The transaction fee is the standard network fee.
83+
- **Owned Pseudo-Accounts:** For objects like a `Vault` where a single account owns and controls the associated pseudo-account, the transaction must increase the owner's XRP reserve by one increment. This is in addition to any other reserve requirements of the transaction (e.g., for the `Vault` object itself). The transaction fee is the standard network fee.
8484

85-
* **Unowned Pseudo-Accounts:** For objects like an `AMM` that are not owned by any account, the creation transaction must charge a special, higher-than-normal transaction fee. This fee must be at least the value of one incremental owner reserve (currently **2 XRP**, subject to change via Fee Voting). This amount is burned, compensating for the permanent ledger space without tying the reserve to a specific owner.
85+
- **Unowned Pseudo-Accounts:** For objects like an `AMM` that are not owned by any account, the creation transaction must charge a special, higher-than-normal transaction fee. This fee must be at least the value of one incremental owner reserve (currently **2 XRP**, subject to change via Fee Voting). This amount is burned, compensating for the permanent ledger space without tying the reserve to a specific owner.
8686

8787
###### **Deletion**
8888

@@ -92,18 +92,18 @@ A pseudo-account must be deleted together with the associated object.
9292

9393
The following invariants must hold true for any `AccountRoot` entry functioning as a pseudo-account:
9494

95-
* The ledger object identified by the `<Object>ID` field must exist.
96-
* Exactly one `<Object>ID` field must be present on the `AccountRoot` (e.g., an account cannot be linked to both an `AMMID` and a `VaultID`).
97-
* The `lsfDisableMaster` and `lsfDepositAuth` flags must always be set.
98-
* The `Sequence` number must always be `0`, and must never change.
99-
* AMM pseudo-accounts created under old rules will have a sequence number set to the index of the ledger they were created in. They still must never change.
100-
* A `RegularKey` must not be set.
95+
- The ledger object identified by the `<Object>ID` field must exist.
96+
- Exactly one `<Object>ID` field must be present on the `AccountRoot` (e.g., an account cannot be linked to both an `AMMID` and a `VaultID`).
97+
- The `lsfDisableMaster` and `lsfDepositAuth` flags must always be set.
98+
- The `Sequence` number must always be `0`, and must never change.
99+
- AMM pseudo-accounts created under old rules will have a sequence number set to the index of the ledger they were created in. They still must never change.
100+
- A `RegularKey` must not be set.
101101

102102
### Security Considerations
103103

104104
The design of pseudo-accounts includes several critical security features:
105105

106-
* **No Direct Control:** The mandatory `lsfDisableMaster` flag and the absence of a `RegularKey` ensure that no user can directly control the pseudo-account or its assets. All fund movements are governed exclusively by the rules of the associated protocol.
107-
* **Transaction Prevention:** A `Sequence` of `0` makes it impossible for the account to submit transactions, preventing any misuse of the account itself.
108-
* **Address Front-running Prevention:** The deterministic but unpredictable method for generating the account address prevents attackers from guessing the address and sending funds to it before it is officially created by the protocol.
109-
* **Controlled Deposits:** The `lsfDepositAuth` flag prevents arbitrary `Payment` transactions from being sent to the account, ensuring that its balances can only be modified through legitimate protocol transactions.
106+
- **No Direct Control:** The mandatory `lsfDisableMaster` flag and the absence of a `RegularKey` ensure that no user can directly control the pseudo-account or its assets. All fund movements are governed exclusively by the rules of the associated protocol.
107+
- **Transaction Prevention:** A `Sequence` of `0` makes it impossible for the account to submit transactions, preventing any misuse of the account itself.
108+
- **Address Front-running Prevention:** The deterministic but unpredictable method for generating the account address prevents attackers from guessing the address and sending funds to it before it is officially created by the protocol.
109+
- **Controlled Deposits:** The `lsfDepositAuth` flag prevents arbitrary `Payment` transactions from being sent to the account, ensuring that its balances can only be modified through legitimate protocol transactions.

XLS-0069-simulate/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
xls: 69
33
title: Simulating Transaction Execution
44
description: A new API method for executing dry runs of transactions without submitting them to the network
5-
author: Mayukha Vadari <mvadari@ripple.com>, Elliot Lee (intelliot)
5+
author: Mayukha Vadari <mvadari@ripple.com>, Elliot Lee (@intelliot)
66
discussion-from: https://github.com/XRPLF/XRPL-Standards/discussions/199
77
status: Final
88
category: Protocol

0 commit comments

Comments
 (0)