这张图是我这周在康奈尔大学做演讲中制作的幻灯片:
如果有一张图表可以抓住Casper的激励哲学的核心原理,那可能就是如此。因此,有必要作进一步的解释。
该图显示了三个选区——少数、多数和协议(即用户),以及四个箭头代表可能的对抗行为:少数攻击协议,少数攻击多数,多数攻击协议和多数攻击少数。每个示例包括:
少数攻击协议— Finney攻击(由矿工对工作量证明区块链进行的攻击,其中矿工对双花未确认或可能是单一确认完成的交易)
少数派攻击多数派—羽毛分叉(工作证明链中的少数人试图恢复任何包含一些不良交易的块,但如果该区块得到两次确认则放弃)
多数攻击协议—传统的51%攻击
多数派攻击少数派— 51%审查制度攻击,即cartel拒绝接受来自cartel以外的矿工(或验证者)的任何封锁
Casper哲学的精髓是:对于所有四种攻击类型,我们都希望为攻击的受害者所遭受的伤害与攻击者所付出的代价之间的比例设定一个上限。在某种程度上,Casper中的每个设计决策都是基于这一原则。
这与通常的工作量证明激励学派有很大不同,因为在工作量证明视图中,最后两次攻击是毫无防备的。前两种攻击(Finney攻击和羽毛分叉)成本高昂,因为攻击者冒着他们的区块不纳入链中的风险,因此损失了收入。但是,如果攻击者占多数,那么攻击是无价的,因为攻击者始终可以保证他们的链将是主链。从长期来看,难度调整可确保了所有矿工的总收入无论如何都是完全相同,并且这进一步意味着,如果攻击导致一些受害者损失了收益,那么攻击者就会获利。
之所以会出现这种工作量证明,是因为传统的中本聪工作量证明会从根本上惩罚异议。如果您作为矿工制造了与共识一致的区块,您会得到奖励,如果您做出与共识不一致的区块,则会得到惩罚。(协议中没有惩罚;而是因为这样的事实:矿工会花费电力和资本来挖出区块,却得不到任何奖励)。
另一方面,Casper主要通过惩罚模棱两可的方式工作。如果您发送了两条相互冲突的信息,那么即使这些消息之一与共识一致,您也会受到非常严重的惩罚。因此,在发生最终恢复攻击时,导致恢复事件的人员将受到惩罚,而其他所有人将不会受到影响。大多数人只能以沉重的代价攻击协议,而大多数人不能造成少数人的损失。
当我们开始讨论另外两种攻击时,即更具挑战性的是活性故障和审查制度。活性故障是指大部分Casper验证器下线以阻止共识达成确定性;而审查错误是大多数Casper验证器拒绝接受某些交易或拒绝接受其他Casper验证器的共识消息的错误, 以剥夺他们的报酬。
这涉及到一个基本的二分法:扬声器/监听器故障对等。
假设B说他们没有收到A的消息,有两种可能的解释:(i) A没有发送消息;(ii) B假装没有听到消息。仅凭B提出的索赔的证据,无法判断这两种解释哪一种是正确的。与区块链协议激励的关系是这样的:如果您看到协议执行,其中70%的验证器消息包含在链中,而30%的消息没有包含在链中,并没有看到其他内容(这就是区块链所看到的),那么就无法判断问题是30%是离线状态还是70%处于审查状态。如果我们想让这两种攻击都变得昂贵,那么我们只能做一件事:惩罚双方。
惩罚双方会让任何一方“怨恨”另一方,如果他们是少数派则下线,如果他们是多数派则审查。然而,我们可以通过悲伤因素分析技术来确定这种悲伤的难易程度。
策略的悲伤因素本质上是受害者损失的金钱数量除以攻击者损失的金钱数量,而协议的悲伤因素是它所允许的最高悲伤因素。例如,如果一个协议允许我以1美元的成本让你损失3美元,那么悲伤系数是3。如果没有其他办法可以使别人损失金钱,则悲伤系数为零,如果你能让别人赔钱而不为自己付出代价(或让你自己受益),悲伤的因素是无限的。
通常,无论讲话人/听众二分法存在于何处,悲伤因素都不能全局地被大于1的任何值所限制。其理由很简单:任何一方都可能伤害另一方,所以如果A可以伤害B,那么B也可以伤害A,两者不能同时低于1。
我们可以考虑这些因素,例如,可以允许多数攻击者的悲伤系数为2,以换取少数攻击者的悲伤系数为0.5,这是少数攻击者更有可能的理由。
对于小规模的攻击,我们也可以允许悲伤系数为1,但对于大规模攻击,特别是强制进行链条拆分,其中在一条链的一侧受到惩罚,而另一条链的另一侧受到惩罚,相信市场会选择攻击者不喜欢的链条。因此,在这个框架内,在不同的关注点之间有很大的妥协和权衡的空间。
惩罚双方还有另一个好处:它可以确保如果协议受到损害,攻击者也会受到惩罚。这确保了无论攻击者是谁,他们都有动机避免攻击,这与协议造成的危害程度相称。然而,如果我们想限制协议的伤害与攻击者的代价相比,我们需要一个正式的方法来衡量对协议造成的伤害。
这引入了协议实用程序功能的概念,这个公式告诉我们协议运行状况,理想情况下应该从区块链内部中进行计算。在工作量证明的情况下,这可以是主链中所有已挖出区块的百分比。在Casper中,协议实用程序为零,是为了实现完美的执行,其中每个时期都已完成,并且从未发生安全故障,每个未完成的时期都受到了一定的惩罚,而每个安全故障都受到了非常大的惩罚。如果可以正式使用协议实用程序功能,则可以将故障的惩罚设置为尽可能接近因这些故障导致的协议实用程序的损失。
最初以WTFPL许可的形式发布为“危害三角”。