首页 > 精品范文库 > 14号文库
区块链中五种常见共识算法 你知道几个?
编辑:红尘浅笑 识别码:23-230741 14号文库 发布时间: 2023-03-28 11:31:25 来源:网络

第一篇:区块链中五种常见共识算法 你知道几个?

区块链中五种常见共识算法 你知道几个?

区块链是一种去中心化的分布式账本系统,可以用于登记和发行数字化资产、产权凭证、积分等,并以点对点的方式进行转账、支付和交易。区块链系统与传统中心化系统相比,具有公开透明、不可篡改、防止多重支付等优点,并且不依赖于任何的可信第三方。

由于点对点网络下存在较高的网络延迟,各个节点所观察到的事务先后顺序不可能完全一致。因此,区块链系统需要设计一种机制对在差不多时间内发生的事务的先后顺序进行共识。这种对一个时间窗口内的事务的先后顺序达成共识的算法被称为“共识机制”。

在区块链这样的分布式账本系统中,保障整个系统的安全性和适应性十分重要,这也是共识算法出现的根本原因。那么,区块链中常见的共识算法都有哪些呢?

1、POW:Proof of Work,工作量证明

POW是比特币在Block的生成过程中使用的一种共识算法,也可以说是最原始的区块链共识算法了。POW工作量证明,简单地理解就是,通过一份证明来确认做过一定量的工作。

在比特币系统中,得到合理的Block Hash需要经过大量尝试计算。当某个节点提供出一个合理的Block Hash值,说明该节点确实经过了大量的尝试计算。

这种工作量证明的形式,在我们日常生活中也十分常见。比如驾照,能拿到驾照,说明你已经进行过为期几个月甚至几年的练车和考试;再比如现在很火的吃鸡和王者荣耀游戏中的K/D(Kill/Death)和胜率,分值越高证明你越厉害,同时也说明你进行了大量的游戏练习和技巧学习。

2、POS:Proof of Stake,权益证明

由于POW机制存在消耗算力巨大、交易确认时间较长,挖矿活动集中容易形成中心化等缺点,便演进出了POS权益证明。POS简单来说,就是一个根据持有数字货币数量和时间来分配相应利息的制度,类似平时我们在银行中存款。

基于权益证明共识的区块链系统中,参与者的角色是验证者Validator,只需要投资系统的数字货币并在特定时间内验证自己是否为下一区块创造者,即可完成下一区块的创建。下一区块创造者是以某种确定的方式来选择,验证者被选中为下一区块创造者的概率与其所拥有的系统中数字货币的数量成正比例,即拥有300个币的验证者被选中的概率是拥有100个币验证者的3倍。

在POS模式下,有一个名词叫币龄,每个币每天产生1币龄。比如你持有100个币,总共持有了30天,那么,此时你的币龄就为3000。这个时候,如果你验证了一个POS区块,你的币龄就会被清空为0,同时从区块中获得相对应的数字货币利息。这下就很有意思了,持币有利息。并且由于POS是在一个有限的空间里完成,不是像POW那样在无限空间里寻找,因此无需大量能源消耗。

3、DPOS:Delegated Proof of Stake,授权权益证明

DPOS最早出现在比特股中,又称受托人机制,它的原理是让每一个持有比特股的人进行投票,由此产生101位代表。我们可以将其理解为101个超级节点或者矿池,而这101个超级节点彼此的权利完全相等。

从某种角度来看,DPOS有点像是议会制度或人民代表大会制度。如果代表不能履行他们的职责(当轮到他们时,没能生成区块),他们会被除名,网络会选出新的超级节点来取代他们。DPOS的出现最主要还是因为矿机的产生,大量的算力在不了解也不关心数字货币的人身上,类似演唱会的黄牛,大量囤票而丝毫不关心演唱会的内容。DPOS通过其选择区块生产者和验证节点质量的算法确保了安全性,同时消除了交易需要等待一定数量区块被非信任节点验证的时间消耗。通过减少确认的要求,DPOS算法大大提高了交易的速度。通过信任少量的诚信节点,可以去除区块签名过程中不必要的步骤。

