Coda | Keeping cryptocurrency decentralized
By: Jose Cerqueira
Tags: Blockchain, Ico Review, ICO, Bitcoin, Cryptocurrency

“Coda is the first cryptocurrency protocol with a constant-sized blockchain. Coda compresses the entire blockchain into a tiny snapshot the size of a few tweets.”

co-authored by James Ruocco

Team

Evan Shapiro | CEO

Mozilla | Software Engineer

CMU Personal Robotics Lab | Researcher

HERB robotics platform

Carnegie Mellon | MS & BS Computer Science

Izaak Meckler | CTO

UC Berkeley | PhD Student

Cryptography

Jane Street Capital | Software Developer

Quixey | Software Engineer Intern

University of Chicago | BS in Mathematics & CS

Open Source Projects | Contributor

Elm compiler

Brad Cohn | Strategy & Operations

Bridgewater Associates | Investment Engineer

Currency Team

Ray Dalio’s Research Team

The Research Board | Research Analyst

IMC | Trading Intern

University of Chicago | BS in Mathematics

Brandon Kase | Protocol Engineer

Highlight | Software Engineer

Acquired by Pinterest

Mozilla | Software Engineering Intern

Facebook | Software Engineering Intern

Qualcomm | Interim Engineer

Carnegie Mellon | BS in CS

Corey Richardson | Protocol Engineer

Leap Motion | Firmware Engineer

NICTA | Proof Engineer

Thinkful | Python Mentor

Mozilla | Research Engineer Intern

Clarkson University | BS in Computer Science

Open Source Projects | Contributor

Rust Compiler & Libraries

Deepthi Kumar | Protocol Engineer

Oregon State University | Graduate Teaching Assistant

Subex Ltd | System Analyst

Oregon State University | MsC

Designed GitQL

Oxford College of Engineering | BE

Nathan Holland | Protocol Engineer

Bitversity | Founder/CTO

Self-Employed | Compiler Engineer

Granicus Inc. | Software Developer

Self-Taught | Programmer

Developed Programming Languages

Founder of an Educational Program | Computer Science

John Wu | Protocol Engineer

Udacity | Mentor

JetBrains | Software Developer

Amazon Web Services | Software Development Intern

Visa | Data Science Intern

New York University | MS in Computer Science

Programming Languages & Machine Learning

UCLA | BS in Applied Mathematics

Akis Kattis | Protocol Researcher

New York University | PhD Candidate in Computer Science

Cryptography, privacy, security, scalability of cryptocurrencies

University of Toronto | MsC in Theoretical Computer Science

Princeton University | BsE

Differential Privacy in Distributed Systems | Expert

Rebekah Mercer | Protocol Researcher

Aarhus University | Teaching Assistant

Machine Learning

Secure Distributed Systems

Clearmatics | Crypto R&D

Elliptic curves

Go

Aarhus University | PhD Student

Cryptography

University College London | MS in Information Security

The University of Manchester | BS in Mathematics

Advisors

Joseph Bonneau | Advisor

World Class Expert

HTTPS | Cryptography | Web Security | Encryption

Co-Author of “Bitcoin and Cryptocurrency Technologies”

First MOOC (Massive Open Online Course) on Cryptocurrencies

Advisor to Algorand & Zcash

Stanford University | Postdoctoral in Applied Crypto

Princeton University | Postdoctoral in CITP

Cambridge University | PhD in Security

Stanford University | BS & MS in Computer Science

Jill Carlson | Advisor

IMF

Enterprise Products | Nasdaq & State Street

Goldman Sachs | Bond Trader

Advisor to 0x | Algorand | Tezos | Zcash | Coinlist

University of Oxford | Master of Science

Harvard College | Bachelor of Arts

Paul Davison | Advisor

Coinlist | CEO

Highlight | Founder & CEO

Metaweb | Vice President

Acquired by Google

Stanford University | MBA & Bachelor of Science

Notable Investors

Polychain Capital | Olaf Carlson-Wee

Naval Ravikant | Seed Investor of Twitter, Uber, Kraken & Advisor to Algorand

Elad Gil | Advisor to Airbnb, Coinbase, Instacart, Square, Stripe…

Fred Ehrsam | Co-Founder & Board of Directors of Coinbase

Charlie Noyes | Principal at Pantera Capital

“Success Breeds Success”

When assessing a team, prior accomplishments are the best indicators for success. When betting, the odds favor those who have a proven track record. This is why we feel more comfortable investing in people like, Silvio Micali (Algorand), who won a Turing Award; Or, Dr. Feung CAO (Pchain) who has published 22 papers and has 30+ international patents.

