8

Cardano requires that every transaction output contains at least a value of 1 Ada. As the documentation points out, this means that it is not possible to send only native tokens in a transaction.

I struggle to understand the usefulness of native tokens given this constraint. In particular, I wonder how it is possible to implement a stable coin on Cardano given this limitation. I understand a stable coin to be a combination of a native token (e.g. USDT) and a smart contract that makes sure there are enough reserves and that the stable coin can be traded for Ada at the current USD exchange rate. The issue here is that these USDT can never be send without also including Ada in the transaction output. Wouldn't this severely impact the usefulness of this USDT (if not completely defeat its purpose)?

How does Cardano implement stable coins then ? And can they be sent without the minimum Ada constraint ?

Edit (clarification): Note that this min-Ada requirement is fundamentally different from fees. Fees are due and payed to the Cardano network. This minimum Ada, however, needs to be sent to the recipient of the native token.

5 Answers 5

2

IOHK is actually working on a solution to stable coins called Djed and you should check it out.

https://iohk.io/en/blog/posts/2021/08/18/djed-implementing-algorithmic-stablecoins-for-proven-price-stability/

Cardano research's first development is bearing fruit year-round.

Also, Hydra scaling is coming, being able to run Hyrda heads on a node will make this issue with ADA fee no longer exist.

3
  • Please expand on how the linked "Djed" article answers OP's question
    – runeks
    Commented Nov 16, 2021 at 11:47
  • It goes over one of the ways you can pay fees that don't have a min ADA requirement, which eliminates the issue purposed by the OP. When you read the article it explains it in detail that doesn't make sense to copy-paste here when you can read it. I recommend it. Commented Nov 17, 2021 at 23:45
  • Excellent! That’s indeed relevant to OP’s question. Please edit your answer to add this information.
    – runeks
    Commented Nov 19, 2021 at 7:27
1

It seems to work fine on Ethereum. You are required to spend ETH as gas to move stable coins like USDT or USDC.

Native tokens are nice because you don't need to spend extra to move tokens, like you do for ERC20 tokens on Ethereum. On Cardano you just need to include your fee and a tiny amount of ADA.

There are conversations about Babel Fees, which would further improve the experience of using Stable coins by letting you pay your fees in native tokens. It's conceivable that you'd be able to meet your minimum UTxO value threshold in a similar way, but that's wishful thinking.

6
  • 1
    The equivalent of Ethereum gas fees are just the Cardano fees. Fees are no problem. The min-Ada requirement requires the sender to include 1 Ada in the transaction and to send it to the recipient ! This is totally different from fees and requires the price to be always split in an Ada-part and a native-token-part, which is not feasible without checking the exchange rate of Ada vs this native token. Babel fees are equally useless with this min-Ada requirement.
    – Jey
    Commented Aug 18, 2021 at 6:30
  • Why do you need to know an exchange rate? It’s the same as fees in that you have to include extra value for a transaction to be valid. Why do you care if it goes to the recipient vs the network? Commented Aug 18, 2021 at 15:40
  • Of course 1 ADA/tx could get expensive, but I think that's a separate concern. The value can also be adjusted. I'm sure the chain config value minUTxOValue could be turned down from 1000000 Lovelace to something much lower, especially as the value of ADA increases. Commented Aug 18, 2021 at 16:05
  • If it is part of the value the recipient gets then it is part of the price and should be disclosed. Try to explain to an average user why he has to pay 20 USDT as well as 1 Ada in addition to the 0.16 Ada in fees.
    – Jey
    Commented Aug 18, 2021 at 17:01
  • "The issue here is that these USDT can never be send without also including Ada in the [transaction]. Wouldn't this severely impact the usefulness of this USDT?" This exact statement could be said about fees is all I'm suggesting. I think of it like mailing a package over the blockchain: the fees are the stamp and the minimum ADA is the envelope :) With the added benefit of the envelope being reuseable! I don't think this makes them unfeasible at all, just different from ETH. Commented Aug 18, 2021 at 17:35