4、PBFT:Practical Byzantine FaultTolerance,实用拜占庭容错 PBFT意为实用拜占庭容错算法,该算法由Miguel Castro(卡斯特罗)和Barbara Liskov(利斯科夫)在1999年提出来,解决了原始拜占庭容错算法效率不高的问题,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。

PBFT是一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制。每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。

将所有的副本组成的集合使用大写字母R表示,使用0到|R|-1的整数表示每一个副本。为了描述方便,假设|R|=3f+1,这里f是有可能失效的副本的最大个数。尽管可以存在多于3f+1个副本,但是额外的副本除了降低性能之外不能提高可靠性。

5、RAFT,一致性共识算法

RAFT算法包含三种角色,分别是:跟随者(follower),候选人(candidate)和领导者(leader)。集群中的一个节点在某一时刻只能是这三种状态的其中一种,这三种角色可以随着时间和条件的变化而互相转换。RAFT算法主要有两个过程:一个过程是领导者选举,另一个过程是日志复制,其中日志复制过程会分记录日志和提交数据两个阶段。RAFT算法支持最大的容错故障节点是(N-1)/2,其中N为集群中总的节点数量。

国外有一个动画介绍RAFT算法介绍的很透彻,有兴趣的朋友可以结合动画更好的理解下RAFT算法,这里不再做过多介绍。动画链接地址:thesecretlivesofdata.com

http://

/raft/上述是目前主要的区块链共识算法,当然还有其他算法,比如POET:Proof of Elapsed Time流逝时间量证明,Ripple Consensus瑞波共识机制等。

每种算法,各有千秋,在特定环境下和时间段上被采用都有各自的考虑和意义。对不同的区块链应用场景而言,适合的算法即为最好的算法。

第二篇:兄弟连区块链培训教程Go语言区块链共识算法分布式一致性算法Raft

兄弟连Go语言区块链培训教程区块链共识算法(1)分布式一致性算法Raft

很多人喜欢Go语言,其实是因为Go语言有其独特的语言属性在支撑着其在编程语言界的发展,今天兄弟连Go语言+区块链培训老师给大家介绍一下关于Go语言区块链共识算法(1)分布式一致性算法Raft,下面我们一起来看一下吧。

# 分布式一致性算法Raft

Paxos自1990年提出以后,相当长时间内几乎已成为分布式一致性算法的代名词。

但因其难以理解和实现,目前知名实现仅有Chubby、Zookeeper、libpaxos几种,其中Zookeeper使用的ZAB对Paxos做了大量改进。

为此,2013年斯坦福的Diego Ongaro、John Ousterhout,提出了新的更易理解和实现的一致性算法,即Raft。

Raft和Paxos均只要保证n/2+1节点正常,即可服务。相比Paxos,其优势即为易于理解和实现。

Raf将算法分解为:选择领导者、日志复制、安全性等几个子问题。

它的流程即为:开始时在集群中选举出Leader负责日志复制的管理,Leader接收来自客户端的事务请求(日志),并将它们复制给集群中的其他节点,然后通知集群中的其他节点提交日志,Leader负责保证其他节点与它的日志同步。

当Leader宕机时,集群其他节点重新发起选举,选出的新的Leader。

### 角色

Raft涉及三种角色:

* Leader:即领导者,负责处理来自客户端的请求,管理日志复制、以及与Follower保持心跳以维持其领导者地位。

* Follower:即追随者,负责响应来自Leader的日志复制请求,响应来自Candidate的选举请求。初始时所有节点均为Follower。

* Candidate:即候选者,负责发起选举投票,Raft启动后或Leader宕机后,一个节点从Follower转为Candidate,并发起选举,选举成功后,由Candidate转为Leader。

如下为Raft角色状态转换图:

(1 Raft)

### Term(任期)

在Raft中使用了Term(任期)的概念,一轮选举即为一个Term(任期),一个Term中仅能产生一个Leader。

Term使用连续递增的编号表示,初始时所有Follower的Term均为1。

