主页 > imtoken钱包苹果版手机下载 > 区块链共识算法

区块链共识算法

我们先从常见的拜占庭将军问题来理解什么是共识。

拜占庭将军问题

拜占庭位于现在的土耳其伊斯坦布尔,是东罗马帝国的首都。 由于当时拜占庭罗马帝国幅员辽阔,为防御起见,各支军队都隔得很远,将军们只能靠使者传递消息。 战争期间,拜占庭军队中的所有将军和副官必须达成共识,决定自己是否有胜算,然后才能进攻敌方阵营。 但是,军队中可能出现内奸和敌特,影响将领的决策,扰乱全军秩序。 武将采用投票策略来决定进攻还是撤退,也就是说,如果大多数人决定进攻,他们就冲上去,如果大多数人决定撤退,他们就撤退(例如,如果10个将军中有6个选择攻击,然后攻击)。

这时候,在成员已知造反的情况下(或者在间谍的情况下,他们乱投票,或者擅自修改军令),剩下的忠臣将军又如何能在不受汉奸影响的情况下达成共识? 拜占庭问题就这样形成了。

拜占庭将军问题是一个协议问题。 拜占庭帝国军队的将领必须一致决定是否攻击某支敌军。 问题是武将异地,武将中有内奸。 叛徒可以随意行动以达到以下目的:诱使某些将军采取进攻行动; 促成并非所有将军都同意的决定,例如在将军不想进攻时促使他们采取进攻行动; 或混淆某些将军,使他们无法做出决定。 如果叛徒达到了其中一个目的,那么任何进攻行动的结果都注定要失败,只有通力合作才能取胜。

因此,拜占庭将军是分布式系统中的共识问题,也是分布式容错系统中的问题。 拜占庭将军问题不是让将军们达成进攻的决定,而是让所有忠诚的将军们达成共识,要么全部进攻,要么全部撤退,这样才不会被敌人一一击破。

目前,拜占庭将军问题的经典解决方案有很多,比较常见的有实用拜占庭容错系统(PBFT)和Raft。 PBFT求解的前提是n≥3t+1,其中t为故障节点数(即叛将数),n为节点总数(即所有故障节点总数)将军)。 尽管这些方法可以达成共识并具有各自的优势,但它们都具有不同的假设和局限性。

目前,在区块链系统中,PBFT和Raft是联盟链和私有链上常用的共识算法,而在公有链上,常用的共识算法有POW、POS、DPOS等。

区块链共识

我们平时支付的时候,直接用支付宝刷一下就可以了。 事实上,并没有实际的货币转账,只是支付宝在其数据库中记录了一个账户。 现在的货币体系其实是一种记账货币,记账主体是国家央行或者支付宝等第三方机构。 这是一种集中簿记的形式。 中心化记账虽然效率很高,但也面临着各种各样的问题,比如中心化节点导致的单点故障,万一一颗流星正好落在阿里巴巴的数据库机房; 某天阿里巴巴数据库管理员心情不好,然后把数据库删了就跑。 当然,这些事件发生的可能性很小,但黑天鹅事件要么没有发生,要么就是毁灭性的打击。 所以,对于这种可能发生的小概率事件,解决方案一般都是以预防为主,比如备份数据,多建几个分布式节点,对人员进行SOP培训等。 另一种解决方案是使用更可靠和更安全的系统。

区块链的去中心化记账从技术上解决了上述中心化记账的弱点。 因为它没有中心节点,通过计算机算法、密码学、经济学,结合智能合约,点对点传输,不可篡改。 区块链的每一个区块都相当于一个账本页什么是比特币中使用的共识算法,每一个区块都记录着对应的交易内容。 然而,去中心化记账行为中一个非常重要的问题是各节点账本的一致性。

从去中心化账本系统的角度来看,每个加入系统的节点都需要保存一份完整的账本,但是两个节点不能同时保存账本,因为节点处于不同的环境,接收到的交易信息是不一致的。 如果同时记账,会导致账目不一致。 因此,需要一个共识机制来:

由哪个节点来记账是公平公正的。 目前常用的有POW、POS等。 一个节点在记账后保持全网账本的同步。 目前普遍采用最长链策略。

POW:工作量证明,工作量证明

比特币系统设计了一种机制,通过每个节点的计算能力,即“算力”来竞争记账权。 简单来说,POW就是工作方确认已经完成了一定工作量的证明。 比如我去面试的时候,招聘网站上写的是这个职位需要本科以上学历。 那如何证明自己是本科毕业呢? 给面试官看本科毕业证就可以了,就这么简单。 但是这个毕业证怎么办呢? 我需要上4年大学,在那之前,我要上高中、初中、小学。 上了大学,不能天天开心,还要上课,要考试,不能挂科。 这是一个艰难的过程。 对于面试官来说,文凭就足以证明我上过大学,我不傻。

因此,POW方法的主要特点是计算的不对称性。 工作方需要做一些困难的工作才能得到结果,但验证者可以很容易地通过结果检查工作方是否做了相应的工作。 具体方法是对区块链头部的父区块hash、Merkle树根和nonce值三个字段进行hash运算。 如果结果小于目标值,则计算成功,如果大于目标值,则改变nonce值,重复操作,直到结果小于目标值。

如何理解pow的工作端和验证端? 再来个栗子

Worker:假设输入值为blockchain1,对其进行哈希运算,找到前3位为0的哈希值,则计算过程为:

  1. blockchain1 ->  ef7797e13d3a75526946a3bcf00daec9fc9c9c4d51ddc7cc5df888f74dd434d1 
  2. blockchain2 -> db0b9c1cb5e9c680dfff7482f1a8efad0e786f41b6b89a758fb26d9e223e0a10 
  3. ...... 
  4. blockchain515 -> 0063e58fb6e3789fcb5eb64d05d7a9b909c5e9e1b60b18cb566a3326c1fd54c 
  5. ...... 
  6. blockchain2688 -> 0005f2ee930eafef21d06545c0058ddfcf2ac9dfa542b745021f51ceb9e9f43c 

可以看出,经过2688次运算,可以找到前三位为0的哈希值。 随着0个数的增加,计算难度呈指数级增长。

验证者:验证者从工作方获取值blockchain2688,只需计算一次即可知道工作方的工作是否已经完成。

对于pow,如果要找到特定字符串后的随机nonce,满足前n位全为0的SHA256值,需要进行多次hash值运算。 一般来说,由于hash值的伪随机性,要找到3个前导0的hash值,预计要尝试2的12次方左右。 这个数学期望的计算次数就是所谓的“工作量”。 . 整个工作量证明活动就是我们常说的“挖矿”。

在上面的例子中,比特币实际系统中有几个关键点,比如nonce值是如何改变的,目标值中零的个数是如何确定的等等,可以参考比特币挖矿的文章。

比特币网络中的任何一个节点,如果要生成一个新的区块并将其写入区块链,都必须解决比特币网络发布的 POW 问题。 这个问题有三个关键要素:

比特币系统使用的工作量证明函数是 SHA256。 SHA 是 Secure Hash Algorithm 的缩写。 它是一个密码哈希函数族。 SHA256 就是其中之一,输出一个 256 位的哈希算法。 . 比特币区块由区块头和区块中包含的交易列表组成。 区块包含一个指向前一个区块的哈希指针,这样记录不同交易的各个区块被关联起来形成区块链。 难度值是比特币系统中节点出块时的重要参考指标。 它决定了一个节点需要进行多少次哈希运算才能生成一个哈希块。 难度值会随着全网算力的变化进行调整,使出块速率保持在10分钟。

因此,POW成功与否的决定性因素是算力的大小。 如果你的算力是n,全网的算力是m,那么你在一个工作量证明,也就是一次挖矿活动中能够成功的概率是n/m,经过m/n次挖矿能够成功一次. 比如我笔记本电脑的算法大概是1GH/s,现在全网算力是21EH/s,那我要进行200亿次工作量证明,每次10分钟左右,我肯定不会有生之年能挖出一个。