However, many of the world greatest companies would not exist if brave investors did not give people like Joe Gebbia (AirBnB) or Evan Spiegel (Snapchat) their first chance.

Many would agree that investing in proven success is probably the safest way to grow a fund. However, risk & reward are inversely correlated. It does not take a genius to realize that Algorand is an incredibly opportunity. The high demand for projects like Algorand creates a very competitive environment for investors. High demand also allows the founders to valuate their protocols at absurd levels (Tezos/Thunder).

Coda is different. While the team is filled with newcomers, these bright minds are hungry to make Coda their legacy. It is impossible to determine the passion of the team through a computer screen. Therefore, we looked at Coda’s advisors and investors. These are people who have put their money where their mouth is.

Advisors of interest

Jill Carlson and Joseph Bonneau only advise projects when they have faith in the team & the project. Time is the most precious commodity we have, and it only increases in value as we become more successful. The fact that Carlson & Bonneau are willing to sacrifice time for Coda, speaks for itself.

Investors of interest

Here we have Naval Ravikant, the founder of angel.co & Elad Gi, an advisor to airbnb. These two have seen their fair share of wannapreneurs. Rest assured, Coda is the real deal.

Coda 9 Technical Members

The team has strong academic credentials from top Universities (Carnegie Mellon, UC Berkeley, Princeton, Oxford and more). Out of the 9 technical members, two stand out: Izaak (CTO) & Akis (Protocol Researcher). Both are finishing their PhDs in cryptography & Akis is under the tutelage of the famous professor, Joseph Bonneau (one of the advisors — his resume deserves a second look).

While the team has a decently high profile resume, it lack extensive professional experience. The teams average professional experience is only 1–2 years. While brief, these years were spent at top companies such as Mozilla, Bridgwater Capital, Facebook, Visa, and AWS.

For example, Brad Cohn (strategy & operations) worked on the same team as Ray Dalio. Evan Shapiro (CEO) worked at Mozilla along with Brandon and Corey. We love teams that have worked together in the past as it greatly improves chemistry & company culture.

Most football fans know if you were to put Messi, Ronaldo, and Neymar on the same club, you would not win the Champions League (no synergy whatsoever). We see how Charles and Dan from Bitshares now despise each other. They could have continued to work together to address the main problems with crypto. While both of them are doing just fine, Bitshares is not.

While the team is young, it is their time to shine. The team impressed and captured investment from industry thought-leaders. Now we have learned about the personalities, let’s take a closer look at the project.

Word of caution: We apologize in advance for being unable to make this article shorter. Hang tight! It is worth it.

The Issue

So far, the motto for 2018 has been “Scalability, scalability, scalability”.. Are you tired of false claims & the 1M TPS marketing schemes? So are we. Well don’t worry, Coda’s forte is different, they are trying to solve (drum roll please) decentralization!!!

Woah hold on, hasn't decentralization been solved already? Not quite yet, many blockchain protocols are slowly becoming more centralized. EOS “solved” the scalability issue by allowing 21 super nodes to validate its ledger. Currently, most of them are hosted on corporate servers such as AWS/Google Cloud/Alibaba. Does 3 points of failure sound safe at all? Currently decentralization gets sacrificed to increase scalability, if we do not find a way to maintain decentralization, blockchain tech could become redundant.

Decentralization

It can be defined as:

“…the system being able to run in a scenario where each participant only has access to O(c) resources, i.e. a regular laptop or small VPS…” — Ethereum Wiki

Translation: Anyone with an internet connected device should be able to validate transactions.

Blockchains are slow and expensive databases with reduced functionality. Why do we love them so much? Because blockchains allow users to transact without trusting the counterparty. Trustless decentralization is valuable enough for us to bare with the shortcomings of blockchain.

It should also be noted that decentralization is not binary, it is a spectrum. On a scale of 0–100, 0 would be when local databases are controlled by a single business, while a score of 100 would be when a distributed database (like a blockchain) can be validated by any internet connected device.

There is an ongoing debate about how much decentralization is optimal. While it is an important discussion, it is outside the scope of this paper. But what if a project could maintain scalability while maximizing decentralization?

Note: We feel that being a maximalist is never good. Of course scoring a 0 in decentralization is terrible. But that does not mean every project should aim for a 100. Remember the crypto trilemma?!

Validation

To fully understand decentralization, it is important to understand validation. Imagine a Bitcoin ecosystem with only three citizens: a miner, a validator, and a spectator.

