我曾经写过一篇有关 PoS 的论文,想论证 PoS 注定失败的普遍结论。
把那篇文章分享给许多对 PoS 技术感兴趣的人之后,我收到了许多不同的反馈。本文的目的在于将各种支持 PoS 的观点收集到一块,从而可以看出为什么不同的人都相信 PoS 能成功。
如果你认为你的观点在这里被误传了,或者你改变了自己的观点,请随时联系我,我会为你修改这份文献。
Vitalik Buterin
核心观点见:https://vitalik.ca/general/2020/11/06/pos2020.html(中文译本)。
他试图用以下两点来论证为什么 PoS 是一个在密码经济学上安全的共识机制。
花费同样的成本,PoS 比 PoW 更加安全。PoS 比 PoW 更容易从攻击中恢复过来。
我来试试证明这两个观点不对。
关于第 1 点,他所比较的是贿赂 PoW 矿工临时性地审查 PoW 区块链上所有交易的成本和购买 51% 的验证者质押量来永久性摧毁 PoS 区块链的成本。将这两种截然不同的攻击放在一起,并比较执行这些攻击的成本,是完全不合理的。这就好比我说我的二头肌比运动员小指上的肌肉更大,然后试图用这个来证明我更加强壮。
关于论点 2,谨防话术上的小伎俩。注意这里的 PoW 攻击已经不再是贿赂 51% 的矿工进行临时性的审查,而是一个攻击者成功买下了超过 51% 的 ASIC 矿机,这是一种代价更高的攻击。拥有 51% 的质押代币要比拥有 51% 的挖矿硬件便宜得多,因为质押代币的市场流动性远高于 ASIC 矿机市场。购买 51% 的质押代币只相当于购买 PoS 区块链总代币量的 5% 左右,因为并非所有的代币都处于质押中。如果一名攻击者买下了所有 PoS 代币的 5%,他购买最后一枚代币花掉的成本和第一枚代币是相同的。而如果他买下了 51% 的现存 ASIC 矿机,那么随着他们买的矿机越多,ASIC 矿机的价格就会迅速上涨,他们付出的代价将会非常昂贵。因为 ASIC 矿机市场的流动性远低于 PoS 代币市场。
在第 1 部分的讨论中,Vitalik 讨论的是用贿赂攻击(bribery attack)来达成一个(成本非常低廉)的临时审查,因为他想显得攻击 PoW 更便宜。与 PoW 中这种攻击类似的是,在 PoS 中通过支付高额的交易手续费来用交易完全塞满每一个区块,以达到审查其他所有发交易的人的目的。
而在第二个论点中,为了表现出 PoW 很难从攻击中恢复,他更倾向于讨论非常昂贵的重生点攻击(spawn-camping attack,竞技游戏中埋伏在对方的死亡重生点附近发起袭击),而这需要购买 51% 的 PoW 矿机。与之类比的是在 PoS 网络中购买超过 51% 的代币来发动攻击。
PoS 之所以注定失败,很大程度上是因为 PoS 中的对称性(symmetry):攻击者联盟与防御者联盟没有先天的优劣,是对称的。如果防御者胜出,他们惩罚攻击者的方式,与攻击者胜出而惩罚防御者的方式,完全相同。防御者可以注入安全押金来提高防御力,攻击者也可以注入押金来提高攻击力,而且双方的代价都完全相同。
为了证明 PoS 可以运行,Vitalik 尝试找出一种办法来打破这种对称性。他想让防御看起来比攻击更便宜。而打破对称性的方式就是采用一个很有问题的假设:社区能够利用一种尚未得到定义的外部机制,来达成共识、确认哪一边是攻击者,哪一边是防御者。然后用户就能对哪个版本的协议才是正式版本达成一致。
但这里面有一个循环论证。如果我们从 “社区本身就能对协议应该更新什么内容达成共识” 的假设起步,那很容易就能证明,他们拥有一个共识机制(consensus mechanim)。而在实际上,到底更新什么内容才对,是非常具有争议的。用户没法就什么是有好处的更新、什么是恶意的攻击达成共识。尤其当攻击还配合有宣传的时候,社区很容易就会相信攻击者的版本才是一个好更新。而一旦社区相信了这一点,他们就会烧掉 49% 的诚实验证者的安全押金,等于再给攻击者发一封红包。
PoS 必然会以下面两种方式收场:
A)一旦攻击者获得了 51% 以上的验证者席位,他们就可以让攻击永远持续下去。因为他们也控制了谁能加入验证者队伍。他们可以审查所有事情,也可以用审查来推行任意软分叉升级,也包括把共识机制改为 PoW。不喜欢新规则的用户,也有激励把币卖给喜欢新规则的人。
B)另一种,如果用户认定当前的验证者队伍的绝大多数都是攻击者,然后这些人会被惩罚;如果这种恢复机制成立,那么攻击者也可以使用宣传来借刀杀人(借恢复机制的刀)。只要攻击者能说服用户,当前的验证者队伍都是不怀好意的人,那么用户就会抢劫那些诚实验证者的押金。
不论是 A 还是 B,都算不上是什么安全的共识机制。
Jae Kwon
在 Jae 看来,PoS 的安全是以 “社会合法性” 为基础的。
但是,与你从交易所提现时需要达到多少个确认相比,这是一个更慢的时间尺度。
如果我们使用一个更慢的机制来解决对状态的分歧,那么我们被双花攻击的几率就必然扩大。
只要攻击者在交易所中卖出币、以法币退出,那就没有办法回滚历史和恢复这些币了。
而如果我们可以从双花中得到收益,那我们就会一直双花,一直双花,花到这条链完全枯竭。
最终,攻击者可以从中获得巨大的利益,而每一次交易回滚,你的钱就有可能回滚。那破坏性就别提了。
Alfred
Alfred 定期为 Amoveo 的 telegram 频道贡献发言。
Alfred 的主张与 Jae 的类似,但 Alfred 也认为可以增加一条规则,使得所有押金的总额足够大,大到我们删除所有受贿者的押金时,攻击者不可能获利。
为了防止有人从回滚中获利,我们需要
(在社会共识的一个周期内转移的货币总额) * 2 < (质押且在线的价值)
,这样我们一来,我们就有足够多的受贿者的押金可以删除,让偷到的钱少于他们被烧掉的押金。
把资金委托给在线的人并不是个好模式,因为很容易贿赂受托人,导致你的押金被删除,也就意味着协议并不安全。
最终安全性会变得像 Augur 一样,用足够多的手续费来说服足够多的人锁定他们的资金、保持在线以验证区块、保证我们的钱不会被偷。
在 Augur 预测市场中,每一个信息输入机制需求都慢,因此验证者只需不定期地上线。如果我们使用这套机制来达成共识,那他们需要每个区块都在线。
就我所知,没有 PoS 区块链使用这条规则。举个例子,这种模式会限制每个区块能够转移的币的数量。
这种模式也容易受到寄生合约的影响,跟 Augur 一样。如果有某个合约在这种协议上开发(就像 colored-coin 寄生在比特币上),而他们又不会按照所转移的价值成比例地向验证者支付手续费,那么协议就会变得不安全。
只要存在子货币,就会让手续费计算变得很困难。
Maigoh91
Maig 是 Cosmos 的社区成员。他对 PoS 安全性的论证基于声誉。
Maigo 认为,参与者也在拿自己的商誉价值冒险,所以他们不会接受贿赂。
但是,价值的形式并不重要,不论是锁定在区块链上的押金,还是商业信誉,或者别的,因为博弈情形并没有改变,贿赂的额度还是比攻击能够摧毁的价值小得多。
正在设计 Eth2.0 的匿名以太坊研究员
论断 1:
“软分叉无法改变分叉选择规则。”
我搞不清楚这种断言怎么能帮助 PoS 防御软分叉贿赂攻击。但我可以证明这种说法是错的。
如果一个攻击者可以任意地重新分发资金,那他们就能通过重新分配资金来取消系统内的任何支出。所以,如果某种分叉选择规则会给予支出更多的一方以优势,那就可以用一个软分叉来防止这些支出。(译者注:这里讨论的可能是曾有人设想过的一种防御 PoS 长程攻击的方法:在分叉选择中,总是以包含交易价值更多的区块为合法区块。长程攻击的分叉上除非能包含更多交易价值,否则就不会被接受。即总是以大家在哪条链上花钱来确定哪条链是主链。)
如果分叉选择规则会把系统外的支出也考虑进去,那这个系统就是一个 PoW 系统,而不是一个 PoS 系统。
论断 2:
“少量的非共识参与者可以让攻击成本变得更高”
说攻击 “昂贵” 并不能解决任何问题,如果攻击者有权重新分发所有资金,而所有的支出都内生于系统,那这个验证者就能更改规则,让它不再昂贵。
LionLikesCookies
来自 Cardano 的社区成员。他的解释见此 reddit 帖子。
Lion 的主张是,在这种(贿赂参与者)攻击中,PoS 在博弈理论上跟比特币的 PoW 是一样的。所以比特币没问题就证明了 PoS 也能够应对。
这跟 Vitalik 在他 2015 年 1 月的论文 《P+epsilon 攻击》中的观点是一样的,就在 "Further Consequences" 一节中。
我也在这篇论文的 "Censorship can be good" 一节中解释了为什么贿赂攻击对 PoW 不凑效。
sebastiengllmt
另一位 Cardano 社区成员在 Reddit 上给出了自己的解释。
Sebast 的论点是我们不可能知道需要贿赂给每个验证者多少钱,因为无从得知系统中一共有多少质押者。
解决方案就是攻击者写一个贿赂专用的智能合约,这些智能合约会慢慢地提供越来越高的贿赂金额,直到它在验证者池中占有足够的份额。通过这种方式,攻击者只需花费所需的最少贿赂金额。
Josh
Josh 是第三位 Cardano 社区成员,他给出了一个完全不同的解释来说明为什么 PoS 可行。
根据 Josh 的说法,“你必须用全网 51% 的价值来贿赂,才能摧毁整个网络”。
乍听上去似乎是合理的。但从至少 1833 年起,博弈论就告诉我们这不一定对。
首先假设 Josh 是对的,然后我们会用反证法来证明这不可能正确。
A:让我们假设(贿赂一位用户的成本)=(其所持有 Ada 的价值)
B:我们知道:(贿赂成本)=(持仓价值)*(他们拥有关键投票的可能性)
将 A 代入 B 可得:(持仓价值)=(持仓价值)*(他们拥有关键投票的可能性)
两边同时除以(持仓价值)得:1 = (他们拥有关键投票的可能性)
综上可知,所有用户的投票都是关键的。因此任何一位独立的用户都必然拥有对投票结果 100% 的控制权。
但是,只要用户数量大于 1,那情形就不可能如此。如果有两个用户对其想要的结果意见相左,那他们不可能都对结果拥有 100% 的控制权。
因此,我们证明了他的初始前提(贿赂一位用户的成本)=(他们持有的 Ada 的价值)是错误的,因为这会导致我们自相矛盾。
petko
petko 来自 NXT 社区,NXT 是最古老的 PoS 区块链之一。利益相关的 petko 通过这条推特阐述了自己的观点。
petko 的论点是如果你们当中某一方不相信另一方人不会卷款跑路,那就不可能去贿赂他们(只有你相信他们不会收钱不办事,你才愿意去贿赂他们)。
但是,区块链智能合约系统的设计目的就是实现免信任合约,包括贿赂。
petko 的第二个观点和 Josh 的观点相同。
Lior Yaffe
Lior Yaffe 是一位优秀的开发者,领导了 NXT、Ardor 以及 Ignis 的开发工作。
关于贿赂软分叉攻击(bribery soft fork attacks)为何不可能发生,他通过这条推特表达了自己的观点:https://twitter.com/lioryaffe/status/1192320643511017473?s=20
根据 Lior 的观点,这种攻击是 “荒谬的”,实际上永远不可能发生。为了阐明在这个问题上的立场,他举出了 “NoS” 攻击的例子。
我假定他所谈论的 “NoS” 就是无抵押攻击(nothing-at-stake-attack),一个早在 2014 年 11 月就已经解决了的问题:https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/。这让我觉得 Lior 至少从 2014 年开始就没有关注过 PoS 领域的研究了。我觉得这也说得通,因为 NXT 就是 2013 年上线的,并且是基于我们 2013 年对 PoS 的理解。
我并不明白 Lior 想要表达什么观点,也不清楚他是否真的阅读过他所评论的论文。我怀疑 Lior 只是想发出 PoS 很好的信号,实际上对从中学到什么或教育我们什么东西并不感兴趣。
Veil
关于为什么贿赂软分叉攻击无法破坏他们的系统,Veil 的观点如下:我们可以加入隐私特性,通过隐藏验证者身份来让攻击者无法得知该贿赂谁。
如果用户想保持隐私,环签名方案的效果不错。
这里的问题在于:区块生产者会有意暴露数据从而破坏隐私,因为只有这样他们才能收受贿赂。也许你会认为,有可能发明一个复杂的加密机制,这样即便你愿意也无法暴露自己的投票结果。但我有一个强有力的论点来说明这套机制是不可能的。
共识机制的一个理想特性是不会因为某个参与者的掉线而停止共识。因为这意味着无论我是否参与创建下一个区块,都应该有能力去计算下一个共识状态。这意味着区块创造者可以利用一个区块内交易的任何子集来重新计算下一个共识状态。
通过比较包含可用交易各个子集的结果,他们最终可以得知,每一笔交易会如何影响共识状态。
有权访问所有私钥和用以产生所有加密选票的熵的攻击者就一定可以重新追踪每张加密选票的生产过程。
Maximilian Roszko
他是通过这个电报组和我交流的:https://t.me/cryptocodereviews
他的第一个论点是贿赂是很难协调的。
但这是一个可解决的用户体验问题。
我们必须假设用户想拥有更多的价值而非更少。计算不同策略的预期收益,是一个数学问题。因此计算用户行为(采取什么策略)也是个数学问题。这也意味着安全是个数学问题。
他的第二个论点是:”有一个非常简单的办法来抵御贿赂攻击,那就是反贿赂攻击,我比你贿赂的数量多一点点,从而软分叉协议,让你的资金都归我。借此,我既捍卫了这个网络,又毫无损失,事实上我甚至可以从中小赚一笔······“ 捍卫者可以试图反贿赂,因此这个系统退化成了一个谁出钱多谁就赢的游戏,这个模式注定失败。
如果谁愿意给的钱多谁就拥有完全的控制权,而完全的控制权又让你可以制造出更多代币给自己,那么在这种情况下,网络就无法就一个明确的单一历史版本达成共识。
他还提出了第三和第四个论点,与 petko 和 Josh 的论点相同。
Alfred
Alfred 的观点是:如果一场软分叉贿赂攻击成功了,那么我们可以通过更慢的社会共识来回滚攻击区块,然后删除所有攻击者的质押金额。
Emin Gun Sirer
Emin 是 Avalabs 的创始人,他们启动了使用 Avalanche PoS 共识机制的密码学货币 Ava。
他对软分叉贿赂攻击的提议回应道:“实际上绝大多数验证者像矿工一样,都是很友好的,都愿意遵循协议的规定,而不会耍小聪明。想象攻击是很有兴趣的事,但事实上超过 90% 的参与者都是典型的诚实且头脑简单的人。”
然而,倘若可以假设 90% 的参与者都是诚实的,那么编写一个安全的 PoS 共识机制就很简单了。在密码工程学里面,这一假设毫无意义。
通常我们会对用户的动机作出如下假设:10% 的参与者是攻击者,他们愿意承担损失来损害协议,1% 的人是利他主义者,为了帮助协议,他们宁愿承担损失,剩下 89% 都是利己主义者,只做最有利于自己的事。
由混乱导致的成本是一个可解决的用户体验问题。一个有动机的攻击者可以创建足够多的工具来将混乱成本降低至 0。
比如说,攻击者可以利用预测市场作为测谎仪,这样我们就有了一个经济上的保证:攻击者给我们提供的软件确实有某种功能。即便质押者自己并不了解这个软件。如果了解一款软件的功能和从市场上查询股价一样简单,那你就不需要专业的技术了。
我们必须假定用户想拥有更多的价值而非更少,这意味着安全是一个计算问题。
Charles Hoskinson
Charles 是 Cardano 的创始人,Cardano 是一条采用 Ouroboros 的区块链。
他对软分叉贿赂攻击提议的回应是:“这类攻击不可能发生”。
结论
支持 PoS 的言论各不相同。许多人都认为 PoS 是一个安全的共识机制,可以抵抗贿赂软分叉攻击,但他们对此都有不同的理由,然而没有一个理由可以让我信服。
原文链接:
https://github.com/zack-bitcoin/amoveo-docs/blob/master/other_blockchains/the_defence_of_pos.md
作者: zack-bitcoin
翻译&校对:曾汨&阿剑