POS: Proof of Stake, 权益证明

现在我们知道了如何挖比特币,也就是需要购买挖矿设备和支付电费,才能获得新的币作为挖矿奖励。 这基本上是一个资源密集型过程。 并且有两个明显的缺点。 一方面,pow的前提是节点和算力分布均匀,因为中本聪最初的设计是通过CPU挖矿,这样节点数和算力可以大致匹配,但是有了GPU、FPGA和矿机、节点数量和算力逐渐失配。 另一方面,pow 太浪费了。 比特币网络每秒可以完成数百万亿次 SHA256 计算。 这些计算似乎没有更多的实用价值,只是恶意攻击者无法轻易击败比特币网络。 当然,这种浪费对于它带来的好处来说可能是一个很小的代价。

但浪费总是不好的。 有什么办法可以去掉挖矿设备和能耗的联系吗? 毕竟这个过程只是选择一个节点记账。 还有其他方法可以实现吗? 因此,人们提出了一些工作量证明的替代方案,其中一种称为 POS。

股权证明由量子力学在2011年比特币论坛演讲中提出,后由PPC(Piancoin)和NXT(Future Coin)以不同的思路实施。 POW是根据算力随机的,POS是根据财产随机的。 这就是这两种共识机制的本质。 但是另外一个问题是,POW是比特币之前就存在的东西,而因为比特币的成功,POW基本上就是指比特币的POW。 但恰恰相反,POS是一个新生事物,目前还没有成熟的POS应用。 因此,当提到POS时,它不是指某种算法,而是指一个类别。 而且,目前每种算法都有自己的优点和缺点。 而且,到目前为止,还没有一种算法的可靠性通过实践的检验。 因此,要比较POW和POS的优劣,我只能以POS的范畴为例。 我们现在常说的POS,其实就是说PPCoin的POS,也就是最早的POS。 那东西有根本的缺陷。 例如币龄攻击(save-up attack)只适用于PPC,不适用于PPC。 POS 问题。

当量子力学提出 POS 的概念时,他是这样说的:

我想知道随着比特币的分布越来越广泛,是否会从基于工作量证明的系统过渡到权益证明系统。 我所说的股权证明的意思是,您对已接受的交易历史的“投票”不是由您带给网络的计算资源份额加权,而是由您可以证明自己拥有的比特币数量加权,使用您的私人键。

他的意思是,节点记账权的获取与节点持有的币量,即权益有关。 两者成反比关系,持有的币越多,越容易获得记账权。 这种决定谁来记账的方式去掉了POW中需要大量计算的过程,但仍然需要进行哈希运算才能获得记账权。

在 POW 中,用户可以拿出 1000 美元购买一台矿机,加入网络挖矿,从而获得奖励。 在 POS 中,用户将拿出 1000 美元购买等值的代币,并将这些代币作为押金放入 POS 机制中,这样就有机会产生新的区块并获得奖励。

挖比特币用什么算法_什么是比特币中使用的共识算法_比特币地址算法

简单来说,这个系统中会有一个代币持有者的集合。 他们将一定的代币放入pos机制中,因此成为验证者,有权验证交易和生成区块。 那么pos算法会在这个集合中随机选择一个节点,并赋予他生成下一个区块的权利。 如果该节点在一定时间内没有出块,则选择第二个节点来代替它。 在这个过程中,被选中的概率与他们投入的代币数量有关。 例如,如果一个节点投资 10,000 个代币,则被选中的概率是投资 1,000 个代币的节点的 10 倍。

点币 (PPC)

PPC是第一个采用权益证明算法的数字资产。 它在量子力学提出的权益证明思想的基础上引入了货币时代的概念。 硬币年龄是硬币数量和硬币拥有天数的乘积。