其中某个Follower定时器到期触发选举,其状态转换为Candidate,此时Term加1变为2,然后开始选举,有如下几种可能:

/ 3

*

1、如果当前Term为2的任期内没有选举出Leader或出现异常,Term递增为3,并开始新一轮选举。

*

2、此轮Term为2的任期内选举出Leader后,如果Leader宕机,此时其他Follower转为Candidate,Term递增,并发起新的选举。

*

3、如果Leader或Candidate发现自己的Term比其他Follower小时,Leader或Candidate转为Follower,Term递增。

*

4、如果Follower发现自己的Term比其他Follower小时,更新Term与其他Follower保持一致。

每次Term递增都将发生新一轮选举,在Raft正常运行过程中,所有节点Term均一致。

如果节点不发生故障,一个Term(任期)会一直保持下去,当某节点收到的请求中Term比当前Term小时拒绝请求。

### 选举

初始时所有节点均为Follower,且定时器时间不同。

某个节点定时器触发选举后,Term递增,该节点由Follower转换为Candidate,向其他节点发起投票请求(RequestVote RPC)。

有如下几种可能:

*

1、收到过半数节点(n/2+1)投票,由Candidate转换为Leader,向其他节点发送心跳以维持领导者地位。

*

2、如果收到其他节点发送的AppendEntries RPC请求,且该节点Term大于当前节点Term,即发现了新的有效领导者,转换为Follower,否则保持Candidate拒绝该请求。

*

3、选举超时,Term递增,重新发起选举。

每轮Term期间,每个节点均只能投票1次,如果多个Candidate均没有接收到过半数投票,则每个Candidate Term递增,重启定时器并重新发起选举。

因定时器时间随机,因此不会多次出现多个Candidate同时发起投票的问题。

### 日志复制

保证节点的一致性,就要保证所有节点都按顺序执行相同的操作序列,日志复制目的即为此。

*

1、Leader接收到客户端事务请求(即日志),先将日志追加到本地Log中,并通过AppendEntries RPC复制给其他Follower。

*

2、Follower接收到日志后,追加到本地Log中,并向Leader发送ACK消息。

*

3、Leader收到过半数Follower的ACK消息后,将日志置为已提交并正式提交日志,通知客户端,并发送AppendEntries RPC请求通知Follower提交日志。

### 安全性

/ 3

*

1、每个Term期间只能选举一个Leader。

*

2、Leader不会删除或覆盖已有日志条目,只会追加。

*

3、如果相同索引位置的日志条目Term任期号相同,那么认为从头到这个索引位置均相同。

*

4、如果某个日志条目在某任期内提交,那么这个日志条目必然出现在更大的Term任期号的所有领导中。

*

5、如果Leader在某索引位置的日志条目已提交,那么其他节点相同索引位置不会提交不同的日志条目。

### RequestVote RPC和AppendEntries RPC

Raft中节点通信使用两种RPC,即RequestVote RPC和AppendEntries RPC:

RequestVote RPC:即请求投票,由Candidate在选举期间发起。

AppendEntries RPC:即附加条目RPC,由Leader发起,用于日志复制和心跳机制。

### 后记

本文总结的Raft,及之前文章中的Paxos、2PC、3PC均为基于非拜占庭容错的分布式一致性算法,即除考虑消息的丢失、超时、乱序,但不考虑消息被篡改。

从下个文章起,将总结基于拜占庭容错的分布式一致性算法,该算法在比特币、以太坊、及其他区块链产品中广泛使用。

/ 3

第三篇:区块链共识机制优缺点对比

区块链就是运行在P2P网络上的去中心化账本。我们怎么去在这样的系统中获得信任呢,并且在私有区块链中也是一样的情况。这就是共识机制的来源。

共识保证了区块链上的参与者可以互相信任,并且对下个区块进行验证。共识也确保了网络中的规则被遵守,同时承认在区块链环境下只有一个真理。

根据你使用的区块链种类不同,你需要不同的共识算法来确保区块链上最后的区块能够在任何时候都反应出全网的状态。在本文中,我们会大致说明不同的共识算法。

