第13讲 | 深入区块链技术(五):PoS共识机制
陈浩
该思维导图由 AI 生成,仅供参考
上一篇我们讲到了 PoW 共识机制,这一篇我们就来分享另外一种共识机制,PoS 共识机制。
PoS 全称是 Proof of Stake,中文翻译为权益证明。这一篇我们会将 PoS 与 PoW 对比讲解,帮助你加深理解。
PoS 的由来
PoS 最早出现在点点币的创始人 Sunny King 的白皮书中,它的目的就是为了解决使用 PoW 挖矿出现大量资源浪费的问题。PoS 共识机制一经提出就引起了广泛关注,Sunny King 也基于 PoW 的基础框架实现了第一代 PoS 区块链:点点币。
PoW 的具体实现有很多版本,但它们大多只是在挖矿算法上有所改进,主体逻辑并没有发生质的变化。PoS 包含了多个变种实现,每个变种往往会涉及区块链代币经济模型的改动,可以说是牵一发而动全身。
这些实现有点点币、黑币、未来币、瑞迪币,它们都推动了 PoS 机制的发展,PoS 研究前沿还有以太坊的 Casper ,以及 Cardano 的 Ouroboros。
那到底是什么样的机制导致 PoS 具有这样的特性呢?让我们来看一看。
什么是 PoS?
在讲 PoS 之前,我先来讲一个叫做币龄的概念,币龄这个概念其实很好理解,它的英文是 CoinAge,字面意思就是币数量乘以天数。
比如你有 100 个币,在某个地址上 9 天没有动,那么产生的币龄就是 900,如果你把这个地址上这 100 币转移到任意地址,包括你自己的地址,那么 900 个币龄就在转移过程中被花费了,你的币数量虽然还是 100 个,但是币龄变更为 0。币龄在数据链上就可以取到,任何人都可以验证。
我们回过头来看看 PoS 究竟是什么,区块链共识机制的第一步就是随机筛选一个记账者,PoW 是通过计算能力来获得记账权,计算能力越强,获得记账权的概率越大。
PoS 则将此处的计算能力更换为财产证明,就是节点所拥有的币龄越多,获得的记账的概率就越大。这有点像公司的股权结构,股权占比大的合伙人话语权越重。
以上算是简述了 PoS 的概念,实际上,PoS 的发展经历了三个版本,第一个版本是以点点币为代表的 PoS1.0 版本,这个版本中使用的是币龄;第二个版本的代表是黑币(blackcoin),对应使用的是币数量,相当于是财产证明,后面黑币又升级到 PoS3.0,这个版本又回到了币龄。
PoW 早在比特币出现之前就已经应用了,而 PoS 是才是真正意义上为了区块链而创造出来的概念。
PoS 的实现原理
好了,现在我们开始讲解 PoS 的具体实现原理吧。这一部分公式较多,如果你在收听音频,可以点击文稿查看。
通过上一篇我们知道 PoW 挖矿的基本逻辑和步骤,我们先寻求一个 nonce小于目标值,这一步用公式可表示为:
Hash (block_header) < Target
从公式中我们可以看到,PoW 下所有矿工的目标值是一样的,只要计算结果哈希小于目标值即可,简化来看就是前导 0 的个数。
而在 PoS 系统中,这个公式变更为:
Hash (block_header) < Target * CoinAge
我们可以看出多引入了一个变量叫做 CoinAge,也就是币龄,这里就有意思了。
这个变量为会造成每个矿工看到的目标值不一样,如果你的币龄越大,也就意味着你的获得答案越容易。这里的 Target 与 PoW 一致,与全网难度成反比,用来控制出块速度的。
例如当前全网的目标是 4369,A 矿工的输入的币龄是 15,那么 A 矿工的目标值为 65535,换算成十六进制就是 0xFFFF,完整的哈希长度假设是 8 个字节,也就是 0x0000FFFF。
而 B 矿工比较有钱,他输入的币龄是 240,那么 B 矿工的目标值就是 0x000FFFFF。你如果仔细观察肯定会发现,相比 A 矿工的目标值,B 直接少了一个零。即如下:
A 矿工 Hash( block_header ) < 0x0000FFFF
B 矿工 Hash( block_header ) < 0x000FFFFF
所以 B矿工获得记账权的概率肯定要比 A 高。
具体代码分析这里就不讲解了,这里需要币龄作为输入,如果我们写示例代码也只是一个简单的参数,PoS 需要放到区块链的语境中才能运作。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
PoS共识机制在区块链技术中扮演着重要角色,通过权益证明解决了PoW共识机制中的资源浪费问题。PoS的发展经历了多个版本,包括以币龄和币数量为基础的不同实现方式。在PoS系统中,记账者的选择不再依赖计算能力,而是根据持有的币龄来确定记账的概率,类似于股权结构中股权占比的影响。尽管PoS机制在解决资源消耗和控制出块速度方面具有优势,但也存在一些缺陷,如币发行、币龄囤积、离线攻击等问题。此外,PoS 2.0版本引入的币数量作为参数也带来了新的问题,如无成本利益问题。相比之下,PoW系统由于分叉会造成挖矿成本直接变成负收益,因此抵抗分叉的产生,矿工倾向于跟随“最长”的链。尽管PoS共识机制未来变数依然很多,但它的可塑性比PoW好,技术上的探索空间大。虽然PoS共识机制在区块链技术中具有重要意义,但其风险相对较高,需要深入探讨。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入浅出区块链》,新⼈⾸单¥59
《深入浅出区块链》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(24)
- 最新
- 精选
- 花子翁随着 ERC20 类型的标准合约代币的出现,这个问题被解决了,不再需要第一阶段改成 PoW,也可以将代币分散出去。 求解
作者回复: 因为PoS型的代币最开始集中在发行人手里,例如创始块产生100万的代币,那么接下来靠谁来挖呢,因为只有创始地址有币,只能自己挖。所以在1c0和erc20之前,PoS型代币都有一个短暂的PoW阶段,用于让其他人参与,主要目的就是把币分发出去。
2018-05-2824 - 陈浚琦验证节点和账号是如何绑定的?如何将奖励给到节点账户? 您的回复:coinbase交易,由矿工自己填的。 老师,您好,有项目参考,或者资料吗? 我现在使用Tendermint+Ethermint,发现节点和账户是没有绑定的,所以区块奖励它给到了一个 0x0000000000000000000000000000000000000000,也就是没有实现节点奖励,按照您的解释应该是它安装后会生成一个coinbase账户,所有的节点奖励会给到这个账户。
作者回复: 是不是没有指定etherbase?
2018-04-261 - 陈浚琦验证节点和账号是如何绑定的?如何将奖励给到节点账户?
作者回复: coinbase交易,由矿工自己填的。
2018-04-251 - 小书童"比如在 PoS 系统上挖矿几乎没有成本",这个不太理解。因为币龄的存在,在pos上挖矿,不同的矿工难度不一样,但还是要耗电费的呀。
作者回复: 相比PoW而言,几乎就是零头。
2018-04-241 - duer听完这两期节目,我最大的感受是,区块链技术对技术和算法的选型和使用l不仅仅是技术决策,更多的是商业逻辑和经济学原理,这在产品设计和技术管理的启发非常大,谢谢老师
作者回复: 谢谢支持呢,送赞\(≧▽≦)/
2018-04-241 - unite讲的非常好,感谢老师!
作者回复: 谢谢支持呢
2018-04-231 - 恒念感觉有点问题应该是pos在区块链出现前就有,而pow的应用在区块链出现后吧
作者回复: 这里指共识算法,而不是挖矿算法哦。
2018-07-10 - 朱显杰对于文中提到的PoS节点离线问题的解决办法,如果把节点在线时长作为币龄,是不是可以解决这个问题呢?
作者回复: 区块链无法感知离线在线哦,这个可以作弊的。
2018-04-27 - teletime使用币数量有,无成本利益问题,使用币龄有没有呢?如果有,为什么不直接使用币数量,至少币数量方法,可以解决文中提到的二、三、四。如果没有,为什么币龄方式没有,它有什么内在的成本,拥有它一段时间需要什么成本?
作者回复: 都有无成本利益问题。
2018-04-242 - 花子翁离线怎么挖矿,将实时交易放入区块和广播区块给其他节点离线怎么能操作???2018-07-037
收起评论