硬分叉,软分叉,违约和强制

月亮🌛   |     |   1234 次阅读

硬分叉、软分叉、默认和强制

硬分叉和软分叉哪个应该成为的协议升级机制的首选是区块链空间中的一个重要争论。两者之间的基本区别是软分叉通过严格减少有效交易的集合来改变协议的规则,以达到使遵循旧规则的节点留在新链上的目的(假定大多数矿工/验证者执行分叉),而硬分叉使先前无效的交易和区块变得有效,因此客户必须升级他们的客户端才能停留在硬分叉后的区块链上。硬分叉又分为两种子类型:严格扩展硬分叉 会严格地扩展有效交易的集合,因此有效的旧规则是相对于新规则的软分叉;以及双向硬分叉,它的两个规则集在两个方向都不兼容。

下图可以说明分叉类型:

图中左侧为双向硬分叉,右侧从大到小为:严格扩展硬分叉,原协议,软分叉

以下是一些人们常常提起的软分叉和硬分叉的优点。

  • 硬分叉使开发人员在进行协议升级时更加灵活,因为他们不必小心确保新规则。
  • 软分叉对用户更方便,因为用户不需要升级就可以留在区块链上。
  • 软分叉不太可能导致区块链分裂。
  • 软分叉只需要矿工/验证者的同意(即使用户仍然使用旧规则,但假如节点使用新规则,则只有在新规则下有效的东西会录入链中); 硬分叉需要用户选择同意。

除此之外,对硬分叉的一个主要批评是硬份叉是“强制的”。这里所指的强制不是物理力量,而是通过网络效应的强制。也就是说,如果网络将规则从A更改为B,则即使你个人喜欢A,如果大多数其他用户喜欢B并切换到B,那么为了启用与其他人一样的网络你必须切换到B,尽管你个人不同意该更改。

硬分叉的支持者通常被嘲笑为试图实现对网络的“恶意收买”,并且“强迫”用户与他们一起。此外,区块链分裂的风险使硬叉方案贴上了“不安全”的标签。

1

我的个人观点是,这些批评是错误的,并且在许多情况下是本末倒置的。这个观点不针对以太坊,或比特币,或任何其他区块链; 它源于这些系统的普遍性质,适用于它们中的任何一个。此外,下面的论点只适用于有争议的协议变化,即当至少有一个社区的组成部分(矿工/验证者和用户)的大部分成员不赞成该更改; 如果协议更改是不具有争议性的,那么更改通常可以安全地完成,不管分叉是以哪种方式实现的。

首先,让我们讨论强制的问题。硬分叉和软分叉都可能以某些用户可能不喜欢的方式改变协议; 如果改变得不到100%的支持,那么任何协议更改都面临强制的问题。此外,几乎不可避免的是,在任何情况下,至少一些反对协议更改的人因为更加重视网络效应希望与大多人成员保持一致,从而放弃自己喜好的协议规则。 因此,从网络效应的意义上,两种类型的分叉都是强制的。

然而,硬分叉和软分叉之间存在一个本质区别:硬分叉给用户选择的机会,而软分叉不允许用户“选择”。 用户想要加入硬分叉链就得亲自安装实现分叉规则的软件包,那些对规则更改的不认同超过他们重视网络效应的用户群理论上可以简单地留在旧链上—实际上,这样的事件已经发生。

以上描述同等适用于严格扩展硬分叉和双向硬分叉。然而,软分叉时,分叉一旦成功分叉前的那条区块链就不复存在。因此,软叉显然在体制上偏向强制接受而不是脱离,硬分叉在这一点上是相反的。我自己的道德观点导致我支持脱离而不是强制,虽然其他人的观点可能不同(最常见的论点是,网络效应真的非常重要,“一个制霸全场的币”的存在是至关重要的,虽然也存在更温和的版本)。

除却上述讨论,如果非要我猜测软分叉通常被认为比硬分叉“更不强制”的原因,我会说,这是因为一个硬分叉感觉上像是在“强制”用户安装软件更新,而软分叉用户没有“必要”做任何事情。然而,这种直觉具有误导性的:重要的不是个人用户是否必须执行简单的官僚步骤点击“下载”按钮,而是用户是否需要被迫接受他们不愿意接受的协议规则变更。以这个标准来衡量,软硬分叉最终带有强制性,硬分叉反而在维护用户自由度方面稍微好一些。

2

现在,让我们来看看极具争议的分叉,特别是那些矿工/验证者偏好和用户偏好相冲突的分叉。这里有三种情况:(i)双向硬分叉,(ii)严格扩展硬分叉,以及(iii)所谓的“用户激活软分叉”(UASF)。第四类是矿工在没有用户同意的情况下激活软分叉; 我们将在后面讨论。