Miners receive the transactions and choose which transactions should be in the blocks. It should be noted that transactions do not get added to the block on a first come, first serve basis. Each project has their own set of incentives for miners (e.g. gas for ETH). Miners then compete against each other to solve a math problem a.k.a. mining. The winner gets to send his block (set of transactions) to the validators. But, the block does not have any value until it is validated by the majority of full nodes. Once validated, the miner receives 12.5 BTC in return.

Essentially, miners propose which set of transactions should be added to the blockchain; Miners write the blockchain history. This is important to know, because if the majority of full nodes (which are the validators) agree upon a falsified block, that block becomes reality, and allows people to falsify transactions. Think of it like fake news; if the majority thinks it’s real, then the event is perceived as real.

Once a validator receives a block, they compare it against the full blockchain ledger & the protocol’s rules. If everything checks out, the blocks are validated (legitimized). After a block gets validated, it is shared with other validators, so they can repeat the process. Once the majority of validators agree on a block’s legitimacy, it becomes a permanent addition to the blockchain. That is why you need to wait for confirmations after sending a transaction because it takes time for the majority of nodes to validate a transaction.

Please note: miners validate transactions as well because they are full nodes.

Finally, spectators receive a summary from the validators (Block Header) in order to receive and send BTC. They do not validate!

You can think of the validation process like a peer reviewed journal. With journals, a group of researchers (the miners) submit articles (blocks) to the journal editors (validators). The researchers are essentially proposing which set of facts, get added to the journal (blockchain). Regular people (spectators) can then read about the journal in the news.

Miners write the history.Validators turn the history into reality. Spectators, well…they just leech.

Wallets, Nodes, & Risks OH MY!

There are 4 main types of wallets (seen above). Which type do you use? I bet you either store crypto on Binance (no wallet) or on Metamask/Mew (a lightnode wallet). If this is the case, you are a spectator. This means, you are trusting a third party to determine the validity of your transactions. When you use a light wallet, you are not validating which means you are forfeiting the power to enforce the rules, and are trusting the FULL nodes.

If this reminds you of the incumbent financial system, it is because you are not far off.

The beauty of “blockchain technology” is that it allows anyone to enforce the rules (validation/consensus) of the protocol, so power remains in the hands of the many, not the few.

Unless you are running a full node (when you download and sync the whole blockchain ledger) you are not conducting trustless transactions. This is because a light node, only contains a small piece of the blockchain, which makes your tokens susceptible to attacks.

People stress over scalability like it is the number one issue. Scalability is important, but decentralization (trustless transactions) takes priority. There is no point in scaling a slow and expensive database (blockchain) unless it is trustless.

Full nodes allow for better privacy, full control over fees, mining, and smart contracts. While light node wallets (spectators) are open to the following attacks:

Bank Wallet = Exchanges | SPV Wallet = Lightnode Wallet | Bitcoin Core = Full Node

Read the details about the attacks here.

Have you finished reading all the vulnerabilities you are open to?

You have? Great!

Oh what’s that?

You are going to download a full node tonight?!

Perfect! Let’s move on.

The Beauty of Bitcoin

The Bitcoin protocol creates blocks that can store up to 1MB. These blocks are created every 10 minutes (this is how long it takes to solve the PoW puzzle).

The average transaction size is 540 bytes. This means that every block (1MB) contains approximately 1950 transactions. If you do the math, you would realize that Bitcoin can conduct 1950 transactions every 10 minutes (or 3 TPS).

Note: Recent updates like Segwit have improved how data is stored/validated, bumping 3tps to 7tps.

But why does Bitcoin create a block every 10 minutes? Why not 2 minutes or 5? Wouldn’t this drastically increase TPS? 1950 transactions every 2 minutes gives a TPS of roughly 16x. Wow I solved the scalability issue: increase the block size and reduce the block time! Hmm no unless you HODL Bitcoin Cash.

This misconception stems from not understanding the relationship between block sizes and bandwidth requirements. It’s like saying you can solve traffic by making all cars go faster.

The validators of a decentralized protocol come from vastly different demographics; some are rich, some are poor, some have fast internet, some have slow internet.

Bandwidth is the amount of data it can be transmitted over time (upload/download speed). Imagine two coins with the same block time of 10 minutes. But one has a block of 32MB while the other has 1MB.

Q: Which block would require less bandwidth to reach the majority of the validators in 10 minutes?

If a protocol increases the block size without adjusting the block time to achieve scalability, they are basically forcing the validators to pay for more bandwidth (faster internet). This leads to centralization as bandwidth access and prices vary greatly throughout the world. If the protocol allowed validation to be conducted with small bandwidth, forks would occur because it would take longer to propagate the block throughout the network.

Forks

