首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PoS权益证明算法原理及其在点点币、黑币中的使用

PoS,即Proof of Stake,译为权益证明。

无论PoW或PoS,均可以理解为“谁有资格写区块链”的问题。

PoW通过算力证明自己有资格写区块链,而PoS则是通过拥有的币龄来证明自己有资格写区块链。

PoW的优势和弊端

PoW,优势为可靠,使用广泛,是经历了充分的实践检验的公有链共识算法。但其缺点也较为明显:

1、消耗了太多额外算力,即大量能源。

2、资本大量投资矿机,导致算力中心化,有51%攻击的安全隐患。

PoS的提出和点点币

第一个基于PoS的虚拟币是点点币。

鉴于PoW的缺陷,2012年Sunny King提出了PoS,并基于PoW和PoS的混合机制发布了点点币PPCoin。

前期采用PoW挖矿开采和分配货币,以保证公平。后期采用PoS机制,保障网络安全,即拥有51%货币难度更大,从而防止51%攻击。

PoS核心概念为币龄,即持有货币的时间。例如有10个币、持有90天,即拥有900币天的币龄。

另外使用币,即意味着币龄的销毁。

在PoS中有一种特殊的交易称为利息币,即持有人可以消耗币龄获得利息,同时获得为网络产生区块、以及PoS造币的优先权。

点点币的PoS实现原理

点点币的PoS证明计算公式为:

proofhash < 币龄x目标值

展开如下:

hash(nStakeModifier + txPrev.block.nTime + txPrev.offset + txPrev.nTime + txPrev.vout.n + nTime) < bnTarget x bnCoinDayWeight

其中proofhash,对应一组数据的哈希值,即hash(nStakeModifier + txPrev.block.nTime + txPrev.offset + txPrev.nTime + txPrev.vout.n + nTime)。

币龄即bnCoinDayWeight,即币天,即持有的币数乘以持有币的天数,此处天数最大值为90天。

目标值,即bnTarget,用于衡量PoS挖矿难度。目标值与难度成反比,目标值越大、难度越小;反之亦然。

由公式可见,持有的币天越大,挖到区块的机会越大。

peercoin-0.6.1ppc中PoS证明计算代码如下:

点点币的PoS挖矿难度

点点币使用目标值来衡量挖矿难度,目标值与难度成反比,目标值越大、难度越小;反之亦然。

当前区块的目标值与前一个区块目标值、前两个区块的时间间隔有关。

计算公式如下:

当前区块目标值 = 前一个区块目标值 x (1007x10x60 + 2x前两个区块时间间隔) / (1009x10x60)

由公式可见,两个区块目标间隔时间即为10分钟。

如果前两个区块时间间隔大于10分钟,目标值会提高,即当前区块难度会降低。反之,如果前两个区块时间间隔小于10分钟,目标值会降低,即当前区块难度会提高。

peercoin-0.6.1ppc中目标值计算代码如下:

PoS 2.0的提出和黑币

为了进一步巩固PoS的安全,2014年rat4(Pavel Vasin)提出了PoS 2.0,并发布了黑币。

黑币前5000个块,为纯PoW阶段;第5001个块到第10000个块为PoW与PoS并存阶段,从第10001个块及以后为纯PoS阶段。

黑币首创快速挖矿+低股息发行模式,发行阶段采用POW方式,通过算法改进在短时间内无法制造出专用的GPU和AISC矿机,解决分配不公平的问题。

PoS2.0相比PoS的改进:

1、将币龄从等式中拿掉。新系统采用如下公式计算权益证明:

proofhash < 币数x目标值

点点币中,部分节点平时保持离线,只在积累了可观的币龄以后才连线获取利息,然后再次离线。

PoS 2.0中拿掉币龄,使得积攒币龄的方法不再有效,所有节点必须更多的保持在线,以进行权益累积。

越多的节点在线进行权益累积,系统遭遇51%攻击的可能性就越低。

2、为了防范预先计算攻击,权益修正因子每次均改变。

3、改变时间戳规则,以及哈希算法改用SHA256。

黑币的PoS实现原理

黑币的PoS证明计算公式为:

proofhash < 币数x目标值

展开如下:

币数即nWeight,目标值即bnTarget。

blackcoin-1.2.4中PoS证明计算代码如下:

后记

PoS有种种优点,但也有所缺陷。

即因为PoS并不消耗更多的算力,因此如果出现分叉,理性节点会在所有链上同时PoS挖矿。

以至于每次分叉都会形成新的山寨币,即PoS无法很好的应对分叉。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180112G07ZGL00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券