Limited Token Issuance #230
Replies: 4 comments 5 replies
-
I don't know if I read this right, but wouldn't it be better if there is a revision to the existing token issuance method and implement a limit there instead of creating a new object per token that will cost XRP and take up more on chain space |
Beta Was this translation helpful? Give feedback.
-
I'm interested with the notion of providing more sophisticated token issuance functionality in general. When |
Beta Was this translation helpful? Give feedback.
-
Some nits:
|
Beta Was this translation helpful? Give feedback.
-
Hi @dangell7 -- this is a very interesting proposal. The limitation you cite around capping token issuance is actually one of the rationale (among others) for introducing MPTs (XLS-33d). MPTs have this ability to limit token issuance (and actually has an issuance object that can track the kind of metadata required to support this feature -- see MPTokenIssuance, in particular I wonder if a better solution for issuers wanting to cap issuances would instead be "use MPTs"? From my perspective, any fungible token that doesn't need rippling is probably better off using MPTs anyway (at least, once MPT is live). See PR here for the initial implementation. In addition, the plan is to (over time) add support for MPTs into all XRPL native features, including integration into the DEX, AMM, Escrow, etc. |
Beta Was this translation helpful? Give feedback.
-
XLS-XXd Limited Token Issuance
Introduction
The ability to issue tokens on the XRPL provides users with a powerful tool for creating and managing digital assets. However, without proper controls in place, token issuance can lead to excessive supply, which may dilute the value of existing tokens and create instability in the market. Currently, one method to limit token issuance involves "blackholing" the issuer account, which effectively disables the account by removing its master key. While this approach can prevent further token issuance, it has significant drawbacks, including ledger bloat, as the account cannot be deleted once the master key is disabled. This results in an accumulation of unused accounts in the ledger, leading to inefficiencies and increased storage requirements.
To address these concerns, we propose a new amendment that introduces a mechanism for limiting token issuance on the XRPL without resorting to blackholing the issuer account. This will help maintain the integrity and value of tokens while allowing for controlled growth in the token ecosystem.
Amendment
The proposed amendment introduces a new feature that allows users to set limits on the total number of tokens that can be issued for a specific asset. This feature enables users to define a maximum token count, and any attempts to exceed this limit will result in the rejection of the transaction.
The amendment adds the following:
CreateFToken
DeleteFToken
FToken
New Ledger Entry:
FToken
The
FToken
ledger entry is a new on-ledger object that represents the token issuance limits and related settings for an asset on the XRPL.The object has the following fields:
Example
FToken
object:New Transaction Type:
CreateFToken
The
CreateFToken
transaction is used to create theFToken
ledger object.Example
CreateFToken
transaction:New Transaction Type:
DeleteFToken
In addition to the
CreateFToken
transaction, we propose a new transaction type calledDeleteFToken
. This transaction allows the issuer to remove theFToken
object from the ledger, but only under specific conditions to ensure the integrity of the token ecosystem.Conditions for Deleting an
FToken
OutstandingAmount
must be 0 for the specificFToken
they wish to delete. This requirement ensures that there are no outstanding obligations or dependencies on the token, thereby preventing potential disruptions in the market.FToken
while there are active trustlines, the transaction will also be rejected.Example
DeleteFToken
TransactionThe
DeleteFToken
transaction will have the following structure:FToken
.Example
DeleteFToken
transaction:Handling Payment Transactions
When a payment transaction is submitted, the following rules apply:
OutstandingAmount
in theFToken
object will be updated based on the amount specified in any transaction that includes aSTAmount
field from the issuer for the specific currency. TheOutstandingAmount
can also be reduced when the issuer is the destination of a transaction or an offer is cancelled for example.OutstandingAmount
exceeds theMaximumAmount
limit, the transaction will be rejected.OutstandingAmount
is within the limit, the transaction will be successful.Implementation Details
The counting logic for the token issuance will be implemented in the
Transactor.cpp
file. This will ensure that all transactions containing anSTAmount
from the issuer or to the issuer accurately update theOutstandingAmount
in theFToken
ledger entry.Example Payment Transaction
Updated
FToken
Ledger EntryFrequently Asked Questions (FAQ)
Q1: What happens if a transaction exceeds the maximum token limit?
A1: If a transaction attempts to exceed the maximum token limit set in the
FToken
object, the transaction will be rejected.Q2: Which transactions will affect the
OutstandingAmount
in theFToken
object?A2: The following transactions will be monitored for their
Amount
orSTAmount
fields, and will affect theOutstandingAmount
:Q3: Can I set a token limit after tokens have already been issued?
A3: The amendment allows users to set a maximum token limit at the time of creating the
FToken
object. Once the limit is set, any attempts to issue more tokens than the specified limit, or update the limit will be rejectedQ4: Is the
URI
field mandatory in theCreateFToken
transaction?A4: No, the
URI
field is optional in theCreateFToken
transaction. It can be used to hold additional data for the token if desired, but it is not required.Q5: How will the implementation of this amendment affect existing tokens?
A5: The implementation of this amendment will not retroactively affect existing tokens. It will apply to new token issuances going forward, allowing users to set limits on tokens created after the amendment is enacted. Existing tokens will continue to operate under the rules that were in place at the time of their issuance.
Q6: How does the
OutstandingAmount
get reduced?A6: When funds are sent back to the issuer, the
OutstandingAmount
in theFToken
object will be reduced accordingly. This occurs during payment transactions where the issuer receives tokens back. There are also other transactions that can reduce theOutstandingAmount
.Another Implementation: Restricted Transaction Types for FToken Issuers
Once an account creates an
FToken
, it will only be allowed to perform specific transaction types. This restriction ensures that the issuer maintains control over the flow of tokens and minimizes the risk of unintended consequences from other transaction types. The only permitted transactions for the issuer account will be:Beta Was this translation helpful? Give feedback.
All reactions