“Controlling complexity is the essence of computer programming.”
Creating correctly working software is hard. Creating correctly working distributed, decentralized, permissionless, scalable software…well, that’s a whole other beast of a problem.
To make it easier to think and communicate about complex software systems, software engineers use this concept called a “stack”. Simply put, it is just a way of splitting up different parts of a system.
There are well-known software stacks like the OSI model for networking or the (old school) LAMP stack for web services. But as far as stacks for DLTs/Blockchains there doesn’t seem to be a good model as of yet which can make it difficult to talk about and compare different DLT solutions.
It’s not fully comprehensive nor does it describe the full complexity of what goes on in a DLT. But it does give an easy go-to language upon which we can talk about certain aspects of different DLTs as well as point to a specific part with ease. Let’s define each layer now:
-Application Layer: This layer describes an application with high-level business logic which can be as simple as a wallet or more complex like an “on-chain” smart contract.
-Platform Layer: This layer describes the APIs and interfaces which serves as the gateway for applications to interact with the “machine”.
-Machine Layer: This layer describes the Ledger part of DLTs. This is the physical engine and structure which can get updated by outside actors as they add to the ledger. Note that this isn’t literally hardware machine but more of a simulation of one (e.g. Ethereum Virtual Machine).
-Consensus Layer: This layer describes the Distributed part of DLTs. Because the system is distributed there must be a way to achieve consensus to resolve conflicts. For permissionless blockchains, examples of this would be: PoW, PoS.
Using this notation, here’s a quick example comparison between Radix and Ethereum DLT models:
Now that we have a good idea of what each layer means we will be using the following legend at the beginning of each technical article to give a sense of which part of the stack the article will be talking about:
Telegram for general chat
Discord for developers chat
Reddit for general discussion
Forum for technical discussion
Twitter for announcements
Email newsletter for weekly updates
Mail to firstname.lastname@example.org for general enquiries