区块链由分布式账本、共识机制、智能合约、P2P网络等构成。
(1)分布式账本。
本章“1.1区块链的概念”中已经介绍过区块链就是一本账,在区块链系统中,所有节点都保存有一本账本数据,并通过网络从其他节点更新账本数据,这就是分布式账本,也是区块链技术的核心。
(2)共识机制。
区块链通过全民记账来解决信任问题,但是所有节点都参与记录数据,那么最终以谁的记录为准,或者说怎么保证所有节点最终都记录一份相同的正确数据。在传统的中心化系统中因为有权威的中心节点背书,可以中心节点记录的数据为准,其他节点仅简单复制中心节点的数据即可,很容易达成共识。然而在区块链这样的去中心化系统中,并不存在中心权威节点,所有节点平等地参与到共识过程之中。由于参与的各个节点的自身状态和所处网络环境不尽相同,而交易信息的传递又需要时间,并且消息传递本身不可靠,因此,每个节点接收到的需要记录的交易内容和顺序难以保持一致。更不用说,由于区块链中参与的节点的身份难以控制,还可能会出现恶意节点故意阻碍消息传递,或者发送不一致的信息给不同节点,以干扰整个区块链系统的记账一致性,从而从中获利的情况。因此,区块链系统的记账一致性问题,或者说共识问题,是一个十分关键的问题,它关系着整个区块链系统的正确性和安全性。当前,区块链系统的共识算法有许多种,主要可以归类为四大类,分别是工作量证明(Proof of Work, PoW)类的共识算法、Po*的凭证类共识算法、拜占庭容错(Byzantine Fault Tolerance, BFT)类算法、结合可信执行环境的共识算法。
(3)智能合约。
简单来说,智能合约是一种在满足一定条件时就自动执行的计算机程序。例如,自动售货机就可以被视为一个智能合约系统。客户选择商品并完成支付,这两个条件都满足后,售货机就会自动吐出货物。
智能合约不是区块链的必要组成,它是区块链2.0之后出现的技术。智能合约一旦在区块链上部署,所有参与节点都会严格按照既定逻辑执行。基于区块链上的大部分节点都是诚实的这一基本原则,如果某个节点修改了智能合约逻辑,那么执行结果就无法通过其他节点的校验而被承认,即修改无效。
一个基于区块链的智能合约需要包括事务处理机制、数据存储机制,以及完备的状态机制,用于接收和处理各种条件。事务的触发、处理及数据保存都必须在区块链上进行。当满足触发条件后,智能合约即会根据预设逻辑,读取相应数据并进行计算,最后将计算结果永久保存在链式结构中。
(4)P2P网络。
P2P网络即对等计算机网络(Peer-to-Peer network, P2P网络),是一种消除了中心化的服务节点,将所有的网络参与者视为对等者(Peer),并在他们之间进行任务和工作负载分配的网络。P2P网络打破了传统的C/S模式,去除中心服务器,是一种依靠用户群共同维护的网络结构。由于节点间的数据传输不再依赖中心服务器,P2P网络具有极强的可靠性,任何单个或者少量节点故障都不会影响整个网络正常运转。同时,P2P网络的网络容量没有上限,因为随着节点数量的增加,整个网络的资源也在同步增加。由于每个节点可以从任意(有能力的)节点处得到服务,加上P2P网络中暗含的激励机制也会尽力向其他节点提供服务,实际上P2P网络中节点数目越多,P2P网络提供的服务质量就越高。
从层次架构上看,区块链技术从下往上分别由数据层、网络层、合约层、应用层4层构成,如图1-2所示。
图1-2 区块链技术逻辑架构