为什么添加自动重放保护
作者: Shammah Chancellor
大家好,我的名字是沙玛 (Shammah Chancellor)。在比特币现金(以下均简称为BCH)社区,我化名为micropresident。之前,我是比特币ABC的一名开发者。
最近,自动重放保护(又名:毒药👻 一句玩笑话)备具争议;一部分人试图删除该功能。当初是我为这个协议规则编写了规范;也因为这个原因,不同的BCH用户请我为他们解释这一(自动重放保护)功能。但愿,这篇文章能够对更多的受众有帮助。
“自动重放保护”对BCH的未来至关重要。当初,是交易所一致要求实现的功能。如果没有这个功能,交易所、钱包和其他开发者想要进行常规的协议升级几乎是不可能的,因为这(对交易所、钱包和其他开发者)涉及超额的工作量。
这是因为,在升级期间,如果有少数个体不同意新的配套规则,那么他们可能继续使用旧的配套规则来挖矿。然而,这样产生的区块在新客户端下将无效,也不能被运行新节点软件的交易所探测到。这种情况发生时,在大多数情况下,交易将继续同时在升级的链和旧链上生效。
不道德的人可以重新广播那些在两条链上都有效的交易,从而窃取终端用户和交易所的钱财。例如,在以太坊经典分叉期间,一些人就向仅支持以太坊的交易所充币,提币,然后在以太坊经典链上重放交易,以实现从交易所获取“免费”ETC。
现在,如果这种情况发生,并且小链变得有价值,那么交易所将产生资金损失。分叉时,交易所将不能为用户账号分配资产。这造成的结果就是,当协议升级发生时,没有任何重放保护,交易所就必须停止那币种的充提币功能。
为了重启交易,交易所必须在开放提币前,确保用户资产已“分割”(意思是:资产在每一条新链上都是独一无二的)。这种操作其实是个复杂的过程,并且由于涉及的步骤而无法完全实现自动化。
因此,ABC团队被许多交易所告知:如果没有易于实现的重放保护,他们将不再支持协议升级。结果是执行自动重放保护。
在节点上执行重放保护,而不是由交易所间接执行的基本前提是:当进行签名事务时,要包含某些数据来指示交易在哪条链上有效。最初在2017年8月从BTC中分叉,是通过引入一个称之为“分叉标识符”的签名区域而实现的。自2017年8月,BCH就使用“0”作为分叉标识符。
通过为每一次协议升级持续增加,来满足交易所的需求是可实现的。然而,执行类似的重放保护也需要更新每一个钱包,以包含新的分叉标识符。这给交易所、矿工以及钱包用户都造成了负担。
第一次分叉期间,这种操作引发的成本是可接受的,因为当时我们在发行一种全新的密码货币。但是,常规升级时这么做会给(在一定时间内,忘记或没有成功升级钱包)终端用户造成严重损失。
最终,我们想到的更佳解决方案是:使旧的比特币节点每6个月更改一次分叉标识符。 因此,未升级的软件现在将使用新的分叉标识符,以确保交易不会同时在两条链上有效。 这可以防止通过重放攻击造成的资金损失。 这称为“自动重放保护”。
值得注意的是,确实需要每6个月一次的最小化升级-即使除了重置分叉标识符之外,没有其他任何更改。 但这是可以接受的情况,其确保了软件将来可以升级。 没有确定的升级时间表,是BTC陷入软叉升级和协议僵化的原因。
此外,由于每个人都必须每6个月升级一次节点,因此参与BCH网络不会感到自满。 而且由于无法自大,这意味着用户有可能(假设他们可以达成共识)切换到新的节点软件。
因此,总而言之,自动重播保护对于确保通过以下方式继续进行协议升级很重要:
阻止交易所的资金损失
在协议升级期间,让交易所感到安心。
确保了每6个月,用户有意愿继续运行*相同的节点软件,或在需要时,运行新的软件。
似乎是,那些将这个功能称为备受争议的人,压根不明白其用意,而成为切斯特顿篱笆的受害者。
译者注:为方便理解“切斯顿篱笆”,现举一简化例子:道路上立着一道篱笆,改革者说:“我看不出这篱笆有什么用,让我们把它给拆了。”而更聪明的改革者则会说:“既然你不知道这篱笆的用处,我就一定不能让你把它拆掉。回去再好好想想。如果你回来的时候可以告诉我这篱笆的用处,我也许会允许你销毁它。”
尽管在过去,一些个体(例如nChain和BSV)试图在没有用户自愿参与的权力交接情况下,强加给用户不同的比特币品牌。 我希望类似情况不再发生。
备注:有人向我指出,“自动重放保护(ARP)无关紧要,因为没有其他任何一个节点使用它,而这些节点还存在共识中。”这种说法成立的原因是,这些节点根本没有被矿工和交易所广泛使用---而且如果它们与共识不相容,那它们根本没有影响力。记住,这(ARP)是用于商业的功能,而且它仅在有意分叉的情况下至关重要。
再添加一点:在我看来,删除它的部分论点是它“无关紧要”,或者它“无用”。 如果真是这样,那为什么还要费工夫删除它呢? 如果不是这种情况,并且将其删除,那么原始声明似乎是不诚实的……
关于沙玛(Shammah Chancellor)个人简介
沙玛是一位开源软件开发者和创业者。他曾为Bitcoin ABC做出贡献,并曾在Cloudflare工作。 他目前的工作重心是Stamp。 Stamp 是一款新的BCH钱包,其利用Layer-2技术在BCH上实现Web3支持。 可通过推特@micropresident或领英https://www.linkedin.com/in/schancellor/,联系沙玛。
Originally posted at: https://read.cash/@micropresident/why-automatic-replay-protection-exists-efdf9e51. Reposted and translated with permission.