工作量证明(POW)我们先从比特币和以太坊说起。工作量证明算法需要矿工解决复杂的密码数学难题。所以这是个依赖于算力的游戏。简单说,你将区块中的数据都打包并加密,直到你获得有效的哈希值。

优势:寻找有效的哈希值很困难,但是很容易控制哈希是正确的,所以无法欺骗整个系统。系统可以承受大量节点。

缺点:需要消耗非常多的能源,而且不是很环保。如果有人能控制51%的算力,就会有被攻击的风险。

权益证明(POS)

以太坊正在朝着PoS共识机制改变。下个区块的矿工会基于随机参数,例如他们拥有的代币数量,他们拥有这个代币的时间等等来确定。同时也有其他机制,例如存款证明或者是燃烧证明等等。其实这个很简单,如果节点X有1个代币,节点Y有2个,那么节点Y就会有2倍几率去验证一个区块。

优点:比起工作量证明,更加节约能源。

缺点:更多的安全问题?如果同时在不同的链上工作,也不会有惩罚。这样做,就很难去保证转账的真实性。消逝时间证明(PoET)

消逝时间证明是超级账本锯齿湖项目中使用的共识。每个参与者都需要有个等待时间,来确保安全的程序集。获得最短等待时间的参与者会被选为挖出区块,经过等待时间,挖出区块。

优势:挖出区块的人会一直变化,同样的人每次都不会选择下个区块。劣势:安全程序集是复杂的技术,相对工作量证明来说,更容易进行欺诈。也有中心化的趋势,因为我们必须使用第三方信任机构来确保这个程序集是真的安全。

简化的拜占庭容错算法(SBFT)

在这个算法中,区块验证者是一个知名的机构。例如在整个商业网络中可以是一个监管者。这个区块验证者创造并提出新的区块转账。在SBFT共识中,一定数量的节点一定要接受这个区块,当然这取决于错误节点的数量。在这样的系统中,最少要有2f+1的节点必须要接受商业网络中的新区块,f就是错误节点的数量。

举例来说,我们假设现在系统中有30个参与者,其中包含了5个错误节点。作为需要验证的新区块,11(2×5+1)个节点。

这个错误可以是恶意的,也可能是无效的节点。优点:比工作量证明更快,有更好的扩容性。缺点:有中心化趋势。一个验证者提出下个区块。

权威证明(PoA)适合私有链网络,并且不需要分布式信任体系。原理相对简单:网络中的一些人在满足某些条件之后被认证为验证者,例如身份认证。这些验证者负责维持区块链数据。

优点:非常适合私有链,速度非常快。缺点:牺牲了信任。

结论 我们对区块链世界的共识机制做出了概览,这篇文章只是列举了一部分可能性,当然还有其他可能的共识机制。总体来说,我们可以将这些共识分为3类:

-标准的工作量共识

-基于共识的许可性投票(PoA,SBFT)-基于共识的许可性投注(PoET)

到底选择哪个共识来进行区块链的实施取决于哪类网络和数据。

投注类型的可能更加适合月大型网络。投票类型的可能更适合小型网络,同时将延时降到最小化。

第四篇:详解区块链中的几个密码学概念范文

安全可信赖的区块链资产交易平台火币网www.teniu.cc 没听过这几个密码学概念,就别说你懂区块链!

密码学在信息技术领域的重要地位无需多言,如果没有现代密码学的研究成果,人类社会根本无法进入信息时代。本文将介绍密码学跟区块链相关的基础知识。

一、hash 算法 1.定义

hash(哈希或散列)算法是信息技术领域非常基础也非常重要的技术。它能任意长度的二进制值(明文)映射为较短的固定长度的二进制值(hash 值),并且不同的明文很难映射为相同的 hash 值。

例如计算一段话“hello blockchain world, this is yeasy@github”的 md5 hash 为 89242549883a2ef85dc81b90fb606046。

$ echo “hello blockchain world, this is yeasy@github” | md5

89242549883a2ef85dc81b90fb606046

