Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/_snippets/common-links.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
[ConfidentialMPTSend transaction]: /docs/xls-96-confidential-transfers/references/transactions/confidentialmptsend.md
[ConfidentialTransfers amendment]: https://xls.xrpl.org/xls/XLS-0096-confidential-mpt.html
[credentials]: https://xrpl.org/docs/concepts/decentralized-storage/credentials
[DynamicMPT amendment]: https://xls.xrpl.org/xls/XLS-0094-dynamic-MPT.html
[EscrowFinish]: https://xrpl.org/docs/references/protocol/transactions/types/escrowfinish
[`flags` field]: https://xrpl.org/docs/references/protocol/transactions/common-fields#flags-field
[Hash]: https://xrpl.org/docs/references/protocol/data-types/basic-data-types#hashes
Expand Down
20 changes: 17 additions & 3 deletions docs/xls-94-dynamic-mpts/dynamic-mpts.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,32 @@ labels:

# Dynamic Multi-Purpose Tokens

Multi-Purpose Tokens (MPT) become immutable after issuance, but some use cases may require the capability to update an MPT's properties after its initial issuance.
Multi-Purpose Tokens (MPT) become immutable after issuance, but some use cases may require the capability to update an MPT's properties after its initial issuance.

The Dynamic MPT amendment extends Multi-Purpose Tokens by allowing issuers to set specific properties as mutable when creating an MPT issuance. This enables some properties to be updated later as business needs evolve. For example, an issuer might need to adjust transfer fees based on market conditions, or update token metadata. Issuers can achieve this by explicitly declaring which specific fields and flags can be modified when they issue the MPT. Fields not marked as mutable during initial issuance remain immutable.

_(Requires the [DynamicMPT amendment][] {% not-enabled /%})_

## Creating a Dynamic MPT

When you issue an MPT, you can make it dynamic by declaring some properties as mutable in the `MutableFlags` field in the `MPTokenIssuanceCreate` transaction. This gives you flexibility to adapt your token's properties as your business needs evolve. You must carefully consider which properties should be mutable, as this cannot be changed later.
When you issue an MPT, you can declare selected fields and MPT issuance flags as mutable in the `MutableFlags` field of the `MPTokenIssuanceCreate` transaction. Field mutability supports operational updates such as _metadata_ changes and _transfer fee_ adjustments without requiring a new issuance. All other fields and flags must remain immutable.

## Modifying a Dynamic MPT

After creating an MPT with mutable properties, you can update those specific fields or flags using the `MPTokenIssuanceSet` transaction. When you use this transaction, you provide new values for the mutable fields, or use a separate set of flags to set or clear the mutable flags. Only the properties you designated as mutable during creation can be modified.
After creating an MPT with mutable properties, you can update those specific fields or enable mutable MPT issuance flags using the `MPTokenIssuanceSet` transaction. You provide new values for mutable fields, or use a separate set of flags to enable mutable MPT issuance flags.

Mutable MPT issuance flags are intentionally **one-way**: if the corresponding mutability flag was set during creation, the issuer may later enable the MPT issuance flag through `MPTokenIssuanceSet`, but once enabled, that flag cannot be disabled.

## Security Considerations

Mutability is opt-in and strictly bounded by the issuer's original declaration:

- A field or MPT issuance flag can only be changed if it was explicitly declared mutable during `MPTokenIssuanceCreate`.
- Only the issuer of the `MPTokenIssuance` can use `MPTokenIssuanceSet` to modify mutable fields or enable mutable MPT issuance flags.
- Mutable MPT issuance flags are one-way and cannot be disabled through `MPTokenIssuanceSet` after they are enabled. This prevents an issuer from weakening issuance behavior after participants may have relied on the enabled flag.

## See Also

- [Dynamic MPT Reference Documentation](./reference.md)

{% raw-partial file="/docs/_snippets/common-links.md" /%}
Loading