共识机制的基础知识——读《区块链技术指南》笔记

图片 35

随着业务量的增加,比特币等公有链网络已经拥堵不堪,交易费节节攀升,对比传统金融结算系统已经没有速度上的优势。对于去中心化的系统,由于社区成员基于自己的利益考虑,无法达成一致,也就难以采用更高效的共识算法或更先进的系统架构。因此,社区出现了闪电网络、雷电网络等链下或侧链的方案,试图解决交易性能低下的问题——这些技术并不提升区块链本身的共识性能,而是将交易放到区块链的外部进行。闪电网络(Lightning
Network)闪电网络(Lighting
Network)指的是,A和B两人可以把比特币放到一个多重签名钱包中锁定(链下),然后进行交易签名更改双方各自能取回的比特币数量。交易参与方可以随时关闭交易通道,最后一笔经过签名且包含最新余额动态的交易最终将会被广播并写入比特币区块链(回归链上)。这个交易过程也可以在更多人之间进行,整个过程实际上不需要在主链确认,因为都是几方之间倒来倒去的”数字游戏“,因此交易速度会非常迅速。只有当关闭交易通道时,才会最终确定各自的余额并写进主链区块。在闪电网络出现前,虽然比特币社区也试图通过区块扩容、隔离见证等技术在一定程度上增加交易处理能力,但这些方式并不能导致交易处理能力出现数量级的改善。以比特币区块链为后盾,在链下实现真正的点对点微支付交易,区块链处理能力的瓶颈被彻底打破,时延、最终性、容量甚至隐私问题也迎刃而解,这就是比特币“闪电网络”(Lightning
Network)的思路。闪电网络的关键技术有两个:RSMC和HTLC。前者解决了链下交易的确认问题,后者解决了支付通道的问题。闪电网络的基础是交易双方之间的双向微支付通道,RSMC(Recoverable
Sequence Maturity
Contract)定义了该双向微支付通道的最基本工作方式。HTLC(Hashed Timelock
Contract)进一步实现了有条件的资金支付,通道余额的分配方式也因此变得更为复杂。基于HTLC可以实现“闪电网络”。尽管闪电网络本身可以基于任何合适的传统技术构建(例如中心化的服务器和传统数据库),闪电网络的支付通道也可能逐渐向少数大型中介集中,变成若干大型中介彼此互联、普通用户直连大型中介的形式,但这种方案仍然具有传统中心化方案不可比拟的优势,因为用户现在并不需要信任中介,不需要在中介处存钱才能转移支付,资金安全受到比特币区块链的充分保护。闪电网络存在的问题:闪电网络的支付通道会导致一定程度的中心化。如果闪电网络存在,人们不会立即就信任它,短时间内不会有钱包或支付供应商支持它。使用闪电网络需要提前充值。闪电网络的运行需要用户和企业锁定在交易期间他们所需数目的比特币。对于小额交易不是问题,然而,如果按照闪电网络所建议的‘合理使用案例’中每个人在每6个月中只开启1个通道的话,这意味着该通道需要锁定这个用户在该时间段内所持有的最大数目的价值额度,这需要对链下网络的充分信任,还需要人们能预见将花费多少额度,以及何时花费。无法进行离线支付,A和B交易,如果B掉线了,就无法签名确认分配方案,交易失败。雷电网络(Raiden
Network)雷电网络(Raiden
Network)是以太坊社区提出的自己的链下微支付通道解决方案,跟比特币的闪电网络的思路类似,但也有所发展,例如引入了较HTLC更为通用的“Smart
Condition”等。因为以太坊智能合约对报文格式没有特别的字段限制,使得Raiden得以为通道余额快照引入一个单增序号,极为轻松自然地解决了旧版本快照的识别和作废问题。和闪电网络一样,双方需要在以太坊区块链上开设通道并各自锁定以太。这步动作可通过向Raiden智能合约发送一条双方签名认可的报文来实现。报文中的关键信息包括:双方公钥、双方锁定资产数量、双方签名。此后的任何支付动作都可以发生在以太坊区块链外,参与双方只需要私下传递一系列报文。该如何提升性能?以迅雷链为例,下面来解读下如何提升性能。首先从架构上优化,提出同构多链的框架。即系统由一条条相对独立(独立进行共识)的链组成,每条链有多个节点,每个节点被分配到其中一条链上,不同的账户数据被锚定在不同的同构链上,然后接入层将交易路由到发送方所在的链上进行区块打包与共识。系统中链的数量能够按业务需求动态增加。因此同构多链的架构首先保证了系统的可扩展性。除了架构上优化使得并发处理性能提升,还应该保证分布式系统中的强一致性,并具备一定的容错和防拜占庭节点作恶的能力,因此每条链内的共识算法可以选择类
BFT
算法。在每一条单独的链上,使用实用拜占庭容错算法(PBFT)保证强一致性,而且一方面通过容错性,降低节点失效对整个分布式系统的影响,另一方面采用多次重试和更换失效节点机制,降低节点间长时间失效的概率,保证系统的可用性。为了解决PBFT算法网络消耗高的问题,对算法作出了一些优化,降低网络消耗,提高了算法的可用性。与传统的PBFT算法类似,对于每一轮共识操作,又包括三个阶段:Propose,Prevote
和 Precommit。当在某一轮达成共识(收到+2/3 的 Precommit
投票)后,就会进入对下一个高度的共识,从第 0
轮开始。下面简单介绍下详细的步骤:首先介绍一个锁定区块的概念,表示在某个特定的高度和轮数,节点对某个块收到超过节点总数
2/3 的 Prevote
投票集合后,则此节点对于此高度此轮的区块进行锁定。也就是说,节点以锁定区块来表示对某一个区块的认可。1)Propose
阶段:系统中所有验证人节点轮流作为提议者提出提议,而系统中非提议者的节点在收到提议后,就会进入
Prevote
阶段。如果当前节点此前存在已锁定区块,则还需要收集所有针对已锁定区块的
Prevote 投票。2)Prevote 阶段:当节点进入到 Prevote
阶段后,每个节点广播自己的Prevote
投票。具体的,如果当前区块高度或投票轮数高于此前已锁定的区块高度或轮数,则将原锁定的区块进行解锁。如果此时节点仍含有未解锁的区块,则对此锁定的区块投
Prevote 投票。或者如果节点收到合法的 Propose 区块,则对此区块投 Prevote
投票。当阶段超时或者接收到大于 2/3
的针对某个块的投票后,则节点锁定此区块并进入。3)Precommit
阶段:当节点存在已锁定区块,则对此区块投 Precommit
投票。当节点收到针对已锁定区块大于 2/3 的 Precommit
投票时,就可以将这个块 commit,并且进入针对下一个高度块的共识。若
Precommit 阶段定时器超时,则节点保存已锁定区块,然后重新返回到 Propose
阶段。各节点通过在以上阶段上循环,对区块进行一致性共识。与 PBFT
算法类似,迅雷链共识也经过了三阶段提交,但通过引入区块锁定操作,通过缓存待确认区块,降低了未达成共识情况下重复通信区块带来的网络压力,从而提升了共识效率。此外,还可以使用玩客云设备作为验证人节点。由于玩客云节点数量非常庞大(已超过150万个节点数),而且因为是用户家庭的共享节点而存在一定不稳定性,所以在PBFT的基础上融合DPoS的思想,在每条链上周期性地(例如每隔5000个区块)选举出验证人节点参与共识。综上所述,新型区块链技术采用多链架构实现了可扩展性