Miners send their blocks to validators. The 1MB blocks in Bitcoin are to ensure that the block reaches the majority of the validators on the Bitcoin Network before a conflicting block is created. If the block time were to be reduced substantially (let us say 5 minutes) or if the blocks are too big for the average bandwidth on the network, forks would happen frequently.

Block Time

Consider this scenario:

Let us assume that it takes 1 minute to propagate a block to all Bitcoin validators. When a miner (Alice) wins the PoW puzzle, all the other miners are still trying to solve the puzzle until they receive her block. This means that all other validators wasted 1 minute of intense computation. In Bitcoin, 1 minute only represents 1/10 of a block (it takes 10 minutes to solve the puzzle). Now imagine a Bitcoin hard fork that would reduce the block time to 5 minutes, that 1 minute would now represent ⅕ of a block. It would represent a higher cost to miners. The 10 minutes was not an arbitrary number.

Block Size

In the scenario above, you want that 1 minute window to be as small as possible. Why? Just because Alice won the mining puzzle first, does not mean that all other miners will instantly be aware of Alice’s victory, they will still spend resources trying to win, until they receive Alice’s block. Often the other miners end up solving the puzzle in that window before receiving Alice’s block. Then, they start propagating their block to others miners, innocently thinking they were the first to solve the puzzle. Because blocks are unique, these miners are creating multiple versions of the Bitcoin ledger, forks.

Eventually, some validators would receive both blocks. How do they decide which fork of Bitcoin shall be the real one? They would opt for the block that was validated by more nodes. The validators would append Alice’s block and drop all the others. Since Alice’s block was propagated earlier and had more support, it would have had more blocks validated on top of it. That is why this process is often referred as the longest chain wins.

If you were to fork Bitcoin and increase the block size by 32 fold, the 1 minute propagation window would grow much larger. Unless you forced validators to purchase larger bandwidth.

As more and more full nodes start downgrading to light nodes or hybrid nodes (e.g. Ethereum calls them fast-sync/warp nodes). Validation starts looking like the image below.

Red dots: Full nodes | Green dots: Light nodes | https://bit.ly/2L7iRoU

Jim, isn’t there a center on that image?

Yes, the ledger is only being validated by the red dots. The green dots are trusting (wtf, isnt blockchain all about trustless consensus?) that the red dots are honest.

In Ethereum, we do not know the number of full nodes (it is not public) but as the blocksize gets larger, full nodes are forced to become light nodes (more red dots are becoming green dots).

Bitcoin is the OG/King, no the flippening will not happen, because they refuse to increase the blocksize. Because of this, people complain that Bitcoin is outdated and is not open to innovation. In bitcoin’s defense, they are afraid to lose their number of full nodes. Remember ERC20 + smart contracts make your blocks bigger (you need the extra space to run all that crypto kittie’s data). That is why Ethereum is becoming centralized over time. Centralization is the public enemy number 1. Well, at least in the crypto world.

Key Takeaways

The cost to become a validator is increasing.

The current solutions increase the costs of bandwidth, storage and computation.

Scalability is currently being “solved” through centralization.

Coda

Before we begin, It is important to understand that Coda’s whitepaper is still a draft. Non-technical reviewers like us can only explain the value of Coda at a 30,000 foot view. Even the famous Andre Cronje was left with questions after he reviewed their GitHub and whitepaper.

So what is Coda? Coda will be the first succinct blockchain.

Wtf does that mean? As a non-native speaker I had to google that one myself.

Jim what about you, do you know what succinct means be honest?

Succinct means quick/simple right?

Remember the red & green dots? Scalability is being achieved at the cost of centralization. But can we have our cake & eat it too?

Coda said: the solution is easy guys. Let’s forget the normal sized blocks and blockchain. Woah, hold on did Coda suggest that we throw the baby out with the bathwater?! Let’s revisit how we reach consensus on Bitcoin. Blocks are proof that miners won the PoW puzzle and picked transactions from the mempool (backlog of blockchain transactions). Validators then use the full blockchain & rules as proof that this new block is legitimate (no fake transactions).

Instead of blocks that are expensive to move around the network and the blockchain that is expensive to store and takes ages to sync with the new state of the network. Coda creates proofs of the state of that are small (<1kb) and take no time to validate/sync (<5ms).

“Coda compresses the entire blockchain into a tiny snapshot the size of a few tweets.”

You know how your mobile internet can easily download 1KB as opposed to 32 MB. That is how Coda achieves scalability. As for decentralization, all nodes in Coda will validate transactions — mobile phones, website clients, perhaps even your fridge in the future? Because all you need to validate your transactions is to have the proof of the state of the network (1kb) and create a new proof that includes your state. The total grand amounts to 20kb and 10 milliseconds of validation.

