Fab

Posted on Jan 15, 2022Read on Mirror.xyz

Governance tokens, and the art of doing more with less

Any mathematician is well aware of the following counterintuitive fact: often, the more restrictions you give to your mathematical models the more powerful they become. This is akin to what happens in some artistic disciplines; for instance, for traditional painters it was considered “acceptable” to paint only on a restricted set of materials (frescoes, canvas, wooden panels) using a restricted set of mediums (such as oil). If on one hand this greatly limited the kind of things they could do, on the other hand this self-imposed lack of freedom prompted them to improve their technique to manage to achieve the unachievable.

"Hey Raffaello, we have some empty walls, can you make the room look cooler and bigger?" Raffaello Sanzio, Stanza della segnatura. Fresco, 1509-1511, Musei Vaticani. Source: Wikipedia.

Teleporting to our current situation, we are increasingly witnessing the idea of token-based governance systems, where people can take part to discussions about governance of a given platform and cast their vote, their voting power being based on how many tokens of a given type they hold. Often, these tokens are airdropped to early users, following the idea that early users should be rewarded for their contributions.

These systems have problems. The simplest one that comes to mind is: How does the voting system work, and is it fair? This is not an easy question, and a guy named Kenneth Arrow even won a Nobel Prize in economics because, among other things, he proved how there is no voting system satisfying at the same time a bunch of criteria that we would deem desirable. But even without citing the upper echelons of academia, we see that token-based voting procedures have a problem in that voting power is proportional to the number of tokens held, often turning a superficially fair system into a kleptocracy.

But the elephant in the room is actually that governance tokens have financial value. That is, they can be bought, sold and freely transferred. This creates a huge conflict of interest, for the very simple fact that voters’ stake in a governance system is conflated with a financial investment. As such, voters are incentivized to taking decisions that increase the value of the tokens they hold. As usual, this conflict of interest comes up in full force in dire situations: if a given DAO is failing, it may be way more convenient to sell your governance tokens leaving everyone in the shit than using them to vote and propose sound governance strategies.

…But then, why are governance tokens so widely used? A couple of reasons come to mind: The first, innocent one, is that it is simply the most obvious thing people could come up with, and simple often wins in tech. The second, way less innocent, is that setting up governance tokens and airdropping them to early users is a very convenient way for a project to raise funds: the project keeps a part of the minted tokens, airdrops the rest, and as soon as the token acquires financial value and is listed on exchanges the project ends up with a few million dollars in its own treasury.

Can we make this better? I think that, without diving too deep in philosophical discussions, we can already improve the situation by creating new tools from the ones we got, and to do so we will have to restrict what we can do with our tokens. But first, let’s understand how tokens work.

ERC-20

These are the most well-known tokens around. When we talk about ERC-20 tokens, we are talking about a standard. That is, to be an ERC-20 token, the token smart contract must provide some well-defined functionalities in a standardized way. Those, called methods and events, are:

function name() public view returns (string)
function symbol() public view returns (string)
function decimals() public view returns (uint8)
function totalSupply() public view returns (uint256)
function balanceOf(address _owner) public view returns (uint256 balance)
function transfer(address _to, uint256 _value) public returns (bool success)
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
function approve(address _spender, uint256 _value) public returns (bool success)
function allowance(address _owner, address _spender) public view returns (uint256 remaining)

event Transfer(address indexed _from, address indexed _to, uint256 _value)
event Approval(address indexed _owner, address indexed _spender, uint256 _value)

What this means is that your token contract must implement the functions and events listed above, in a way or another. For instance, there must be a function called balanceOf that takes an ETH address in input and returns an integer number of 256 bits as output. This function represents how many tokens a given address owns.

The ERC-20 basic template can then be extended in multiple ways, often obeying complex mechanics. One of the simplest additions one can implement are mint and burn functions that, as the name says, allow to mint and burn a given number of tokens for an address when certain conditions are met.

