区块链的技术架构
区块链的工作流程
补充说明:
- 广播新的数据记录时,实际上不需要抵达全部的节点。只要数据记录信息能够抵达足够多的节点,那么将很快地被整合进一个区块中
- 如果一个节点没有收到某特定区块,那么该节点将会发现自己缺失了某个区块,也就可以提出自己下载该区块的请求
- 全网节点表示接受某区块的方法,就是将该区块的随机散列值视为最新的区块散列值,新区块的制造将以该区块链为基础进行延长
- 节点始终都将最长的区块链视为正确的链,并持续以此为基础验证和延长它
- 如果有两个节点同时广播不同版本的新区块(产生了分叉branch),那么其他节点将会在其中的一条链条上进行工作。然后通过共识算法的进一步运行,当其中的一条链条被证实为是较长的一条,那么在其他分支链条上工作的节点将转换阵营
时间戳的作用
- 使各个区块通过时间线有序连接起来,形成链条——区块链
- 通过给数据记录印上时间标签,使每条数据记录都具有唯一性,从而使数据记录本身在区块和区块上的哪个位置上发生可以被精确定位且可回溯
- 与其他的校验机制协同发挥作用,使整个区块链网络能够确定性地验证某条数据记录是否真实
(由于任何新的数据记录都继承于过去的真实的数据记录,且链条的各个区块记录由时间戳连接起来使之环环相扣,所以如果想要制造一个假的数据记录,就必须在区块链上修改过去的所有数据记录——随着时间推移,链条越来越长,篡改数据记录和制造虚假数据的难度越来越高)
区块链的共识机制
——区块链节点就区块链信息达成全网一致共识的机制,可以保证最新区块被准确添加至区块链、节点存储的区块链信息一致不分叉,甚至可以抵御恶意攻击。
当前主流的共识机制包括:工作量证明、权益证明、工作量证明与权益证明混合(PoS+PoW)、股份授权证明、瑞波共识协议等。当然,除了这些,还有恒星共识协议(Stellar Consensus Protocol,SCP)、改进型实用拜占庭容错机制(Practical Byzantine Fault Tolerance,PBFT)和Pool验证池机制等。不同共识机制各有其应用场景和优势。
工作量证明(PoW)
——Proof of Work
该机制的基本步骤:
说明:上述过程中的验证节点就是我们常说的“矿工”,随机数计算查找过程就是“挖矿”
事实上,挖矿为整个系统的运转提供了原动力,它有三个重要功能:
- 发行新的货币
- 维系系统的支付功能
- 通过算力保障系统安全
PoW机制的缺陷十分明显:
- 算力的消耗与浪费
- 算力集中化凸显
目前作为一个普通的个体或者几十、几百台规模的矿机膜前都很难挖到区块了,因此大家必须联合起来挖矿——诞生了算力集中的“矿池”。其中最著名的是比特币Ghash矿池,它因为数次接近甚至达到了50%比特币的算力(51%攻击:当掌握超过全网一半算力时,从概率上就能控制网络中链的走向),从而引起了比特币社区的广泛担忧
权益证明(PoS)
——根据持有货币的量和时间,进行利息发放和区块产生的机制。
在PoS模式下,一个重要的名词叫“币天”:
例如,每个币每天产生1币天,比如持有100个币,总共持有了30天,那么此时币天就为3000。这个时候,如果发现了一个新PoS区块,币天就会被清空为0。每被清空365币天,将会从区块中获得0.05个币的利息。
缺陷:
- 并未使区块链变得越来越安全而不可逆,因为最终区块链的区块生产权掌握在账户余额最多的少数节点手中
- 不能通过及时而高效的方法达成共识
PoW+PoS
——采用PoW发行新币,采用PoS维护网络安全。
优势:在PoW+PoS机制下,只要 持有币的人,不论持有的数量多少,都可以挖到数据块,而不用采用任何的矿池导致算力集中。同时,由于多采用币天生成区块,而不是算力,降低了资源消耗,解决了单纯PoW机制在维护网络安全方面先天不足的问题。
股份授权证明
——每个持币节点可以将其投票权授予一名代表。获得票数最多的前100位代表按既定时间表轮流产生区块。每名代表被分配到一个时间段产生区块。所有的代表将收到等同于一个平均水平的区块所含交易费的1%作为报酬。从而大大提高了共识效率。
瑞波共识协议
——Ripple Consensus Protocol(RCP),使一组节点能够基于特殊节点列表达成共识。初始特殊节点列表就像一个俱乐部,要接纳一个新成员,必须由一定比例的该俱乐部会员投票通过。
RCP机制的工作原理:
- 验证节点接收存储待验证交易。
- 活跃信任节点发送提议。首先,信任节点列表是验证池的一个子集;其次,参与共识过程的信任节点必须处于活跃状态,验证节点与信任节点间存在保活机制,长期不活跃节点将被从信任节点列表删除;最后,信任节点根据自身掌握的交易双方额度、交易历史等信息做出判断,并加入到提议中进行发送
- 本验证节点检查收到的提议是否来自信任节点列表中的合法信任节点:如果是,则存储;如果不是,则丢弃
- 验证节点根据提议确定认可交易列表
- 验证节点持续更新认可交易列表,当账本中每笔交易都获得超过一定阈值的信任节点列表认可时,共识达成,交易验证结束。
- 共识过程结束后,已经形成最新的账本,接下来将上轮剩余的待确认交易以及新交易纳入待确认交易列表,开始新一轮共识过程
参考文献
[1] 长铗,韩锋.区块链: 从数字货币到信用社会[M].北京: 中信出版社,2016
[2] 井底望天,蒋晓军,相里朋,刘纯如. 区块链与产业创新[M]. 北京: 人民邮电出版社,2018