Blockchain should not pursue efficiency: stratification of blockchain system
This article is from a discussion, the content of the article is also the finishing of the discussion. The discussion stems from a common question: Should the blockchain be more efficient?
The problem is ordinary but difficult to answer. It is difficult to base on two contradictory common sense:
1. The efficiency of distributed systems cannot be improved: limited by the CAP theorem of distributed systems, it is difficult for distributed systems to pursue high efficiency.
2. People want blockchain systems to support applications that require high efficiency.
On the one hand, it is impossible to improve efficiency, on the other hand, it is necessary to improve efficiency. Should the blockchain should pursue efficiency? This raises a more fundamental question: What is blockchain technology? If you can answer this question clearly, you may be able to answer the blockchain and should not pursue efficiency.
Is blockchain technology a collective term for all the technologies involved in developing a blockchain system, or is it just a technique for solving some of the problems in a particular range of blockchain systems? When we went on to answer this question, we found that if we decompose a blockchain system into different layers, the problem can become clear and pointed, and we can give corresponding answers.
A blockchain system can be divided into four layers, from bottom to top: distributed system layer, block chain layer, application platform layer, application layer. What we usually call a blockchain/public chain is a three-layered collection of distributed system layers, blockchain layers, and application platform layers.
Why can we divide the hierarchy of the blockchain system in this way? Because they can be separated separately, both in function and in implementation. Functionally, each level does something different; in practice, the method used at each level is different.
When the hierarchy is divided, many problems can be solved. The confusion or contradiction caused by these problems is actually confusing the different things that need to be done at different levels.
So, what is a four-layer structure, what each layer is doing, and what is it for the entire blockchain system? How can each layer be implemented, and can the decentralization be sacrificed in the process of implementation? This article will be analyzed in the form of a question and answer.
Note: This article is open-ended, the point of view is only for discussion, and everyone is welcome to discuss it.
01 "Distributed System" layer
The first question: What is the distributed system layer? What to do?
The distributed system layer is the lowest-level infrastructure of the blockchain system, and all other architectures are built on top of it. The work done at the distributed system level is very simple, providing a distributed system that can be used for the upper layer.
The distributed technology required to build a distributed system is a relatively mature technology that can be directly used by the distributed system layer.
The distributed system layer does not have to pursue efficiency because it only needs to provide an underlying distributed system for the upper layer; it also cannot effectively improve efficiency due to its distributed structure.
The second question: What does the distributed system layer provide?
The blockchain system is based on a distributed system. It is the distributed system that gives its own advantages to its own blockchain, which makes the blockchain a promising development direction. But in the end, distributed systems offer two things:
1 distributed features
2. Distributed resources
Specifically, it is as follows:
1. Distributed systems can provide distributed features/functions for applications, such as decentralization.
2. Distributed systems can make distributed resources available: each individual and the various devices, data, etc. that they have connected to the network are distributed resources; institutional data, IoT devices, etc. are also Distributed resources.
3. Distributed systems can provide applications with cheaper available resources.
Note: What is the distributed resource of this article?
Distributed resources refer to resources available for trading in a distributed system, such as computing power, storage space, Internet of Things data, distributed services, and so on.
In the blockchain system, distributed resources need to use the distributed ledger provided by "mining" to be booked, thereby realizing the transaction and thus being able to be used.
Blockchain "mining" requires the use of resources such as CPU and storage provided by the distributed system. These resources are for the book, and are not distributed resources as referred to herein.
02 "Block Chain" layer
The first question: What is the blockchain? What to do?
Between the distributed system layer and the application platform layer is a blockchain layer. The blockchain layer provides operational power to the distributed system by designing and selecting different book structures, consensus mechanisms, incentive mechanisms, etc., allowing the application platform layer to use the features and resources of the distributed system layer.
Blockchain should also not be responsible for efficiency. It is more about providing a mechanism for distributed systems to be available or operational. It is best not to break down their distributed features here.
After the destruction here, the upper layer cannot be compensated for by the design; it is quite difficult to make modifications to this layer later.
The second question: What does the blockchain provide?
The blockchain layer provides the application platform layer with a distributed ledger system or distributed resource system that can meet specific needs.
1. Distributed ledger system is the most important application direction of blockchain. What we usually call the blockchain application is a use of the ledger system, which has the characteristics of trust, decentralization, value transfer and so on.
2. A distributed resource system refers to the provision of resources in a distributed system layer. Such resources must be used in conjunction with a distributed ledger system, because it is possible to construct a resource only if the tradable resources are realized through the ledger. Use ecology.
The third question: What issues should be considered in designing the blockchain?
Before designing the blockchain layer, it is necessary to first understand the application scenario or vision of the blockchain system, and select different mechanisms and technologies according to requirements.
This is a new field that needs to be explored and a difficult area. It not only needs knowledge including economics, sociology, computer science, etc., but also needs to be able to apply this knowledge fusion, such as technology to support and guarantee mechanisms.
The design block chain layer can be considered from the following three perspectives:
1. What kind of distributed ledger is provided for the application; what resources are absorbed into the application to the distributed system (vision design).
2. How to attract more computing power and storage to ensure the security of distributed ledgers; how to attract more and better resources to join the distributed system and build resource ecology (mechanism design).
3. How to implement distributed ledgers; how to provide distributed resources (technical design).
The fourth question: What can the “blockchain” mean?
In different contexts, a blockchain may refer to three different subjects as follows.
1. Refers to the blockchain layer between the distributed system layer and the application platform layer, which drives the distributed system and provides distributed ledger or distributed resources to the application platform layer.
2. Refers to a two-tier system consisting of a distributed system layer and a blockchain layer. It is a blockchain underlying system that is oriented to the application platform layer and meets the requirements of the application platform layer.
3. Refers to a three-tier system that includes a distributed system layer, a blockchain layer, and an application platform layer. It is an application-oriented system that meets application requirements and may have some distributed features and some centralized features. This three-tier system is also the public chain/blockchain system we usually refer to. The development of the public chain also includes the design and implementation of all three layers.
03 "Application Platform" layer
The first question: What is the application platform layer? What to do?
The application platform layer is above the blockchain layer, and under the application layer, all applications are built on top of it. The application platform layer is an application service.
By providing a range of solutions, distributed account books and distributed resources provided by the bottom two layers can be used by the application and meet the specific requirements of the application.
If the blockchain system is to pursue efficiency, the issue of efficiency should be addressed at this level.
In addition, the application platform layer must meet the requirements of applications in terms of security, privacy, etc., as well as better support for application implementation, such as making development easier, making applications run cheaper, and so on.
The application platform layer also needs to perform more special designs to better serve specific needs according to the application scenario or vision of the blockchain system.
Second question: What does the application platform layer provide?
The application platform layer provides, that is, we require a blockchain system to provide. Essentially, it is a kind of encapsulation of distributed ledgers and distributed resources, but from the perspective of packaging, it is the function we hope to implement in this blockchain system.
Such as a special ledger, a world computer, a distributed storage system, a computer that allows distributed storage of data to be applied to the world…
The third question: What is the development direction of the application platform layer at the current stage?
Much of the work in the blockchain field is currently at the application platform level. There are mainly the following directions:
1. Improve efficiency. The methods employed include stratification, sharding, and the like.
2. Simplify development. The methods used include modular design, a complete SDK toolkit, and more.
3. Provide privacy, including the privacy of the books and the privacy of the resources. The methods used include secure multi-party calculations, zero-knowledge proofs, and so on.
4. Connect the different blockchain systems at the bottom to allow applications to use multiple systems. The methods employed include cross-chaining, atomic exchange, and the like.
5. Achieve special system design under special vision.
Attachment: A little thought about decentralization
In the world of blockchains, people don't like centralization, and they also use decentralization as an indicator to evaluate a blockchain system; on the other hand, some blockchain application scenarios require efficiency. Therefore, many projects insisted on the substantial efficiency improvement achieved without sacrificing decentralization.
But if we understand that distributed systems are inefficient, only centralization can bring efficiency (the efficiency of many blockchain systems is now greatly improved, in fact, by means of centralized methods), while understanding in some scenarios. When you don't need all the elements in the scene to be decentralized, you may be able to revisit the decentralization of the blockchain.
And if you can revisit this problem, the project may be able to seriously think about where to retain decentralization, and where to use centralization to improve efficiency, rather than being trapped in a certain dilemma, or even not centralized. The place uses a centralized approach.
This is also a reason to layer the blockchain system and discuss the functions of different levels. Hierarchy may help us understand where we can do centralization and where we can't.
To put it bluntly, if a blockchain system must be decentralized on a feature and requires high efficiency support on the feature, the feature cannot be disassembled to remain decentralized and centralizable. The different components of the blockchain system cannot be established; if a blockchain system uses a centralized approach to the features that must be decentralized, even if it is decentralized elsewhere, it is also a Pseudo blockchain system.
04 "Application" layer
The first question: What is the application layer?
The application layer is all applications that use the blockchain system built on top of the application platform layer. It is not just a DApp.
The second question: What kind of application needs to use the blockchain?
What kind of application needs to use the blockchain and the blockchain can provide what corresponds to it, including two categories:
1. An application that needs to use a distributed ledger.
2. Applications that require the use of distributed resources, or applications that use distributed resources can greatly reduce costs.
The need for different application scenarios or different visions determines the design and implementation of the entire blockchain system.
1. The demand determines what resources are connected to the lowest-level distributed system, which in turn affects the choice of data structure and data processing methods.
2. The demand determines what kind of distributed ledger and consensus the blockchain layer needs to provide, and then decides the choice of its books, mechanisms, technologies, and so on.
3. The demand determines which requirements of the application platform layer to meet the application, such as efficiency, decentralization, security, privacy, etc., which in turn affects its specific balancing strategy and technical route.
The third question: How can you tap the application of the blockchain, or even a blockchain system that serves the application?
Maybe you can think in two different directions.
1. Starting from a distributed system
a. Analyze the characteristics of distributed ledgers, rethink what application scenarios these features may generate, and then design applications based on application scenarios or blockchain systems designed to serve applications.
b. Analyze what resources the distributed system can provide, think about what application scenarios may be generated by these resources, and then design applications based on the application scenarios or blockchain systems designed to serve applications.
2. Starting from existing needs
a. What existing needs can be met due to the characteristics of the distributed ledger? Do you need to design a blockchain application to meet this type of demand? If there is no blockchain system that supports such applications, do you need to design a blockchain system that serves the application?
b. What existing requirements can be met by using distributed resources supported by distributed ledgers? Do you need to design a blockchain application to meet this type of demand? If there is no blockchain system that supports such applications, do you need to design a blockchain system that serves the application?
05 written at the end
A blockchain system can ask your own questions
Based on the analysis of the blockchain system, it may be possible to ask some questions to understand and clarify a blockchain project (specifically, blockchain system projects, not including blockchain applications):
1. The starting point is to use the blockchain to solve specific problems, or to provide a basic general blockchain system, or to provide a solution for the blockchain system?
2-1. If you are using a blockchain, do you use distributed ledgers or use distributed resources? Why must I use the blockchain?
2-2. If the blockchain is utilized, why is the existing blockchain system not meeting the demand? Is the resolution of this type of problem important to design a specialized blockchain system?
3-1. If you are providing a blockchain, is it a distributed ledger or a distributed resource?
3-2. If a distributed ledger is provided, what is the application scenario of the ledger? Can an application that requires the ledger support the operation of this blockchain system?
3-3. If a distributed resource is provided, what is the application scenario of the resource? Can an application that needs this resource support the operation of this blockchain system? Can it support the quality and quantity of resources?
4-1. If it is a solution for a blockchain system, what kind of problem does it solve?
4-2. If it is a solution for a blockchain system, can the solution be common across different blockchain systems? What kind of resource support does this solution require and can it be supported?
Discussion participants: Genaro CTO Wu Weilong, Li Painting
Written by: Li Painting