As soon as you implement the functions above, your contract is an ERC-20, and platforms like Uniswap will be naturally compatible with it, meaning that you will be able to set up a liquidity pool and so on and so forth and swap your tokens for other tokens.

By taking a look at the spec above, we see that ERC-20 is designed with one fundamental property in mind, that is, the possibility of transferring it. Even more importantly, the approve and allowance functions let us authorize someone else to transfer a given number of tokens on our behalf. This is precisely the mechanics that allows platforms like Uniswap and other DEXes to perform swaps. This out of the box ability to transfer is exactly what makes tokens into financial assets: as soon as I can swap resource A for resource B, I can compare demand and offer for A against B and deduce a price.

A direct consequence of transferrability is that assets can be priced. The moment this happens, price dynamics ensue.

ERC-721

This is the standard defining NFTs. The methods and events of NFTs can be found here. They have been suitably shaped so that the ERC-721 standard takes something away from ERC-20: fungibility.

As soon as you take fungibility out of the picture, you get stuff like this.

Whereas ERC-20 tokens are fungible, which means that any two tokens are indistinguishable one from the other, ERC-721 tokens are not. In particular, every single ERC-721 token has a unique tokenId that allows to precisely identify it among all others.

As one can see, here we are restricting what the token contract can do, as we are taking properties away from the ERC-20 standard. This has resulted in a very expressive standard that, as any cryptonaut knows, resulted in an insane amount of art, games and services being created. Indeed, ERC-721 is by all means the building block of the decentralized metaverse.

What if we keep playing this game?

Many other token standards exist, for instance ERC-1155 optimizes both ERC-20 and ERC-721 unifying their features and allowing for batch transfers to save gas. Indeed, anyone can propose a new token standard to the Ethereum community, that can or cannot officially be recognized as such depending on various things. With governance in mind, let us try to venture through an extreme path.

NTTs: Non-Transferrable Tokens

This feels like an oxymoron. NTTs are just standard ERC-20 tokens endowed with a mint and burn function, where the transfer method has been erased. That is, we can mint and burn these tokens, we can check people’s balances, but we cannot transfer them. This has an immediate consequence, that is, NTTs cannot have any financial value, since they cannot be exchanged.

Why in the world would anyone be interested in this? There are circumstances. For instance, let’s think about billionaires: these people are often the owners of huge corporations, and much of their wealth is in stocks. As such, even if they have enough money to live a thousand lives in luxury, they won’t be able to give away their wealth, because this would mean losing control of the corporation they manage.

In a DAO-like situation this mechanics could be avoided, as people could convert part of their ERC-20 tokens into NTTs, that is, they could sell their ERC-20 token and receive some NTTs back. As soon as NTTs hold the same voting powers of ERC-20, this literally means taking away the financial value, and not the governance value, from a user. So a particularly wealthy person could give away part of their fortune without losing the ability to contribute or control a project they care about. In other words, your favourite billionaire can now donate part of their wealth to solve world hunger without giving up on despotically managing their megacorp.

The reassuring expression of a billionaire that can now donate everything to the poor, solve the world hunger problem and yet continue to manage his own megacorp for no economic return whatsoever.

In the opposite way, a user may convert NTTs into ERC-20, for instance as part of a mechanism of financial incentives. In general, I imagine NTTs as being paired to ERC-20 in a mixed system, where financial and non-financial incentives act at the same time in a compartmentalized way. For instance, investors in a project may receive ERC-20, while team members could have the majority of their tokens in NTTs. This allows the team to withhold control over the project without being able to rugpull the users.

NATs: Non-Approvable Tokens

This proposition is milder than the previous one, and resolves some technical problems. Indeed, NTTs are fully non-transferrable and, as such, cannot be moved if, for instance, one has to change wallet address for security reasons. There may still be ways to achieve this, for instance by a community-authorized mechanism of sequential burns and mints, but things will immediately start getting bureaucratic and complicated.

