区块链中的几种共识机制

工作量证明,权益证明,委托权益证明,瑞波共识协议
提要:
1. 工作量证明就是全网解决同一个难度问题,谁先证明出来谁赢
2. 权益证明则是每个节点都有自己的难度问题,谁先证明出来谁赢。
P.S. 简单来说就是对于工作量证明,所有节点的难度系数是一样的,但是对于权益证明来说,每个节点的难度系数是不一样的。

工作量证明

说到区块链的证明机制,首先不得不提的是比特币使用的工作量证明机制(PoW)。其实在比特币出世之前,PoW早就广泛应用于反垃圾邮件。

工作量证明(Proof-of-Work,PoW)是一种对应服务与资源滥用、或是阻断服务攻击的经济对策。一般是要求用户进行一些耗时适当的复杂运算,并且答案能被服务方快速验算,以此耗用的时间、设备与能源做为担保成本,以确保服务与资源是被真正的需求所使用。

在工作量证明机制中需要两个角色
1. 工作者
2. 验证者
现在我们把 工作者和验证者 分别比作 学生和老师。
1. 老师出一道有一定 难度 的题目给学生做
2. 学生需要耗费一定的时间来解题
3. 老师一开始也不知道题目的答案
4. 很容易就能验证学生的答案是否正确

工作量证明的实现方式有很多种,在比特币中使用的是单向散列算法(SHA256)。
Y = SHA256(X),我们知道对于hash算法,我们是无法根据 X 反推回 Y 的,同时 X 即使只改变一点点,所生成的 Y 也会被改得面目全非,无规律可循。

因此,我们就可以要求找到的 X 所生成的 Y 值必须是以 n 个 0 开头的 Hash 值,假设 n = 10,所有的 hash 值可能有 2^256 种,以 10 个 0 开头的值可能有 2^246 种,因此工作者平均需要计算 2^246/2^256 = 2^10 次,才有可能得到一个正确的答案, 0 越多,所需要的计算量越大。但是验证着只需要计算一次就可以判断所生成的 Hash值是否正确。

其实在比特币系统中,寻找这样一个合适的 X 值就叫挖矿,找到了,那就很开心了,挖矿成功。

另注:一个 hash 函数要达到密码安全,需要以下几个特性
1、碰撞阻力(即很难找到两个不用的数据,却有同样的hash值)
2、隐秘性 (即知道hash值,但几乎不可能推断出原始数据)
3、谜题友好 (给定一个hash值和一个原始数据,需要很长时间才能找一个合适的值,然后和给定的原始数据作为输入,生成给定的hash值)

结论

工作量证明,通过耗费大量的算力,使得攻击者想要篡改数据的成本急剧增加,且不说攻击者能不能拥有这么大的算力去攻击,即使攻击成功了,从经济学角度来说,攻击成本远远高于收获。

工作量证明耗费如此大的算力资源只是为了维持比特币系统的安全性和稳定性,而实际上每块节点所挖出来的币的价值(这里的价值仅指转化为法币)是比不上所有节点所消耗的算力成本的。而且所有节点解决同一个难度问题,不仅会造成节点之间的恶性竞争(囚徒困境),还造成了极大的资源浪费。但是同时比特币系统又不得不依靠这样的电力消耗来维持整个系统的稳定性和安全性。随着越来越多的比特币被挖出,以后每个区块的奖励越来越少,就会有越来越多的节点退出系统,也会对比特币系统的安全性造成威胁。

权益证明

Proof of Stake (PoS) is a category of consensus algorithms for public blockchains that depend on a validator’s economic stake in the network.

权益证明是一种公有链共识算法,它取决于验证节点在网络中所占有的经济股份。简单来说,就是看节点在整个网络中拥有多少钱,钱多股份就多,权益就多(可以想象每个节点都是公司的一个股东)。

参考资料:

详解POW工作量证明原理(从零开始学区块链 122)
百科:工作量证明
工作量证明概念

(Quora)How exactly is proof-of-stakes implemented?
Proof of Stake (PoS)
HOW EXACTLY IS PROOF-OF-STAKE IMPLEMENTED?
Proof of Stake FAQ

猜你喜欢

转载自blog.csdn.net/u010039377/article/details/80028373