共识机制是什么?

一、数学是科学之母

  • 使用PBFT实现了强一致性 +
    使用更公平的DPoS进一步提升了共识效率、也得到了更高的可用性。从去中心化(Decentralization),安全性(Security)和可扩展性(Scalability)三要素的角度看,由海量的广泛分布的玩客云设备支撑了去中心化和安全性,采用多链架构以实现可扩展性。总结共识机制目前已经成为了区块链系统性能的关键瓶颈。单一的共识算法均存在各种问题,例如PoW算法存在消耗大量计算资源及性能低下的问题;PoS或DPoS存在“富豪统治”问题。融合多种共识算法优势的想法正受到越来越广泛的关注。此外,包括在少部分可信节点中选取主节点的共识算法、保证高概率正确性的的异步共识算法、基于特定安全性前提并减少网络广播的共识算法、基于可信硬件的共识算法等,也是未来区块链共识算法的研究热点。随着区块链中账本数据的增加和业务量的提升,可扩展性也是区块链系统迫切需要解决的问题,同时对共识算法也提出了新的挑战。以太坊项目正在研发中的分片(shard)方案也是实现可扩展性的另一种方案,受到广泛关注。本文以迅雷链为例的实践,相信能给业界提供一个区块链应用落地的优秀案例:在设计和实现同构多链的架构的同时,尽可能地保证系统的可扩展性;采用有完善理论证明的PBFT算法保证强一致性和共识性能,满足了强一致性和高可扩展性的业务需求;在海量的玩客云节点上,改进了DPoS的公平性,进一步提升了共识效率和可用性。

区块链是伴随比特币诞生的,是比特币的基础技术架构。可以将区块链理解为一个基于互联网的去中心化记账系统。

牛顿通过数学计算预见了发射人造天体的可能性。

类似比特币这样的去中心化数字货币系统,要求在没有中心节点的情况下保证各个诚实节点记账的一致性,就需要区块链来完成。

图片 1

所以区块链技术的核心是在没有中心控制的情况下,在互相没有信任基础的个体之间就交易的合法性等达成共识的共识机制。

爱因斯坦相对论的质能公式从数学论证的角度预示了原子能时代的来临。

区块链为什么需要共识机制?

图片 2

