欢迎您访问广东某某机械环保科有限公司网站,公司主营某某机械、某某设备、某某模具等产品!
全国咨询热线: 400-123-4567

新闻资讯

哈希游戏| 哈希游戏平台| 哈希游戏APP

HAXIYOUXI-HAXIYOUXIPINGTAI-HAXIYOUXIAPP

哈希游戏- 哈希游戏平台- 官方网站比特币的重复交易:一个风险极小的有趣Bug

作者:小编2025-03-29 10:13:44

  哈希游戏- 哈希游戏平台- 哈希游戏官方网站

哈希游戏- 哈希游戏平台- 哈希游戏官方网站比特币的重复交易:一个风险极小的有趣Bug

  一个正常的比特币交易通过引用前一笔交易的交易ID(TXID)来使用至少一个前一笔交易的输出。这些未花费的输出只能被花费一次,如果它们可以被花费两次,你就可以对比特币进行双重支付,使比特币变得毫无价值。然而,在比特币中实际上恰好存在两组完全相同的交易。这种情况之所以可能发生,是因为coinbase交易没有任何交易输入,而是有新生成的币。因此,两个不同的coinbase交易有可能发送相同数量到相同地址,并以完全相同的方式构建,使它们完全相同。由于这些交易是相同的,TXID也相匹配,因为TXID是交易数据的哈希摘要。TXID被复制的唯一其他方式,是哈希碰撞,对于加密安全的哈希函数来说,这被认为是不太可能且不可实现的。像SHA256这样的哈希碰撞在比特币或其他任何地方都从未发生过。

  由于存在两组相同的TXID,这为后续交易创造了引用问题。每个重复交易的价值为50 BTC。因此,这些重复交易总共涉及4 x 50 BTC = 200 BTC,或者根据不同的理解方式,可能涉及2 x 50 BTC = a100 BTC。在某种程度上,有100 BTC实际上并不存在。截至今天,所有200 BTC都未被花费。据我们所知(我们可能在这里是错误的),如果有人拥有与这些输出相关联的私钥,他们可以花费这些比特币。然而,一旦被花费,UTXO将从数据库中删除,重复的50 BTC因此将无法花费并丢失,因此只有100 BTC可能被找回。至于如果这些币被花费,它们将来自哪个区块,是较早的还是最近的,这可能是未定义的或无法确定的。

  这个人本可以在创建重复交易之前花费所有比特币,然后创建重复输出,在未花费输出的数据库中创建新条目。这将意味着不仅有重复交易,还有可能有重复的已花费输出的重复交易。如果发生这种情况,当这些输出被花费时,将可能创建更多的重复交易,形成一种重复链。人们必须小心事件的顺序,总是在创建重复之前花费,否则比特币可能永远丢失。这些新的重复交易将不是coinbase交易,而是正常交易。幸运的是,这种情况从未发生过。

  2012 年 7 月,比特币开发者加文-安德森(Gavin Andresen)提出了 BIP34 软分叉方案,并于 2013 年 3 月激活。这一协议变更要求 coinbase 交易包含区块高度,这也使得区块版本管理成为可能。区块高度被添加为币基交易脚本Sig的第一项。coinbase scriptSig 中的第一个字节是区块高度数字所使用的字节数,接下来的字节就是区块高度数字本身。对于第一个 c160 年(223 /(每天 144 个区块 * 每年 365 天)),第一个字节应为 0x03。这就是为什么如今的 coinbase ScriptSig(HEX)总是以 03 开头。这次软分叉似乎彻底解决了重复交易问题,现在所有交易都应该是唯一的。

  由于已经采用了 BIP34,2015 年 11 月,比特币开发者亚历克斯-莫科斯(Alex Morcos)向比特币核心软件仓库添加了一个拉取请求,这一更改意味着节点将停止进行 BIP30 检查。毕竟,既然 BIP34 修正了这个问题,那么这种昂贵的检查就不再有必要了。虽然当时还不知道,但从技术上讲,这是为未来一些非常罕见的区块进行的硬分叉。现在看来,潜在的硬分叉并不重要,因为几乎没有人在运行 2015 年 11 月之前的节点软件。在o,我们运行的是2015年10月发布的Bitcoin Core 0.10.3。因此,这是一个硬分叉前的规则,客户端仍在进行昂贵的 BIP30 检查。

  因此,下一个可能出现重复交易的区块是 1,983,702,将于 2046 年 1 月左右产生。2012 年 1 月产生的 164,384 区块中的 Coinbase 交易向七个不同的输出地址发送了 170 BTC。因此,如果 2046 年的矿工想要进行这次攻击,他们不仅需要足够幸运地找到这个区块,还需要烧掉不到 170 BTC 的费用,总成本略高于 170 BTC,其中包括 0.09765625 BTC 区块补贴的机会成本。按照目前 88500 美元的比特币价格计算,这将花费超过 1500 万美元。至于 2012 年币库交易的七个地址归谁所有,目前还不得而知,密钥很有可能已经丢失。目前,该 Coinbase 交易的所有七个输出地址都已被使用,其中三个在同一笔交易中使用。我们认为这些资金可能与Pirate40 庞氏骗局有关,但这只是我们的推测。因此,这次攻击看起来不仅代价高昂,而且对攻击者来说几乎毫无用处。要在硬分叉中将 31 年前的 2015 年 11 月节点从网络中删除,这将是一笔不小的开支。

  下一个可能被复制的脆弱区块是 2012 年 3 月的 169985。这个 Coinbase 只花费了刚刚超过 50 BTC,远远低于 170 BTC。当然,50 BTC 是当时的补贴,而当这一Coinbase交易在 2078 年变得容易被重复时,补贴就会低得多。因此,要利用这一点,矿工将需要烧掉大约 50 BTC 的费用,而这些费用他们是拿不回来的,因为这些费用必须发送到 2012 年的旧产出中。谁也不知道 2078 年比特币的价格会是多少,但这种攻击的成本也可能高得吓人。因此,这个问题可能不是比特币的主要风险,但仍然令人担忧。