Mina vs. Minima
One protocol we’re often confused with is Mina Protocol. So in this post, we will dedicate time to explaining how Mina works and how it’s different from Minima outside of just having two letters less in the name.
Let’s start with a broad introduction to Mina.
What is Mina?
In mid-2017, Evan Shapiro and Izaak looked at existing blockchains and realized that blockchains are victims of their success. They meant that the more people use a blockchain, the bigger the ledger grows.
And the bigger the ledger, the higher the storage requirements become. Nowadays, synching a full Bitcoin node requires over 300 GB of storage space and might take hours, if not days.
Additionally, they noticed that most Ethereum users (and similarly for other networks) rely on a third party running a full node to use the network. We’ve seen the downsides when infura, the default node provider for MetaMask, mistakenly restricted users from Venezuela.
To address these issues, they came up with a protocol that would be lightweight enough for any user to use without relying on third parties.
Initially, they called their project Coda Protocol. Following a trademark lawsuit brought forward by R3, the developer lab behind Corda (another blockchain protocol), they rebranded to Mina protocol in October 2020.
Overall, the founders raised $136 million from VCs, private investors, and retail to build what they call a minimal “succinct blockchain.”
Mina Protocol is the world’s lightest blockchain by limiting its network size to just 22 KB.
Bear with us, as things will get technical from here onwards.
How can the chain be kept so small?
The answer is zk-SNARKS (zero-knowledge succinct non-interactive arguments of knowledge). They are a form of cryptographic proof that allows people to verify information without revealing it.
Zk-SNARKS were first developed by MIT professor and Algorand founder Silvio Micali and have since found various implementations in blockchain and cryptocurrency projects, including in Zcash and ZK-rollups on Ethereum.
Mina computes SNARKS that concentrate the last few blocks, allowing end-users to check compressed proofs of the previous history instead of accessing the entire block’s transaction history.
Each proof represents the entire chain’s state, not just of the latest block. One could consider this a form of pruning (reducing the size of the blockchain to fit it into various devices) that doesn’t sacrifice the ability to track back to the genesis block but instead stores it in the form of proofs that guarantee validity.
Now that we have a rough idea of what Mina is about, we’ll get into the details of how it compares to Minima.
Mina: One way Mina achieves scale is by distributing tasks across network participants. There are broadly three groups.
- Verifiers: Every user of Mina is a verifier. If you interact with proofs, you are a verifier — this is the case for most average users, which means doing simple things like sending transactions. As long as your device can handle 22kb of blockchain and a few milliseconds of processing time, you can also be a verifier.
- Block Producers: Block producers in Mina fulfill the same role as miners in PoW chains or stakers in PoS chains. They bundle transactions into blocks and add them to the chain. However, in addition to bundling transactions, they also have to SNARK (compress) an equivalent number of previously committed trades. If not, their blocks are incomplete and get rejected.
- Snarkers: They are producing ZK-SNARKS used in verifying transactions. Block producers pay them from transaction fees. Snarkers compete, creating a marketplace where they post bids tied to the same transaction, and block producers then choose the lowest one.
Note that it’s not a clear-cut distinction. Block Producers can also decide to produce the SNARKS themselves and be verifiers whenever they simply send transactions.
The below graph taken from the Mina economics paper shows how they work together.
Minima: On Minima, everyone is equal. There’s no splitting of tasks. Everyone runs a full node on their phone, verifying, validating, creating blocks, and adding blocks to the chain.
No reliance on any third-party or external stakers to add transactions for you.
Mina: Mina uses a Proof-of-Stake implementation called Ouroboros Samasika, which builds on the Ouroboros Staking mechanism introduced by IOHK (an entity in the Cardano ecosystem).
The chain is split into slots (new block produced) and epochs. One epoch = 7,140 slots. Currently, each slot lasts 3 minutes, therefore one epoch is roughly 14 days long. At the end of each epoch, the staking distribution is re-calculated. It’s based on whatever SNARK workers have finished snarking at the last block two epochs prior. So if currently, the epoch is 8, the state of the blockchain is at the last block of the 6th epoch.
To decide which block producer will produce a block for a slot, the protocol relies on a verifiable random function (VRF). The function needs a private key to run and can be verified with a public key. That means that any block producer can secretly compute without anyone else knowing, until the actual block is produced, reducing the risk of targeted DoS attacks.
It’s worth mentioning that as in most Proof-of-Stake implementations, the more stake a certain node holds, the higher its chances of being selected to produce a block. Which tends to increase the standing for powerful entities in the ecosystem, while giving individuals less chance to meaningfully contribute to consensus.
Minima: Tx-PoW, or Transaction Proof-of-Work. Unlike in traditional Proof-of-Work, Minima users do not compete to solve a hash. Instead, every user contributes a small amount of proof-of-work, which adds up to an entire block worth of work. The process is similar to other blockchains — solving a cryptographic puzzle — but takes out the competitive element, further reducing the risks of centralization that inevitably follow competitive mining for decreasing rewards (for reference, check out our post on that topic).
By enabling anyone to participate in verification, validation, and construction of the chain, Minima enables users to be truly self-sovereign, without ever running the risk of being censored, or not seeing their transaction added to the chain.
One thing to keep in mind here is that Mina uses an account-based model, whereas Minima is a UTxO chain.
Account-based: state of the blockchain = aggregate of all accounts balances
UTxO: state of the blockchain = all transaction outputs
Mina: As mentioned above, Mina leverages zk-SNARKs to take a screenshot of the state of the blockchain and share it with users. This way they can verify without having to download the entire chain. Every block created takes a snapshot of itself along with the previous state as the background. This then turns into the backdrop for the next block and so forth (or in technical terms, the block contains a commitment to the state in the form of a Merkle tree). The size of the snapshot remains the same regardless of how much information it carries. That’s how the size of Mina can stay at 22KB at all times.
Minima: Minima also heavily prunes the blockchain to enable anyone to run a full validating and constructing node. However, we use a Cascading Chain to keep an unforgeable record of the history of the Proof-of-Work that has been consumed in producing the blockchain and a Merkle Mountain Range (MMR) database for efficiently tracking user’s coins (UTxOs), a concept invented by Peter Todd.
The MMR is basically a hash sum tree containing all proofs for all Transaction Outputs (coins). The tree is append-only, which means it is only updated when coins are spent and created.
Users keep track only of the parts of the MMR tree they need to create proofs of their own coins (unspent outputs). They also have to store peaks and roots of the tree to validate Coin Proofs by other users.
An illustration of how that works is below.
Both protocols use different mechanisms to reach the same goal, reducing the blockchain size to make it more accessible. However, Minima goes a step farther, enabling everyone to run a node that validates and constructs the chain.
Running a full node
Mina: You’d think that when keeping the blockchain so small, surely you’d be able to run a node on your phone. Think again.
The requirements for running a Mina node currently are:
- System: macOS, Linux, or any host with Docker. Windows is currently not supported
- 8-core processor
- 16GB of RAM
Anyone looking to set up a node needs some knowledge of Linux and having to use the command line to set up a server & node.
Minima: To run a full node, all you need is an android phone 9.0 and higher. In total, the app will not take up more than 25 MB. That is including a full constructing node. Not just a verifier.
Mina: The initial supply of Mina was 1billion, with an inflation rate starting off at 12% and decreasing to 7% over the first 5 years in mainnet. Any further inflation rates are to be determined through governance votes.
The first billion tokens are distributed in the following manner, with more than 50% going to the Mina team, backers and entities. 42.3% go to the community. Considering it’s a proof-of-stake protocol, one might wonder how the distribution will look assuming that everyone stakes to avoid dilution.
Currently, roughly 534 million tokens are circulating meaning they are not staked.
Minima: The supply of native Minima tokens is capped at 1 billion. No further tokens will enter circulation. Unlike Mina, Minima is a deflationary currency. A burn, which regulates on-chain traffic and prevents spam will reduce Minima supply over time making the remaining Minima more valuable.
Additionally, Minima will be complete at launch, therefore, there is no need for governance to decide on the issuance of further rewards. We believe that a complete protocol is the only way to kick-start a sustainable, decentralized foundation that others can build on.
Our initial distribution will see 51% of the tokens go to our community. The rest is split as shown in the following chart
To conclude, Mina has indeed mastered squeezing a lot of information into 22kb, which enables anyone to verify the state of the chain. But is verifying really enough? Verifying does not add to the censorship resistance of a blockchain, distribution of block production does.
We think that for anyone to benefit from decentralization, to even enable true decentralization, we need to all be equals. That means running a full node, that can add blocks to the chain without reliance on any third parties, not block producers (because we are our own block producer), nor stakers.
If you enjoyed this comparison and would like to see other chains compared with us, let us know by commenting here or telling us on our discord server.
For more details on Minima, check out our documentation.