分布式系统中,多个主机通过异步通信方式组成网络集群。在这样的一个异步系统中,需要主机之间进行状态复制,以保证每个主机达成一致的状态共识。

中本聪基于简单的应用数学原理发明了比特币

异步系统中,可能出现无法通信的故障主机,而主机的性能可能下降,网络可能拥塞,这些可能导致错误信息在系统内传播。因此需要在默认不可靠的异步网络中定义容错协议,以确保各主机达成安全可靠的状态共识。

图片 3

利用区块链构造基于互联网的去中心化账本,需要解决的首要问题是如何实现不同账本节点上的账本数据的一致性和正确性。

不管人们如何评价区块链,区块链几乎成为数学与应用相结合最为密切的信息技术之一。

这就需要借鉴已有的在分布式系统中实现状态共识的算法,确定网络中选择记账节点的机制,以及如何保障账本数据在全网中形成正确、一致的共识。

图片 4

算法的假设条件

二、数学是区块链的DNA

在实际情况下,根据不同的假设条件,有很多不同的共识算法被设计出来。这些算法各有优势和局限。算法的假设条件有以下几种情况:

区块链包含了多种关键技术,但其底层都是数学,可以说数学是区块链的DNA。

1)故障模型:非拜占庭故障/拜占庭故障。

图片 5

2)通信类型:同步/异步。

三、哈希

3)通信网络连接:节点间直连数。

哈希函数、散列函数–密码学中的一种编码方法。

4)信息发送者身份:实名/匿名。

图片 6

5)通信通道稳定性:通道可靠/不可靠。

输入一个任意长度的字符x,输出一个固定长度的字符H。

6)消息认证性:认证消息/非认证消息。

比特币采用SHA256,输出64位字符,由10个阿拉伯数字和6个英语字母组成。总量是16*64,=2*256

在区块链网络中,由于应用场景的不同,所设计的目标各异,不同的区块链系统采用了不同的共识算法。

输入相同的字符,输出的哈希值必然相同

一般来说,在私有链和联盟链情况下,对一致性、正确性有很强的要求。一般来说要采用强一致性的共识算法。而在公有链情况下,对一致性和正确性通常没法做到百分之百,通常采用最终一致性(Eventual
Consistency)的共识算法。

只要输入的字符有所改变,输出的哈希值就变了

区块链的共识机制目前主要有4类:PoW、PoS、DPoS、分布式一致性算法

无法根据输出的哈希值,推算输入的字符

(1)PoW

Hash函数也称为杂凑函数或散列函数,其输入为一可变长度x,返回一固定长度串y,该串被称为输入x的Hash值要求给定一个Hash值,求其逆是比较难的,但给定的输入计算Hash值必须是很容易的,因此也称Hash函数为单向Hash函数。

PoW(工作量证明),也就是像比特币的挖矿机制,矿工通过把网络尚未记录的现有交易打包到一个区块,然后不断遍历尝试来寻找一个随机数,使得新区块加上随机数的哈希值满足一定的难度条件,例如前面10位是零。

密码学Hash函数是一个压缩函数Hashk:X->Y

找到满足条件的随机数,就相当于确定了区块链最新的一个区块,也相当于获得了区块链的本轮记账权。

Hashk=y

矿工把满足挖矿难度条件的区块在网络中广播出去,全网其他节点在验证该区块满足挖矿难度条件,同时区块里的交易数据符合协议规范后,将各自把该区块链接到自己版本的区块链上,从而在全网形成对当前网络状态的共识。

Hash函数的安全要求:

比特币和以太坊都是基于PoW的共识机制。

单向性:已知y,找出x,使得Hashk=y困难

优点:1.完全去中心化,节点自由进出,避免了建立和维护中心化信用机构的成本。

弱碰撞:已知x,找出x’≠ x,使得Hashk=y困难

2.只要网络破坏者的算力不超过网络总算力的50%,网络的交易状态就能达成一致。

强碰撞:找出任意x’≠ x,使得Hashk=y困难

缺点:1.目前比特币挖矿造成大量的资源浪费;

困难性具有递增关系:强碰撞必然是弱碰撞,弱碰撞必然单向性

2.挖矿的激励机制也造成矿池算力的高度集中,背离了当初去中心化设计的初衷。

图片 7

3.更大的问题是PoW机制的共识达成的周期较长,每秒只能最多做7笔交易,不适合商业应用。

四、非对称加密

(2)PoS

非对称加密是一种保证区块链安全的基础技术。该技术含有两个密钥:公钥和私钥,首先,系统按照某种密钥生成算法,将输入经过计算得出私钥,然后,采用另一个算法根据私钥生成公钥,公钥的生成过程不可逆。由于在现有的计算能力条件下难以通过公钥来穷举出私钥,因此可以认为是数据是安全的,从而能够保证区块链的数据安全。

PoS权益证明,要求节点提供拥有一定数量的代币证明来获取竞争区块链记账权的一种分布式共识机制。