首先,双向硬分叉。在最好的情况下,情况很简单。两种币在市场上交易,交易者决定两者的相对价值。从ETC/ ETH案例中,我们有大量证据表明矿工极有可能简单的根据币的价格的比率分配算力,以最大化他们的利润,不管他们的意识形态为何。

即使一些矿工的意识形态倾向于一方或另一方,极有可能会存在足够的其他矿工愿意利用价格与算力之间的不匹配来套利,从而使两者一致。假设一些矿工试图形成一个集团不去在某条链上挖矿,套利空间会形成激励让人们不去这么做。

这里有两个边界情况。第一个可能性是,挖矿价值因为价格的下降而下降,但难度由于低效的难度调整算法没有下降到相匹配的水平,这时采矿变得无利可图,没有矿工会愿意在亏损的情况下继续推动整链向前直到难度恢复平衡。这不是以太坊的情况,但可能是比特币的情况。因此,少数群体链很可能永远不会启动。注意,这种情况是好是坏取决于你对强制与脱离的看法; 你可以从我上面写的推断我个人认为这种对少数群体链恶意的难度调整算法是不好的。

第二种情况是,如果差异非常大,大链可以51%攻击较小的链。即使在ETH / ETC分流比为10:1的情况下,也没有发生; 所以它当然不是一定要发生的。然而,如果大链上的矿工喜欢强制而不喜欢脱离,并以他们的偏好采取行动,那么51%攻击的情况总是可能的。

3

接下来,让我们看看严格扩展硬分叉。SEHF(严格扩展硬分叉的缩写)具有分叉前的区块链在分叉后的规则下依然有效的属性,因此如果分叉链比非分叉链的价格更低,则它将具有比非分叉链更低的算力,因此非分叉链将最终被原始链的客户端规则和分叉客户端规则接受为最长链,而分叉链“将被湮没”。

这样的分叉具有天生的劣势,因为分叉链被湮没的可能性将反应在价格中,促使价格降低,使得链更可能湮没... 这个论点在我看来十分有力,因此任何具有争议性的分叉应该进行双向硬分叉,而不是严格扩展。

Bitcoin Unlimited开发人员建议在发生分叉后通过双向手动硬分叉来处理这个问题,但更好的选择是通过内置的双向性; 例如,比特币的例子中,可以添加规则以禁止一些未使用的操作码,然后在非分叉链上进行包含该操作码的交易,使得在分叉规则下,非分叉链会从那时起被认为永远无效。对于以太坊,由于状态计算运作的各种细节,几乎所有硬分叉都是自动双向的。由于结构上的区别,其他区块链可能具有不同的属性。

4

上面提到的最后一种类型的分叉是用户激活的软分叉。在UASF(用户激活软分叉的缩写)中,用户在不获得矿工的共识的前提下转换到软分叉规则; 他们期待矿工会因为经济利益自动同意规则的变更。如果许多用户不执行UASF,那么币会分裂,这将导致与严格扩展的硬分叉相同的情况,除了 - 这是概念的真正聪明和迂回的部分 - 在严格扩展的硬叉中强烈地不利于叉链的“湮灭风险”在此强烈地偏向UASF中的叉链。即使UASF提供选择,它利用经济不对称,使分叉更容易成功(虽然这种倾向不是绝对的;如果UASF决定不受欢迎,那么它不会成功,而会将导致区块链分裂)。

然而,UASFs是一个危险的。例如,假设项目的开发人员想要创建一个UASF补丁,该补丁将以前接受所有交易的未使用的操作码转换为只接受符合一些新规则的交易的操作码,即便政治或技术上有争议或是矿工不喜欢。矿工有一个聪明和狡猾的方式来反击:他们可以单方面实施一个矿工激活软分叉,使所有使用由软分叉创建的功能的交易失败。

假设我们有三个规则集合:

  • 原始规则,其中操作码X总是有效的。
  • 其中操作码X仅当交易的其余部分符合新规则时才有效的规则。
  • 操作码X总是无效的规则。

注意,(2)是关于(1)的软分叉,(3)是关于(2)的软分叉。假设,存在有利于(3)的强大的经济压力,软分叉就不能实现其目标。

结论是这样的。软分叉是一个危险的游戏,如果存在争议引起矿工开始反击,情况会变得更加危险。严格扩展硬分叉也是一个危险的游戏。矿工激活的软分叉是强制的; 用户激活的软分叉不那么强制,但由于经济压力仍然是强制的,且它们也具有自己的危险。如果你真的想实施一个有争议的变更,并认为这样做的高社会成本是值得的,那就实施一个干净的双向硬分叉,花时间添加一些适当的重放保护,让市场来选择。


参考链接: http://vitalik.ca/general/2017/03/14/forks_and_markets.html
原文作者: Vitalik Buterin
翻译作者: 牛仔裤没皮带

 
0 人喜欢