NATs instead can be transferred, but they lack the approval interface that is needed to make them compatible with DEXes. As such, the financial value of these tokens is not completely taken away, but it is greatly reduced as one can acquire and sell NATs only off the counter. For sure, there may still be collusion where an interested party acquires governance in a project by buying tokens, but this risk is highly mitigated.

In an ERC-20 based governance platform, consider indeed the following situation:

  • Platform X creates a governance token Y. Early contributors get tokens airdrops.
  • The Y tokens hold considerable financial value, and some contributors sell them at a profit. Even if they care about the platform they contributed to, this makes sense to them because $$$.
  • Some individual Z that did fuck-nothing up until then decides to “invest” in the platform, by buying a lot of token Y.
  • The wealthy individual Z can obtain nearly total control of the governance platform, depending on their wealth.

What I wrote above is made possible by the fact that Z just has to go on Uniswap to buy Y. To avoid this potentially disastrous outcome, the team behind platform X must be very clever about how they set up liquidity pools and so on and so forth. Also, they will need to keep a consistent part of the token share in their treasury.

In a NAT-based approach, all these risks are mitigated by the fact that Z will have to contact token holders individually and convince them to sell. What NATs take away is not transferrability, but transferrability through an intermediary, which is how things are exchanged today anonimously and quickly over the internet.

Compared to ERC-20, NATs take out the straight path to transfer, that is, DEXes. NTTs take out everything.

CTTs: Centralized-Transfer Tokens

This is yet another concept, that again plays with how transfer functions in ERC-20 are implemented. The idea here is that a transfer doesn’t happen immediately, but must be approved by the token contract through the governance system.

In this setting, when A wants to transfer to B, they cannot do it directly. They send a transaction, and the transaction is marked as “pending”. Every fixed amount of time, the community has the possibility to approve/reject batches of pending transactions. I imagine this procedure to be performed in an almost semi-automated way. For instance, all the transactions below a certain amount could automatically approved. Yet, when particularly suspicious or consistent transactions come through, people can bring this to the attention of the community.

CTTs may be especially useful in systems where tokens give rights to a share of funds contained in a vault. This was the case in projects like ConstitutionDAO, where people deposited ETH and got a governance token called PEOPLE in return. When ConstitutionDAO implemented the possibility to claim back one’s contribution, members of the DAO had the possibility to burn their tokens to claim back the ETH they originally put in. Even more prominently, the vault concept is a core one in DeFi projects such as YFI: You put money in and receive vault tokens back. As time passes the vault value goes up, and your vault tokens allow you - at least in principle - to withdraw more money than you put in.

CTTs would allow the implementation of a system where people can come in and out of a given DAO or Vault but the process is not instantaneous. This could protect the project from a rug pull or from sudden loss of operative margin in times of high volatility.

Wrapping up

All in all, I think that today’s token standards, being built around the concept of transferrability, assume a free-market-centered perspective on things. That is, they either directly or indirectly rely on the idea that “free markets are efficient” when it comes to pricing and incentives. Unfortunately the efficiency of free markets is bollocks, as it has been proved by Sen in 1970 (again, he too got a Nobel Prize in Economics for this). Moreover, if considering tokens as an intrinsically transferrable property is very appropriate in some contexts such as finance, it may give rise to a distorted set of incentives in contexts such as governance.

Indeed, I do believe that there are some type of goods and services that are more justly and efficiently distributed in a semi-centralized way, such as public resources and welfare. Semi-centralized here refers to economic policy, not to people’s agency and ownership: with this I mean that the economic set of incentives around some goods and services should not be entirely dictated by markets. In all these cases, ERC-20 and ERC-721 standards may not be the best choice. As we see for NFTs, that stemmed out of ERC-20 by imposing restrictions on fungibility, I do believe that alternative token forms that may be more suitable for governance and welfare projects can stem from further restricting the transferrability properties of ERC-20.

I think that the propositions I made here, that should by all means be considered just as toy models, may transform into something useful in the future if they are met with curiosity and become object of further study.