Proof of stake/股权证明/权益证明

作者:扎克-赫斯, Zack Hess https://github.com/zack-bitcoin/amoveo-docs/blob/master/other_blockchains/proof_of_stake.md 第4版

本文的目标是表明权益证明的区块链共识是行不通的。我们对 “权益证明 “的定义非常笼统:任何区块链共识机制,你对哪个区块被添加到链上的影响与你在区块链的共识状态中拥有的一些价值成正比。

在这里你可以看到对这篇论文的反驳: https://github.com/zack-bitcoin/amoveo-docs/blob/master/other_blockchains/the_defence_of_pos.md

攻击 #

我们需要让>2/3的验证者在不同的区块链上锁定第二个安全债券,即攻击者债券,这个债券要大于或等于他们在PoS区块链上的安全债券。为了做到这一点,我们向他们提供价值略高于他们在主链上赚取的赌注奖励。

一旦我们有>2/3的人参与,这些验证者就开始忽略没有参与攻击的1/3的人,导致这1/3的人失去他们的安全保证金。由于说话人-听话人的故障等价性(speaker-listener fault equivalence),后来没有办法证明这1/3的人是正确参与的,不应该失去他们的保证金。因此,没有参与攻击的担保验证人,他们的全部担保金都会被烧毁。

现在,攻击者拥有100%的控制权,我们可以阻止任何新的人绑定,我们可以在保持100%控制权的同时开始解除绑定。这允许每个参与攻击的人在我们执行破坏性攻击之前从网络中兑现。当他们从PoS网络中套现时,我们也可以减少攻击者的债券规模,这就减少了进行这种攻击的成本。因此,那些参与攻击的绑定验证者,他们可以在攻击发生前从网络中移除>99%的绑定。这意味着在最坏的情况下,只有<1%的安全债券被烧毁,作为对参与攻击的惩罚。

在Cosmos中,解除绑定的时间是3周。在Cardano,它是15天。

一旦我们拥有100%的控制权,并且攻击者已经从系统中移除他们的绝大部分股权,我们就可以执行任何形式的攻击,并且我们在系统中几乎没有任何价值可以被烧毁来惩罚我们。根据这个区块链可用的应用程序,它看起来会有所不同。

由于我们对验证者的股权有100%的控制权,我们可以允许我们的股权的任何部分被烧毁,之后仍然有100%的控制权。这就为双重消费攻击提供了可能。我们可以支付一大笔钱来购买东西,然后重写区块来撤销付款。如果有必要,我们可以撤销几天的历史。特别是,我们可以在交易所出售PoS区块链上的代币以换取比特币,然后撤销将我们的PoS代币存入该交易所的tx。所以我们可以同时保留比特币和PoS代币。

如果这个区块链支持预测市场,我们可以在市场解决后重写历史,所以我们可以审查每一个下了胜负赌注的人,并用我们自己的胜负赌注来取代他们。因此,我们可以从该博彩市场窃取所有的价值。

历史 #

已经有很多人试图证明PoS区块链共识不起作用。Paul Sztorc证明了PoS不能用于分发新的代币http://www.truthcoin.info/blog/pow-cheapest/ 所以PoS不能完全取代PoW。

Vitalik解释了关于攻击PoS的一些方法,以及他们用来防止这些攻击的设计策略 https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/

Nothing at stake 问题。这是一个试图表明PoS不起作用的问题,因为参与所有可能的历史不需要任何成本。这个问题通过要求验证者交纳押金来解决,如果他们参与了多个版本的历史,押金会被销毁。

远距离攻击( Long range attack),这试图表明PoS不起作用,因为总是有可能通过购买历史上某一时刻的所有无价值的私钥来重建历史。这个问题是通过让验证者在足够长的时间内锁定资金来解决的,这样他们的私钥就不会在那个时间段内失去价值。这样就有足够长的时间,使网络中足够多的参与者可以同步最近的区块,这样我们就可以达成共识。基本上,它是一个检查点系统。

激励问题。这是一个尝试,表明PoS不起作用,因为它不可能使验证者的激励与网络的成功保持一致。这个问题通过在PoS共识中整合futarchy元素而得到解决。

道德主义的执行 #

这里有一篇1992年的论文,解释了为什么PoS不能工作。http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.405.286&rep=rep1&type=pdf “如果被惩罚的成本足够大,合作、惩罚不合作者、惩罚不惩罚不合作者的道德主义策略可以在进化上保持稳定。然而,我们也表明,道德主义的策略可以使任何个人有代价的行为在进化上是稳定的,无论它是否创造了群体利益。”

PoS的问题是,由于验证者的价值是系统内部的,攻击可以做二阶惩罚。攻击可以惩罚那些没有参与执行惩罚的验证者。而且,这允许任意改变协议的主导地位。

POS系统都需要在系统中的价值,和关于哪些区块要添加到区块链的决定之间有一些逻辑联系。如果我们要解决无利害关系和远程攻击的问题,就需要在每个共识层面的决定中锁定大量的资金。所以在POS系统中,多数人联盟总是有可能惩罚那些不按多数人意愿参与共识的账户。大多数人只是简单地审查他们,不让他们再接触到他们的钱。因此,在POS系统中,一旦一个多数联盟形成,它就会非常稳定。联盟中的参与者很容易相互信任,因为如果他们中的任何一个人作弊,联盟中的其他成员可以知道谁作弊并通过冻结他们的钱来惩罚他们。所以多数联盟可以利用软分叉来推动他们想要的对共识规则的任何改变,他们可以偷任何钱,他们可以把费用提高到他们想要的高度。

