# The DCS Theorem

## A CAP Theorem for Blockchains

I recently happened upon a paper titled The DCS Theorem, written by Greg Slepak, of okTurtles fame, and Anya Petrova. The paper is short and light on formal math, so I decided I would have a chance at understanding it.

The stated goal of the paper is to “address some of the confusion around [the blockchain scaling debate].” It contains a proof of the DCS Theorem, stated as

Decentralized consensus systems centralize at scale when consensus participants maintain full consensus over the entire state of the system.

Slepak and Petrova argue that in order to maintain full consensus, systems must give up decentralization in order to scale. Their reasoning is that as the system gains more users, fewer and fewer of those users can participate in the consensus mechanisms. They visualize this theorem as the DCS Triangle, where a consensus system can possess at most two of the following properties: Decentralized, Consensus, and Scale.

This very much reminds me of the CAP Theorem from computer science. The proof makes sense to me. The idea is at the heart of the Bitcoin scaling debate. Many (including me) believe that Bitcoin’s essential feature, the one that we cannot afford to lose, is its decentralization.

The paper proposes two ways of overcoming the DCS Triangle. One is combining a DC system and a DS system. They cite the Lightning Network as an example of this. The Lightning Network (DS) provides a scalable network of payment channels, and it settles on the main Bitcoin blockchain (DC), which maintains the trustless ledger.

The other method they propose is combining multiple DC systems, or sharding. Each system only has a partial view of the total state. Overall consensus decreases, but the whole system can increase in scale. I think this is what Ethereum is planning, but I’m not very familiar with it. The paper also says that a DS system can be tacked on to help with scale.

I thought it was interesting that they did not mention increasing the block size as a potential solution to the DCS Theorem. A common argument against increasing the block size is that it will lead to a decrease in full nodes, as fewer and fewer people will have the necessary hardware to run a node. While it might help Bitcoin to scale to more users, it would lead to an unacceptable level of centralization. I tend to agree with this argument, and the DCS Theorem just convinces me more.

I don’t know whether or not the paper will achieve its stated goal, but I hope the idea spreads. Like the CAP Theorem, it’s a simple, yet powerful tool to understanding the challenges faced when scaling blockchains.