图片 8

如果单纯依靠代币余额来决定记账者必然使得富有者胜出,导致记账权的中心化,降低共识的公正性,因此不同的PoS机制在权益证明的基础上,采用不同方式来增加记账权的随机性来避免中心化。

常用的非对称加密算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC。

例如点点币(PeerCoin)PoS机制中,拥有最多链龄长的比特币获得记账权的几率就越大。NXT和Blackcoin则采用一个公式来预测下一个记账的节点。拥有多的代币被选为记账节点的概率就会大。

RSA算法:

以太坊将会从目前的PoW机制转换到PoS机制,从目前看到的资料看,以太坊的PoS机制将采用节点下赌注来赌下一个区块,赌中者有额外以太币奖,赌不中者会被扣以太币的方式来达成下一区块的共识。

公钥:PK=

优点:在一定程度上缩短了共识达成的时间,降低了PoW机制的资源浪费。

私钥:SK=

缺点:1.破坏者对网络攻击的成本低,网络的安全性有待验证。

其中,N=p*q(p、q是两个大素数)

2.拥有代币数量大的节点获得记账权的几率更大,会使得网络的共识受少数富裕账户支配,从而失去公正性。

e、N公开,d保密,e、d、N保持一定的关系,破译者想从e、N算出D是十分困难的。

(3)DPoS

图片 9

DPoS(股份授权证明)机制,类似于董事会投票。

ECC算法:

比特股(bitshares)和steem采用的DPoS机制是持股者投票选出一定数量的见证人,每个见证人按序有两秒的权限时间生成区块,若见证人在给定的时间片不能生成区块,区块生成权限交给下一个时间片对应的见证人。

选择椭圆曲线E和生成元G

持股人可以随时通过投票更换这些见证人。DPoS的这种设计使得区块的生成更为快速,也更加节能。

保证其DL问题是安全的

优点:大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证。

用户选择私钥:整数 nA<n

缺点:1.选举固定数量的见证人作为记账候选人有可能不适合于完全去中心化的场景。

用户计算公钥:PA=[nA]G

2.在网络节点数少的场景,选举的见证人的代表性也不强。

加密Pm : Cm={[k]G, Pm+[k]PA}, k随机整数

以上三种算法多用于共有链。

解密Cm: –[nA]

(4)分布式一致性算法

= Pm+[k*nA]G–[nA*k]G= Pm

分布式一致性算法是基于传统的分布式一致性技术。其中有分为解决拜占庭将军问题的拜占庭容错算法,如PBFT。

图片 10

另外解决非拜占庭问题的分布式一致性算法(Pasox、Raft),该类算法目前是联盟链和私有链链场景中常用的共识机制。

五、零知识证明

优点:实现秒级的快速共识机制,保证一致性。

零知识证明/ Zero-Knowledge
Proof:证明者和验证者之间进行交互,证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。

缺点:去中心化程度不如公有链上的共识机制;更适合多方参与的多中心商业模式。

图片 11

上述内容是根据《区块链技术指南》整理出来的共识机制的基础内容。

六、同态加密

共识机制是区块链的核心技术,而PoW和DPoS这两种共识机制的优点在于依靠审核、匿名性较好、流动相对自由,这两种机制是目前在数字货币领域应用较为广泛的。

同态加密/

那么区块链的技术大牛V神和BM对这两种共识机制的探讨是怎样的呢?下一篇,我将会继续展开探讨这两种共识机制。

Homomorphic

Encryption:同态加密是一种特殊的加密方法,允许对密文根据特定的代数运算方式进行处理后得到的仍然是加密的结果,将其解密所得到的结果与对明文进行同样的运算结果是一样的。即“对密文直接进行处理”与“对明文进行处理后并加密”其结果是一样的,这项技术可以在加密的数据中进行诸如检索、比较等操作而无需对数据先进行解密,从根本上解决将数据委托给第三方时的保密问题。

图片 12

七、盲签名、群签名、环签名、多重签名

盲签名:盲签名(blind signature)是在1982年由David
Chaum在论文《Blind Signatures for Untraceable
Payment》中提出。签名者需要在无法看到原始内容的前提下对信息进行签名。盲签名可以实现对所签名内容的保护,防止签名者看到原始内容;另一方面,盲签名还可以实现防止追踪(unlinkability),签名者无法将签名内容和签名结果进行对应。典型的实现包括RSA盲签名算法等。

群签名:群签名(group
signature)即某个群组内一个成员可以代表群组进行匿名签名。签名可以验证来自于该群组,却无法准确追踪到签名的是哪个成员。群签名需要存在一个群管理员来添加新的群成员,因此存在群管理员可能追踪到签名成员身份的风险。群签名最早于1991年由David
Chaum和Eugene van Heyst提出。