审查制度可以是好的 #

POW的一个基本属性是,不可能对审查制度进行惩罚。矿工不一定在系统中拥有任何货币,所以就是不可能惩罚他们不包括tss。

这与说 “POW不惩罚审查制度 “是不同的。在POW中,不可能做一个软分叉来增加惩罚审查制度的能力。

长期以来,这一直被视为POW的一个弱点。人们喜欢想象审查是不好的,我们应该惩罚矿工的审查行为。但这实际上是POW共识的一个极其重要的属性,使其对某些攻击具有安全性,我们将表明,任何没有这个属性的区块链共识都不如集中式替代方案安全。

在POW系统中,系统中的价值和矿工之间没有联系。许多矿工甚至不拥有任何硬币。多数联盟唯一能做的事情就是审查区块。形成一个多数联盟的hashpower来控制区块链,需要花费C量来协调不同的矿工,而且它为每个矿工支付P量的额外奖励。但是,由于不可能惩罚审查制度,联盟的一个子联盟可以协调使用审查制度来控制,而第一个联盟没有办法惩罚这个子联盟。次联盟有一半的hashpower来协调,所以他们的成本是C/2。他们在一半的矿工之间分享奖励,所以他们支付的额外奖励是2*P。

在POW中,创建一个子联盟来推翻一个联盟总是比创建第一个联盟更容易、更有利。这一事实使得没有矿工对组建联盟感兴趣,因为他们知道这很可能是窃取他们哈希力的把戏。

从矿工的角度来看,如果他们参加你的联盟,他们可能会失去所有的利润。

发起攻击的贿赂成本 #

如果你是一个认为攻击会失败的验证者,那么你就可以放心地接受贿赂。因为你知道攻击无论如何都会失败,所以你还不如接受免费的钱。如果你认为攻击会成功,那么你会把你的硬币卖给认为攻击会失败的人。

根据公地悲剧,贿赂验证者以形成多数联盟并破坏区块链的成本是:

LU=(验证者要锁定多少钱) #V = (有多少验证者) 贿赂 = LU / (2 * #V)

现实上,PoS区块链被设计为有>100个验证者,并锁定多达90%的股权。在这种情况下,插入上面的公式。贿赂=(0.9/(2*100))=(市值的0.45%)

如果摧毁一个区块链的成本低于该区块链价值的1%,这甚至比关闭一个中心化替代方案的法律努力的成本更不安全。

为了让PoS达到3级信任,贿赂验证者的成本需要大于控制共识的潜在利润。你可以在这里阅读信任等级的内容

PP = (控制共识的潜在利润) LU / (2 * #V) > pp

让我们做一个合理的假设,即有10个以上的验证人:

LU > (20*PP)

控制系统的潜在利润包括系统中所有的价值,包括LU。所以我们知道:

PP > LU

不可能使这两个不等式同时为真。这表明,PoS不可能实现3级信任,它将永远是4级。

公地悲剧的细节 #

我们如何确定公地悲剧模型是建立贿赂成本模型的正确方式?

在机制设计中,一个基本的假设是,用户更喜欢拥有更多的价值,而不是更少。这意味着我们可以计算用户的行为,因此,我们可以计算出这是否是一个安全的机制。

因此,让我们站在PoS币持有者的角度,想象他们的处境。

有人公开行贿,投票给区块链的破坏者。我不知道还有多少人报名参加了贿赂。如果我报名了,而攻击失败了,我可以保留贿赂,不会受到惩罚。

让我们对你的硬币的价值进行建模。我们知道,如果攻击成功,硬币就一文不值。由于你不知道还有多少人接受了贿赂,所以你必须对你的硬币的价值进行建模,就像这样。价值=(如果攻击失败的价值)*(攻击失败的可能性)

因此,如果我们想计算用户的成本,如果他们接受了贿赂,那将是。价值(无贿赂)-价值(贿赂)=(如果攻击失败的价值)*(如果你接受贿赂,攻击成功的可能性有多大)。

(如果你接受贿赂,攻击成功的可能性有多大),另一种说法是(你的投票很可能是关键性的),另一种说法是(你对结果的影响)。

因此,我们需要一种方法来模拟如果你接受贿赂,攻击成功的可能性有多大。根据概率法则,相互排斥的结果需要加起来达到100%。如果我们把PoS区块链的每个验证者的控制力加起来,需要加到100%。让他们所有的影响力加起来达到100%的一种方法是,如果每个人的影响力是(他们的股份)/(总股份),这与(该用户控制的股份部分)相同。

这被称为 “市场失效模型”,或 “公地悲剧模型”。

(对一个用户的贿赂)=(他们的硬币价值)*(他们控制的赌注部分)

(对1/2股权的贿赂)=(1/2股权的价值)*(被贿赂的普通股东所控制的股权比例)。

因此,插入一些例子的数值。如果有1000个验证者,区块链的价值是10亿美元,90%的价值是被押注的,那么贿赂>50%的验证者的总成本将是。(10亿美元)*(0.9)*(1/2)*(1/1000)=>450 000美元

因此,少于1/2万美元的贿赂足以完全摧毁一个10亿美元的PoS区块链。