Notes on Mina (Coda)

Obaid
3 min readJul 7, 2018

Special thanks to Vasiliy for early feedback/comments.

Coda is a project aiming to create a truly decentralized blockchain by having nodes validate a recursive composition of zero knowledge proofs, rather than the entire transaction history. A zero knowledge proof is a cryptography scheme that allows for a party to prove knowledge of a certain value without unveiling the actual information used to derive that value. That means a zero knowledge proof could also prove knowledge of a value (i.e validity of a block) without the need to know the information used to get that value (transactions in that block). In the model Coda is designing, the zero knowledge proof will prove the correctness of a user’s balance and the security of the network without a validating node needing to actually see the blockchain to make that validation. When a block is introduced and validated, nodes around the network begin by constructing a zero knowledge succinct non-interactive argument of knowledge (zk-SNARK) on the block. Among the other zero knowledge proof schemes (zk-STARK, ZKBoo, bulletproof), zk-SNARK is the least expensive to construct and validate. Once this zk-SNARK is constructed and validated by the network, it will represent a block.

For the next block, yet another zk-SNARK will be constructed in the same process. However, nodes will not continuously pile up zk-SNARKs; they will recursively compose a new zk-SNARK using the proof representing the entire blockchain so far, and the proof representing the new block. These will be composed together to construct an entirely new state, and will represent the blockchain. The cycle then continues. Nodes will store a recursively composed zk-SNARK proving the validity of the blockchain, as well as a merkle root path proving the validity of one’s balance. The problem with current blockchains is that becoming a full node entails downloading the transaction history of the entire blockchain. Bitcoin’s blockchain currently takes up over 160GB in storage space, and Ethereum’s over 600GB. With a high barrier to becoming a full node, only those with the resources to host them will do so thus pushing the network to centralization. As well, for each node to have to download entire blocks to validate them introduces an increase in communication costs overall. Coda’s architecture will solve these issues. Coda will use Ouroboros Praos as it’s consensus model (faster, more scalable revision of the original Ouroboros proof-of-stake model).

Coda Protocol Strengths and Opportunities

Hosting a validating node will take up less than a megabyte of storage space. Moreover, due to the low resource requirements, a validating node can be run on a mobile device. Ouroboros Praos is capable of over 2,000 transactions per second in a decentralized setting. Since validating nodes need only download a zk-SNARK to verify a block, communication costs will be low.

Coda Protocol Weaknesses and Threats

The process of deploying a zk-SNARK system requires a trusted setup of things like parameters. Compromisation of the process could allow for illicitly produced false proofs. However; the setup can be done with hundreds of participants and the process will go through successfully as long as one honest participant is present, so perhaps not an inherent threat. Recording transaction history will not be required in the protocol, and recursive zk-SNARKs representing the blockchain cannot be unwound. This means that if anyone fails to record the transaction history in real time, that information is lost forever. Since understanding and being able to verify the security of this system cannot be done by the average joe, it may be difficult for people to come to trust the network.

Verdict on Coda Protocol

While zk-SNARKs still need to be peer-reviewed on the matter of security more, Coda could seriously achieve true decentralization at scale. Combined with an experienced technical team and backed by large institutions, the prospects are positive. I like the Coda project and the Coda token very much.

--

--