主页 > imtoken苹果版下载 > 比特币拆分bsv 防止 BCH 硬分叉-1 后的重播攻击

比特币拆分bsv 防止 BCH 硬分叉-1 后的重播攻击

imtoken苹果版下载 2023-05-12 07:17:34

产生新加密货币的硬分叉为加密货币交易所运营商带来了独特的机遇和挑战。 在最近的比特币现金硬分叉之后,Poloniex 面临的挑战之一是保护我们的客户免受重放攻击。 由于 SV 链背后的开发团队选择在分叉后近两周实施重放保护,Poloniex 工程师的任务是设计一个解决方案。

社区中的许多人对 Poloniex 如何应对这一特殊挑战感到好奇,因此我们决定提供一些见解。

blogimg马球重播

什么是重放攻击?

虽然顾名思义是某种恶意行为,但重放攻击可能是由于硬分叉后经历的混乱节点而发生的。 这种混淆可能导致代币持有者无意中在其中一条新链上发送交易,从而导致资金损失。

在硬分叉之前,比特币现金节点正在监听新的有效比特币现金交易。 当节点听到新交易时,它会执行数学测试以验证发件人是资金的真正所有者。 如果这个数学测试告诉一个节点交易是有效的,它将通知网络中的其他节点,并且交易最终将被添加到区块链中。

硬分叉后,部分节点运营商升级到比特币ABC链,部分节点运营商升级到SV链。 当一条链上的节点听到来自另一条链的听起来有效的交易时,就会发生重播攻击比特币拆分bsv,因此它将其传递给网络的其余部分。 例如,Alice 向 Bob 发送了 1 个比特币 ABC,结果无意中也向 Bob 发送了 1 个比特币 SV。 她的交易在第二条链上“重播”。

为什么?

要了解为什么会发生这种情况,我们必须深入了解比特币现金交易。

如果爱丽丝的钱包里有 15 个 BCH,她就没有 15 个单独的 BCH——她拥有多个 BCH 块,称为输出,这些块加起来可以达到 15 个 BCH。 例如,Alice 的 15 BCH 可能是两个输出的组合:10 BCH 和 5 BCH。 在区块链分裂之后,在比特币现金硬分叉之后,爱丽丝现在在两个不同的区块链上有相同的输出:10 BCH-ABC,5 BCH-ABC 和 10 BCH-SV,5 BCH-SV。 所有这些输出都可以使用相同的私钥移动。

为简单起见,假设 Alice 想将她的 5 BCH-ABC 发送给 Bob(尽管交易通常涉及多个输出的组合)。 使用她的私钥,她签署一条消息,声明将此 BCH-ABC 特定输出发送给 Bob。 此时,BCH-ABC 节点可以进行我们前面提到的数学测试,证明 Alice 拥有发送这笔交易的私钥。 比特币 SV 节点“窃听”此交易存在问题。 比特币 SV 节点可以执行相同的数学测试并得出结论,爱丽丝使用她的私钥向鲍勃发送了 5 BCHSV 的特定输出。

Alice 的数字签名在两条链上都有效。 尽管她只打算向 Bob 发送 5 BCH-ABC,但她最终也向他发送了 5 BCH SV 的匹配输出。

如何防止重放攻击

如您所见,重放攻击可能会在硬分叉后立即发生,因为每个人在两条不同的链上都有相同的输出。 在一条链上移动输出的数字签名可以在另一条链上移动匹配的输出。

然而,由于两条链在分叉后都是独立开采的,因此通过新的 coinbase 奖励引入了新的独特输出。 ABC 链上的 Coinbase 奖励由 SV 链上不存在的输出组成,反之亦然。 这些分叉后输出是防止重放攻击的关键。

假设吉米是比特币现金矿工。 如果在分叉之后比特币拆分bsv,Jimmy 开始挖掘 BCH-ABC 并为新创建的 BCH-ABC 获得 coinbase 奖励,这些将是 SV 链上不存在的输出。 如果他将这 5 个 BCH-ABC 发送给 Alice,她就可以将它们发送给 Bob 而不必担心重放攻击。 如果比特币 SV 节点无意中听到了这笔交易,它将无法识别爱丽丝试图发送的输出,因此比特币 SV 不会移动。

使用分叉后输出来防止重放攻击

分叉后,Poloniex 立即开始收集一小组分叉后输出或 UXTO。 如果 Alice 是 Poloniex 客户,并要求提取 5 个 BCH-ABC,我们将混合至少 1 个分叉后输出。 如果 BCH-SV 节点无意中听到我们的交易,包括分叉后输出将阻止 SV 节点识别交易。 数字签名会将指定输出移动到 ABC 链上,但不会移动到 SV 链上,因为并非所有这些特定输出都存在于 SV 链上。

通过采用包括 1 个分叉后输出和所有 BCH-ABC 和 BCH-SV 提款的方法,Poloniex 能够运营交易所及其客户,完全有信心他们不会因重放攻击而遭受资金损失。

康纳登普西的文章

感谢 March Boorstin 领导 BCH 硬分叉的工程设计,以及 Anders Brownworth 为本文提供的技术见解。