值得信赖的区块链资讯!
比特币的重复交易:一个风险极小的有趣 Bug
原文来源:BitMEX Research
编译:BlockBeats
在比特币区块链中存在两组完全相同的交易,一组交易「夹住」了另一组交易,它们都发生在 2010 年 11 月中旬。重复交易可能会导致混乱,比特币开发者多年来一直通过各种方式与之作斗争。这个问题仍未 100% 解决,下一个潜在的重复交易可能会在 2046 年出现。尽管与重复交易相关的风险现在已经很小,但这是一个值得思考的有趣怪异 bug。

概述
一个正常的比特币交易通过引用前一笔交易的交易 ID(TXID) 来使用至少一个前一笔交易的输出。这些未花费的输出只能被花费一次,如果它们可以被花费两次,你就可以对比特币进行双重支付,使比特币变得毫无价值。然而,在比特币中实际上恰好存在两组完全相同的交易。这种情况之所以可能发生,是因为 coinbase 交易没有任何交易输入,而是有新生成的币。因此,两个不同的 coinbase 交易有可能发送相同数量到相同地址,并以完全相同的方式构建,使它们完全相同。由于这些交易是相同的,TXID 也相匹配,因为 TXID 是交易数据的哈希摘要。TXID 被复制的唯一其他方式,是哈希碰撞,对于加密安全的哈希函数来说,这被认为是不太可能且不可实现的。像 SHA256 这样的哈希碰撞在比特币或其他任何地方都从未发生过。
这两组重复交易都发生在相近的时间内,在 2010 年 11 月 14 日 08:37 UTC 至 2010 年 11 月 15 日 00:38 UTC 之间,跨度约 16 小时。第一组重复交易被夹在第二组之间。我们将 d5d2….8599 归类为第一个重复交易,因为它首先成为复制品,尽管奇怪的是,它在区块链上首次出现是在另一个重复交易 e3bf….b468 之后。
重复交易详情
在下面的图片中,可以看到来自 mempool.space 区块浏览器的两个截图,显示了第一个重复交易在两个不同区块中重复出现的情况。