环签名:环签名(ring
signature),由Rivest、Shamir和Tauman三位密码学家在2001年首次提出。环签名属于一种简化的群签名。签名者首先选定一个临时的签名者集合,集合中包括签名者自身。然后签名者利用自己的私钥和签名集合中其他人的公钥就可以独立地产生签名,而无需他人的帮助。签名者集合中的其他成员可能并不知道自己被包含在最终的签名中。环签名在保护匿名性方面有很多的用途。

多重签名:多重签名(multiple
signature)即n个签名者中,收集到至少m个(n>=m>=1)的签名,即认为合法。其中,n是提供的公钥个数,m是需要匹配公钥的最少的签名个数。多重签名可以有效地被应用在多人投票共同决策的场景中。例如双方进行协商,第三方作为审核方。三方中任何两方达成一致即可完成协商。比特币交易中就支持多重签名,可以实现多个人共同管理某个账户的比特币交易。

八、链表结构

区块链由两种带密码机制的数据结构构成:

哈希链表:所有区块之间按照时间先后顺序链接而成一个完整的链条,被称为哈希链表。
通过该单向链条既可以逐渐增加区块,当一个新的区块创建后,就补充在最后
一个区块后面,同时该单向链表也可以回溯发生的所有的交易信息;

默克尔树:是对所有块内交易信息采用二叉树结构生成一个压缩后的密码学摘要(被称为本区块Hash值),将交易记录紧密的联系在一起。

如图所示,区块链的这种存储方式提供了对交易数据“一致性检验”和“完整性验证”的支持。

图片 13图片 14

九、交易结构

上一次交易的SHA256计算得到的Hash值被作为交易ID

上一次交易的输入段存储“消费者”对TXID和“接收者”公钥Pubkey的签名

上一次交易的输入段存储“接收者”的公钥

下一次交易中的“消费者”就是上一次交易中的“接收者”

下一次交易中的“消费者”的签名由上一次交易中的“接收者”公钥Pubkey进行验证

每个区块链交易中包含两个段:

输入段:输入资产账单

输出段:输出资产账单

图片 15图片 16

十、DAG

传统区块链技术存在的几个问题:

效率问题:传统区块链技术基于Block区块,比特币的效率一直比较低,由于BlockChain链式的存储结构,整个网络同时只能有一条单链,基于POW共识机制出块无法并发执行;例如比特币每十分钟出一个块,6个出块才能确认,大约需要一个小时;以太坊大幅改善,出块速度也要十几秒。

确定性问题:比特币和以太坊存在51%算力攻击问题,基于POW共识的最大问题隐患,就是没有一个确定的不可更改的最终状态;如果某群体控制51%算力,并发起攻击,比特币体系一定会崩溃;考虑到现实世界中的矿工集团,以及正在快速发展量子计算机的逆天算力,这种危险现实存在。

中心化问题:基于区块的POW共识中,矿工一方面可以形成集中化的矿场集团,另一方面,获得打包交易权的矿工拥有巨大权力,可以选择哪些交易进入区块,哪些交易不被处理,甚至可以只打包符合自己利益的交易,这样的风险目前已经是事实存在。

能耗问题:由于传统区块链基于POW算力工作量证明,达成共识机制,比特币的挖矿能耗已经与阿根廷一个国家耗电量持平,IMF和多国政府对虚拟货币挖矿能源消耗持批评态度。

图片 17

有向无环图/Database

Availability Group / DAG:最早由Rootstock开发者Sergio Demian

Lerner于2015年9月发表的《DAGCoin

Draft》中提出,是计算机领域的常用数据存储结构。因为其独特的拓扑结构,DAG技术通常用于处理动态规划问题,比如在导航中寻找最短路径、数据压缩等场景。

图片 18

传统区块链和DAG的区别:

单元:区块链组成单元是Block,DAG组成单元是TX;

拓扑:区块链是由Block区块组成的单链,只能按出块时间同步依次写入,好像单核单线程CPU;DAG是由交易单元组成的网络,可以异步并发写入交易,好像多核多线程CPU;

粒度:区块链每个区块单元记录多个用户的多笔交易,DAG每个单元记录单个用户交易。

十一、UTXO VS ACCOUNT

UTXO

可扩展性 –
由于可以同时处理多个UTXO,因此可以实现并行事务并鼓励可伸缩性创新。

隐私 –
甚至比特币也不是一个完全匿名的系统,但只要用户为每笔交易使用新地址,UTXO就可以提供更高级别的隐私。
如果需要增强隐私性,可以考虑更复杂的方案,例如环签名。

图片 19

ACCOUNT

简单性


以太坊选择了一种更直观的模式,以便为复杂智能合约的开发人员带来益处,尤其是那些需要国家信息或涉及多方的开发人员。

一个例子是一个智能合约,跟踪各国根据它们执行不同的任务。
UTXO的无状态模型会迫使交易包含状态信息,这不必要地使合约的设计复杂化。

