You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+6-12Lines changed: 6 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
# CONTRIBUTING
2
2
3
-
> [!IMPORTANT]
4
-
> This process is in a state of flux right now, and this document is still referring to the old process. Please refer to https://github.com/XRPLF/XRPL-Standards/discussions/340 instead.
3
+
> [!IMPORTANT]
4
+
> This process is in a state of flux right now, and this document is still referring to the old process. Please refer to [XLS-1](./XLS-0001-xls-process/README.md) instead.
5
5
6
6
The work of the [XRP Ledger](https://xrpl.org) community is open, collaborative, and welcoming of all contributors participating in good faith. Part of that effort involves standardization, and this document outlines how anyone can contribute to that process.
7
7
@@ -20,11 +20,7 @@ Before opening a PR with any kind of formal proposal, please first gather commun
20
20
21
21
#### Discussion Title
22
22
23
-
When creating a new discussion for your idea, the discussion title should follow the naming convention `XLS-{0000}d {Title}`, where `{0000}` is a unique number for the XLS, `d` indicates that the document is a Draft (i.e., work in progress), and `{Title}` is a descriptive title for the proposed document.
24
-
25
-
#### Specification Number
26
-
27
-
Use the next number that has not yet been used. If a conflict occurs, it will be fixed by a maintainer or editor. Maintainers or editors also reserve the right to remove or re-number proposals as necessary. The number is important, as it will be used to reference features and ideas throughout the community.
23
+
When creating a new discussion for your idea, the discussion title should follow the naming convention `[{Category} {Idea/Proposal} {Title}]`, where `{Category}` is one of `Amendment`, `System`, `Ecosystem`, or `Meta` (depending on what type of spec it is), `{Idea/Proposal}` is either `Idea` or `Proposal` (depending on how fleshed out the idea is), and `{Title}` is a descriptive title for the proposed document.
28
24
29
25
### 2. Closing a Discussion
30
26
@@ -54,13 +50,11 @@ Notice that a Draft is not a [rubber-stamp](https://idioms.thefreedictionary.com
54
50
55
51
##### Publishing a Draft
56
52
57
-
To publish a new Draft, submit a Pull Request to this repo with a new folder and a new Markdown file. The folder MUST follow the naming convention `XLS-{0000}d-{title}` where `{0000}` is the unique number referencing the XLS, `d` indicates that the document is a Draft, and `{title}` is a lower case title with spaces replaced by hyphens (`-`). The submission should have front-matter (similar to GitHub pages rendered from Markdown) specifying at least a `title` and `type`. The `type` MUST have the value `draft`.
58
-
59
-
An example draft name is: `XLS-20d-non-fungible-token-support-native`
53
+
To publish a new Draft, submit a Pull Request to this repo with a new folder and a new Markdown file. The folder MUST follow the naming convention `XLS-draft-{title}` where `{title}` is a lower case title with spaces replaced by hyphens (`-`). An example draft name is: `XLS-20d-non-fungible-token-support-native`
60
54
61
-
Use the following template when creating the Markdown file: [xls-template.md](./xls-template.md)
55
+
The submission must follow the template in [XLS_TEMPLATE.md](./templates/XLS_TEMPLATE.md).
62
56
63
-
Assuming there is consensus to publish, one of the project maintainers will review the submission and confirm the document's XLS number, often making a follow-up commit to the PR which renames the file as appropriate.
57
+
Assuming there is consensus to publish, one of the project maintainers will review the submission and assign the document's XLS number, after which the author should update the PR to reflect the assigned number with the following naming convention: `XLS-{0000}-{title}`, where `{0000}` is the unique number referencing the XLS. Once at least one other person involved in the spec process for that spec has approved, and the maintainer has ensured that the template and naming conventions are followed, the maintainer will merge the PR.
|`PreviousTxnID`|`N/A`|:heavy_check_mark:|`string`|`HASH256`|`N/A`| Identifies the transaction ID that most recently modified this object. |
@@ -131,11 +131,11 @@ A vault has the following fields:
131
131
|`Account`|`N/A`|:heavy_check_mark:|`string`|`ACCOUNTID`|`N/A`| The address of the Vaults _pseudo-account_. |
132
132
|`Data`|`Yes`||`string`|`BLOB`| None | Arbitrary metadata about the Vault. Limited to 256 bytes. |
133
133
|`Asset`|`No`|:heavy_check_mark:|`string or object`|`ISSUE`|`N/A`| The asset of the vault. The vault supports `XRP`, `IOU` and `MPT`. |
134
-
|`AssetTotal`|`N/A`|:heavy_check_mark:|`number`|`NUMBER`| 0 | The total value of the vault. |
135
-
|`AssetAvailable`|`N/A`|:heavy_check_mark:|`number`|`NUMBER`| 0 | The asset amount that is available in the vault. |
134
+
|`AssetsTotal`|`N/A`|:heavy_check_mark:|`number`|`NUMBER`| 0 | The total value of the vault. |
135
+
|`AssetsAvailable`|`N/A`|:heavy_check_mark:|`number`|`NUMBER`| 0 | The asset amount that is available in the vault. |
136
136
|`LossUnrealized`|`N/A`|:heavy_check_mark:|`number`|`NUMBER`| 0 | The potential loss amount that is not yet realized expressed as the vaults asset. |
137
137
|`AssetsMaximum`|`Yes`||`number`|`NUMBER`| 0 | The maximum asset amount that can be held in the vault. Zero value `0` indicates there is no cap. |
138
-
|`MPTokenIssuanceID`|`N/A`|:heavy_check_mark:|`number`|`UINT192`| 0 | The identifier of the share MPTokenIssuance object. |
138
+
|`ShareMPTID`|`N/A`|:heavy_check_mark:|`number`|`UINT192`| 0 | The identifier of the share MPTokenIssuance object. |
139
139
|`WithdrawalPolicy`|`No`|:heavy_check_mark:|`string`|`UINT8`|`N/A`| Indicates the withdrawal strategy used by the Vault. |
140
140
|`Scale`|`No`|:heavy_check_mark:|`number`|`UINT8`| 6 | The `Scale` specifies the power of 10 ($10^{\text{scale}}$) to multiply an asset's value by when converting it into an integer-based number of shares. |
141
141
@@ -235,7 +235,7 @@ The "paper loss" temporarily decreases the vault value. A malicious depositor ma
235
235
Consider a vault with a total value of $1.0m and total shares of $1.0m. Assume the "paper loss" for the vault is $900k. The new exchange rate is as follows:
After the "paper loss" is cleared, the new effective exchange rate would be as follows:
246
246
247
247
$$
248
-
exchangeRate = \frac{AssetTotal}{SharesTotal}
248
+
exchangeRate = \frac{AssetsTotal}{SharesTotal}
249
249
$$
250
250
251
251
$$
@@ -421,7 +421,7 @@ The transaction creates an `AccountRoot` object for the `_pseudo-account_`. Ther
421
421
- Create a new `Vault` ledger object.
422
422
- Create a new `MPTokenIssuance` ledger object for the vault shares.
423
423
- If the `DomainID` is provided:
424
-
-`MPTokenIssuance(Vault.MPTokenIssuanceID).DomainID = DomainID` (Set the Permissioned Domain ID).
424
+
-`MPTokenIssuance(Vault.ShareMPTID).DomainID = DomainID` (Set the Permissioned Domain ID).
425
425
- Create an `MPToken` object for the Vault Owner to hold Vault Shares.
426
426
- Create a new `AccountRoot`[_pseudo-account_](https://github.com/XRPLF/XRPL-Standards/discussions/191) object setting the `PseudoOwner` to `VaultID`.
427
427
@@ -465,7 +465,7 @@ The `VaultSet` updates an existing `Vault` ledger object.
465
465
466
466
- Update mutable fields in the `Vault` ledger object.
467
467
- If `DomainID` is provided:
468
-
- Set `MPTokenIssuance(Vault.MPTokenIssuanceID).DomainID = DomainID` (Set the Permissioned Domain).
468
+
- Set `MPTokenIssuance(Vault.ShareMPTID).DomainID = DomainID` (Set the Permissioned Domain).
469
469
470
470
##### 3.1.2.3 Invariants
471
471
@@ -486,7 +486,7 @@ The `VaultDelete` transaction deletes an existing vault object.
486
486
487
487
-`Vault` object with the `VaultID` does not exist on the ledger.
488
488
- The submitting account is not the `Owner` of the vault.
489
-
-`AssetsTotal`, `AssetsAvailable`, or `MPTokenIssuance(Vault.MPTokenIssuanceID).OutstandingAmount` are greater than zero.
489
+
-`AssetsTotal`, `AssetsAvailable`, or `MPTokenIssuance(Vault.ShareMPTID).OutstandingAmount` are greater than zero.
490
490
- The `OwnerDirectory` of the Vault _pseudo-account_ contains pointers to objects other than the `Vault`, the `MPTokenIssuance` for its shares, or an `MPToken` or trust line for its asset.
491
491
492
492
##### 3.1.3.2 State Changes
@@ -605,7 +605,7 @@ In sections below assume the following variables:
605
605
606
606
- There is insufficient liquidity in the vault to fill the request:
607
607
- If `Amount` is the vaults share:
608
-
-`MPTokenIssuance(Vault.MPTokenIssuanceID).OutstandingAmount` < `Amount` (attempt to withdraw more shares than there are in total).
608
+
-`MPTokenIssuance(Vault.ShareMPTID).OutstandingAmount` < `Amount` (attempt to withdraw more shares than there are in total).
609
609
- The shares `MPToken.MPTAmount` of the `Account` is less than `Amount` (attempt to withdraw more shares than owned).
610
610
-`Vault.AssetsAvailable` < $\Delta_{asset}$ (the vault has insufficient assets).
611
611
@@ -633,11 +633,11 @@ In sections below assume the following variables:
633
633
- Decrease the `MPToken.MPTAmount` by $\Delta_{asset}$ of the _pseudo-account_`MPToken` object for the `Vault.Asset`.
634
634
- Increase the `MPToken.MPTAmount` by $\Delta_{asset}$ of the depositor `MPToken` object for the `Vault.Asset`.
635
635
636
-
- Update the `MPToken` object for the `Vault.MPTokenIssuanceID` of the depositor `AccountRoot`:
636
+
- Update the `MPToken` object for the `Vault.ShareMPTID` of the depositor `AccountRoot`:
637
637
- Decrease the `MPToken.MPTAmount` by $\Delta_{share}$.
638
638
- If `MPToken.MPTAmount == 0`, delete the object.
639
639
640
-
- Update the `MPTokenIssuance` object for the `Vault.MPTokenIssuanceID`:
640
+
- Update the `MPTokenIssuance` object for the `Vault.ShareMPTID`:
641
641
- Decrease the `OutstandingAmount` field of the share `MPTokenIssuance` object by $\Delta_{share}$.
642
642
643
643
- Decrease the `AssetsTotal` and `AssetsAvailable` by $\Delta_{asset}$
@@ -677,7 +677,7 @@ The `VaultClawback` transaction performs a Clawback from the Vault, exchanging t
677
677
-`MPTokenIssuance.lsfMPTCanClawback` flag is not set (the asset does not support clawback).
678
678
- If the `MPTokenIssuance.lsfMPTCanLock` flag is NOT set (the asset cannot be locked).
679
679
680
-
- The `MPToken` object for the `Vault.MPTokenIssuanceID` of the `Holder``AccountRoot` does not exist OR `MPToken.MPTAmount == 0`.
680
+
- The `MPToken` object for the `Vault.ShareMPTID` of the `Holder``AccountRoot` does not exist OR `MPToken.MPTAmount == 0`.
681
681
682
682
##### 3.3.1.2 State Changes
683
683
@@ -687,11 +687,11 @@ The `VaultClawback` transaction performs a Clawback from the Vault, exchanging t
687
687
- If the `Vault.Asset` is an `MPT`:
688
688
- Decrease the `MPToken.MPTAmount` by `min(Vault.AssetsAvailable`, $\Delta_{asset}$`)` of the _pseudo-account_`MPToken` object for the `Vault.Asset`.
689
689
690
-
- Update the `MPToken` object for the `Vault.MPTokenIssuanceID` of the depositor `AccountRoot`:
690
+
- Update the `MPToken` object for the `Vault.ShareMPTID` of the depositor `AccountRoot`:
691
691
- Decrease the `MPToken.MPTAmount` by $\Delta_{share}$.
692
692
- If `MPToken.MPTAmount == 0`, delete the object.
693
693
694
-
- Update the `MPTokenIssuance` object for the `Vault.MPTokenIssuanceID`:
694
+
- Update the `MPTokenIssuance` object for the `Vault.ShareMPTID`:
695
695
- Decrease the `OutstandingAmount` field of the share `MPTokenIssuance` object by $\Delta_{share}$.
696
696
697
697
- Decrease the `AssetsTotal` and `AssetsAvailable` by `min(Vault.AssetsAvailable`, $\Delta_{asset}$`)`
Copy file name to clipboardExpand all lines: templates/XLS_TEMPLATE.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,7 +36,7 @@ _[The technical specification should describe the syntax and semantics of any ne
36
36
37
37
> **Note:** It is recommended to follow RFC 2119 and RFC 8174. Do not remove the key word definitions if RFC 2119 and RFC 8174 are followed.
38
38
39
-
_[For Amendment XLSes, use the [AMENDMENT_TEMPLATE.md](AMENDMENT_TEMPLATE.md) to structure this section with detailed subsections for Serialized Types, Ledger Entries, Transactions, Permissions, and RPCs as needed.]_
39
+
_[For Amendment XLSes, use the [AMENDMENT_TEMPLATE.md](./AMENDMENT_TEMPLATE.md) to structure this section with detailed subsections for Serialized Types, Ledger Entries, Transactions, Permissions, and RPCs as needed.]_
40
40
41
41
_[For other XLS types, provide a clear technical specification.]_
0 commit comments