美文网首页区块链大学区块链研习社区块链
《锋哥论道区块链》之三区块链基础--共识机制POS

《锋哥论道区块链》之三区块链基础--共识机制POS

作者: 7dfc697cf7a9 | 来源:发表于2019-05-21 14:44 被阅读5次

2POS(proof of stake,股权证明)机制
2.1POS共识机制
(1)POS简介
PoS最早出现在点点币的创始人Sunny King的白皮书中,它的目的就是为了解决使用PoW挖矿出现大量资源浪费的问题。PoS共识机制一经提出就引起了广泛关注,Sunny King 也基于PoW的基础框架实现了第一代PoS区块链:点点币。
PoW的具体实现有很多版本,但它们大多只是在挖矿算法上有所改进,主体逻辑并没有发生质的变化。PoS包含了多个变种实现,每个变种往往会涉及区块链代币经济模型的改动,可以说是牵一发而动全身。这些实现有点点币、黑币、未来币、瑞迪币,它们都推动了PoS机制的发展,PoS研究前沿还有以太坊的 Casper ,以及 Cardano 的Ouroboros。
在PoS中有一个叫做币龄(coinage)的概念,币龄就是币数量乘以天数。比如你有100个币,在某个地址上9天没有动,那么产生的币龄就是900,如果你把这个地址上这100币转移到任意地址,包括你自己的地址,那么900个币龄就在转移过程中被花费了,你的币数量虽然还是100个,但是币龄变更为0。币龄在数据链上就可以取到,任何人都可以验证。
区块链共识机制的第一步就是随机筛选一个记账者,PoW是通过计算能力来获得记账权,计算能力越强,获得记账权的概率越大。PoS则将此处的计算能力更换为财产证明,就是节点所拥有的币龄越多,获得的记账的概率就越大。
POS机制就是一个根据你持有某种数字币的量和时间,给你发利息的一个制度。这其中仍然存在算力挖矿,需要算力解决一个数学难题。但数学难题的难度和持币者的“币龄”相关。简单来说,持币者持有币的时间越长,难题越简单,挖到币的概率越大。举个例子:在权益证明POS模式下,每个币每天产生1币龄,比如你持有100个币,总共持有了30天,那么,此时你的币龄就为3000,这个时候,如果你发现了一个POS区块,你的币龄就会被清空为0。你每被清空365币龄,你将会从区块中获得0.05个币的利息(可理解为年利率5%),那么在这个案例中,利息 = 3000 * 5% / 365 = 0.41个币,这下就很有意思了,持币有利息,非常好!(需要注意的是,5%的年利率仅仅是举例,并非每个POS模式的币种都是5%,比如点点币PPCoin就是1%年利率)
POS机制最核心的逻辑就是——谁持币,谁就有网络的控制权。我们通常说的挖矿,一般都值得是 PoW 的矿机挖矿。当提到 PoS 币的挖矿时候,大家通常使用“利息”这个词语来表示。PoS挖矿让持币者(任何在其区块链钱包里有余额的人),可以用通过持有区块链的证明来进行PoS挖矿。其实,PoS 币的挖矿和利息有很大不同,PoS 挖矿的时候,我们的币是还在自己手里的。而我们在银行拿利息的时候,我们已经把钱出借个银行。PoS模式比银行安全!当然,PoS 挖矿和 PoW 矿机挖矿一样,都可以维护区块链的增长和安全。
实际上,PoS的发展经历了三个版本,第一个版本是以点点币为代币的PoS1.0版本,这个版本中使用的是币龄;第二个版本为代表的是黑币(blackcoin),它使用的为PoS2.0版本,对应这个版本使用的是币数量,相当于是财产证明,后面黑币又升级到PoS3.0,这个版本又回到了币龄。
(2)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高。
2.2点点币的PoS共识机制
(1)点点币的PoS实现原理
点点币PPCoin 前期采用PoW挖矿开采和分配货币,以保证公平。后期采用PoS机制,保障网络安全,即拥有51%货币难度更大,从而防止51%攻击。PoS核心概念为币龄,即币数量*持有天数。例如有10个币、持有90天,即拥有900币龄。另外使用币,即意味着币龄的销毁。
点点币的PoS证明计算公式为:
proofhash < 币龄x目标值
其中proofhash,对应一组数据的哈希值,即hash(nStakeModifier + txPrev.block.nTime + txPrev.offset + txPrev.nTime + txPrev.vout.n + nTime)。
币龄即bnCoinDayWeight,即持有的币数乘以持有币的天数,此处天数最大值为90天。目标值,即bnTarget,用于衡量PoS挖矿难度。目标值与难度成反比,目标值越大、难度越小;反之亦然。由公式可见,持有的币龄越大,挖到区块的机会越大。
(2)点点币的PoS挖矿难度
点点币使用目标值来衡量挖矿难度,目标值与难度成反比,目标值越大、难度越小;反之亦然。当前区块的目标值与前一个区块目标值、前两个区块的时间间隔有关。计算公式如下:   
当前区块目标值 = 前一个区块目标值 x (1007x10x60 + 2x前两个区块时间间隔) / (1009x10x60)
  由公式可见,两个区块目标间隔时间即为10分钟。如果前两个区块时间间隔大于10分钟,目标值会提高,即当前区块难度会降低。反之,如果前两个区块时间间隔小于10分钟,目标值会降低,即当前区块难度会提高。
2.3黑币的POS2.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目标值
hash(nStakeModifier + txPrev.block.nTime + txPrev.nTime + txPrev.vout.hash + txPrev.vout.n + nTime) < bnTarget * nWeight
其中proofhash,对应一组数据的哈希值,即hash(nStakeModifier + txPrev.block.nTime + txPrev.nTime + txPrev.vout.hash + txPrev.vout.n + nTime)。    币数即nWeight,目标值即bnTarget。

相关文章

网友评论

    本文标题:《锋哥论道区块链》之三区块链基础--共识机制POS

    本文链接:https://www.haomeiwen.com/subject/qlkjzqtx.html