区块链的模型架构
有关区块链的模型结构问题,已经被谈论千遍万遍了,基本已经成为一种定义式的问题了,我们将使用诸多资料中相对较为全面,也较容易理解的一类解释来向大家阐述。
区块链基础架构分为6层,包括数据层、网络层、共识层、激励层、合约层、应用层。每层分别完成一项核心功能,各层之间互相配合,实现一个去中心化的信任机制。
一、数据层
数据层主要描述区块链技术的物理形式。区块链系统设计的技术人员们首先建立的一个起始节点是“创世区块”,之后在同样规则下创建的规格相同的区块通过一个链式的结构依次相连组成一条主链条。随着运行时间越来越长,新的区块通过验证后不断被添加到主链上,主链也会不断地延长。
图2–71区块链的模型架构
每个区块中也包含了许多技术,比如时间戳技术,它可以确保每一个区块按时间顺序相连接;再比如哈希函数,它能够确保交易信息不被篡改。
二、网络层
网络层的主要目的是实现区块链网络中节点之间的信息交流。区块链网络本质上是一个P2P(点对点)网络。每一个节点既接收信息,也产生信息。节点之间通过维护一个共同的区块链来保持通信。[13]
区块链的网络中,每一个节点都可以创造新的区块,在新区块被创造后会以广播的形式通知其他节点,其他节点会对这个区块进行验证,当全区块链网络中超过51%的用户验证通过后,这个新区块就可以被添加到主链上了。
图2–72 区块链的网络层
三、共识层
共识层能让高度分散的节点在去中心化的系统中高效地针对区块数据的有效性达成共识。区块链中比较常用的共识机制主要有工作量证明、权益证明和股份授权证明三种,我们在下面的章节中会重点讲解。
四、激励层
激励层的主要功能是提供一定的激励措施,鼓励节点参与区块链的安全验证工作。我们以比特币为例,它的奖励机制有两种。在比特币总量达到2 100万枚之前,奖励机制有两种,新区块产生后系统奖励的比特币和每笔交易扣除的比特币(手续费)。而当比特币总量达到2 100万时,新产生的区块将不再生成比特币,这时奖励机制主要是每笔交易扣除的手续费。
图2–73 区块链的激励层
五、合约层
合约层主要是指各种脚本代码、算法机制以及智能合约等。我们以比特币为例,比特币是一种可编程的货币,合约层封装的脚本中规定了比特币的交易方式和过程中涉及的种种细节。
六、应用层
应用层封装了区块链的各种应用场景和案例,比如基于区块链的跨境支付平台OKLink,以及在“应用篇”中我们将讲到的五花八门的应用。
区块链的基本类型
一、公有链
公有链是指全世界任何人都可读取、任何人都能发送交易且交易能获得有效确认,任何人都能参与共识过程的区块链——共识过程决定哪个区块可被添加到区块链中,同时明确当前状态。[14]
图2–74区块链的公有链
公有链有如下几个特点:
1. 保护用户免受开发者的影响
在公有链中程序开发者无权干涉用户,区块链可以保护其用户。
2. 访问门槛低
任何人都可以访问,只要有一台能够联网的计算机就能够满足基本的访问条件。
3. 所有数据默认公开
公有链中的每个参与者可以看到整个分布式账本中的所有交易记录。
二、私有链
私有链是指其写入权限仅在一个组织手里的区块链,目的是对读取权限或者对外开放权限进行限制。
图2–75 区块链的私有链
私有链有如下几个特点:
1. 交易速度非常快
私有链中少量的节点具有很高的信任度,并不需要每个节点都来验证一个交易。因此,私有链的交易速度比公有链快很多。
2.为隐私提供更好的保障
私有链的数据不会被公开,不能被拥有网络连接的所有人获得。
3.交易成本大幅降低甚至为零
私有链上可以进行完全免费或者至少说是非常廉价的交易。如果一个实体机构控制和处理所有的交易,它就不再需要为工作收取费用。
4.有助于保护其基本的产品不被破坏
银行和传统的金融机构使用私有链可以保证它们的既有利益,以至原有的生态体系不被破坏。
三、联盟链
联盟链是指其共识过程受到预选节点控制的区块链。例如,对由15个金融机构组成的共同体而言,每个机构都运行着一个节点,为了使每个区块生效需要获得其中半数以上也就是8家机构的确认。区块链可能会允许每个人读取,也可能会受限于参与者走混合路线。[15]
图2–76 区块链的联盟链
联盟链可以视为“部分去中心化”,区块链项目R3 CEV就可以认为是联盟链的一种形态。
四、其他的说法
我们再来说说区块链分类中的其他几种说法——许可链、混合链和复杂链。
许可链是指每个节点都需要许可才能加入的区块链系统,私有链和联盟链都属于许可链。随着区块链技术的日益发展,区块链的技术架构不再简单地划分为私有链和公有链,它们之间的界限越来越模糊,于是复杂链和混合链的概念就逐渐被人提出来了。
区块链的发展脉络
根据区块链科学研究所创始人梅兰妮·斯万(Melanie Swan)的观点,区块链技术发展分三个阶段或领域:区块链1.0、区块链2.0和区块链3.0。[16]
区块链1.0:以比特币为代表的可编程货币。它更多是指数字货币领域的创新,如货币转移、兑付和支付系统等。
区块链2.0:基于区块链的可编程金融。它更多涉及一些合约方面的创新,特别是商业合同以及交易方面的创新,比如股票、证券、期货、贷款、清算结算、所谓的智能合约等。
区块链3.0:区块链在其他行业的应用。它更多地对应人类组织形态的变革,包括健康、科学、文化和基于区块链的司法、投票等。
图2–77 区块链的发展脉络
区块链的共识机制
我们在了解共识机制之前,先来看两个古老的引入问题,类两军问题和拜占庭将军问题。
问题一:类两军问题
说到这个问题,网络上广为流传的解释如下:
有两个相距很远的军队要传递信息,蓝军派遣一个信使去跟红军说:“有本事把意大利炮拿出来!”红军收到信息后又派了一个信使去跟蓝军说:“收到指令!”然后蓝军又派一个信使去跟红军说:“知道你收到指令了!”然后红军又派一个信使去跟蓝军说:“知道你知道我收到指令了!”然后蓝军又派一个信使去和红军说:“知道你知道我知道你收到指令了!”然后就没完没了了。
图2–78 类两军问题
问题二:拜占庭将军问题
拜占庭将军问题是一个很古老的问题,具体阐述如下:
拜占庭罗马帝国在军事行动中,采取将军投票的策略来决定是进攻还是撤退,也就是说如果多数人决定进攻,就冲上去。但是军队中如果有奸细(比如将军已经反水故意乱投票,或者传令官叛变擅自修改军令),那怎么保证最后投票的结果真实反映了忠诚的将军的意愿呢?[17]
我们详细说明一下这个问题。
在很久很久以前,有一个强大的帝国叫作拜占庭,它的军队非常强大,周围有10个小国家,饱受拜占庭帝国的欺压,但是,必须同一时间有6个以上的国家进攻才有可能打败拜占庭帝国,否则就一定会战败。
这个时候,问题就出现了,古时候军队之间的通信完全依赖于人,如果一个国家的军队里有奸细,无论是下令的将军还是传信的通信兵,都可能会使得另外9个国家收到假消息,从而造成作战失败。那么,如果你是其中一个小国的国王,你该如何判断一定会有另外5个以上的国家与你并肩作战呢?毕竟一个不小心,你就亡国了。
图2–79 拜占庭将军问题
正是由于以上这些问题,我们需要达成共识。区块链上的共识机制有多种,没有一种共识机制是完美无缺的,同时也意味着没有一种共识机制是适合所有应用场景的。这里我们引用了“张童鞋”的一篇文章,并获得了他的授权。我们选取了其中比较有特点的9种共识机制做一个简单介绍,常见的共识机制主要有工作量证明、权益证明和股份授权证明三种。
一、工作量证明
工作量证明(Proof of Work,简称PoW)通常只能从结果证明,因为监测工作过程通常是烦琐且低效的。
比特币在区块的生成过程中使用了PoW机制,一个符合要求的区块哈希值由N个前导零构成,零的个数取决于网络的难度值。要得到合理的区块哈希值需要经过大量的尝试计算,计算时间取决于机器的哈希运算速度。当某个节点提供出一个合理的区块哈希值,说明该节点确实经过了大量的尝试计算,当然,这并不能得出计算次数的绝对值,因为寻找合理的哈希值是一个概率事件。当节点拥有占全网n%的算力时,该节点即有n%的概率找到区块哈希值。
PoW依赖机器进行数学运算来获取记账权,资源消耗大、共识机制高、可监管性弱,同时每次达成共识需要全网共同参与运算,性能效率比较低,容错性方面允许全网50%节点出错。
PoW的优点:完全去中心化,节点自由进出。
PoW的缺点:目前比特币已经吸引全球大部分的算力,其他再使用PoW共识机制的区块链应用很难获得相同的算力来保障自身的安全;挖矿造成大量的资源浪费;共识达成的周期较长。
使用PoW的项目有:比特币、以太坊前三个阶段——Frontier(前沿)、Homestead(家园)、Metropolis(大都会)。以太坊的第4个阶段,即Serenity(宁静),将采用权益证明机制。
二、权益证明
权益证明(Proof of Stake,简称PoS)由“Quantum Mechanic”2011年在比特币论坛讲座上首先提出,后经Peercoin(点点币)和NXT(未来币)以不同思路实现。
PoS的主要理念是节点记账权的获得难度与节点持有的权益成反比,相比PoW,其在一定程度上减少了数学运算带来的资源消耗,性能也得到了相应的提升,但依然是基于哈希运算,竞争获取记账权的方式,可监管性弱。该共识机制的容错性和PoW相同。它是PoW的一种升级,根据每个节点所占代币的比例和时间,等比例地降低挖矿难度,从而加快找到随机数的速度。
在PoW中,一个用户可能拿1 000美元来购买计算机,并加入网络来挖矿以此产生新区块,从而得到奖励。而在PoS中,用户可以拿1 000美元购买等价的代币,并把这些代币当作押金放入PoS机制中,这样用户就有机会产生新区块而得到奖励。
总体而言,这个系统中存在一个持币人的集合,他们把手中的代币放入PoS机制中,这样他们就变成验证者。比如对区块链最前面的一个区块而言,PoS算法在验证者中随机选取一个(选择验证者的权重依据他们投入的代币量,比如一个投入押金为10 000代币的验证者被选择的概率是一个投入1 000代币验证者的10倍),给他权利产生下一个区块。如果在一定时间内,这个验证者没有产生一个区块,则选出第二个验证者代替产生新区块。与PoW一样,PoS以最长的链为准。
图2–80 PoS算法随机选取
随着规模经济(指扩大生产规模引起经济效益增加的现象)的消失,中心化所带来的风险减小了。价值1 000万美元的代币带来的回报不多不少,是价值100万美元代币的10倍,不会有人因为负担得起大规模生产工具而得到不成比例的额外回报。
PoS的优点:在一定程度上缩短了共识达成的时间;不再需要大量消耗能源去挖矿。
PoS缺点:还是需要挖矿,本质上没有解决商业应用的痛点;所有的确认都只是一个概率上的表达,而不是一个确定性的事情,理论上有可能存在其他攻击影响,例如,以太坊的DAO攻击事件造成以太坊硬分叉,而ETC随之出现,事实上证明了此次硬分叉的失败。
三、股份授权证明
BitShares(比特股)社区首先提出了股份授权证明(简称DPoS)机制,它与PoS的主要区别在于节点选举若干代理人,由代理人验证和记账,但其合规监管、性能、资源消耗和容错性与PoS相似。类似于董事会投票,持币者投出一定数量的节点,进行代理验证和记账。
DPoS的工作原理如下:每个股东按其持股比例拥有相应的影响力,51%股东投票的结果将是不可逆且有约束力的,其挑战是通过及时而高效的方法达到“51%批准”。为了达到这个目标,每个股东可以将其投票权授予一名代表。获票数最多的前100位代表按既定时间表轮流产生区块。每位代表分配到一个时间段来生产区块。
图2–81 DPoS工作原理
所有的代表将收到等同于一个平均水平的区块所含交易费的10%作为报酬。如果一个平均水平的区块用100股作为交易费,一位代表将获得一股作为报酬。
网络延迟有可能使某些代表没能及时广播他们的区块,而这将导致区块链分叉。然而,这不太可能发生,因为制造该区块的代表可以与制造该区块前后的区块的代表建立直接连接。建立这种与你之后的代表(也许也包括其后的那名代表)的直接连接是为了确保你能得到报酬。
DPoS的投票模式可以每30秒产生一个新区块,并且在正常的网络条件下,区块链分叉的可能性极其小,即使发生也可以在几分钟内得到解决。执行该模式的基本步骤如下:
1. 成为代表。成为一位代表,你必须在网络上注册你的公钥,并获得一个32位的特有标识符。该标识符会被每笔交易数据的“头部”引用。
2. 授权投票。每个钱包有一个参数设置窗口,在该窗口里用户可以选择一位或更多的代表,并将其分级。一经设定,用户所做的每笔交易将把选票从“输入代表”转移至“输出代表”。一般情况下,用户不会创建专门以投票为目的的交易,因为那将耗费他们一笔交易费。但在紧急情况下,某些用户可能觉得通过支付费用这一更积极的方式来改变他们的投票是值得的。
3. 保持代表诚实。每个钱包将显示一个状态指示器,让用户知道他们的代表表现如何。如果他们错过了太多的区块,那么系统将会推荐用户更换一位新的代表。如果任何代表被发现签发了一个无效的区块,那么所有标准钱包将在每个钱包进行更多交易前要求选出一位新代表。
4. 抵抗攻击。在抵抗攻击上,前100位代表所获得的权力是相同的,即每位代表都有一项平等的投票权,因此,无法通过获得超过1%的选票而将权力集中到单一代表上。由于只有100位代表,不难想象一个攻击者可以对每位轮到其生产区块的代表依次进行拒绝服务攻击。幸运的是,由于每位代表的标识是其公钥而非IP地址,这种特定攻击的威胁很容易被减轻。这将使确定DDoS(分布式拒绝服务)攻击目标更为困难。而代表之间的潜在连接将使妨碍他们生产区块变得更为困难。
图2–82 DPoS的投票模式
DPoS的优点:大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证。
DPoS的缺点:整个共识机制还是依赖于代币,而很多商业应用是不需要代币的。
四、投注共识
投注共识是以太坊下一代的共识机制Casper(鬼马小精灵)引入的一个全新概念,属于PoS。Casper的共识是按区块达成的,而不是像PoS那样按链达成。
为了防止验证人在不同的世界中提供不同的投注,我们还有一个简单严格的条款:如果你两次的投注序号一样,或者说你提交了一个无法让Casper依照合约处理的投注,你将失去所有保证金。从这一点我们可以看出,Casper与传统的PoS不同的是,Casper有惩罚机制,这样非法节点通过恶意攻击网络不仅得不到交易费,而且还面临着保证金被没收的风险。
Casper协议下的验证人需要完成出块和投注两个活动。具体如下:
出块是一个独立于其他所有事件而发生的过程,验证人收集交易,当轮到他们的出块时间时,他们就制造一个区块,并签名,然后发送到网络上。投注的过程更为复杂一些,目前Casper默认的验证人策略被设计为模仿传统的拜占庭容错共识:观察其他的验证人如何投注,取33%处的值,向0或者1进一步移动。
而客户端确认当前状态的过程是这样的:一开始先下载所有的区块和投注,然后用上面的算法来形成自己的意见,但是不公布意见;它只要简单地按顺序在每个高度进行观察,如果一个区块的概率高于0.5就处理它,否则就跳过它。在处理所有的区块之后所得到的状态就可以显示为区块链的“当前状态”。客户端还可以给出对于“最终确定”的主观看法:如果高度k之前的每个区块形成的意见高于99.999%或者低于0.001%,那么客户端就可以认为前k个区块已经最终确定。
五、瑞波共识机制
瑞波共识算法使一组节点能够基于特殊节点列表形成共识。初始特殊节点列表就像一个俱乐部,要接纳一个新成员,必须由该俱乐部51%的会员投票通过。共识遵循这些核心成员的“51%权力”,外部人员则没有影响力。由于该俱乐部由中心化开始,它将一直是中心化的,而如果它开始腐化,股东们什么也做不了。与比特币及Peercoin一样,瑞波系统将股东们与其投票权隔开,因此,它比其他系统更中心化。
图2–83 瑞波共识机制
六、Pool验证池
基于传统的分布式一致性技术以及数据验证机制,Pool(联营)验证池是目前行业内大范围使用的共识机制。它的优缺点如下。
优点:不需要代币也可以工作,在成熟的分布式一致性算法(Pasox、Raft)的基础上,实现秒级共识验证。
缺点:去中心化程度不如比特币,更适合多方参与的多中心商业模式。
七、实用拜占庭容错
在分布式计算上,不同的计算机通过信息交换尝试达成共识,但有时候,系统中的协调计算机或成员计算机可能因系统错误交换错的信息,以致影响最终的系统一致性。对于拜占庭将军问题,若根据错误计算机的数量,寻找可能的解决办法,这其实无法找到一个绝对的答案,只可以用来验证一个机制的有效程度。
而拜占庭将军问题的可能解决方法为:在N≥3F + 1的情况下,一致性是可能实现的(N为计算机总数,F为有问题的计算机总数)。信息在计算机间互相交换后,各计算机列出所有得到的信息,以大多数的结果作为解决办法。
图2–84拜占庭容错
最早由卡斯特罗和利斯科夫在1999年提出的实用拜占庭容错(PBFT)是第一个得到广泛应用的拜占庭容错算法。只要系统中有2/3的节点是正常工作的,就可以保证一致性。
实用拜占庭容错算法的总体过程如下:客户端向主节点发送请求调用服务操作,如“<REQUEST,o,t,c>”,这里客户端c请求执行操作o,时间戳t用来保证客户端请求只会执行一次。每个由副本节点发给客户端的消息都包含了当前的视图编号,使得客户端能够追踪视图编号,从而进一步推算出当前主节点的编号。客户端通过点对点消息向它自己认为的主节点发送请求,然后主节点自动将该请求向所有备份节点进行广播。
视图编号是连续编号的整数。主节点由公式p = v mod |R|计算得到,这里v是视图编号,p是副本编号,|R|是副本集合的个数。
副本发给客户端的响应为“<REPLY,v,t,c,i,r>”,v是视图编号,t是时间戳,i是副本的编号,r是请求执行的结果。
主节点通过广播将请求发送给其他副本,然后就开始执行三个阶段的任务。
1.预准备阶段。主节点分配一个序列号n给收到的请求,然后向所有备份节点群发预准备消息,预准备消息的格式为“<<PRE–PREPARE,v,n,d>,m>”,这里v是视图编号,m是客户端发送的请求消息,d是请求消息m的摘要。
2. 准备阶段。如果备份节点i接受了预准备消息,则进入准备阶段。在准备的同时,该节点向所有副本节点发送准备消息“<PREPARE,v,n,d,i>”,并且将预准备消息和准备消息写入自己的消息日志。
3. 确认阶段。当“(m,v,n,i)”条件为真的时候,副本i将“<COMMIT,v,n,D(m),i>”向其他副本节点广播,于是就进入了确认阶段。所有副本都执行请求并将结果发回客户端。客户端需要等待不同副本节点发回相同的结果,作为整个操作的最终结果。
如果客户端没有在有限时间内收到回复,请求将向所有副本节点进行广播;如果该请求已经在副本节点处理过了,副本就向客户端重发一遍执行结果;如果请求没有在副本节点处理过,该副本节点将把请求转发给主节点;如果主节点没有将该请求进行广播,那么就认为主节点失效;如果有足够多的副本节点认为主节点失效,则会触发一次视图变更。
图2–85展示了在没有发生主节点失效的情况下算法的正常执行流程,其中副本0是主节点,副本3是失效节点,而c是客户端。
实用拜占庭容错机制是一种采用“许可投票、少数服从多数”来选举领导者并进行记账的共识机制,该共识机制允许拜占庭容错,允许强监管节点参与,具备权限分级能力,性能更高,耗能更低,而且每轮记账都会由全网节点共同选举领导者,允许33%的节点作恶,容错性为33%。由于特别适合联盟链的应用场景,实用拜占庭容错机制及其改进算法为目前使用最多的联盟链共识算法,其改进算法在以下方面进行了调整:修改底层网络拓扑的要求,使用P2P网络;可以动态地调整节点数量;减少协议使用的消息数量。
图2–85未发生主节点失效的情况下的算法
八、授权拜占庭容错
2016年4月,小蚁公司发布共识算法白皮书,描述了一种通用的共识机制——授权拜占庭容错,提出了一种改进的拜占庭容错算法,使其能够适用于区块链系统。授权拜占庭容错算法在实用拜占庭容错算法的基础上进行了以下改进:
1. 将C/S(客户机/服务器)架构的请求响应模式改进为适合P2P网络的对等节点模式;
2. 将静态的共识参与节点改进为可动态进入、退出的共识参与节点;
3. 为共识参与节点的产生设计了一套基于持有权益比例的投票机制,通过投票决定共识参与节点(记账节点);
4. 在区块链中引入数字证书,解决了投票中对记账节点真实身份的认证问题。
授权拜占庭容错机制的优点:专业化的记账人;可以容忍任何类型的错误;记账由多人协同完成;每一个区块都有最终性,不会分叉;算法的可靠性有严格的数学证明。
授权拜占庭容错机制的缺点:当1/3及以上的记账人停止工作后,系统将无法提供服务;当1/3及以上的记账人联合作恶,且其他所有的记账人被恰好分割为两个网络孤岛时,恶意记账人可以使系统出现分叉,但是会留下密码学证据。
总而言之,授权拜占庭容错机制最核心的一点,就是最大限度地确保系统的最终性,使区块链能够适用于真正的金融应用场景。
九、帕克索斯算法
这是一种传统的分布式一致性算法,是一种基于选举领导者的共识机制。领导者节点拥有绝对权限,并允许强监管节点参与,其性能高,资源消耗低。所有节点一般有线下准入机制,但选举过程中不允许有作恶节点,不具备容错性。
[1] 如何向你的“弱智室友”解释区块链? [EB/OL]. (2016–08–08) [2017–05–18]. http://mt.sohu.com/20160808/n463044051.shtml.
[2] 黄峰亮。浅析比特币系统原理 [J].数字化用户,2014 (5).
[3] 杨晓晨,张明. 比特币:运行原理、典型特征与前景展望[J]. 金融评论,2014(2).
[4] 唐文剑,吕雯。区块链将如何重新定义世界 [EB/OL]. (2017–02–24) [2017–05–18]. http://www.jianshu.com/p/89275ffca97b.
[5] 蚊子吃青蛙。公钥和私钥[EB/OL]. (2013–01–09) [2017–05–18]. http://www.cnblogs.com/wenzichiqingwa/archive/2013/01/09/2853188.html.
[6] 蚊子吃青蛙。公钥和私钥[EB/OL]. (2013–01–09) [2017–05–18]. http://www.cnblogs.com/wenzichiqingwa/archive/2013/01/09/2853188.html.
[7] 区块链运行原理[EB/OL]. (2017–03–14) [2017–05–18]. http://www.51jrit.com/news/detail/5821.
[8] 比特股(BTSX)投资白皮书V1.1[EB/OL]. (2014–09–16) [2017–05–18]. http://www.docin.com/p–924681871.html.
[9] 比特币技术帖:什么是共识、分叉、兼容性? [EB/OL]. (2016–10–11) [2017–05–18]. http://business.sohu.com/20161011/n469963760.shtml.
[10] 硬分叉扩容不能保证100%一定不分裂,而软分叉可以 [EB/OL]. (2016–10–09) [2017–05–18]. http://8btc.com/thread-40509-1-1.html.
[11] 比特币遭遇成长之痛是解决拥堵还是彻底分裂?[EB/OL]. (2017–03–21) [2017–05–18]. http://forex.cngold.org/c/2017–03–21/c4886602_2.html.
[12] 区块链技术详解[EB/OL]. (2017–02–15) [2017–05–18]. https://wenku.baidu.com/view/1321bb5e326c1eb91a37f111f18583d049640f3f.html.
[13] 区块链技术从初级到深入介绍 [EB/OL]. (2016–06–15) [2017–05–18]. http://8btc.com/thread-34731-1-1.html?utm_ source=tuicool&utm_medium=referral.
[14] 全面认识区块链:公有链vs私有链[EB/OL]. (2016–08–09) [2017–05–18]. http://www.weiyangx.com/199778.html.
[15] 黄步添. 区块链形态[EB/OL]. [2017–05–18]. https://wenku.baidu.com/view/ 43d83e1b9ec3d5bbfc0a74be.html.
[16] 区块链来了,未来注定将颠覆我们的生活 [EB/OL]. (2016–04–20) [2017–05–18]. http://mt.sohu.com/20160420/n445253975.shtml.
[17] 数据阳光。从技术角度看区块链[EB/OL]. (2016–10–17) [2017–05–18]. http://sanwen.net/a/unmoipo.html.