零基础玩转区块链
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第四章 区块链基础理论

◇区块链的体系结构

狭义上来说,区块链技术就是具体产品应用中的数据存储思想和方式,类似区块链在比特币中的作用。可是,随着区块链技术和不同场景的深入结合,单独说到区块链,更多指的是一种数据公开透明、可追溯、不可篡改的产品架构设计。

基于区块链的各种应用,或许会采用不同的机制,但从根本上来说,框架结构大同小异。现在,还没有形成统一的分层体系,类比OSI(Open System Interconnection,开放式系统互联)七层协议的标准,可以将区块链系统分为六层,分别是:数据层、网络层、共识层、激励层、合约层和应用层。

1.数据层

数据层封装了区块链的底层数据存储和加密技术,各节点存储的本地区块链副本都可以被看成三个级别的分层数据结构,即交易、区块和链。为了保证数据的完整性和真实性,每个级别都需要不同的加密功能。

(1)交易。交易是区块链的原子数据结构,通常由一组用户或类似智能合约的自主对象创建,完成代币从发送者到指定接收者的转移。为了保证交易记录的完整性,数据层主要分为哈希函数和非对称加密功能。

①哈希函数。又称为加密散列函数,能够将任意长度的二进制值输入映射到唯一固定长度的二进制值。哈希函数的计算具有不可逆性,不能根据输出恢复输入;同时,两个不同输入生成相同输出的概率可以忽略不计。

②非对称加密。非对称加密功能主要指的是在交易过程中使用的公钥和私钥,网络中的每个节点都会生成一对公钥和私钥。私钥与数字签名的功能有着密切关系,数字签名通过他人无法伪造的字符串来证明交易发送方的身份。公钥要通过数字签名的验证关,只有通过对应私钥生成的数字签名验证后才会返回。另外,网络中的节点,还会通过公钥生成的字符串,作为区块链上的永久地址。

(2)区块。区块是交易记录的任意子集的聚合,要想创建,必须参与建立网络共识过程的节点。例如,在比特币网络中,只有具有矿工节点,才有资格进行新区块的创建。为了保证交易记录的完整性,同时在共识节点的本地存储中按照指定顺序进行区块间的排序,就要将哈希指针的数据字段保存在区块的数据结构中。为了减少单个交易的存储占比,增大容量,同时防止交易记录被篡改,采用了Meke树的结构。

(3)链。将上一区块的哈希码存储到当前区块的哈希指针处,就能建立起链式结构。当然,区块网络的形式可以是线性链表,也可以是有向无环图。所谓链性链表就是,用一组任意地址的存储单元存放线性表中的数据元素,相邻元素在物理上虽然不需要相邻,但也不能随机存取。而有向无环图是一种无回路的有向图,对于一个非有向无环图,从A点出发向B经C,然后回到A,就会形成一个环;之后,将从C到A的方向改为从A到C,就会出现一个有向无环图。

2.网络层

在“拜占庭环境”中,在确认区块链网络中的节点组织模式上,身份管理机制发挥着重要作用。在无权限限制的公开区块链网络中,节点可以自由加入网络并激活网络中的任何可用功能。如果没有任何身份鉴别方案,区块链网络被组织为覆盖PP网络,但是不同的应用场景会对区块链的“去中心化”和开放程度提出不同的要求,区块链也会被分为公有链、私有链和联盟链三大类。

(1)公有链。公有链“去中心化”程度最高,各种数字货币如比特币、以太坊均为公有区块链的代表。这种区块链没有把控的中心化机构或组织,任何人都能读取链上的数据,参与交易和算力竞争。

(2)私有链。私有链的门槛最高,权限完全由某个组织或机构控制,数据的读取和写入,要受到组织规则的严格限定,多适用于特定机构的内部使用。私有链的中心化程度较高,简直就是一个弱中心化或多中心化的系统;私有链的节点数量被严格控制,节点数量较少,交易时间更短,交易效率更高,算力竞争成本更低。

(3)联盟链。联盟链介于公有链和私有链之间,是一种实现了“部分去中心化”的系统。从某种意义上来说,联盟链是开放程度更高的私有链,节点的参与和维护对象是线下联盟,这些对象共同加入一个网络并维护其运行。

3.共识层

共识层主要指的是不同区块链网络中使用的共识算法,比如,工作量证明、权益证明、拜占庭容错算法。换句话说,区块链独特的共识协议是由“拜占庭将军条件”下的网络共识节点实现的。

在区块链网络中,“拜占庭将军问题”会让故障节点可能出现任意行为,不仅会误导其他副本节点,还会产生更大的危害。简单地将区块的序列表示成区块链的状态,交易得到确认的区块状态就会发生变化。

共识协议因不同的区块链网络而存在差异。首先,公有链是完全开放的区块链网络,需要对参与共识的节点进行更严格的信息同步控制,多采用传统拜占庭容错协议提供的所需要的共识属性。其次,PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)将算法的复杂度由指数级降低到多项式级,保证了活性和安全性。

4.激励层

当网络中存在两条链时,不同的区块链可以从对等节点接收或本地自提,链间的比较和扩展过程让诚实节点只能采用候选区块链中最长链条的提议。POW解决方案是共识协议的最主力部分,通过计算密集的方式,对新区块的挖掘方式进行了重新定义。

破解工作量证明的方式是,节点按照规范构造区块,使用哈希计算,找到满足预条件的随机值。

节点如果想赢得算力竞赛,就要尽可能地提高散列表的查询效率,需要更高的投入。但是,节点自愿参与共识过程,不可能承担经济损耗。为了网络的正常运行,比特币的共识协议中加入了激励机制:创建新区块的奖励和交易费一旦挖掘出新区块,系统就会产生相应数额的比特币,比特币也就凭着该种方式实现了“去中心化”发行。

5.合约层和应用层

合约层是区块链技术的可编程实现的基础,通过各类脚本、算法和智能合约,完成对区块链技术的个人独特改造;应用层指的是建立在底层技术上的区块链的不同应用场景和案例实现。

一般来说,对于区块链相关应用的研究可以分为两类:一类是在现有区块链协议的框架下对共识协议的研究,另一类是在区块链共识层之上提供服务。

智能合约的概念出现在比特币之前,首次由尼克萨博在1996年提出,指的是将条款用计算机语言的形式记录的智能合同,达到预先设定的条件时,就能自动执行相应的合同条款,以太坊将智能合约和区块链结合在一起,就能为用户提供新的“去中心化”平台。