区块链-POS共识机制

区块链-POS共识机制

简介

  • PoS(Proof of Stake,权益证明), 最早由点点币的创始人Sunny King提出,目的是为了解决使用PoW挖矿出现大量资源浪费的问题;

  • 在基于PoS共识的区块链网络中,节点不再通过算力竞争记账权,获得记账权的概率取决于其拥有的权益多少;

  • “权益”(Stake)可以是节点持有的通证数量,也可以是关于通证数量的一个函数;

实现原理

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

1
Hash (block_header) < Target

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

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

1
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的相关问题

无利害攻击

  • 任何节点都可以挖矿,导致链容易出现分叉;

  • 以太坊Casper共识应用了“执剑人”(Slashers,又译“剑手”)机制,在共识机制中引入惩罚措施,解决以往PoS共识的公共地悲剧;

长程攻击

  • “长程攻击”是PoS共识中威胁最大的攻击形式;

  • 当一个节点收回了他的抵押金时,虽然它不再拥有验证以后的区块的权利,但是仍然可以对收回抵押之前的区块进行回滚,并且由于它不再会受到没收押金惩罚,因此攻击者能够通过贿赂这些节点,收集足够的“幽灵”抵押金(这些抵押金已经被收回了),重新构造一条足够长的攻击链,尝试替换这些节点在作为验证者期间曾经验证过的区块;

  • 一种解决策略是移动检查点。即每隔一定的区块间隔设置检查点,只有检查点之后的区块可能会被重组。检查点的间隔一般少于要求的最短抵押金抵押时间,从而保证有充足可能性的区块都是由还有缴纳了抵押金的节点验证的;

  • 另一种解决策略是上下文感知交易(Context-Aware transactions)。在构造一笔交易时,在交易中记录前一个或前几个区块的哈希值,这样就能将一笔交易和特定的区块分支联系起来,在分叉链上伪造交易就变得困难;

参考

  1. 共识机制-POS(权益证明)

  2. 了解共识机制:工作证明(POW)还是权益证明(POS)

  3. PoS共识机制及设计哲学

updatedupdated2024-05-102024-05-10