效率 –
除了简单之外,账户/余额模型更加高效,因为每笔交易只需要验证发送账户是否有足够的余额来支付交易。

图片 20

十二、共识机制

共识机制(Consensus
Protocol)
是指在多方协同环境下对任务执行结果所有方达成一致的机制。在区块链中引入共识机制则是为了解决新交易块加入哈希链表中可能出现的“块冲突”问题,也就是同时多个块被不同的块创建者加入到哈希链表中而引起的链表分叉问题。

图片 21图片 22

十三、POW共识机制、挖矿

设定目标数,找一个比目标数小的比较数

目标数和比较数均是一个64位的十六进制数

通过难度系数来调节目标数,使得全网平均10分钟找出这样一个比较数,生成一个区块链

将交易、时间戳、随机数等进行哈希运算得到比较数

计算能力越强的节点,找到这样一个比较数的概率越大

几乎同一时间内找到这样一个比较数的区块链,会导致区块链分叉,6个区块之后,有超过99%的概率基本能够确定主分叉

图片 23

优点:完全去中心化,节点自由进出;

缺点:目前bitcoin已经吸引全球大部分的算力,其它再用Pow共识机制的区块链应用很难获得相同的算力来保障自身的安全;挖矿造成大量的资源浪费;共识达成的周期较长,不适合商业应用

十四、POS和DPOS

权益证明/ Proof of Stake /
PoS:
主要思想是节点记账权的获得难度与节点持有的权益成反比,相对于PoW,一定程度减少了数学运算带来的资源消耗,性能也得到了相应的提升,但依然是基于哈希运算竞争获取记账权的方式,可监管性弱。该共识机制容错性和PoW相同。它是Pow的一种升级共识机制,根据每个节点所占代币的比例和时间,等比例的降低挖矿难度,从而加快找随机数的速度。

优点:在一定程度上缩短了共识达成的时间;不再需要大量消耗能源挖矿。

缺点:还是需要挖矿,本质上没有解决商业应用的痛点;所有的确认都只是一个概率上的表达,而不是一个确定性的事情,理论上有可能存在其他攻击影响。例如,以太坊的DAO攻击事件造成以太坊硬分叉,而ETC由此事件出现,事实上证明了此次硬分叉的失败。

权益授权证明/ Delegated Proof of Stake / DPoS:DPoS
是一种类似董事会的授权共识机制,该机制让每一个持币人对整个系统的节点进行投票,决定哪些节点可以被信任并代理他们进行验证和记账,同时生成少量的对应奖励。每个股东按其持股比例拥有影响力,51%股东投票的结果将是不可逆且有约束力的。其挑战是通过及时而高效的方法达到51%批准。一般情况下,用户不会创建特别以投票为目的的交易,因为那将耗费他们一笔交易费。如果任何代表被发现签发了一个无效的区块,那么所有标准钱包将在每个钱包进行更多交易前要求选出一个新代表。

优点:大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证。

缺点:整个共识机制还是依赖于代币,很多商业应用是不需要代币存在的。

十五、拜占庭将军问题

图片 24

Generals = Computer Components

The abstract problem…

Each division of Byzantine army is directed by its own general.

There are n Generals, some of which are traitors.

All armies are camped outside enemy castle, observing enemy.

Communicate with each other by messengers.

Requirements:

G1: All loyal generals decide upon the same plan of action

G2: A small number of traitors cannot cause the loyal generals to adopt
a bad plan

Note: We do not have to identify the traitors.

图片 25

十六、PBFT

这是一种基于消息传递的一致性算法,算法经过三个阶段达成一致性,这些阶段可能因为失败而重复进行。

假设节点总数为3f+1,f为拜占庭错误节点:

当节点发现leader作恶时,通过算法选举其他的replica为leader。

leader通过pre-prepare 消息把它选择的
value广播给其他replica节点,其他的replica节点如果接受则发送
prepare,如果失败则不发送。

一旦2f个节点接受prepare消息,则节点发送commit消息。

当2f+1个节点接受commit消息后,代表该value值被确定

如下图表示了4个节点,0为leader,同时节点3为fault节点,该节点不响应和发出任何消息。最终节点状态达到commited时,表示该轮共识成功达成。

注:预准备阶段(pre-prepare):

主节点分配一个序列号n给收到的请求,然后向所有备份节点群发预准备消息,预准备消息的格式为<<PRE-PREPARE,v,n,d>,m>,这里v是视图编号,m是客户端发送的请求消息,d是请求消息m的摘要。

准备阶段:

如果备份节点i接受了预准备消息<<PRE-PREPARE,v,n,d>,m>,则进入准备阶段。在准备阶段的同时,该节点向所有副本节点发送准备消息<PREPARE,v,n,d,i>,并且将预准备消息和准备消息写入自己的消息日志。如果看预准备消息不顺眼,就什么都不做。

确认阶段:

当条件为真的时候,副本i将<COMMIT,v,n,D,i>向其他副本节点广播,于是就进入了确认阶段。