这意味着我们只要对某文件进行 md5 hash 计算,得到结果为 89242549883a2ef85dc81b90fb606046,这就说明文件内容极大概率上就是“hello 安全可信赖的区块链资产交易平台火币网www.teniu.cc blockchain world, this is yeasy@github”。可见,hash 的核心思想十分类似于基于内容的编址或命名。

注:md5 是一个经典的 hash 算法,其和 SHA-1 算法都已被 证明 安全性不足应用于商业场景。

一个优秀的 hash 算法,将能实现:

 正向快速:给定明文和 hash 算法,在有限时间和有限资源内能计算出 hash 值。 逆向困难:给定(若干)hash 值,在有限时间内很难(基本不可能)逆推出明文。 输入敏感:原始输入信息修改一点信息,产生的 hash 值看起来应该都有很大不同。 冲突避免:很难找到两段内容不同的明文,使得它们的 hash 值一致(发生冲突)。

冲突避免有时候又被称为“抗碰撞性”。如果给定一个明文前提下,无法找到碰撞的另一个明文,称为“抗弱碰撞性”;如果无法找到任意两个明文,发生碰撞,则称算法具有“抗强碰撞性”。

二、加密算法

1.公钥私钥体系

现代加密算法的典型组件包括:加解密算法、公钥、私钥。安全可信赖的区块链资产交易平台火币网www.teniu.cc 加密过程中,通过加密算法和公钥,对明文进行加密,获得密文。

解密过程中,通过解密算法和私钥,对密文进行解密,获得明文。

根据公钥和私钥是否相同,算法可以分为对称加密和非对称加密。两种模式适用于不同的需求,恰好形成互补,很多时候也可以组合使用,形成组合机制。

2.对称加密

顾名思义,公钥和私钥是相同的。

优点是加解密速度快,空间占用小,保密强度高。

缺点是参与多方都需要持有密钥,一旦有人泄露则安全性被破坏;另外如何其它分发密钥也是个问题。

适用于大量数据的加解密,不能用于签名场景。

3.非对称加密

顾名思义,公钥和私钥是不同的。安全可信赖的区块链资产交易平台火币网www.teniu.cc 公钥一般是公开的,人人可获取的,私钥一般是个人自己持有,不能被他人获取。

优点是公私钥分开,容易管理,并且容易完成密钥分发。缺点是加解密速度慢。

一般适用于签名场景或密钥协商,不适于大量数据的加解密。

4.组合机制

即先用计算复杂度高的非对称加密协商一个临时的对称加密密钥(会话密钥),然后双方再通过对称加密对传递的大量数据进行加解密处理。

三、数字签名

类似在纸质合同上签名确认合同内容,数字签名用于证实某数字内容的完整性和来源。

A 发给 B 一个文件。A 先对文件进行摘要,然后用自己的私钥进行加密,将文件和加密串都发给 B。B 收到后文件和加密串,用 A 的公钥来解密加密串,得到原始的数字摘要,跟对文件进行摘要后的结果进行比对。如果一致,说明该文件确实是 A 发过来的,并且文件内容没有被修改过。

数字签名包括:多重签名、群签名、环签名等。安全可信赖的区块链资产交易平台火币网www.teniu.cc

四、数字证书

数字证书用来证明某个公钥是谁的。

对于数字签名应用来说,很重要的一点就是公钥的分发。一旦公钥被人替换,则整个安全体系将被破坏掉。

怎么确保一个公钥确实是某个人的原始公钥?这就需要数字证书机制。

顾名思义,数字证书就是像一个证书一样,证明信息和合法性。由证书认证机构(Certification Authority,CA)来签发。

数字证书内容可能包括版本、序列号、签名算法类型、签发者信息、有效期、被签发人、签发的公开密钥、CA 数字签名、其它信息等等。

其中,最重要的包括 签发的公开密钥、CA 数字签名 两个信息。因此,只要通过这个证书就能证明某个公钥是合法的,因为带有 CA 的数字签名。

