Cardano will allow paying fees with tokens

Published 7.11.2022

Cardano will allow users to pay transaction fees through tokens instead of native ADA coins. This mechanism has been named Babel fees. Let's take a look at what changes it requires and how it will work.


  • Most people won't sign up for a centralized exchange just to use a blockchain. Don't expect them to buy native coins of blockchain just to hold tokens or stablecoins.
  • For the security of the Cardano network, it is important that transaction fees are paid in ADA and not in tokens.
  • Users will be able to create a transaction without having to pay a fee in ADA. Instead of a fee, the transaction will contain a liability.
  • Transactions containing a liability are processed by pairing them with a matching transaction that pays the fee.
  • The Babel fees feature can be used for other things like atomic swaps.
  • For pool operators, Babel fees can bring new business opportunities.

Why pay with tokens instead of ADA?

Imagine that a game studio plans to release a new unique game with an elaborate internal economy. Game money will be tokens on the Cardano blockchain. Users can own them along with in-game items, which will be represented by NFTs. The idea has one catch. Players have to buy ADA coins with fiat currency and send them to their in-game wallet in order to use in-game money outside of the game and buy other items with it on a decentralized exchange. We all feel that the user experience won't be the best. What if players might not know about ADA at all and do not even notice that there is a Cardano network somewhere in the background? Players could earn in-game money and then use it directly to pay any Cardano transaction fees. This is precisely what the Babel fees feature is supposed to make possible.

It does not have to be a game, but any other financial product. If a regular users would like to hold stablecoins, tokenized dollars, or any other valuable tokens, why should they bother buying ADA coins that they only need to pay transaction fees on the Cardano network? Most people in the world won't sign up for a centralized exchange just to use a blockchain network. It's naive to expect this. The blockchain industry needs to move towards adoption and allow people to use blockchain without the need to buy native coins over and over again. People know how to install mobile apps on their phones. That should be enough for them to receive some tokens and start using blockchain or hybrid services that use blockchain in the background.

Do pool operators and stakeholders want to receive different tokens instead of ADA? Should the Cardano project treasury be filled with gaming and other tokens? Nobody wants that. Distributing hundreds or thousands of tokens to stakeholders would be very resource intensive and probably not feasible. In blockchain networks, fees must be paid at an economic value that prevents spamming of the network. It is reasonable to insist that fees in the Cardano ecosystem be paid only in native ADA coins and nothing else. ADA coins are valuable. Tokens do not need to be valuable. That said, it would be possible to spam the network with transactions that offer worthless tokens as a fee. These transactions could fulfil the mem-pool at the expense of other transactions.

Note that we are talking about two conflicting demands. It is important for network security that transaction fees be paid in ADA. From the users' point of view, it is advantageous for them not to know about ADA when using tokens. The Babel fees mechanism can reconcile these requirements.

Babel fees

Let's demonstrate the functionality of Babel fees with a practical example.

Alice has only 100 X tokens in her Cardano wallet and no ADA coins. She wants to send 50 X tokens to Bob. In order for her to construct a valid transaction, she needs to pay a fee of 0.17 ADA. However, Alice can only offer X tokens.

The Babel fees mechanism allows you to create a Babel offer, i.e. a transaction that contains a liability. You can think of this as a number of coins with a negative value. In our case, this would be -0.17 ADA. Of course, the transaction with the liability will not be valid. It is not possible to work with negative values at the ledger level.

Such a transaction can be seen as an offer to someone else interested in obtaining X tokens. Suppose Carol is interested in obtaining X tokens and is willing to pay ADA coins for them. Her proposed exchange rate, deduced by the market value, is 0.01 ADA for 1 X token. The operation can be viewed as a spot trade between ADA coins and X tokens.

Carol is a pool operator. She will see the transaction with the liability in the mem-pool and decides to cover it. She creates a transaction that absorbs the liability and covers it with ADA coins for getting 17 X tokens for herself from Alice. Carol essentially covers the transaction fee for Alice.

The mechanism is based on two transactions. Let's call it an offer transaction (Alice's transaction) and a matching transaction (Carol's transaction). The two transactions can be batched and validated together. The batching mechanism is already used in Cardano. Within the batched transactions, it can be verified that all inputs and outputs are correct. That is, for example, no output will have a negative value.

Users can submit a transaction and set the fee in any token as a liability. Such a transaction will settle if there is someone who is willing to cover the liability in exchange for tokens. The transaction gets into the ledger and all parties involved are satisfied.

Of course, users will have to set a transaction fee in tokens such that someone will be willing to exchange tokens for ADA coins. If no one is willing to create matching transactions, the offering transactions will not get into the ledger.

Pool operators, or anyone else, can voluntarily decide whether to accept the tokens offered and at what exchange rate. Theoretically, whoever issued the tokens can do so as well, essentially funding users to use Cardano. Obviously, she will only do this if the tokens are valuable to him (or someone else) for some reason.

The Babel fees feature can only be implemented thanks to the eUTXO model and the fact that Cardano allows the calculation of the transaction fee in advance and is deterministic. On many networks, a completely different approach would have to be taken to implement similar functionality.

Why would SPOs want to produce matching transactions?

Pool operators want to get the maximum possible reward for their activities. The Babel fees mechanism will allow them to obtain tokens that they can sell for a higher market value than the fees they pay in offering (Babel) transactions.

Imagine an operator paying a transaction fee of 0.17 ADA and receiving 17 X tokens. For example, if the current market value of X tokens is 0.012 ADA, the pool operator can sell the 17 X tokens for 0.204 ADA.

Operators will not do this for one transaction, so it is important that the volumes with offering transactions are significantly higher. It is possible that each pool operator will support different tokens. Some may not support them at all. It may take a longer time for offering transactions to settle, compared to regular transactions. Some off-chain cooperation between pool operators and token issuers can be expected. If a token issuer is going to allow its users to pay transaction fees in, say, stablecoins, it will probably want as many pool operators as possible to produce matching transactions.

It is possible that there will be strong demand from operators to acquire tokenized BTC or other attractive assets and the willingness to create matching transactions will be high. This would allow Bitcoin fans to use the Cardano network without having to buy ADA coins.

Atomic swaps

Note that the described mechanism can also be used for other things like atomic swaps. An atomic swap is supposed to move the assets between two wallets at the exact same time, ideally in one transaction.

In our case, two transactions are needed, but they will be batched and processed together. One party will create a transaction containing the liability, and whoever is willing to cover the liability will create a matching transaction. In return, she will get the tokens offered in the offering transaction. Thanks to Plutus scripts it is possible to insert a spending condition into offering transactions, which allows the creation of some additional functionality.

Note that the two parties do not need to interact with each other on-chain or off-chain and there is no need to use any application. Offering transactions and matching ones are batched and validated in the same block.


The introduction of the Babel fees mechanism does not require any changes to the ledger and only minimal changes to transaction construction, processing and validation. Some networks have implemented similar functionality through ledger-implemented DEX. This is not necessary in the case of Cardano.

The Babel fees feature allows Cardano to obtain ADA coins when fees are paid in many different tokens, just as any foreign language can be translated into a language you understand.


Related articles

Did you enjoy this article? Other great articles by the same author