1

EDIT: Yes, it's an issue (see comment).

The output requirement (in plutus at least) is in lovelaces (0.000001 of ADA), so it shouldn't be really an issue.

1
1

While I agree with you that fees might be a problem for native tokens, I do not understand why you make such a difference between fees and minimum value.

From a practical viewpoint: in Yoroi, when you send a native token, the minimum ADA to send (sum of fees and minimum-ada) is automatically computed. So the difference between fees and minimal transaction is transparent for the user. You do not even need to explain that difference to Yoroi users.

From a theoretical viewpoint: if you do not like the idea of minimum-ada, you can just assume that the fee structure is as follows:

  • Sending ADA: 0.17ADA
  • Sending a native token: 1.17 ADA (or a bit more for NFTs)
  • Receiving a native token: -0.83 ADA

So the minimum ADA value can be seen as some kind of fee. For the sender it definitely is. It is different for the receiver, which might be surprised that the fees are negative. But he should not complain about it.

However, it is true that a 1.17 ADA fee is too high for low value transactions. But this has nothing to do in particular with a stable coin, that can be used for both high-value and low-value transactions.

2
  • I have thought more about this min-Ada dilemma and now I think that the best solution is to construct payment mechanism as 2-step procedures on Cardano. In a first step, the sender deposits the stable coins together with the minimum Ada on a script address with validator that only allows the recipient to retrieve the value. In a second step, the recipient takes the stable coins and sends the minimum Ada back to the sender. The drawback is that fees are twice as high. On the other side transactions are safer, as no funds get accidentally send to the wrong addresses.
    – Jey
    Commented Aug 31, 2021 at 18:15
  • Regarding Yoroi, I don't think it is done in a transparent way. The user can easily miss that the difference between the available funds and the "balance after" is not the fees. A normal user would get the impression that the transaction he makes costs him only the fees.
    – Jey
    Commented Sep 1, 2021 at 16:10
0

"If the UTXO to be created as an output of a transaction is less than 1 ADA, this UTXO cannot be created and then that output is included as transaction fee."Source

I have not owned any fungible tokens yet, however I have owned some NFT's and they are considered to have an ada value of ~1.4. My general assumption is that stable coins (all other native assets) will have a mock ada value and meet this requirement.

With IOHK's commitment to making native assets first calls citizens it would be unlikely that you would be required to have 1 ada at every UTxO even when there are other assets there. At worst case though you are just required to hold 1 ada in a wallet with native assets. This hardly seems like an inconvenience.

4
  • It is definitely an inconvenience if you have a wallet with 100 USDC and 1.5 ADA and want to spend 5 USDC. Then you'd have to send 1.4 ADA + 5 USDC (+ transaction fees) to the vendor. The rest of the USDC can't be spent even if you have enough ADA to cover transaction fees because you don't have 1.4 ADA to send with the USDC.
    – eddex
    Commented Aug 18, 2021 at 15:58
  • This would be a very apple-ish way to do it. It would mean that only the Cardano Foundation could implement usable stable coins. Cardano views itself as a distributed system. Limiting the ability to create stable coins to a central entity seems like a contradiction.
    – Jey
    Commented Aug 18, 2021 at 17:05
  • its only a problem if you are trying to send the ada as well. "namely: minUTXOvalue" So every UTxO must have a value of at least 1 ada you do not have to send 1 ada in the transaction. Commented Aug 18, 2021 at 19:28
  • If your native token has a value of 0 Ada, then you need to send the min Ada in the transaction (i.e. include Ada into the UTxO). Even the Yoroi Wallet doesn't know how to explain and display this fact to the app user. If you send native tokens Yoroi shows you your current balance, the fees and the resulting ending balance. The thing is that the ending balance is not the result of the current balance minus the fees. The difference is the min Ada and it is shown nowhere in the UI that you are sending them as well with your transaction.
    – Jey
    Commented Aug 19, 2021 at 7:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.