简单来说,它是一个根据你持有货币的数量和时间给你利息的系统。 PPC POS模式下,每种币种每天产生1个币龄。 比如你持有100个币,总共持有30天,那么此时你的币龄就是3000。 这时候如果你找到一个POS块,你的币龄就会被清零,每清空365个币龄,你就会从该区块中获得0.05个币的利息(假设利息可以理解为5%年利率,PPCoin是1%的年利率),那么这样的话,利息=3000*5%/365=0.41个币,这个就很有意思了,持币有利息。

PPC其实是权益证明和工作量证明的结合,因为它也需要挖矿。 Peercoin矿工为了挖出一个区块,也需要像比特币矿工一样进行一次SHA256解谜操作,但是这个解谜操作的难度会根据他们要消耗的币量多少来调整。 当消耗了一些币龄后,找到有效区块变得非常容易。 这个计算难题的作用是保证当两个矿工尝试消耗相同币龄的时候,这个过程仍然是随机的。

对于POS,除了PPC之外,还有其他不同的设计形式。 在这些设计中,消耗一定数量的币,使得解谜变得极其简单,使得解谜不再是挖矿过程中的主要挑战。

POW 和 POS

两者最直接的区别就是POW靠的是算力,而POS靠的是持币数量。 所以想要有记账权,POW就得买矿机,POS就得买代币。

工作量证明消耗资源多,监督性差,共识机制强,需要全网算力参与,效率低下。 优点也很明显,完全去中心化,节点自由进出。 权益证明在一定程度上缩短了共识时间,但仍然需要挖矿,但不需要消耗大量能源。 两种方案都没有从根本上解决用户降本提效的痛点。 这只是一个优化方案,所以这两种方式逻辑上的项目必然会被替换。 比如更优化的解决方案,或者彻底解决痛点的新机制出现。

DPOS:Delegated Proof of Stake,委托权益证明

虽然POW和POS都可以解决记账一致性的共识问题,但是POW过于依赖算力。 一是资源浪费,二是一些矿池庞大的算力变成了一个中心。 但POS是根据股权余额来选择的,这会导致首富的账户拥有更大的权力,并可能控制记账权。 因此,有人提出了DPOS算法。 从本质上讲,DPOS是POS的一种改进,就像PPC是POS的一种改进,只不过PPC是一种特定的数字资产,而DPOS是一种思想。

比特股

比特股是一种采用DPOS机制的数字资产。 它提出了见证人(即代理人或代表)的概念,期望通过引入技术民主层来减少中心化的负面影响。 与董事会投票类似,持币者投出一定数量的节点进行代理验证和记账。

挖比特币用什么算法_什么是比特币中使用的共识算法_比特币地址算法

比特股DPOS的工作原理是:每个持有比特股的节点都相当于一个股东,有投票权代表,每个股东将自己的投票权授予一个代表。 获得最多选票的前 N ​​个(N 通常为 101 个)代表将生成区块。 To be elected as a proxy, at least half of the shareholders voted.

每个维护周期(1 天)更新代理的候选列表。 代理人随机排列,每个代理人有2秒的时间依次出块。 如果在规定的时间内不能生成块,则由下一个时间片的代理完成。

DPOS充分利用股东的投票权,以公平公正的方式达成共识。 他们选出的N个代理人可以看作是N个矿池,这N个矿池的权利是完全平等的。 股东们可以随时投票更换这些代理人什么是比特币中使用的共识算法,只要他们提供的算力不稳定,电脑宕机,或者他们企图作恶等等。

DPOS的优点是可以大大减少参与验证和记账节点的数量,可以实现秒级共识验证,缺点是整个共识机制仍然依赖代币,很多商业应用不需要代币.

除了POW、POS、DPOS这三大主流共识机制外,区块链的实际应用还衍生出了很多变种机制。 这些机制各有优缺点。 例如,POW在安全性和公平性方面具有优势,凭借先发优势形成了成熟的挖矿产业链,但其能耗问题备受诟病。 POS、DPOS等新兴机制更环保高效,但在安全性和公平性上不如POW。