The Trust Machine — Part5: DLTs existential crisis, tokenomics and mana
While the last parts of this series of blog posts explained the ideas behind IOTAs upcoming coordicide solution, this part is not going to explain how things are currently envisioned to work in IOTA but instead talk about an alternative framework for tokenomics, that I proposed almost 3 years ago and that I consider to be superior.
We are currently internally discussing if and how we can best assess the viability of the proposed ideas but the outcome of this discussions / a decision is still pending.
This blog post accordingly has not only the purpose to present these ideas to a wider audience but also to provide a more consistent and concise foundation for our internal discussions.
If we look at the DLT space today, then we see that almost all projects use fees to determine the priority of transactions in a congested situation.
The reason why this model is so successful is because it:
- is easy to understand and implement (simple priority queue)
- is in line with fundamental economic laws (dynamic supply / demand = dynamic price)
- provides incentives (users pay validators)
- enables smart contracts.
Smart contracts require fees because of the halting problem, which essentially states that it is impossible to predict if and when a turing complete program would stop (without executing it).
Without a resource like gas that can be consumed for every step of execution, users could deploy the following smart contract that would run forever, while a fee based system would simply cancel the execution once the gas runs out:
But the benefits of fee-based systems even extend to actual use cases like DeFi, where certain actors like arbitrage traders need to be able to buy priority to re-balance pools as fast as possible so users always receive the most accurate market prices.
Note: I consider fee-based systems to be the optimal solution because they directly model market dynamics.
Fee-less transactions in other projects
There have been several attempts to implement fee-less transactions in other projects but they are either:
- unsustainable (like Hathor that just replaces fees with an unbounded inflation and the corresponding ponzinomics)
- only able to provide fee-less transactions because the network is uncongested and offers limited utility (like the current IOTA and Nano)
- or have completely broken tokenomics and usability (like EOS).
So far, no fee-less system has ever managed to get any meaningful traction in the space and I think the reason is because they seem to be inferior when it comes to their usability / technological capabilities (simply because they ignore the market dynamics around block space).
Understanding the problems of fee-based systems
Considering all of the benefits of fee-based systems, we should ask ourselves if it really makes sense to replace such a simple and efficient system with something completely different or if we should not maybe focus on fixing the problems we see with fee-based systems, instead.
I have never seen an analysis of the problem space of fee-based systems and without such an analysis it seems to be almost impossible to design a better system because it is not even clear what better even means.
In fact, I think that a large part of the disagreement inside the IF in regards to this topic is the result of people having different visions.
My vision is not to come up with something completely different that I hope to magically beat market dynamics (that have proven to work for tens of thousands of years) but to take the most successful model that has proven to work and solve all of its drawbacks (that can reasonably be solved).
Accordingly I want to start with mapping out the problem space and discuss all of the undesirable properties that I currently see with traditional fee-based systems.
Fees create unnecessary dust
As soon as the fee to move funds gets larger than the balance of users, their funds turn into dust and can in the worst case (if the fees stay high) never be moved again.
Considering that one vision of cryptocurrencies was to bank the unbanked, this seems like a very undesirable property especially for smaller holders.
Fees disincentivizes usage
Since every use of the network costs a part of the holdings, a lot of users prefer to hodl their coins instead of interacting with the network.
This doesn’t just lower the engagement with the technology but it also creates a situation where only activities are pursued that could potentially yield a profit (like DeFi).
Since the only way to create sustainable tokenomics comes from demand for block space, fee based systems have a bootstrapping problem while the network is not fully utilized.
To solve this problem, DLTs tend to hand out rewards in the form of inflation to incentivize early validators. The fact that this inflation is not marketed as a devaluation of the existing token supply but rather as a reward / passive form of income has ponzi-like characteristics.
In Bitcoin for example, only 1% of the block rewards are payed by the fees. It is an open question how Bitcoin plans to maintain its security once the block rewards disappear.
Unpredictable token supply
But even mature ecosystems like ETH that have moved to a more sustainable mint / burn model where users burn fees and validators mint new tokens are showing some undesirable properties like an unpredictable token supply that depends on the usage of the network (which makes it likely that the rates of minting and burning would need to be adjusted in the future).
Note: This is undesirable because we want to create a network with as little governance overhead as possible.
Currently most DLTs incentivize the following two behaviors:
- users assign the weight of their funds to a trusted validator (staking rewards)
- validators secure the network through regular statements (block rewards).
This is the minimum set of incentives to create a secure a DLT but there are currently no incentives for users to:
- directly participate / run their own nodes (with their own ID)
- only hold tokens.
The last point is of course indirectly covered by staking rewards but there is a large number of users who are not able to participate in staking (i.e. due to regulatory reasons or because they simply don’t have enough funds).
Another “problem” of fee-based systems that is often expressed in discussions is the fact that the price to execute a transactions changes over time.
While I understand and agree that this is a problem for the user experience, I think that this is the only problem that can never be solved (without sharding) simply because it is the result of a very fundamental economic law.
Fee-less doesn’t mean free
Critics of the fee-less paradigm usually assume that being fee-less means to offer free transactions which would violate the last point but that is not my understanding of IOTA’s vision.
Transactions in IOTA are not free but instead of burning parts of the tokens held by the user we burn a secondary ressource (currently energy in the form of PoW) which allows users to repeatedly interact with the network without loosing their funds.
PoW has worked reasonably well in providing an agreement of importance, but it also has a few undesirable properties:
- it wastes energy
- it leads to mining races (advantage for ASICS and FPGAs)
- it decreases the user experience (makes issuing transactions slower)
- it can not directly be used as a replacement for gas in L1 smart contracts
- it can not provide incentives
For this very reason, we would like to replace this mechanism of burning energy with something else that ideally is also able to provide the necessary tokenomics for IOTAs success.
Defining the vision
Instead of trying to provide free transactions (which seems impossible), we should try to build a system:
- were funds no longer turn into dust
- that allows users to repeatedly interact with the network without loosing their tokens
- that doesn’t have the bootstrapping problem (sustainable tokenomics)
- that has a capped token supply (a harder money / better trust anchor than even Bitcoin)
- that provides additional incentives for direct participation and holding tokens
I can not think of any additional problems of fee-based systems and this seems to be the only reasonable set of improvements that are realistically achievable.
The biggest problem of DLTs
While we have so far only discussed the problems of fee-based systems, I also want talk about another, much more fundamental problem that the space is facing and that I would like to solve.
DLTs are useless
This statement might sound a bit weird coming from a DLT researcher but if we look at the history of accounting:
- single entry accounting (10000 BC): the rise of the first civilizations
- double entry accounting (1494): the renaissance, the industrialization and the information age
- tripple entry accounting (2008): a decentralized savings account
then it becomes pretty obvious that the impact of DLTs on society has so far been extremely limited.
Of course we have seen a huge inflow of money but this was mainly driven by the vision of a revolutionary technology that would soon transform the world.
However — despite 14 years of existence — the space still seems to struggle to define a clear value proposition that goes beyond providing an investment vehicle with the ideological benefit of distributed trust. Digital forms of cash existed before (i.e. PayPal) and were often even easier and cheaper to use.
If the only improvement over existing technology is the fact, that users can hold funds outside the reach of governments and regulators then it is understandable that the space faces a growing number of criticism.
I would even go as far as saying that:
The DLT space is having an existential crisis when it comes to its perceived legitimacy.
The killer application for DLTs
Considering the importance of this problem, I want to start the remaining parts of this blog post with formulating what I believe to be the killer application for DLTs that will single handedly turn them into one of the most valuable and important pieces of software on this planet.
The biggest innovation of DLTs is the solution of the sybil protection problem in the open and permissionless setting and the resulting protocol robustness against attackers.
Our traditional web2 infrastructure is completely lacking this kind of protection.
- DDOS attacks are only possible because overloaded servers have no way of differentiating between real users and attackers.
- E-mail spam is only possible because spammers can create an almost infinite amount of addresses at 0 cost.
- CAPTCHAs are only necessary because web servers could otherwise not distinguish between real users and malicious bots.
What if we could extend the technical capabilities of DLTs to not only provide sybil protection for the protocol itself but also for web2 and the rest of the world?
I believe that the killer application that the DLT space has been looking for, is going to be:
Self-governed, long-living and sybil protected DIDs for web2 and the world to secure and harden our existing IT infrastructure and to simplify the interaction with the digital world.
Interestingly, I am not the only person who has recently claimed DIDs to be the killer application. In fact, Jack Dorsey just announced his vision for web5 (a combination of web3 and web2) where web3 provides self-governed identities for web2
I very much share his point of view but without an added benefit like the named sybil protection, this idea is most probably not attractive enough to attract a large number of real world adoption.
Identity based ledger
To enable the named use case of providing a perception of sybil protected identities we first need to be able to track these identities together with their corresponding metadata and reputation.
In contrast to an account based ledger, that has a natural equivalent to identities, a UTXO based ledger is lacking this concept.
It is however pretty trivial to model an account based ledger on top of a UTXO based one and we are already doing this with our alias outputs which are outputs with a unique and persistent ID that are able to unlock other outputs (alias outputs represent identifiable and non-forkable state).
Instead of calling these outputs alias outputs, we should most probably rename them to identity outputs and make them our primary mechanism to interact with the ledger.
This would not only give us a common way to index the ledger (all outputs are owned by an identity) but it would also make it conceptually easier to understand for humans (including the ability to use address books — we essentially combine the benefits of account based and UTXO based ledgers).
The reason why I am calling these outputs identity outputs instead of account outputs is because I envision them to have have a few very important differences compared to traditional flat accounts in an account based ledger:
- They should have a commitment to a DID document hash that contains eventually existing verified credentials associated with this DID (enshrined DID).
- They should be able to point to an optional parent identity, allowing us to build hierarchical structures with sub-identities and fine grained access control (think active directory trees and forests).
- They should have a private identity based ledger of tokens that can only be burned but never be transferred or traded to a different identity.
Identity based tokens (soul bound tokens)
For people who are actively following the space, this last point might sound familiar as Vitalik Buterin recently published a paper about a very similar idea of soul bound tokens (SBT).
I have to admit that I am not the biggest fan of the word soul as it doesn’t correctly reflect the fact that people will control multiple identities (i.e. one that represents their online persona and one that represents their real world self).
Since this particular idea for mana is over 3 years old and I am used to call them identities and identity based tokens I will just continue to use these terms.
But regardless of the naming, a growing number of people expect this topic to become the next big thing and in the context of the history of accounting, it makes a lot of sense that the technology only becomes valuable once you start to use it to manage activities in society:
Problems with Vitaliks paper
The biggest problem that I see with Vitaliks paper and the corresponding ideas is that they are still pretty vague. In particular the absence of some form of social consensus around what these reputation tokens would mean, seems to be problematic.
If I have a cucumber token on my account then does this mean that I like to eat cucumbers, that I grew the largest cucumber in my village or something completely different?
I agree that these kind of tokens are an extremely powerful concept as they allow to establish long-living identities with a reputation but without a common understanding of what this reputation means, it is not immediately useful.
This is where mana comes into play which will be the central identity bound token that is used by everybody as a resource for the tokenomics in the IOTA ecosystem.
The resource that generates mana is the IOTA token itself with each token generating 1 mana per time unit.
Whenever a user moves funds, the corresponding transaction generates an amount of mana that is equal to the moved funds multiplied by the time, the tokens remained static:
generatedMana = amountOfTokens * timeHeld
Spending the tokens acts as a proof of ownership and allows the issuer to decide which identity should receive the generated mana rewards which accordingly leads to an increase of its mana balance.
Mana as a reputation
Since mana is an identity based token, it can no longer be moved once it was pledged to an identity.
This turns it into a reputation vector that directly measures the amount of contribution of individual actors in respect to the act of holding tokens:
- 10 Tokens that are held for 2 time units generate 20 mana.
- 4 tokens held for 5 time units generate 20 mana.
- 20 tokens held for 1 time unit generate 20 mana.
The more tokens an actor owns and the longer he holds them, the more mana he receives.
To turn mana into a real reputation system, where reputation is hard to gain (costs money and time) but easy to lose, we add another little tweak:
We allow users to define conditions in their transactions that upon proof of violation would cause them to lose their entire reputation.
Being able to put up ones reputation as a ransom enables some interesting game theoretic tricks for off-chain protocols in the context of offline payments and payment channels but this will be a topic for a later blog post.
The application of mana to our congestion control is relatively straight forward: Instead of burning a real resource like energy in PoW and favoring the actors the burned the most, we simply switch to burning a virtual resource (mana).
Note: If the network is uncongested then it is possible to use the network without any mana — we bootstrap the network with utility (entirely free transactions) instead of inflation.
Mana as a replacement for gas
Since mana is now a virtual resource with a concrete balance, we can use it as a replacement for gas in layer1 smart contracts.
Mana for on-chain governance
One important difference between mana and stake is that it is directly held by the users of the system and doesn’t get delegated.
This means that it can be used for on-chain governance where the honest actors that have been contributing to the ecosystem the most and the longest have larger balances.
The presence of a time factor is particularly interesting because it prevents actors that momentarily control a majority of the tokens to take over the network (i.e. when Justin Sun took control over Steem because more than 50% of the tokens temporarily resided on their exchange) — the network grows stronger over time.
In the DeFi ecosystem, it is very common to bootstrap new projects by airdropping governance tokens to the users.
One of the biggest problems when distributing these tokens is to decide who should receive them. IOTAs mana vector that directly measures the amount of contribution of all users to layer1, would enable completely new distribution schemes:
- distribute tokens to the top n holders
- distribute tokens proportional to mana holdings
- distribute tokens based on a weighted lottery
This doesn’t just extend the reach of projects in regards to their possible user base (without opening themselves up to armies of bots) but it would also create a huge incentive for people to buy IOTA now and directly participate to be able to establish their DID and qualify for the airdrops that can be expected to happen within the ecosystem.
Mana as a currency for other applications (mana economy)
But mana doesn’t need to be limited to the base layer. It can also be used as a sybil protection for other applications.
One example would be IOTA Name services where we could require a certain amount of burned mana for each registered domain (to prevent people from registering a huge amount of domains at once).
This ultimately maximizes the value accrual to the base layer, as the corresponding mana balances of users are an overarching concept that is useful even for completely independent layer2 projects that might decide to settle on IOTA.
Mana as a sybil protection for the real world
If IOTA were to be widely adopted, it would for example be possible to only accept emails from actors with a minimum mana balance. Spammers would have a really hard time to fight against this protection as it takes a long time to build up their reputation but a single entry in a firewall to block them.
The creation of an army of bots with a certain amount of mana is theoretically possible but expensive and infrastructure providers could just slightly increase the minimum mana threshold to again exclude these actors.
Further possible use cases:
- grant access to luxury areas in i.e. airports (identify wealthy individuals)
- protect online votings from armies of bots
- limit amount of people that can sign up for online events
- DDOS protection through prioritization of requests by actors sorted by their mana balance
Mana market / tokenomics
Actors that require more mana than they generate need to buy mana (or throughput) on a secondary market (using IOTA as a currency).
Since mana can not be moved between identities, the only way to buy mana is by directly purchasing the pledging rights from token holders.
Note: We should most probably create an enshrined output type that allows people to seamlessly perform these kind of transactions (buy unpledged mana) on-chain in the same way as people are able to directly buy gas from miners in ETH.
Users that do not want to touch mana but only use the network can of course also rent access to the infrastructure and throughput of service providers that resell their own mana similarly to the way it happens with Infura in ETH.
The ability to sell throughput or mana to external actors that exceed their own quota will ultimately allow token holders to earn a passive income.
This is very similar to a fee based system where it is the block space that is valuable and everybody that needs additional throughput becomes such an external buyer.
Overcoming the bootstrapping problem
Since the rewards are payed in throughput quota instead of burned IOTA tokens, we are not using ponzinomics to incentivize people early on.
Instead of subsidizing the early network with additional inflation to make up for missing demand we simply give users the ability to save their unused quota and use / sell it later when the demand is higher.
By the time, the network generates enough demand for block space, early users that have been taking part in the ecosystem for a long time will naturally have more mana than newly joined actors and will accordingly be able to reap higher rewards by reselling it (creating a similar network effect as in other networks).
Funds no longer turn into dust
Another very interesting feature of this mana model is the fact, that funds no longer turn into dust.
Let’s look at an imaginary network that can process exactly 1 transaction per day and where two actors compete for the throughput (Alice controls 1 token and Bob controls 3 tokens):
Old Mana Income Spent New Mana
Day1 (Alice / Bob): 0 / 0 1 / 3 (1) / 2 1 / 1
Day2 (Alice / Bob): 1 / 1 1 / 3 (2) / 3 2 / 1
Day3 (Alice / Bob): 2 / 1 1 / 3 (3) / 4 3 / 0
Day4 (Alice / Bob): 3 / 0 1 / 3 4 / (3) 0 / 3
Alice always bids her entire mana holdings but consistently outbidding her (failed txs get their mana reimbursed) becomes prohibitively expensive because at some point the burned fees exceed the income and accordingly on day 4 Alice will be able to move her funds.
There is a mathematical guarantee that you will be able to move your funds without loosing tokens.
Users can repeatedly interact with the network
Since mana is a regrowing resource, users can repeatedly interact with the network without having to pay IOTA tokens for each transaction (unless they want to use the network more often than what their throughput share permits).
Identities as the ultimate NFTs
NFTs have been a big topic in the DLT space but their value is subjective — identities are also unique but in IOTA they have an objective value.
Since nodes will always have consensus on the identity with the most mana and considering that these identities can even be handed down for generations it is an open question how valuable they could eventually become as the ultimate collectable / status symbol.
Note: It is also possible to mine expensive identities with a certain hash.
So far we have only incentivized the act of holding tokens and direct participation but as mentioned earlier, we need to also incentivize the following two behaviors to have a secure DLT:
- users assign the weight of their funds to a trusted validator (staking rewards)
- validators secure the network through regular statements (block rewards).
In the absence of these two rewards, users would either not update the pledge of their token weight once a validator goes offline or validators would simply not make any statements to secure the network.
To solve this problem, I suggest to simply use a traditional proof of stake system, but instead of handing out inflation, users would receive a certain percentage boost of their generated mana rewards.
This means that users that use their funds to secure the network will receive a higher reward than others, which should create the same incentives as in traditional proof of stake systems, where the rewards are only valuable because there exists a demand for excess block space and a corresponding possibilities to sell excess throughput to external buyers.
We have designed a system that in my opinion objectively improves the most successful model for tokenomics in the space and even if we assume that it could still be improved — it would already be extremely valuable.
Interestingly, it works very similar to the latest iterations of mint / burn ideas used by i.e. ETH but instead of using the base currency as a fee, we use a derivative of the base currency (mana) and track these balances as an identity bound token.
This doesn’t just solve all of the discussed problems but it also allows us to provide a compelling narrative for the real world purpose of DLTs.
Instead of tracking assets, the main role of DLTs will be to track self-governed identities, which interestingly resonates very well with the idea to use real world identities to secure the DLT (but more on that in a later blog post).
So let’s summarize the ideas in this blog post in a few sentences:
- Holding IOTA is like owning a virtual piece of land that grows mana according to its size.
- Mana is used as a currency for interacting with the ecosystem.
- Staking your funds to secure the network will increase the mana output of your piece of land (exact % TBD).
- The mana balance of actors can be used for airdrops, on-chain governance and as a form of sybil protection for the real-world / web2.
- The demand for block space will allow people to sell excess mana for a passive form of income once the network is fully utilized.
Considering how similar the proposed principles are to traditional fee-based systems, I assume that this would most probably work very well but sadly, we don’t have any research or simulations because we decided to pursue a different line of thought early on when it was not entirely clear, yet how the entire protocol would end up functioning.
Note: Anybody who is interested in the algorithms related to these ideas can check out the following branch where I started to implement the scheduler for this form of tokenomics which turns out to be very simple.