有趣的是,当在网络浏览器中输入相关网址时,mempool.space 区块浏览器在 d5d2….8599 的情况下默认显示较早的区块,而在 e3bf….b468 的情况下默认显示较晚的区块。Blockstream.info 和 Btcscan.org 与 mempool.space 有相同的行为。另一方面,根据我们的基本测试,Blockchain.com 和 Blockchair.com 的行为方式不同,当在浏览器中输入 URL 时,总是显示重复交易的最新版本。
在相关的四个区块中,只有一个区块(区块 91,812)包含了其他交易。这笔交易将 1 BTC 和 19 BTC 的输出合并成了一个 20 BTC 的输出。
这些输出可以被花费吗?
由于存在两组相同的 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 交易,而是「正常」交易。幸运的是,这种情况从未发生过。
重复交易的问题
重复交易显然是不好的。它们会给钱包和区块探索者带来混乱,也会让人不清楚比特币的来源。它还会带来许多攻击和漏洞。例如,你可以用两笔重复的交易支付某人两次。然后,当交易方决定尝试使用这笔资金时,他们可能会发现只有一半的资金可以收回。例如,这可以是对交易平台的攻击,试图使其破产,而攻击者却没有任何损失,因为他们可以在存款后立即提取资金。
禁止使用重复 TXID 的交易
为了缓解重复交易问题,2012 年 2 月,比特币开发者 Pieter Wuille 提出了 BIP30 软叉方案,禁止使用重复 TXID 进行交易,除非前一个 TXID 已被花费。该软叉适用于 2012 年 3 月 15 日之后的所有区块。
2012 年 9 月,比特币开发者 Greg Maxwell 修改了这一规则,使 BIP30 检查适用于所有区块,而不仅仅是 2012 年 3 月 15 日之后的区块。本文前面提到的两个重复交易除外。这修复了一些 DOS 漏洞。从技术上讲,这又是一次软叉,尽管规则变更只适用于过去 6 个月以上的区块,因此它不存在与正常协议规则变更相关的任何风险。
这种 BIP30 检查的计算成本很高。节点需要检查新区块中的所有交易输出,并检查这些输出端点是否已存在于 UTXO 中。这可能就是 Wuille 只对未使用的输出进行检查的原因,如果对所有输出都进行检查,计算成本会更高,而且无法进行剪枝。
BIP34
2012 年 7 月,比特币开发者加文-安德森(Gavin Andresen)提出了 BIP34 软分叉方案,并于 2013 年 3 月激活。这一协议变更要求 coinbase 交易包含区块高度,这也使得区块版本管理成为可能。区块高度被添加为币基交易脚本 Sig 的第一项。coinbase scriptSig 中的第一个字节是区块高度数字所使用的字节数,接下来的字节就是区块高度数字本身。对于第一个 c160 年(223 /(每天 144 个区块 * 每年 365 天)),第一个字节应为 0×03。这就是为什么如今的 coinbase ScriptSig(HEX)总是以 03 开头。这次软分叉似乎彻底解决了重复交易问题,现在所有交易都应该是唯一的。
由于已经采用了 BIP34,2015 年 11 月,比特币开发者亚历克斯-莫科斯(Alex Morcos)向比特币核心软件仓库添加了一个拉取请求,这一更改意味着节点将停止进行 BIP30 检查。毕竟,既然 BIP34 修正了这个问题,那么这种昂贵的检查就不再有必要了。虽然当时还不知道,但从技术上讲,这是为未来一些非常罕见的区块进行的硬分叉。现在看来,潜在的硬分叉并不重要,因为几乎没有人在运行 2015 年 11 月之前的节点软件。在 forkmonitor.info,我们运行的是 2015 年 10 月发布的 Bitcoin Core 0.10.3。因此,这是一个硬分叉前的规则,客户端仍在进行昂贵的 BIP30 检查。
区块,983,702 问题
事实证明,在 BIP34 激活之前的区块中有一些 coinbase 交易,当时使用的 scriptSigs 的第一个字节恰好与未来有效的区块高度相匹配。因此,虽然 BIP34 确实在几乎所有情况下都修复了这个问题,但它并不是一个完全的 100% 修复。2018 年,比特币开发者约翰-纽贝里(John Newbery)打印出了这些潜在重复的完整列表,如下表所示。


*注:这些区块已在 2012 年和 2017 年产生 Coinbase 交易并非重复。209 921 个区块(距离第一次减半仅差 79 个区块)不可能是重复的,因为 BIP30 在此期间得到了执行。
来源:https://gist.github.com/jnewbery/df0a98f3d2fea52e487001bf2b9ef1fd
按年份分列的潜在重复 Coinbase 交易数量

