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: XLS-0001-xls-process/README.md
+33-13Lines changed: 33 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -211,41 +211,51 @@ These columns must all be included in the table:
211
211
212
212
The table may be followed by subsections for fields requiring further details that are too long for the Description column.
213
213
214
-
##### 4.4.3.2.3. Ownership
214
+
##### 4.4.3.2.3. Flags
215
+
216
+
This subsection describes all the ledger entry `lsf` flags in a tabular format.
217
+
218
+
These columns must all be included in the table:
219
+
220
+
-**Flag Name**: The column indicates the flag's name. Flags follow the `lsfPascalCase` naming convention.
221
+
-**Flag Value**: The column indicates the flag's value. Flag values are powers of 2 expressed as 32-bit integers, written in hexadecimal with a `0x` prefix (e.g., `0x00010000`).
222
+
-**Description**: A brief description of the flag. Further details can be written in a subsection of **Flags**.
223
+
224
+
##### 4.4.3.2.4. Ownership
215
225
216
226
All XRP Ledger objects must have an owner. The owner is an `AccountRoot` object, and the ownership relationship is typically established by adding the object's ID to an `OwnerDirectory` ledger entry associated with the owner's account. This subsection captures which `AccountRoot` object's `OwnerDirectory` the ledger entry is registered. A single ledger entry may be linked from one or more unique `DirectoryNode` pages, usually under one `OwnerDirectory`.
217
227
218
228
_Note: there are a handful of object types (such as `FeeSettings`) that don’t have an owner. If an amendment is of that ilk, that should be specified in this section._
219
229
220
-
##### 4.4.3.2.4. Reserves
230
+
##### 4.4.3.2.5. Reserves
221
231
222
232
Creating ledger entries typically requires an increase in the owner's XRP reserve to discourage ledger bloat and account for the cost of storage. Each new ledger entry directly owned by an account typically increments the owner reserve by one unit (currently 0.2 XRP, as of last check, but subject to change by [Fee Voting](https://xrpl.org/docs/concepts/consensus-protocol/fee-voting)). This section should confirm whether this standard behavior applies or specify any deviations.
223
233
224
-
##### 4.4.3.2.5. Deletion
234
+
##### 4.4.3.2.6. Deletion
225
235
226
236
This subsection captures the conditions under which the ledger entry can be deleted from the ledger. It should specify:
227
237
228
238
- What transaction(s) can delete the object.
229
239
- Any prerequisite conditions for deletion (e.g., object state, zero balances, no linked objects).
230
240
- Is the ledger entry a "blocker" for deleting its owner `AccountRoot` (i.e., whether it must be deleted before the account can be deleted).
231
241
232
-
##### 4.4.3.2.6. Pseudo-Account
242
+
##### 4.4.3.2.7. Pseudo-Account
233
243
234
244
This section is optional. A "pseudo-account" might be associated if the newly introduced ledger entry needs to hold assets (XRP, IOUs or MPTs) or issue tokens (e.g., MPTs). A pseudo-account is a programmatically derived `Account` that cannot submit transactions, send or receive funds directly via standard payments, or have a key pair. For further details about pseudo-accounts, refer to [XLS-64](https://github.com/XRPLF/XRPL-Standards/pull/274) (or the relevant accepted standard). This section should specify if a pseudo-account is used, how its `AccountID` is derived, and its purpose.
235
245
236
-
##### 4.4.3.2.7. Freeze/Lock
246
+
##### 4.4.3.2.8. Freeze/Lock
237
247
238
248
This section is optional. If the protocol holds assets on behalf of other users, it must comply with the existing compliance features `Freeze`, `Deep Freeze` for IOUs and `Locking` for MPTs. This section describes how said freezing is handled.
239
249
240
-
##### 4.4.3.2.8. Invariants
250
+
##### 4.4.3.2.9. Invariants
241
251
242
252
Invariants are logical statements that MUST be true of a ledger entry's state before and after the execution of any transaction (whether successful or not). They help ensure that no transaction leads to an invalid or inconsistent ledger state. Use `<object>` for the state before and `<object>'` (see the added grave) for the state after.
243
253
244
-
##### 4.4.3.2.9. RPC Name
254
+
##### 4.4.3.2.10. RPC Name
245
255
246
256
In RPCs like `account_objects` and `ledger_data`, a short, `snake_case` form of the name of a ledger entry is accepted in the `type` parameter, to filter the ledger entries returned by type. This section should specify that version of the entry's name.
247
257
248
-
##### 4.4.3.2.10. Example JSON
258
+
##### 4.4.3.2.11. Example JSON
249
259
250
260
Provide JSON examples for what the ledger object will look like.
251
261
@@ -278,11 +288,21 @@ The following columns should be included:
278
288
-**Default Value**: If any. `N/A` if none or always required.
279
289
-**Description**: Succinct description of the field.
280
290
281
-
##### 4.4.3.3.2. Transaction Fee
291
+
##### 4.4.3.3.2. Flags
292
+
293
+
This subsection describes all the ledger entry `tf` flags in a tabular format.
294
+
295
+
These columns must all be included in the table:
296
+
297
+
-**Flag Name**: The column indicates the flag's name. Flags follow the `tfPascalCase` naming convention.
298
+
-**Flag Value**: The column indicates the flag's value. Flag values are powers of 2 expressed as 32-bit integers, written in hexadecimal with a `0x` prefix (e.g., `0x00010000`).
299
+
-**Description**: A brief description of the flag. Further details can be written in a subsection of **Flags**.
300
+
301
+
##### 4.4.3.3.3. Transaction Fee
282
302
283
303
Submitting a transaction typically requires paying a transaction fee. A typical transaction costs 10 drops as of last check (subject to change by [Fee Voting](https://xrpl.org/docs/concepts/consensus-protocol/fee-voting)). This section should confirm whether this standard behavior applies or specify any deviations.
284
304
285
-
##### 4.4.3.3.3. Failure Conditions
305
+
##### 4.4.3.3.4. Failure Conditions
286
306
287
307
This section describes the conditions under which the transaction will fail. This must be an exhaustive, descriptive list. Each condition should ideally map to a specific error code. The list should be indexed for easy reference.
288
308
@@ -292,11 +312,11 @@ In case of a transaction failure, an XRP Ledger server returns an error code ind
292
312
293
313
If the new transaction logic introduces novel failure reasons not adequately covered by existing generic codes, a new error code (usually a `tec` code) should be proposed. This new code must be clearly defined and justified and would eventually be added to [rippled](https://github.com/XRPLF/rippled/blob/develop/include/xrpl/protocol/TER.h) if the XLS is adopted. XLS authors will primarily define error codes for their specific transaction logic failures.
294
314
295
-
##### 4.4.3.3.4. State Changes
315
+
##### 4.4.3.3.5. State Changes
296
316
297
317
This section describes the changes made to the ledger state if the transaction executes successfully. It should omit default state changes common to all transactions (e.g., fee processing, sequence number increment, setting `PreviousTxnID`/`PreviousTxnLgrSeq` on modified objects). Indexed for clarity. A successfully applied transaction must return a `tesSUCCESS` code.
298
318
299
-
##### 4.4.3.3.5. Metadata Fields
319
+
##### 4.4.3.3.6. Metadata Fields
300
320
301
321
This section describes any additions or modifications (synthetic or otherwise) to the transaction metadata. This section must not be included if the transaction does not make any such additions or modifications.
302
322
@@ -311,7 +331,7 @@ The following columns should be included in the table:
311
331
-**Type**: If the field is synthetic, this should specify the The JSON type of the field (e.g., `string`, `number`, `object`, `array`).
312
332
-**Description**: Succinct description of the field.
0 commit comments