图片 26

优点:共识效率高,可实现高频交易。

缺点:当系统只剩下33%的节点运行时,系统会停止运行。

十七、dBFT

采用的dBFT机制,是由权益来选出记账人,然后记账人之间通过拜占庭容错算法来达成共识。

在PBFT基础上进行了以下改进:

将C/S架构的请求响应模式,改进为适合P2P网络的对等节点模式;

将静态的共识参与节点改进为可动态进入、退出的动态共识参与节点;

为共识参与节点的产生设计了一套基于持有权益比例的投票机制,通过投票决定共识参与节点;

在区块链中引入数字证书,解决了投票中对记账节点真实身份的认证问题。

优点:

专业化的记账人;

可以容忍任何类型的错误;

记账由多人协同完成,每一个区块都有最终性,不会分叉;

算法的可靠性有严格的数学证明;

缺点:

当有1/3或以上记账人停止工作后,系统将无法提供服务;

当有1/3或以上记账人联合作恶,且其它所有的记账人被恰好分割为两个网络孤岛时,恶意记账人可以使系统出现分叉,但是会留下密码学证据;

以上总结来说,dBFT机制最核心的一点,就是最大限度地确保系统的最终性,使区块链能够适用于真正的金融应用场景。

十八、典型共识机制的比较 & 现存的主要问题

图片 27

十九、P2P网络

图片 28

第一代混合式P2P网络:实际上是C/S模式与P2P思想结合的产物,由一台或多台服务器来记录节点索引表,网络中各节点从索引服务上查询目标节点的地址之后,直接与目标节点建立联系。

第二代无结构P2P网络:取消了索引服务器,各节点随机接入网络,地位相同,与邻居节点构成逻辑覆盖网络,通过邻居节点的接力来找到目标节点,并记录路径,防止环路。

第三代结构化P2P网络:为解决快速定位问题,采用DHT(Distributed Hash
Table)技术来构建P2P网络,每个节点只需要记录有限节点信息,取消了洪泛算法,有效减少消息发送量,从而提高了目标节点的查找效率和准确性。

区块链网络服从小世界模型(Small World
Model)网络。如图所示,该模型具有特征路径长度较小、聚合系数较大的特点,在这样的网络中,数据只需要经过较少的节点就可以达到目的节点。区块链网络拓扑的“高聚集度”和“短链”特征使得区块链可以支撑世界各地的海量用户进行大规模、并发的交易,及时地将交易数据通过记账节点实现区块的生成,并实现全网内的数据同步,为保证了区块链数据的健壮性、完整性和一致性奠定了安全运行的网络运行基础。

二十、链网结构

主链/ 主网/ Main
net:
通常区块链,尤其是公有链都有主网和测试网。主网是区块链社区公认的可信区块链网络,其交易信息被全体成员所认可。有效的区块在经过区块链网络的共识后会被追加到主网的区块账本中。

互联链/
InterChains:
针对特定领域的应用可能会形成各自垂直领域的区块链,互联链就是一种通过跨链技术连接不同区块链的基础设施:包括数据结构和通信协议,其本身通常也是区块链。各种不同的区块链通过互联链互联互通并形成更大的区块链生态。与互联网一样,互联链的建立将形成区块链的全球网络。

侧链/ Side
Chain:
侧链是主链外的另一个区块链,锚定主链中的某一个节点,通过主链上的计算力来维护侧链的真实性,实现公共区块链上价值与其他账簿上价值在多个区块链间的转移。最具代表性的实现有Blockstream。这种主链和侧链协同的区块链架构中的主链有时也被称为母链(Parent
chain)

图片 29

二十一、跨链技术

跨链技术是实现区块链之间互联互通的技术,若对标互联网则可理解为“去中心化网络的结合”,区块链技术的特性使得跨链技术的落地,以及对于链外信息的获取都非常困难,早期跨链技术包括以Interledger

Protocal 和BTC Relay
为代表,更多是关注资产的转移;现有跨链技术以Aion、Kyber

Network、Bletchley、Polkadot、Cosmos 主要着重的是跨链基础设施。

原子互换/ Atomic
Swap:
原子互换是一种正在开发中的去中心化、无需第三方的新技术,允许在不同类型的数字资产之间实现无需信任的点对点交易,任何一方在瞬间完成的点对点交易中都遵守协议,且之后若有一方退出,资金会在规定的时间返回各方账户。

见证人机制/ Notary
Schemes:
见证人模式是一种中心化的结构,通过选定一批见证人并在见证人之间采用拜占庭容错结构,监听目标链上的事件和状态并签名进行资产的转移,如Ripple
的Interledger Protocal 的早期版本。

侧链/ Side
Chain:
侧链是主链外的另一个区块链,锚定主链中的某一个节点,通过主链上的计算力来维护侧链的真实性,实现公共区块链上价值与其他账簿上价值在多个区块链间的转移。最具代表性的实现有Blockstream。这种主链和侧链协同的区块链架构中的主链有时也被称为母链(Parent
chain)。