来源:https://gist.github.com/jnewbery/df0a98f3d2fea52e487001bf2b9ef1fd
因此,下一个可能出现重复交易的区块是 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 年比特币的价格会是多少,但这种攻击的成本也可能高得吓人。因此,这个问题可能不是比特币的主要风险,但仍然令人担忧。
自 2017 年 SegWit 升级以来,Coinbase 交易也可以包含对一个区块中所有交易的承诺。这些 BIP34 之前的区块并不包含见证承诺。因此,要产生一个重复的 Coinbase 交易,矿工需要从区块中排除任何 SegWit 输出赎回交易,这进一步增加了攻击的机会成本,因为区块可能无法包含许多其他支付费用的交易。
结论
考虑到复制交易的难度和成本,以及利用它的机会非常罕见,这个复制交易漏洞并不像是比特币的一个主要安全问题。不过,考虑到所涉及的时间尺度和重复交易的新颖性,想想还是挺有意思的。尽管如此,多年来开发人员还是在这个问题上花费了大量时间,2046 年这个日期在一些开发人员心中可能是修复这个问题的最后期限。修复这个错误的方法有很多,可能需要软叉。一种可能的修复方法是强制执行 SegWit 承诺。
比推快讯
更多 >>- 数据:多个代币出现冲高回落,DUSK 跌超 12%
- 某巨鲸以 3 倍杠杆做空 ASTER,价值约 5294 万美元
- 数据:某投资者在 HyperLiquid 上做空价值 2,500 万美元的 ASTER
- 赵长鹏回应“ASTER 短时大涨”:本想趁低价多买一些
- CZ 回应以约 0.9 美元均价购买 ASTER:不是很确定
- CZ:在 8 年前 BNB TGE 首月买入部分 BNB,并且一直持有至今
- CZ:今日已买入 ASTER
- Vitalik:自动驾驶汽车系统应开源且具备可验证性
- 美财长贝森特:部分经济部门陷入衰退
- 贝森特:如果通胀下降,美联储应降息
- 美国法院将于 11 月 4 日听取 SBF 重审动议的辩论
- Monad:距空投申领期结束已不足 24 小时
- 胜率 100%巨鲸的 SOL 挂单成交 23,871.83 枚,约 439 万美元
- CryptoQuant CEO:近期从现货交易所流入期货交易所的比特币数量已大幅下降
- 5000 万美元回购 ETHFI提案目前支持率达 100%
- 数据:过去 24 小时全网爆仓 1.24 亿美元,多单爆仓 6,966.83 万美元,空单爆仓 5,424.79 万美元
- Dash:本月价格表现较好并非一蹴而就,因前期强化基本面所推动
- Polymarket 上押注CZ 今年回归 Binance概率降至 12%
- Michael Saylor 再次发布比特币 Tracker 信息,下周或将披露增持数据
- Bitwise Solana 质押 ETFBSOL本周净流入 4.17 亿美元
- Eigen 基金会:主财库地址 EIGEN 代币转出系用于生态发展和运营活动,与团队代币解锁或出售无关
- Cathie Wood 旗下 ARKK 披露前 15 大持仓,含 Coinbase、Circle 等多家加密相关公司
- BNB Chain:opBNB 测试网的 Fourier 硬分叉即将上线
- 某鲸鱼向币安充值 1,100 万枚 DOGE,价值 205 万美元
- HEALTH 完成 250 万美元种子轮融资,Gemhead Capital 与 Castrum Capital 共同领投
- 胜率 100%巨鲸开启 HYPE 的 10 倍杠杆多单,最新持仓 70775.48 枚
- 伊朗已成为世界第四大加密货币挖矿中心
- 分析师:3120 美元是 ETH 的关键需求区,262 万枚 ETH 被囤积
- 世界黄金协会:2025 年国际金价已 50 次创新高,Q3 需求刷新历史纪录
- 10x Research:市场对美联储未来降息预期趋于谨慎,风险资产需求受到抑制
- Capybobo 完成 TGE 快照,空投季专属活动即将开启
- Deribit 亚太商务负责人:目前市场流动性对比“10.11 崩盘”前还差 15%-20%
- PlanB:比特币月度 RSI 为 66,走势稳健向上
- Project Hunt:去中心化人工智能运行库 Gradient Network 为过去 7 天新增 Top 人物关注者最多的项目
- 币安:今日 19 时可领取 Alpha 空投,门槛 235 个 Alpha 积分
- 某鲸鱼从币安提取 580 万枚 ASTER,价值 558 万美元
- 三个钱包过去 1 小时购买 226 万枚 GHOST
- 蓝筹NFT 地板价普跌,Moonbirds 7 日跌超 21%
- Pump.fun 已累计回购价值超 1.6 亿美元 PUMP 代币
- 乐昌法院审结涉虚拟币“杀洋盘”诈骗案:勿信骗外国人不犯法谬论
- Coinbase CEO:x402 将成为新互联网的重要组成部分
- 数据:Hyperliquid 平台鲸鱼当前持仓 67.08 亿美元,多空持仓比为 0.83
- FTX 债权人代表:债权人的实际加密资产回收率在 9%至 46%之间
- 马斯克预测:五年后传统手机和 APP 将消失,人类所消费的大多数内
- 萨尔瓦多近 7 日共增持 6 枚 BTC,总持仓 6,367.18 枚
- Sam Altman 发推嘲讽特斯拉交付缓慢,无法退款,马斯克反驳称早已快速退款
- DASH 市值重返 10 亿美元上方,创年内新高
- 以太坊财库公司 FG Nexus 宣布在德意志交易所上市
- 欧洲央行行长:已决定推进数字欧元准备工作的最后阶段
- 币安将调整多个合约杠杆及保证金层级
比推 APP



