Amendment Idea: IOU-MPT Converter #391
Replies: 4 comments 4 replies
-
|
My immediate concern is with the idea that it ignores blackholing on the IOU issuer. First, because there is no concept of blackholing on ledger. It's not an account flag so much as issuers setting an "impossible" regular key, and disabling their master key. So I guess you're proposing to ignore the disabled master key. The problem with that is that there are other reasons to disable a master key - like the secret being compromised. We don't want a scenario where an account that is happily chugging along using their regular key finds their trust lines disappearing because a malicious actor with their compromised key created an MPT. Also, I'm imagining some holders of blackholed IOUs would strongly object to them having any kind of change. Finally, with MPT support coming to the DEX, this could, in principal, be handled without more new transactions by the issuer making a giant offer to convert IOUs to MPTs at a 10^n:1 price, and letting holders cross the offer. |
Beta Was this translation helpful? Give feedback.
-
|
"This field will ignore blackholing on the original issuer account, to allow blackholed issuers to still convert their issued tokens to MPTs." How can you guarantee that issuers of all tokes have not in one single case shared that key? In which case their token could unwantingly be converted to a MPT? |
Beta Was this translation helpful? Give feedback.
-
|
After MPT DEX support is live, wouldn't most use cases for this standard be served by the issuer simply placing an offer to buy their trust line tokens and sell the MPT they're converting it to? The flow would be similar to this, but the conversion details wouldn't need to be locked into the MPT Issuance.
The DEX approach would also allow for pretty flexible conversions, like you wouldn't even necessarily need to use the cold wallet of the original trust line token to place the "conversion" offer, like if they're blackholed. And you could potentially even offer more flexible conversions, like letting people trade in their trust line token for their choice of different MPTs with different properties. The only thing that wouldn't really work is converting to an MPT that can't be traded in the DEX. (Or would it? The phrasing of the Can Trade flag says holders can't trade in the DEX, but maybe the issuer could still do so?) Basically, I think most of the functionality of this amendment should be basically already available as part of MPT-DEX. |
Beta Was this translation helpful? Give feedback.
-
|
I think the same problem would be addressable if we had a concept of "infinite supply order" that would integrate with DEX. it would have to be obviously owned by the issuer of both tokens (pays / gets) and would effectively work by atomically
Permission delegation would be useful here, to enable this object to be created by an issuer of one token only (with permission from the other issuer) or even by a 3rd party (with permission from both issuers) Basically a new flag in I would call the new flags "denomination" since this is similar to how denominations in TradFi work . |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
IOU-MPT Converter
Abstract
This spec provides a mechanism for issuers of IOU tokens to convert their tokens to an MPT. It ensures that the issuer must consent to what MPT is used for the conversion, to avoid scams, but also gives the holder the flexibility to do the conversion and deal with possible dust remnants of the IOU token themselves. It also supports setting up a conversion for blackholed issuers who may no longer be able to directly set up an MPT issuance on their issuing account.
Motivation
Trust lines are a fundamental building block for many XRP Ledger tokenization features. They have been around for the past 13 years, since the inception of the XRP Ledger. However, they can be rather difficult to use - they take up a lot of space (at least 234 bytes each), they represent a bidirectional debt relationship (while most people are used to thinking about debt as unidirectional), and they don't have a method of storing on-chain metadata.
Multi-Purpose Tokens aim to fix all of those problems - they only take up about 52 bytes, they represent a unidirectional debt relationship, and they have an issuance object where on-chain metadata (and other token-related information) can live. As a result, many issuers that have issued IOU tokens may want to migrate to MPTs.
However, this is essentially impossible to do directly, mainly due to the IOU's bidirectional debt relationship and its unique method of representing floating points. This is the problem that this spec attempts to solve.
1. Overview
We propose:
MPTokenIssuanceledger entryMPTokenIssuanceCreatetransactionTrustlineConverttransactionThis feature will require an amendment, tentatively titled
IOUToMPT.2. Ledger Entry:
MPTokenIssuance2.1. Fields
All existing fields stay. The following fields are added:
OriginalIOUobjectIssueIOUScale0numberUInt8IOUScalevalue.3. Transaction:
MPTokenIssuanceCreate3.1. Fields
All existing fields stay. The following fields are added:
OriginalIOUobjectIssueIssuerSignatureobjectObjectAccount.IOUScalenumberUInt8IOUScalevalue.3.1.1.
IssuerSignatureAn inner object that contains the signature of the Lender over the transaction. The fields contained in this object are:
SigningPubKeystringSTBlobN/ATxnSignaturestringSTBlobN/ASignerslistSTArrayN/AOriginalIOU.issuersigners to indicate their approval of this transaction.The final transaction must include exactly one of
SigningPubKeyandTxnSignaturefields, orSignersfield and, optionally, an emptySigningPubKey.The total fee for the transaction will be increased due to the extra signatures that need to be processed, similar to the additional fees for multisigning. The minimum fee will be$(|signatures| + 1) \times base_fee$ where $|signatures| == max(1, |tx.IssuerSignature.Signers|)$
The total fee calculation for signatures will now be$(1 + |tx.Signers| + |signatures|) \times base_fee$ . In other words, even without a $2 \times base_fee$ .
tx.Signerslist, the minimum fee will beThis field is not a signing field (it will not be included in transaction signatures, though the
TxnSignatureorSignersfield will be included in the stored transaction).This field will ignore blackholing on the original issuer account, to allow blackholed issuers to still convert their issued tokens to MPTs.
3.2. Failure Conditions
The existing failure conditions remain.
In addition:
OriginalIOUis not an IOU (i.e. XRP or an MPT)IssuerSignaturedoes not contain valid signing information forOriginalIOU.issuerOriginalIOUis not present, butIssuerSignatureorIOUScaleis included.OriginalIOU.issuerdoes not existOriginalIOU.issuerAccount, butIOUSignatureis providedOriginalIOU.issuerAccount, butIOUSignatureis not provided3.3. State Changes
The state changes remain the same.
4. Transaction:
TrustlineConvertThis transaction converts IOU balances to MPT balances. The holder submits this transaction.
4.1. Fields
TransactionTypestringUInt16TrustlineConvert).AccountstringAccountIDMPTokenIssuanceIDstringUInt1924.2. Failure Conditions
MPTokenIssuanceIDMPTokenIssuanceIDis not anMPTokenIssuanceobjectMPTokenIssuanceobject corresponding toMPTokenIssuanceIDdoes not have anOriginalIOUfieldOriginalIOUMPTokenobject (if one does not already exist forMPTokenIssuanceID)4.3. State Changes
If the transaction is successful:
MPTokenobject for theMPTokenIssuanceIDtoken, with theAccountas the holder (if one does not already exist).AccountandOriginalIOU.issuer(whereMPTokenIssuance.IOUScale).MPToken.MPTAmount.Note that any dust (balance less than$10^{-n}$ ) is left in the trustline. This can be deleted by sending it back to the issuer with a
Paymenttransaction.5. Security
The issuer of the original IOU must consent to allowing the transition to the MPT in all cases - either because they are also the issuer of the MPT, or because they signed for it in
IssuerSignature. This prevents the creation of spam/scam tokens to drain IOU balances.Dust in the IOU is not deleted from the trustline on purpose - depending on the trustline, this may be very valuable.
n+1. Open Questions
TrustlineConvertthat allows the user to delete the trustline regardless (deleting the dust)?TrustlineConverttransaction (though without being able to delete the dust)?Appendix
Appendix A: FAQ
A.1: Is there some way to deal with blackholed issuers who still have their keys? Is there another way for them to prove that that's their token?
Batched together to do so in a trustless mannerBeta Was this translation helpful? Give feedback.
All reactions