Imagine the possibilities. Your email client (e.g. gmail) will be able to validate the state of an ad on Craigslist. It will prove that the tickets bought online are legitimate (e.g. the tickets will be for the VIP area as promised on the ad) without seeing any verification of authenticity from the seller. This is called verifiable computation, you can verify the result of some computation without knowing its content.

Note: As you noticed. The Coda protocol itself will not keep a history of all the transactions. That responsibility will be on the users. To save their history locally, if they wish to check them at a later date. The Coda team said they might keep a copy of the entire blockchain for research purposes.

Zero Knowledge Proofs

How is this possible? Thanks to this cool technology called Zero Knowledge Proofs or zk-snarks. You know that privacy coin called Zcash, yeah that is what they use. When Alice sends 1 Zcash to Bob. The protocol proves that User A had enough Zcash to make transaction T to User B. All without revealing the amount that was actually sent, who User A (Alice) is, and who User B (Bob) is. To grasp the logic behind zk-snarks, I will share an old Pokémon Blue story of mine.

In Pokémon Blue, everytime you captured a Pokémon your name was forever registered in that Pokémon’s profile. So imagine if I captured a Pikachu and send it to Jim (James Ruocco the co-author). The pikachu profile in Jim’s game would have my name on it captured by Jose. Do you remember how it was impossible to capture the strongest Pokémon number 151, Mew? Not to brag, but I had Mew. No one else in my school had Mew. Of course many thought “no way, someone must have sent him a Mew. Show me where you caught him to prove it!”

I did not have to show them the whole process I went through to catch Mew. All I had to do was show Mew on my Gameboy and that my name was associated with Mew’s profile.

The idea behind zk-snarks is to prove a result (Jose Captured Mew) without showing the inputs/computation (the process to catch mew). Coda proves a result (state of the network) without showing its inputs/computation (the full blockchain/blocks). This is why they are able to validate transactions without the use of blocks.

If zk-snarks makes your head hurt, welcome to the club. The CTO of Coda Izaak Meckler created a high level language called Snarky (it is available on their GitHub). In essence, Snarky will allow any developer to write zk-snark programs (verifiable computation) in a language that will instantly look familiar to any developer (So someone who has programming knowledge should be able to pick it up quickly). Without Snarky, a programmer would need a masterful understanding of mathematics & cryptography to create zk-snarks.

Programs written in normal programming languages require many lines of code to validate transactions. With snarky, validation can be achieved with a fraction of the code, reducing the validation time to milliseconds

Lastly, we want to correct a misconception about open source projects. Some believe that projects need to stay private or get a patent. They believe that if a project is open source like Ethereum, any random blockchain, could copy/paste the benefits of Coda. That cannot be further from the truth. Coda had to carefully design their blockchain to be compatible with zk-snarks, they customized their cryptographic primitives (hash function/signature scheme/etc) in order to create a succinct blockchain. If Ethereum wanted to become succinct, it would require a massive protocol redesign if not outright impossible. Do not confuse verification with replicability. Open source is to allow users to verify that a project does what it is supposed to do. Of course you could fork Coda once its released and make some changes after but that is a different point.

No Partnerships | No Token Metrics | No Roadmap | No ICO Announced

Community

Twitter | 3,069 Followers

Telegram | 12,418 Followers

Alexa Rank | 1,081,251

425,471

Medium | 277 Followers

Verdict

Coda has a good team and a great mission. They have strong support from their investors and advisors. In terms of their “idea”, we at Alpha have yet to see a better one that addresses both scalability and decentralization. The code in GitHub looks good as shown by Andre Cronje and the CTO has built a high level language called Snarky. For now that is all we have as proof of concept. Remember, Coda is not trying to be the Ethereum killer (EOS), Wanchain Killer (Fusion), Nano Killer (Taraxa) or any other improved version of an existing project. Coda is a totally different animal. You will not be seeing a project claiming to be Coda 2.0 anytime soon.

Next Steps

We recommend that investors join all their social media channels (TG/Twitter/Medium). Please check their content on Snarky here and here. We are eager for the official release of the whitepaper to learn more as this is our second favorite project. Our articles are meant to help our readers gain a vague idea of the projects before diving into the whitepaper. Please do not take this as an accurate representation of Coda and do not assume that your research on Coda is done because you read our article. This is meant to be the starting point to make you interested in researching more. Not the final stop!

Disclaimer: Our goal is NOT to provide investment advice. We promote projects that can positively affect society and teach our readers how to properly analyze ICOs. This article is a product of the Alpha Community.