
1.3 区块链的基本技术原理
1.3.1 区块链的基础技术要素
区块链技术是一种融合了分布式存储、点对点传输、共识机制、密码学等多种技术的新型分布式数据库。基于时间戳的数据存储结构、分布式的共识机制和灵活可编程的智能合约是区块链技术最具代表性的创新点。区块链技术核心的价值在于通过技术手段实现了在统一共识的规则下,跨地域、跨时空、跨机构的多个组织或个人高效的协作。
日常生活中典型的交易行为需要包含以下3个基本要素。第一是对所有者的身份证明,通常这些基础信息会由权威、可靠的第三方机构出具相关文档证明,如出生证、身份证和驾驶证等;第二是产品的证明,如轿车、手机等通常通过产品序列号、产品证书等准确定位某个产品;第三是所有者和被拥有的产品之间的证明。要证明所有者具有对某些财产的所有权,就需要通过在相应账本记账来登记具体财产的所有权。在社会生活中,有很多相关的机构通过公开的规章制度来管理特定类型的财产所有权的登记和交易,且管理的财产价值越高,政府直接介入的概率就越大,如房产交易所、专利交易所等。账本可以看成关联财产所有者和具体财产的一个工具。
为实现现实生活中的交易,账本需要同时具有两个功能:一是账本可以证明相应资产的所有权,二是账本能记录每一次所有权的变更。为了保证记账权的权威可靠,中心化的记账方式覆盖了社会生活的方方面面。但中心化的记账方式对中心本身的能力、相应的监管法律和参与者对其的信任都有极高的要求。然而,中心化的记账却有一些显而易见的弱点:一旦这个中心出现问题,如被篡改、被损坏,整个系统就会面临危机乃至崩溃。一个典型的例子是21世纪初的安然事件:这家2000年披露的营业额高达1010亿美元的美国能源巨头,由于深陷会计假账丑闻,于2001年破产倒闭。
区块链试图通过一组独立的账本而不是一个中心账本来记录所有权,并使用大多数账本认可的结果来证明所有权。但多中心的点对点分布式记账方式可以有效解决防篡改和防删除的问题,也可能带来新的问题,如全网所有节点的信息同步需要一定的时间,这导致在某一个时间点上可能出现各节点本地账本不一致的情况。同步信息慢的节点可能会被同步信息快的节点所利用,导致在同一网络系统中,一个所有权在同一时间被多次转移,如“双花”问题,即一笔资产被重复花费多次。
为有效解决“双花”问题,区块链主要采用如下解决方案:第一,区块链通过记录完整的交易历史记录来识别和描述当前所有者,证明其所有权;第二,通过密码学技术来保护所有权,包括识别所有者、认证所有者并限制其他人对所有者所有资产的操作;第三,区块链通过块链式账本机构实现对交易数据的安全存储,使得交易历史数据难以被篡改;第四,通过分布式共识机制和密码技术构建在不可信环境分发账本和验证新的交易记录机制,从而能够确定哪些账本代表了真相。
1.3.2 区块链的参考架构
区块链的基础技术参考架构如图1-8所示。
(1)数据层主要定义了区块链的数据结构,并借助密码学相关技术来确保区块链的数据安全。区块链技术在发展的过程中,其区块的数据结构根据具体区块链的功能不同而有所变化,但链式结构、默克尔树作为比特币最初所采用的数据结构,一直被之后的区块链技术保留。数据层包括区块结构、非对称加密、数字签名、默克尔树、哈希加密算法。
(2)网络层主要定义了区块链节点之间的组网方式、信息在节点间的传播方式和信息的验证过程。每个区块链节点都与多个邻居节点建立连接,当节点产生交易、区块等数据时会将其传播至邻居节点,邻居节点在收到新的交易、区块等数据并进行相关信息验证后继续向邻居节点传播,直到数据扩散至全网所有区块链节点。网络层包括P2P网络、安全传输、访问控制。

图1-8 区块链的基础技术参考架构
(3)共识层建立在网络层之上,主要定义了存在恶意参与方的环境下分布式节点如何对区块链上的数据达成一致。当交易、区块等数据成功通过网络层到达全网所有节点后,分布式节点通过共识机制对本地组建的区块链一致性达成共识。
(4)激励层主要是为了鼓励多方竞争性诚实记账而引入经济机制与博弈机制的一个层次。其存在的必要性取决于建立在区块链技术上的具体应用需求。目前激励层在公有链的应用中使用较为广泛,而在联盟链的应用中较少使用。
(5)合约层建立在激励层之上,主要是区块链上运行程序的执行环境、脚本代码与智能合约。脚本代码与智能合约是部署在分布式区块链节点上的一段程序,其执行过程中需要读取区块链中的数据并将执行结果写入区块链中,是区块链可编程特性的基础。其中,脚本代码与智能合约分别是区块链1.0时代与2.0时代的链上代码。
(6)应用层则是建立在合约层的基础上的,采用服务端技术、前端技术等对智能合约实行封装,为用户提供各种分散化的应用服务。
1.3.3 “写入”区块链的主要流程
区块链中最小的事务单位是交易,而区块链账本的写入操作主要指的是将交易广播给链内所有参与共识的节点,节点验证交易的真实性并写入区块的过程。不同区块链平台的账本写入逻辑可能会因其共识机制、数据结构、底层网络设计的不同而有所差异。但总体来说写入区块链的主要流程都包括以下几个关键步骤,如图1-9所示。

图1-9 “写入”区块链的流程
(1)客户端发起交易提案:从客户端发起一笔交易。
(2)交易广播至全网:将交易广播至全网所有参与共识的节点。
(3)节点背书与验证:收到交易的节点将在本地模拟执行交易验证,如验证交易的合法性。
(4)广播至其他节点:当节点本地验证通过时,会将本交易(连同其他若干笔交易)打包进区块,写入本地区块链账本中并同步给其他节点。
(5)账本同步:其他节点收到一个新区块时将逐步检查此区块中的交易,若无误则将此新区块同步写入本地区块链中。
(6)交易确认:记账节点对交易达成一致后,交易在全网节点得到确认,则成功写入区块链。
1.3.4 区块链与数据库技术的区别
区块链从本质上来说是一种分布式数据库,但是区块链与数据库在架构、存储形式、事务单元、操作模式、记录时效、一致性、可扩展性、安全性等属性上表现还是有所不同的。区块链与数据库的区别如表1-1所示。
表1-1 区块链与数据库的区别

(续表)

传统数据库由于有权威的中心机构的信任背书,在数据可信的基础上会更强调如何提高效率与数据库承载的性能,适用场景比较广泛。而区块链技术使用的是多中心化架构,分布式的特点使得区块链上的数据可信性不是由单一机构决定,而是由多方共同决策。相对传统数据库而言,区块链上数据处理的效率较低,但更注重安全的考量,在需要多方参与协作或有数据共享的需求时较为适用。