前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >共识机制-POS(代理权益证明)

共识机制-POS(代理权益证明)

作者头像
用户2909867
发布2019-03-04 11:01:51
1.5K0
发布2019-03-04 11:01:51
举报
文章被收录于专栏:互联网大杂烩
概述

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),它使用的为PoS2.0版本,对应这个版本使用的是币数量,相当于是财产证明,后面黑币又升级到PoS3.0,这个版本又回到了币龄。

PoW早在比特币出现之前就已经应用了,而PoS是才是真正意义上为了区块链而创造出来的概念。

PoS的实现原理

我们知道PoW挖矿的基本逻辑和步骤,即找到一个nonce值,使得新区块头的哈希值小于某个指定的值,即区块头结构中的“难度目标”

代码语言:javascript
复制
Hash (block_header) < Target

从公式中我们可以看到,PoW下所有矿工的目标值是一样的,只要计算结果哈希小于目标值即可,简化来看就是前导0的个数。

而在PoS系统中,这个公式变更为:

代码语言:javascript
复制
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的相关问题

通过上述的介绍我们知道:PoS似乎完美地解决了PoW挖矿资源浪费的问题,甚至还顺带解决了51%攻击的问题,这里可以顺便讲一下51%攻击是什么,它是指PoW矿工如果积累了超过51%的算力,则可以一定程度篡改账本。

这里顺便科普一下,什么是51%攻击呢,我们发现,矿工挖矿的成本不再是物理设备和电费,而是虚拟代币,它的边际成本几乎为零,本质上PoS让挖矿者和使用者合二为一了。

这也意味着如果挖矿者发起51%攻击,就需要拥有全网51%的币或币龄,这几乎不可能办到,即使你成功地实施了51%攻击,那么也意味着作为全网最大的持币大户的你,损失也会最大。

PoS看起来相当完美,其实并不然,PoS有很多缺陷。

PoS遇到的第一个问题就是币发行的问题。一开始的时候,只有创始区块上有币,意味着只有这一个节点可以挖矿,所以让币分散出去才能让整个网络壮大,那么如何分散出去又是另外一个难题了。

所以早期PoS币种基本都采用了分阶段挖矿,有的叫混合挖矿。很多币种其实是分了阶段的,即第一阶段是PoW挖矿,到第二阶段才是PoS挖矿。

随着ERC20类型的标准合约代币的出现,这个问题被解决了,不再需要第一阶段改成PoW,也可以将代币分散出去。

第二个问题是由于币龄是与时间挂钩的,这也意味着用户可以无限囤积一定的币,等过了很久再一次性挖矿发起攻击;所以解决方案是:PoS机制需要引入一个时间上限来控制时间因素的自然增长。

第三个问题是虽然引入了时间上下限,用户还是倾向于囤积代币,这会造成币流通的不充分;基于此,所以瑞迪币引入了币龄按时间衰减,构造了权益速度证明,鼓励用户流动代币,而不是倾向于囤积代币。

第四个问题是离线攻击,即使引入了时间上下限,时间仍然是自然流动的,也就是可以不需要求挖矿节点长时间在线。挖矿是可以离线的,这简直是灾难,所以任意一个PoS机制的实践形式都必须避免这个问题,因为网络节点数量的多少直接关系到区块链网络的健壮性。

当然这些问题都不是致命问题,还记得我们一开始提到了PoS经历了三个版本,而第二个版本PoS 2.0使用的不是币龄,而直接是币的数量。

这会造成完全不同的结果,上述第二、三、四问题都不存在了,似乎看起来直接使用币的数量会更好一些,但却出现了整个PoS机制的致命问题。

这个问题叫做Nothing at Stake,翻译过来叫做无成本利益问题。大体的意思在PoS系统中做任何事几乎没有成本,比如在PoS系统上挖矿几乎没有成本,这也就意味着分叉非常方便。

方便到什么程度呢,每个诚实矿工在产生孤块的时候都可以继续挖下去,反正也没什么成本,反正分叉链和主链都可以同时挖,也就是任何持币较少的用户都可以尝试分叉,并且把分叉链广播出去。

这个时候如果其他诚实矿工看到了,第一反应也是没有成本,那么咱们也来挖吧,说不定什么时候就值钱了,意思就是说任何逐利的矿工并不会使这个系统变得更强壮稳定,而是更加的混乱。

无成本利益问题无论以币龄还是币数量作为PoS的参数,都无法避免。

而PoW则没有这样的问题,我们回到PoW系统中来看,因为任何的分叉都会造成挖矿成本直接变成负收益,所以这会抵抗分叉的产生,矿工倾向于跟随“最长”的链。

由于以太坊部分采用了PoS共识,它的名字叫做Casper,它必须解决上述无成本利益问题攻击。所以Casper协议要求PoS矿工需通过抵押保证金的方法对共识结果进行下注,具体实践结果我们还需要拭目以待。

总结

最后我们来总结一下PoS共识机制,PoS的区块链系统无需外部物理输入,所以它相比PoW更为环保不费电,并且矿工就是使用者,这会在一定程度上抵御了51%攻击,所以基于PoS机制的数字货币属于理想状态的数字货币。

PoS的缺点是缺乏工业级的区块链应用,从逻辑上来看有点循环自证明的味道,就是用自己的币来维护系统的安全,而币的安全性是由系统保证的,所以现阶段PoS共识机制往往不是独立运行的,而是混合了PoW一起运行,这就可以弥补PoS的缺陷。

PoS共识机制目前也出现了矿池,也可能会出现中心化挖矿的风险。

虽然PoS共识机制未来变数依然很多,但它的可塑性比PoW好,技术上的探索空间大,目前PoS币种相比较PoW币种风险也较高。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.02.12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • PoS的由来
  • 什么是PoS?
  • PoS的实现原理
  • PoS的相关问题
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档