Fully Decentralized Token Distribution on Cardano
In this blog, we present a new way to distribute native tokens on the Cardano blockchain for projects that strive for maximal decentralization in every aspect.
Many analysts, commentators, and builders from the crypto industry predict that only fully decentralized DeFi projects will survive in the upcoming years as they disrupt the existing world of traditional finance. The project’s token distribution, though done only once, is a crucial step for its long-term viability. Therefore, it is critical to do it right for projects that value and rely on decentralization. Below we describe a protocol of token minting and distribution that can be executed by the community from start to finish.
A quick reference on the Cardano blockchain architecture
An unspent transaction output (UTXO) is a unit of information in UTXO-based blockchains like Cardano or Bitcoin. Every transaction on such blockchains spends some UTXOs as inputs and produces some UTXOs as outputs. In the case of Cardano, a single UTXO can store a lot of information: a bundle of native assets, some data, and even an on-chain script for referencing (available since Vasil hardfork). Every UTXO is locked either by a user wallet’s public key or an on-chain validator script. The validator script addresses are marked with tags “Contract” or “Smart Contract” on blockchain explorers such as cardanoscan.io.
How centralized distribution works on Cardano
The most used method of token distribution looks as follows. Every eligible user sends a small amount of ADA to the designated wallet address. This ADA covers the distributor fees and the minimum ADA in UTXO requirement. A distributor program, run on the server, sends the project tokens and some ADA back to the user. DripDropz.io, for example, is a portal that provides token distribution services based on this method to smaller projects.
Some larger projects can afford to mint and distribute tokens without any participation from the user’s side. It, however, requires the project to protect its distribution scheme against a Sybil attack where a malicious actor creates a large number of wallets (or addresses), each of which is eligible for a minuscule project token reward, thus requiring an enormous budget to be allocated for the distribution event.
Decentralized Distribution Protocol
The protocol assumes that the project’s token has 1) a fixed supply and 2) a list of addresses and token amounts to distribute to each address.
STEP 1: The community creates a UTXO at the Setup Validator Script address: a simple transaction of sending 1 ADA to the designated address is required to initiate the protocol. The community agrees on which UTXO to use in case there are several.
Details: To mint a token with a fixed supply, we need to have a condition (in the minting policy) that a particular UTXO is consumed. Since all UTXOs are unique, this condition ensures that no more tokens can be minted afterward.
STEP 2: In a single transaction, a community member spends the chosen UTXO, mints all project’s tokens, and sends them to the Distribution Validator Script address.
STEP 3: Community members run the software that produces a chain of transactions distributing the funds according to the list (see Figure 1). In each successfully submitted transaction, a community member takes a fee denominated in the project’s token.
Details: Every transaction requires the transaction signer to pay network fees and conform to the minimum ADA in UTXO requirement. However, in a fully decentralized protocol, there is no ADA to pay for this. Therefore, a community member that signs a transaction should be rewarded with the project’s tokens for the trouble.
The reward for transaction submission should be substantial enough to incentivize the community to run the distribution software but small enough not to interfere with the overall project’s vision for how tokens must be allocated.
The total number of subsidized transactions should be limited to guard against the Sybil attack discussed above. Therefore, we propose to sort the list based on the reward size (in descending order). In case when the reward pool is exhausted, the users with low token allocation may have to pay the network fees to get their tokens. This is an unfortunate but necessary constraint in this protocol.
ENCOINS Distribution Tool
Here at ENCOINS, we are building a tool that implements the Decentralized Distribution Protocol, and we will be ready to share its source code in the near future. The tool allows Cardano projects to distribute their tokens in a fully decentralized and trustless way by executing the proposed protocol. ENCOINS will be one of the first projects that take this route: ENCS token distribution is scheduled for the second half of February 2023. You can read more about ENCS use cases in our whitepaper.