Blockchain is a heavily overloaded term, both in discussions of practitioners and in literature. This ambiguity is dangerous as it leads to a lot of misunderstandings and can compromise the quality of blockchain-based applications being developed. Thus, we delineate in this article key terms of blockchain. To make understanding as simple as possible, we use Ethereum as an example.
This article is the second of a three-article series (①②③) on architecting blockchain-based applications. The series is based on results of an internal workshop of our department ACE (Architecture-Centric Engineering) in 2018.
Authors (main editors underlined): Susanne Braun, Frank Elberzhager, Matthias Gerbershagen, Andreas Giloj, Sebastian Heupts, Steffen Hupp, Alberto Lara, Rodrigo Falcão, Matthias Naab, Kai Plociennik, Bernd Rauch, Dominik Rost, Johannes C. Schneider, Stefan Schweitzer, Adeline Silva Schäfer, Balthasar Weitzel.
If you want to develop innovative ideas, architectures, and prototypes of applications based on blockchain technologies: Don’t hesitate to contact us!
In our first article of our article series on architecting blockchain-based applications, we outlined the need for precise blockchain terminology. We want to start by giving some concrete examples on that claim.
Ambiguous Blockchain Terminology in Literature and Practice and Why It Is Dangerous
We found a lot of ambiguity of terminology around blockchain in discussions with practitioners. Even worse, when looking at present (scientific and practical) literature covering different aspects of blockchain-based applications and technology, different forms of confusion can be observed. Since Bitcoin was the first cryptocurrency, in particular non-technical people often mix up the terms Bitcoin and Blockchain. Due to this, IBM published a clarifying blog article on that topic. Furthermore, while scientific papers correctly distinguish between general blockchain topics and those specific to concrete blockchain technologies such as Bitcoin and Ethereum, the scope of the term “blockchain” can vary dramatically, from the “pure” blockchain data structure (“we use blockchain to refer to the data structure”, Xu, Pautasso et al.) to a complex distributed system with applications that communicate via a network using blockchain technology (“A blockchain is a network of a set of peer-to-peer nodes”, Kan et al.). This observation has been made by several others, too: Swan notes that “the terminology can be confusing because the words Bitcoin and blockchain may be used to refer to any three parts of the concepts: the underlying blockchain technology, the protocol and client through which transactions are effected, and the actual cryptocurrency; or also broadly to refer to the whole concept of cryptocurrencies.”. Xu, Weber et al. write that “the term ‘blockchain’ is used to refer to a data structure and occasionally to a network or system”. And Kramer et al. state that “the term ‘blockchain’ is overloaded and can be referred to as either the generic architectural pattern that was popularized by its application in the digital peer-to-peer currency Bitcoin, or to the actual instantiation of the pattern as applied in projects such as Bitcoin and Ethereum”. Although in the latter references, the authors specify the scope of the term “blockchain” in their work, there is no common understanding between different publications, and many authors use terms like “blockchain technology”, “blockchain network”, “blockchain instance”, “blockchain node”, “blockchain data structure”, “blockchain architectural pattern”, “blockchain system”, or “blockchain applications” without explicitly defining these terms, not even within their context.
These examples illustrate that the term “blockchain” is ambiguous and overloaded. In this lack of precision, we see a fundamental problem for the work of software engineers and in particular software architects. To be able to use such a technology in the design of applications, they need a consistent and precise terminology, to be able to understand the extent of their solution space, reason about design alternatives, predict the resulting system properties, discuss with other software engineers, and make according, well-founded decisions. These decisions constitute an architecture, which has to be documented and communicated to the various stakeholders involved in the realization of software applications. Not being able to do so because of ambiguities in the terminology is dangerous because it makes the work of the involved stakeholders less efficient and causes errors, which may even prevent the fulfillment of architecture drivers.
This is particularly problematic in the context of blockchain-based applications. The technology is new and evolves quickly, and the number of existing real-world applications is limited. As a result, documentation only exists sparsely and is often either very high-level and abstract or very low-level and technical. Hence, software engineers cannot rely on strong experience from the community in developing such applications. In such scenarios, the risk of introducing errors and making wrong decisions due to misunderstandings is particularly high. As trust is a key attribute for blockchain-based applications, the consequences of mistakes can be particularly severe.
A Consistent Blockchain Terminology
We propose a terminology precisely delineating terms around blockchain, to reduce ambiguity of terms and to avoid misunderstandings in discussions. Thus, we focus on terms, which we found often not clearly delineated in research and in practice. To
We use Ethereum as an example for our explanations to make it simpler, but most of the terms are directly transferrable to other blockchain technologies.
- Ethereum Blockchain Technology: By Ethereum blockchain technology we mean the code and libraries used to build Ethereum blockchain networks. In this code, the core concepts and functionalities of Ethereum blockchain technology like storing transactions in a distributed way, communication protocols for the transport and validation of transactions, etc. are realized. Like for other technologies, an Ethereum blockchain technology can be selected as a technology decision by architects, e.g. the Ethereum blockchain technology.
- Blockchain Technology: Blockchain technology is the generalized term for all specific blockchain technologies, like the Bitcoin or Ethereum blockchain technology. For the generalized term, no code or libraries do exist. Rather, the term denotes the common concepts realized in typical specific blockchain technologies, like storing transactions in a distributed way, communication protocols for the transport and validation of transactions.
- Ethereum Blockchain Ledger: The Ethereum blockchain ledger is the data storage used in Ethereum blockchain nodes in the form of cryptographically connected data blocks.
For example, data stored in a node’s Ethereum blockchain ledger can be a transaction, an account balance, the code of a smart contract, or the state of a smart contract. The chain of blocks starts with a genesis block, which is specific for the Ethereum blockchain network. The ledger is synchronized across all Ethereum blockchain nodes of the same Ethereum blockchain network via the protocol of the Ethereum blockchain technology. At a specific point in time, the Ethereum blockchain ledgers on Ethereum blockchain nodes of the same Ethereum blockchain network can be assumed to start with a long chain of identical blocks. The most recent blocks may diverge due to different states of block validation. Depending on the concrete blockchain technology and blockchain-based application, a block is assumed to be finally persisted if a certain number of subsequent blocks was successfully validated.
- Ethereum Blockchain Node: An Ethereum blockchain node is a single computational node, which is connected to a communication network and running the Ethereum blockchain technology. It is part of an Ethereum blockchain network holding an Ethereum blockchain ledger of this Ethereum blockchain network, as the following figure shows:
- Ethereum Blockchain Network: An Ethereum blockchain network is the set of Ethereum blockchain nodes, which are connected via a communication network and the protocols realized in the Ethereum blockchain technology, and synchronize their Ethereum blockchain ledgers. Thus, they also share the same genesis block.
Multiple Ethereum blockchain networks can exist in parallel across the internet and in private networks. These are created by setting up a new network of Ethereum blockchain nodes that are configured with a new Ethereum blockchain ledger, i.e., this ledger is based on a new genesis block. The resulting Ethereum blockchain networks are independent networks not synchronizing data across the networks: Synchronization is only done within an Ethereum blockchain network. Although being independent networks, the Ethereum blockchain networks are based on the same Ethereum blockchain technology, just differently configured. The following figure shows an example with two Ethereum blockchain networks that are independent of each other. Their ledgers store different data, which is indicated by the distinct colors (darker vs. lighter blue) to depict the data contained in the ledgers.
- Ethereum-based Application: An Ethereum-based application is an application which is using an Ethereum blockchain network to store critical data in the respective Ethereum blockchain ledgers on the connected Ethereum blockchain nodes of the Ethereum blockchain network.
A such application benefits from the characteristics a blockchain network can provide (no central trust authority needed, immutability of data, …). Additionally, the Ethereum-based application can contain logic in form of smart contracts, being stored in the Ethereum blockchain ledger. These smart contracts work on data stored in the Ethereum blockchain ledger and are executed on all Ethereum blockchain nodes of the Ethereum blockchain network if triggered. The following figure depicts this concept and further distinguishes between „external applications“, where the application logic is purely running on the application node, and the blockchain is only used to store data, and „applications as smart contracts“, where substantial parts of application logic are given by smart contracts.
- Ethereum Blockchain: The Ethereum blockchain is the central Ethereum blockchain network, based on the Ethereum blockchain technology, with the respective Ethereum blockchain ledgers on the connected Ethereum blockchain nodes. Further public or private Ethereum blockchain networks can exist. Not for every blockchain technology, such a central blockchain network has to exist. There can be blockchain technologies, for which only private blockchain networks exist.
Continue with the third and last article of our series: „Guidance for Architecting Blockchain-Based Applications“