侧链协议/ Sidechain Protocol:侧链协议是一种实现双向锚定(Two-way
Peg)的协议,通过侧链协议实现资产在主链和其它链之间互相转换,或是以独立的、隔离系统的形式,降低核心区块链上发生交易的次数。

中继技术/
Relays:
中继技术是通过在两个链中加入一个数据结构,使得两个链可以通过该数据结构进行数据交互,并通过在一个链上调用数据结构的API,实现监听并验证另一个链上的交易,而若该数据结构是一个链式结构,则具备侧链的形式并称作中继链。

哈希时间锁定合约/ Hashed TimeLock Contract /
HTLC:
哈希时间锁定合约包含哈希锁定以及时间锁定两个部分,哈希时间锁定合约最典型的代表就是比特币的闪电网络,闪电网络提供一个可扩展的微支付通,用以提升链外的交易处理能力,使用哈希锁定将发起方的交易代币进行锁定,并通过时间锁定让接收方在某个约定的时刻前生成支付的密码学证明,并与先前约定的哈希值一致,则可完成交易。

图片 30

二十二、扩容技术

分片/
Sharding:
分片是区块容量的一种解决方案。通常情况下,每个节点和区块链网络都包含区块链的完整副本,分片是一种允许节点具有完整的区块链的部分副本的技术,以提高整体性能和稳定速度。

隔离见证/ Segregated Witness /
SW:
隔离见证是一种技术,通过把占用大量存储空间的区块的数字签名重新放置到不同的记录,使每个区块能进行更多的交易,以达到扩容的目的。区块链上不仅记载了每笔转账的具体信息,还包括了每笔交易的数字签名以核实交易的合法性。矿工在打包区块的时候需要用数字签名来验证每笔交易,确认无误之后才会将该笔交易记录在区块里。但对于用户不需要验证信息,且每个比特币记录大小被限制在1
兆字节,每10
分钟记录一次新的记录,所以通过隔离见证转移签名以扩大区块空间。

闪电网络/ Lightning
Network:
闪电网络是一种允许加密货币的交易即时发生和成本降低的技术,它使一般在比特币网络中需要等待区块确认的交易瞬间完成。闪电网络基于一个可扩展的微支付通道网络,通过序列到期可撤销合约RSMC,使交易双方在区块链上的预先设置的支付通道进行的多次高频的双向交易瞬间完成。同时,它通过哈希时间锁定合约HTLC
在没有直接点对点支付信道的交易双方之间连接一条由多个支付通道构成的支付路径,实现资金的转移。

雷电网络/ Raiden
Network:
雷电网络是一种以太坊链下扩容解决方案,它使得使用以太坊技术的加密货币能够即时和低成本交易。交易双方只要在链上存在交易信道,就能在链下根据被锁定的余额进行高频、双向的即时确认交易,将这样多个通道形成的支付路径构成“雷电网络”。

二十三、智能合约

智能合约(SC:Smart

Contract)最初由尼克·萨博(Nick

Szabo)提出来,一个智能合约是一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。一套承诺指的是合约参与方同意的权利和义务。这些承诺定义了合约的本质和目的。数字形式意味着合约不得不写入计算机可读的代码中,只要参与方达成协定,智能合约建立的权利和义务就由一台计算机或者计算机网络执行。本质上,智能合约就是一段实现合约逻辑的程序代码或者脚本,接受外界输入,按照既定规则,结合合约现有状态进行处理(P:Process)之后,然后对外输出。

图片 31

智能合约需要遵循图灵完备性

图灵完备/ Turing
Complete:在可计算理论中,当一组数据操作的规则(一组指令集、编程语言或元胞自动机)满足任意数据按照一定的顺序可以计算出结果,则称为图灵完备。

图片 32

二十四、智能合约形式化验证

智能合约面临的问题:1)可信安全;2)双方认可的模板框架;3)合约验证问题;4)合约的定制问题;5)一致性问题;6)
可控性和可调度性。

图片 33

采用模型检测方法验证实时和混成系统。

演绎验证。演绎验证是早期采用的主要验证技术,它基于定理证明的基本思想,采用逻辑公式描述系统及其性质,通过一些公理或推理规则来证明系统具有某些性质。

模型检测。模型检测是对有穷状态系统的一种形式化确认方法,它基于状态搜索的基本思想,是模拟和测试方法的自然延伸,搜索的可穷尽性有赖于为合约建立有穷状态的模型,这为建模造成一定的难度,但能保证搜索过程终止。

图片 34

声明:本文汇聚网络公开资料,融入个人思考编写而成,不代表任何单位或者机构。

说明:深入实践、点滴思考、原创不易、持续分享,欢迎关注转发,接受批评指正。

图片 35扫码关注个人公众号“Forest的账本”