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