This is a project I found just under a year ago while I was looking up zk-SNARKS. The team are currently in the testing phase of the program and looking towards building on the open testing, the incentive of which is currently to be considered for the Genesis program. Although I wont claim to understand the full technical details of this it does look like a very interesting project that seems to be aiming to address some of the key issues with traditional blockchains. I thought I'd share it with the community as I can imagine this may well be a project to watch.
What is Coda?
So in the current landscape of blockchains we're amassing a huge amount of data, indeed the size of the current BTC chain is around ~280 gb, with ETH around ~140 gb. Now that isn't to say all blockchains are that big but, just looking at these numbers, even a 10% the size of either of these would cause a little alarm if you were thinking about accessing/downloading the whole chain. As a result there is a considerable dependence on node operates to keep and manage full copies of the chain. This means for each individual user of the chain there is some level of trust needed in verification of transactions as to do this yourself would take a considerable amount of time which isn't feasible if you want to verify transactions in real-time.
The Coda Protocol's goal is, through the implementation of zero-knowledge succinct non-interactive argument of knowledge (zk-SNARKs), to make the verification of historical chain data immediately available and actionable by users without any dependency on trusted intermediaries. The idea behind this approach is to make a fast, efficient, payment system that it doesn't require prohibitively expensive computing resources to store and verify the blockchain. Furthermore, by using proofs as a verification method for the blocks there becomes no need to keep all of the transaction data on the chain. Instead each node would simple keep the proof that the block was valid which means the size of the chain is greatly reduced and is boasted to be maintainable at fraction of the size of a traditional blockchain.
With Coda however, no matter how much the usage grows, the blockchain always stays the same size - about ~20 kilobytes (the size of a few tweets)
There are a few roles that all would contribute to the running of the network and creation of the zk-SNARKs, I'll go into this a little more in the next section.
How it works?
Before we look at the transaction life cycle it is important to quickly cover a little (I mean little) about zk-SNARKS. As I said at the beginning I'm definitely not a technical expert in this field so I found the most straight forward description I could find (references at the end of the article).
The possibilities of zkSNARKs are impressive, you can verify the correctness of computations without having to execute them and you will not even learn what was executed - just that it was done correctly.
Note here that it is the easy with which computations can be performed to determine correctness (or validity) that we're interested in and in the technical white paper the Coda team indicate the power of their application.
we employ techniques from incrementally computable SNARKs to ensure that the cost of computing a proof for each block is proportional only to the number of transactions added since the previous block.
Each time transactions occurs on the chain these are put towards the next block. While this is happening zk-SNARKs are created to allow for future validation of the transaction in a block, this is done by a few individuals whom all 'bid' a price for doing the work. The list of bids and transactions then goes to a block producer who pairs up the zk-SNARKS in a block with older transactions, given preference to the lowest cost 'bids' (thus keeping transaction costs down), and puts the new transactions at the end of the chain. The block gets added to the chain and it is updated to remove the unnecessary transaction information for items that have been SNARKed by the producer (maintaining the size of the chain). Then the SNARK for the blockchain itself gets updated and it gets pushed out to the masses where it is immediately validated by all.
What are the economics?
Unlike the standard approach for blockchains, coda have a three different roles all responsible for the blockchain maintenance process. I've added a quick summary from each as based on the descriptions in the economics white paper (reference at the end of the article).
Every day users, who are able (due to the size of the chain) to quickly and easily download the information needed to be able to verify directly information they need without intermediaries.
Responsible for both adding new transactions to the blockchain and must SNARK an equivalent number of transactions at the front of the chain first. In terms of incentive as with mining there is a block reward plus transaction fees. For producing the SNARKs they can do it themselves or can get them from a market place (see snarkers below). Block production is performed by a Proof-of-Stake mechanism anyone can participate in but also allows for delegation of staking to another party.
This group provides zk-SNARKS that are to be paired with, and used to verify, transactions. The incentive for this is a fee set by the snarker that is paid (by the producer) if used. Note that as this adopts a market place structure and the lower fees are considered first for transaction it leads to competition between snarkers and ideally reduced cost for the end users. These as something akin to pool mining, where you can use your computing power to help the network and get paid for it.
So first off the bat I really like the combination of Staking and Snarking (akin to mining) so you get the best of both worlds with there being incentives in both. Also keeping that blockchain size down is an amazing idea it means that there is never any need to rely on someone else to hold a copy of the ledger for you, which makes it so easy to maximize decentralized distribution.
If you're interested in a much more thorough technical review of Coda and how it works take a look at the whitepaper below. Also if you have experience with running nodes and a Mac then get yourself over to the public testing to help iron out issues and be in with a chance of being part of the genesis program.
Hope you enjoyed the summary, thanks for reading, good luck y'all!
- zk-SNARKS in a nutshell - https://blog.ethereum.org/2016/12/05/zksnarks-in-a-nutshell/
- Coda Protocol Technical Whitepaper - https://eprint.iacr.org/2020/352.pdf
- Coda Protocol Economics Whitepaper - https://codaprotocol.com/static/pdf/economicsWP.pdf