DeepFreeze docs

This commit is contained in:
Thomas Silkjær
2025-11-18 16:11:16 +01:00
parent ea7d03c991
commit 6679f7893d
2 changed files with 17 additions and 0 deletions

View File

@@ -84,6 +84,8 @@ RippleState objects can have the following flag values:
| `lsfHighNoRipple` | `0x00200000` | 2097152 | `tfSetNoRipple` | The high account has disabled rippling from this trust line. |
| `lsfLowFreeze` | `0x00400000` | 4194304 | `tfSetFreeze` | The low account has frozen the trust line, preventing the high account from transferring the asset. |
| `lsfHighFreeze` | `0x00800000` | 8388608 | `tfSetFreeze` | The high account has frozen the trust line, preventing the low account from transferring the asset. |
| `lsfLowDeepFreeze` | `0x02000000` | 33554432 | `tfSetDeepFreeze` | The low account has deep-frozen the trust line, preventing the high account from sending and receiving the asset. _(Requires the \[DeepFreeze amendment]\[])_ |
| `lsfHighDeepFreeze` | `0x04000000` | 67108864 | `tfSetDeepFreeze` | The high account has deep-frozen the trust line, preventing the low account from sending and receiving the asset. _(Requires the \[DeepFreeze amendment]\[])_ |
### Contributing to the Owner Reserve

View File

@@ -44,7 +44,22 @@ Transactions of the TrustSet type support additional values in the `Flags` field
| `tfClearNoRipple` | `0x00040000` | 262144 | Disable the No Ripple flag, allowing rippling on this trust line. |
| `tfSetFreeze` | `0x00100000` | 1048576 | Freeze the trust line. |
| `tfClearFreeze` | `0x00200000` | 2097152 | Unfreeze the trust line. |
| `tfSetDeepFreeze` | `0x00400000` | 4194304 | Deep freeze the trust line. _(Requires the \[DeepFreeze amendment]\[])_ |
| `tfClearDeepFreeze` | `0x00800000` | 8388608 | Clear a deep-freeze on the trust line. _(Requires the \[DeepFreeze amendment]\[])_ |
If a transaction tries to enable No Ripple but cannot, it fails with the result code `tecNO_PERMISSION`. Before the \[fix1578 amendment]\[] became enabled, such a transaction would result in `tesSUCCESS` (making any other changes it could) instead.
The Auth flag of a trust line does not determine whether the trust line counts towards its owner's XAH reserve requirement. However, an enabled Auth flag prevents the trust line from being in its default state. An authorized trust line can never be deleted. An issuer can pre-authorize a trust line with the `tfSetfAuth` flag only, even if the limit and balance of the trust line are 0.
### Deep Freeze Rules
With the \[DeepFreeze amendment]\[] enabled, the following rules apply to deep freeze operations:
A TrustSet transaction trying to set `tfSetDeepFreeze` succeeds if and only if one of the following is true:
* The holder is already frozen, indicated by `lsfLowFreeze`/`lsfHighFreeze` on the trust line.
* `tfSetFreeze` is also set in the same TrustSet transaction.
If the trust line is deep-frozen by the issuer (indicated by `lsfLowDeepFreeze`/`lsfHighDeepFreeze`), the TrustSet transaction fails if the issuer sets the `tfClearFreeze` flag without also setting the `tfClearDeepFreeze` flag. In other words, the issuer cannot clear the regular freeze on a trust line without also clearing the deep freeze.
See [High vs. Low Account](/docs/protocol-reference/ledger-data/ledger-objects-types/ripple-state#high-vs-low-account) for information about how the low and high accounts are determined.