更进一步地,怎么证明 CA 的签名合法不合法呢? 安全可信赖的区块链资产交易平台火币网www.teniu.cc 类似的,CA 的数字签名合法不合法也是通过 CA 的证书来证明的。主流操作系统和浏览器里面会提前预置一些 CA 的证书(承认这些是合法的证书),然后所有基于他们认证的签名都会自然被认为合法。

五、Merkle树

默克尔树(又叫哈希树)是一种二叉树,由一个根节点、一组中间节点和一组叶节点组成。最下面的叶节点包含存储数据或其哈希值,每个中间节点是它的两个子节点内容的哈希值,根节点也是由它的两个子节点内容的哈希值组成。

进一步的,默克尔树可以推广到多叉树的情形。

默克尔树的特点是,底层数据的任何变动,都会传递到其父亲节点,一直到树根。

默克尔树的典型应用场景包括: 安全可信赖的区块链资产交易平台火币网www.teniu.cc

 快速比较大量数据:当两个默克尔树根相同时,则意味着所代表的数据必然相同。 快速定位修改:例如上例中,如果 D1 中数据被修改,会影响到 N1,N4 和 Root。因此,沿着 Root--> N4--> N1,可以快速定位到发生改变的 D1;

 零知识证明:例如如何证明某个数据(D0……D3)中包括给定内容 D0,很简单,构造一个默克尔树,公布 N0,N1,N4,Root,D0 拥有者可以很容易检测 D0 存在,但不知道其它内容。

来源:火币区块链公众号

第五篇:商务英语中五种常见的邀请信的写法

商务英语中五种常见的邀请信的写法 完美英语学习软件(1)

Dear sir/madam:

I’m delighted you have accepted our invitation to speak at the Conference in

[city] on [date].As we agreed, you’ll be speaking on the topic "" from [time] to

[time].There will be an additional minutes for questions.Would you please tell me what kind of audio-visual equipment you’ll need.If you could let me know your specific requirements by [date], I’ll have plenty of time to make sure that the hotel provides you with what you need.Thank you again for agreeing to speak.I look forward to hearing from you.Sincerely yours,[name]

[title]

(2)

Dear sir/madam:

Thank you for your letter of [date].I’m glad that you are also going to [place] next month.It would be a great pleasure to meet you at the [exhibition/trade fair].Our company is having a reception at [hotel] on the evening of [date] and I would be very pleased if you could attend.I look forward to hearing from you soon.Yours sincerely,[name]

[title]

(3)

Dear sir/madam:

[organization] would very much like to have someone from your company speak at our conference on [topic].As you may be aware, the mission of our association is to promote.Many of our members are interested in the achievements your company has made in.Enclosed is our preliminary schedule for the conference which will be reviewed in weeks.I’ll call you [date] to see who from your company would be willing to speak to us.I can assure you that we’ll make everything convenient to the speaker.Sincerely yours,[name]

[title]

(4)

Dear sir/madam:

We would like to invite you to an exclusive presentation of our new [product].The presentation will take place at [location], at [time] on [date].There will also be a reception at [time].We hope you and your colleagues will be able to attend.[company] is a leading producer of high-quality.As you well know, recent technological advances have made increasingly affordable to the public.Our new models offer superb quality and sophistication with economy, and their new features give them distinct advantages over similar products from other manufacturers.We look forward to seeing you on [date].Just call our office at [phone number] and we will be glad to secure a place for you.Sincerely yours,[name]

[title]

(5)

Dear sir/madam:

On [date], we will host an evening of celebration in honor of the retirement of

[name], President of [company].You are cordially invited to attend the celebration at [hotel], [location], on [date] from to p.m.[name] has been the President of [company] since [year].During this period, [company] expanded its business from to.Now it’s our opportunity to thank him for his years of exemplary leadership and wish him well for a happy retirement.Please join us to say Good-bye to [name].See you on [date].Yours sincerely

[name]

[title]

>-1){ elements2[i].onfocus = log;} } //--> >

完美英语系列软件融合了【逆向学习法】和【疯狂英语】这两种有效的英语学习方法的精髓,并加以创新,集外语的【听、说、读、写、背、译、玩】 功能于一身。

区块链中五种常见共识算法 你知道几个?
TOP