Designing in Layers – Cardano Settlement Layer
When designing great protocols and languages, one should not look to the future, but rather to the past. History provides a litany of examples of great ideas that are perfect on paper, yet somehow have not survived, such as the Open Systems Interconnection standards. History also provides happy accidents that have endured from TCP/IP to JavaScript.
Some principles extracted from a historical view are the following:
- You cannot predict the future so build in wiggle room
- Complexity is nice on paper, but simplicity usually wins
- Too many cooks spoil the broth
- Once a standard is set it will probably stick around, regardless of whether it is suboptimal
- Bad ideas can actually evolve into pretty good ones if there is a will
Cardano is a financial system that accepts its social nature. There will be a tremendous need for flexibility and the ability to address arbitrary complexity in a particular user’s transaction. If successful, there will be a need for tremendous computational, storage and network resources to accommodate millions of concurrent transactions.
Yet we do not have a digital, decentralized Robin Hood to take from the rich nodes and give to the poor ones in order to achieve a fair network. Nor do we have the luxury of trusting human beneficence to altruistically sacrifice for the greater good of the network. Therefore, Cardano’s design borrows from TCP/IP the concept of separation of concerns.
Blockchains are ultimately databases ordering facts and events with guarantees about timestamps and immutability. In the context of money, they order ownership of assets. Adding complex computation by storing and executing programs is an orthogonal concept. Do we want to know how much value went from Alice to Bob, or do we want to get involved in figuring out the whole story behind the transaction and deciding how much to send?
It is incredibly tempting to choose the latter as Ethereum has done because it is more flexible, but it violates the design principles above. Figuring out the story means that a single protocol has to be able to understand arbitrary events, script arbitrary transactions, permit arbitration in cases of fraud and even potentially reverse transactions when new information is made available.
Then one has to make difficult design decisions about what metadata to store for each transaction. What elements of the story behind Alice and Bob’s transaction are relevant? Are they relevant forever? When can we throw away some data? Does doing so violate the law in some countries?
Furthermore, some computation is private in nature. For example, when calculating the average salary of workers in an office, we would not necessarily want to leak how much each person makes. But what if every computation is publicly known? What if this publicity biases execution order to harm outcome?
Thus, we have chosen the position that the accounting of value should be separated from the story behind why the value was moved. In other words, separation of value from computation. This separation does not mean that Cardano will not support smart contracts. On the contrary, by making the separation explicit, it permits significantly more flexibility in the design, use, privacy and execution of smart contracts.
The value ledger is called the Cardano Settlement Layer (CSL). As the purpose is to account for value, the roadmap has the following goals:
- Support two sets of scripting languages, one to move value and another to enhance overlay protocol support
Provide support for KMZ sidechains5 to link to other ledgers
- Support multiple types of signature including quantum resistant signatures for higher security
- Support multiple user issued assets
- Achieve true scalability, meaning as more users join, the capabilities of the system increase
Footnotes
5: See Non-Interactive Proofs of Proof-of-Work from Kiayias, Zindros and Miller.