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
|`TransactionType`|:heavy_check_mark:|`string`|`UINT16`|`58`| The transaction type. |
@@ -370,26 +372,26 @@ The `VaultCreate` transaction creates a new `Vault` object.
370
372
|`DomainID`||`string`|`HASH256`|| The `PermissionedDomain` object ID associated with the shares of this Vault. |
371
373
|`Scale`||`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. |
|`vaultStrategyFirstComeFirstServe`|`0x0001`| Requests are processed on a first-come-first-serve basis. |
387
389
388
-
#### 3.1.3 Transaction Fees
390
+
#### 3.1.4 Transaction Fees
389
391
390
392
The transaction creates an `AccountRoot` object for the `_pseudo-account_`. Therefore, the transaction [must destroy](../XLS-0064-pseudo-account/README.md) one incremental owner reserve amount.
391
393
392
-
#### 3.1.4 Failure Conditions
394
+
#### 3.1.5 Failure Conditions
393
395
394
396
1. The `Asset` is `XRP`:
395
397
1. The `Scale` parameter is provided.
@@ -409,7 +411,7 @@ The transaction creates an `AccountRoot` object for the `_pseudo-account_`. Ther
409
411
6. The `Data` field is larger than 256 bytes.
410
412
7. The account submiting the transaction has insufficient `AccountRoot.Balance` for the Owner Reserve.
411
413
412
-
#### 3.1.5 State Changes
414
+
#### 3.1.6 State Changes
413
415
414
416
1. Create a new `Vault` ledger object.
415
417
2. Create a new `MPTokenIssuance` ledger object for the vault shares.
@@ -423,7 +425,7 @@ The transaction creates an `AccountRoot` object for the `_pseudo-account_`. Ther
423
425
5. If `Vault.Asset` is an `MPT`:
424
426
1. Create `MPToken` object for the _pseudo-account_ for the `Asset.MPTokenIssuance`.
425
427
426
-
#### 3.1.6 Invariants
428
+
#### 3.1.7 Invariants
427
429
428
430
**TBD**
429
431
@@ -433,6 +435,8 @@ The transaction creates an `AccountRoot` object for the `_pseudo-account_`. Ther
433
435
434
436
The `VaultSet` updates an existing `Vault` ledger object.
435
437
438
+
#### 3.2.1 Fields
439
+
436
440
| Field Name | Required? | JSON Type | Internal Type | Default Value | Description |
|`TransactionType`|:heavy_check_mark:|`string`|`Uint16`|`59`| The transaction type. |
@@ -441,7 +445,7 @@ The `VaultSet` updates an existing `Vault` ledger object.
441
445
|`AssetsMaximum`||`number`|`Number`|| The maximum asset amount that can be held in a vault. The value cannot be lower than the current `AssetsTotal` unless the value is `0`. |
442
446
|`DomainID`||`string`|`Hash256`|| The `PermissionedDomain` object ID associated with the shares of this Vault. |
443
447
444
-
#### 3.2.1 Failure Conditions
448
+
#### 3.2.2 Failure Conditions
445
449
446
450
1.`Vault` object with the specified `VaultID` does not exist on the ledger.
447
451
2. The submitting account is not the `Owner` of the vault.
@@ -453,13 +457,13 @@ The `VaultSet` updates an existing `Vault` ledger object.
453
457
7. The transaction is attempting to modify an immutable field.
454
458
8. The transaction does not specify any of the modifiable fields.
455
459
456
-
#### 3.2.2 State Changes
460
+
#### 3.2.3 State Changes
457
461
458
462
1. Update mutable fields in the `Vault` ledger object.
459
463
2. If `DomainID` is provided:
460
464
1. Set `MPTokenIssuance(Vault.ShareMPTID).DomainID = DomainID` (Set the Permissioned Domain).
461
465
462
-
#### 3.2.3 Invariants
466
+
#### 3.2.4 Invariants
463
467
464
468
**TBD**
465
469
@@ -469,27 +473,29 @@ The `VaultSet` updates an existing `Vault` ledger object.
469
473
470
474
The `VaultDelete` transaction deletes an existing vault object.
471
475
476
+
#### 3.3.1 Fields
477
+
472
478
| Field Name | Required? | JSON Type | Internal Type | Default Value | Description |
|`VaultID`|:heavy_check_mark:|`string`|`Hash256`|`N/A`| The ID of the vault to be deleted. |
476
482
477
-
#### 3.3.1 Failure Conditions
483
+
#### 3.3.2 Failure Conditions
478
484
479
485
1.`Vault` object with the `VaultID` does not exist on the ledger.
480
486
2. The submitting account is not the `Owner` of the vault.
481
487
3.`AssetsTotal`, `AssetsAvailable`, or `MPTokenIssuance(Vault.ShareMPTID).OutstandingAmount` are greater than zero.
482
488
4. 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.
483
489
484
-
#### 3.3.2 State Changes
490
+
#### 3.3.3 State Changes
485
491
486
492
1. Delete the `MPTokenIssuance` object for the vault shares.
487
493
2. Delete the `MPToken` or `RippleState` object corresponding to the vault's holding of the asset, if one exists.
488
494
3. Delete the `AccountRoot` object of the _pseudo-account_, and its `DirectoryNode` objects.
489
495
4. Release the Owner Reserve to the `Vault.Owner` account.
490
496
5. Delete the `Vault` object.
491
497
492
-
#### 3.3.3 Invariants
498
+
#### 3.3.4 Invariants
493
499
494
500
**TBD**
495
501
@@ -499,13 +505,15 @@ The `VaultDelete` transaction deletes an existing vault object.
499
505
500
506
The `VaultDeposit` transaction adds Liqudity in exchange for vault shares.
501
507
508
+
#### 3.4.1 Fields
509
+
502
510
| Field Name | Required? | JSON Type | Internal Type | Default Value | Description |
@@ -573,7 +583,7 @@ In sections below assume the following variables:
573
583
- $\Delta_{asset}$ - the change in the total amount of assets after a deposit, withdrawal, or redemption.
574
584
- $\Delta_{share}$ - che change in the total amount of shares after a deposit, withdrawal, or redemption.
575
585
576
-
#### 3.5.1 Failure conditions
586
+
#### 3.5.2 Failure conditions
577
587
578
588
1.`Vault` object with the `VaultID` does not exist on the ledger.
579
589
@@ -603,7 +613,7 @@ In sections below assume the following variables:
603
613
1. The account does not have permission to receive the asset.
604
614
2. The account does not have a `RippleState` or `MPToken` object for the asset.
605
615
606
-
#### 3.5.2 State Changes
616
+
#### 3.5.3 State Changes
607
617
608
618
1. If the `Vault.Asset` is XRP:
609
619
1. Decrease the `Balance` field of _pseudo-account_`AccountRoot` by $\Delta_{asset}$.
@@ -628,26 +638,26 @@ In sections below assume the following variables:
628
638
629
639
6. Decrease the `AssetsTotal` and `AssetsAvailable` by $\Delta_{asset}$
630
640
631
-
#### 3.5.3 Invariants
641
+
#### 3.5.4 Invariants
632
642
633
643
**TBD**
634
644
635
645
[**Return to Index**](#index)
636
646
637
647
### 3.6 VaultClawback Transaction
638
648
639
-
#### 3.6.1 `VaultClawback` Transaction
640
-
641
649
The `VaultClawback` transaction performs a Clawback from the Vault, exchanging the shares of an account. Conceptually, the transaction performs `VaultWithdraw` on behalf of the `Holder`, sending the funds to the `Issuer` account of the asset. In case there are insufficient funds for the entire `Amount` the transaction will perform a partial Clawback, up to the `Vault.AssetsAvailable`. The Clawback transaction must respect any future fees or penalties.
642
650
651
+
#### 3.6.1 Fields
652
+
643
653
| Field Name | Required? | JSON Type | Internal Type | Default Value | Description |
|`VaultID`|:heavy_check_mark:|`string`|`HASH256`|`N/A`| The ID of the vault from which assets are withdrawn. |
647
657
|`Holder`|:heavy_check_mark:|`string`|`AccountID`|`N/A`| The account ID from which to clawback the assets. |
648
658
|`Amount`||`number`|`NUMBER`| 0 | The asset amount to clawback. When Amount is `0` clawback all funds, up to the total shares the `Holder` owns. |
649
659
650
-
#####3.6.1.1 Failure conditions
660
+
#### 3.6.2 Failure conditions
651
661
652
662
1.`Vault` object with the `VaultID` does not exist on the ledger.
653
663
@@ -665,7 +675,7 @@ The `VaultClawback` transaction performs a Clawback from the Vault, exchanging t
665
675
666
676
5. The `MPToken` object for the `Vault.ShareMPTID` of the `Holder``AccountRoot` does not exist OR `MPToken.MPTAmount == 0`.
667
677
668
-
#####3.6.1.2 State Changes
678
+
#### 3.6.3 State Changes
669
679
670
680
1. If the `Vault.Asset` is an `IOU`:
671
681
1. Decrease the `RippleState` balance between the _pseudo-account_`AccountRoot` and the `Issuer``AccountRoot` by `min(Vault.AssetsAvailable`, $\Delta_{asset}$`)`.
@@ -682,19 +692,17 @@ The `VaultClawback` transaction performs a Clawback from the Vault, exchanging t
682
692
683
693
5. Decrease the `AssetsTotal` and `AssetsAvailable` by `min(Vault.AssetsAvailable`, $\Delta_{asset}$`)`
684
694
685
-
#####3.6.1.3 Invariants
695
+
#### 3.6.4 Invariants
686
696
687
697
**TBD**
688
698
689
699
[**Return to Index**](#index)
690
700
691
701
### 3.7 Payment Transaction
692
702
693
-
#### 3.7.1 `Payment` transaction
694
-
695
703
The Single Asset Vault does not introduce new `Payment` transaction fields. However, it adds additional failure conditions and state changes when transfering Vault shares.
696
704
697
-
#####3.7.1.1 Failure Conditions
705
+
#### 3.7.1 Failure Conditions
698
706
699
707
1. If `Payment.Amount` is a `Vault` share AND:
700
708
1. The `Vault``lsfVaultPrivate` flag is set and the `Payment.Destination` account does not have credentials in the permissioned domain of the Vaults Share.
@@ -713,7 +721,7 @@ The Single Asset Vault does not introduce new `Payment` transaction fields. Howe
713
721
3. The `lsfHighFreeze` or `lsfLowFreeze` flag is set on the `RippleState` object between the Asset `Issuer` and the destination account.
714
722
4. The `lsfHighFreeze` or `lsfLowFreeze` flag is set on the `RippleState` object between the Asset `Issuer` and the `pseudo-account`.
715
723
716
-
#####3.7.1.2 State Changes
724
+
#### 3.7.2 State Changes
717
725
718
726
1. If `MPToken`object for shares does not exist for the destination account, create one.
0 commit comments