值得信赖的区块链资讯!
比特币的重复交易:一个风险极小的有趣 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 承诺。
比推快讯
更多 >>- TD Cowen:国会接近永久禁止美联储发行CBDC,利好稳定币
- Multicoin:下一波加密采用将由“互联网劳动力市场”驱动
- Aave CEO: DAO未死,但需进化
- 知情人士:腾讯秘密开发微信AI智能体,年内或对全用户开放
- 美元指数下跌 0.36%,收于 98.823
- BTC 突破 70000 USDT,24H 涨幅 1.6%
- 美元兑日元突破 158,日内涨幅达 0.22%
- 美资深参议员Tillis同意启动沃什的美联储主席提名程序
- 白宫宣称战争将在特朗普认为目标达成、伊朗投降时结束
- 知情人士:美政府要求以色列停止袭击伊朗能源设施
- 美 SEC 将深化与 CFTC 的协调,包括举行联席会议和进行公司审查
- 美能源部长声称美军护送油轮通过了霍尔木兹海峡,数分钟后删帖
- 美国情报机构:伊朗正采取措施在霍尔木兹海峡航道布雷
- 数据:730.34 枚 BTC 从 Coinbase 转出,价值约 5115 万美元
- 美国民主党议员将提出法案,明确禁止与战争、死亡相关的事件交易合约
- 美联储 3 月维持利率不变的概率升至 97.3%
- 美国称正在升级对伊朗的战争,削弱双方谈判的可能性
- 美股加密概念股普涨,CRCL 突破 120 美元
- 数据:59.2 枚 BTC 从 Hyperunit 转入 Wintermute,价值约 422 万美元
- AI 初创公司 AgentMail 完成 600 万美元种子轮融资,General Catalyst 领投
- Salesforce 计划筹资最多 250 亿美元用于股票回购
- 分析师:比特币网络活动处于降温阶段,短期链上动能有所减弱
- 美国 3 月 EIA 当年 WTI 原油均价预期 73.61 美元/桶,前值 53.42 美元/桶
- EIA 大幅上调美、布两油今年均价预期
- 分析:石油供应冲击担忧缓解,比特币与加密股齐涨,市场情绪回暖
- USDC Treasury 在 Solana 链上新铸造 5 亿枚 USDC
- 现货黄金日内涨超 100 美元,现报 5236.95 美元/盎司
- 分析:BTC 突破 7.15 万美元局部高点但后市分歧显著,分析师警示空头或将“入场”
- 乌克兰总统:美国已将乌克兰与俄罗斯的谈判推迟至下周
- 美 CFTC 主席:希望通过将区块链与预测市场结合,制衡虚假信息与去银行化威胁
- 美银:油价冲击若持续,或为美联储宽松政策铺路
- 伊朗官员强调“不会与美国进行任何谈判”
- 美参议员:稳定币《清晰法案》各方或需妥协让步
- Solana 生态新闻资讯服务 SolanaFloor 被 Jito 收购重启运营
- Kraken 代币化股票交易平台启动积分计划,暗示可能推出生态代币
- 数据:802.86 枚 PAXG 从 Null Address 转入 Paxos,价值约 418.61 万美元
- 分析师:比特币重回 7.15 万美元上方,但市场极端弱势走势仍未扭转
- Bitfinex 报告:比特币价格目前由现货需求驱动,为高确定性均值回归行情奠定基础
- 分析:衍生品市场进入“去杠杆浪潮”,比特币表现韧性或迎稳定反弹
- Sky 发起提案拟降代币回购比例以加强协议资本基础
- 面向律师的 AI 平台 Legora 完成 5.5 亿美元 D 轮融资,Accel 领投
- 伊朗外交部发言人:伊朗不会相信美国做出的任何承诺
- 部分金融机构上周收到风险提示,严控部署使用 OpenClaw 类似平台
- 伊朗议会发言人:若敌人率先对基础设施发动战争,德黑兰也将采取同等行动
- 美、布两油短线下跌,WTI 原油现报 83.1 美元/桶
- 彭博社:多个香港家族办公室计划增加对加密资产和私募市场的投资敞口
- Virtuals:AI 智能体间的交易收入已突破 300 万美元
- 道明证券:美元表现为有条件的避险资产
- 南京栖霞区、江宁区发布“养龙虾”政策
- 标普 500 指数转涨,道指涨 0.06%,纳指涨 0.19%
比推专栏
更多 >>- 当黄金被「困」在迪拜,是时候旗帜鲜明「唱多」香港了
- 東大、波斯、阿拉伯【第七次/進展/能源變量】|0310東3.5
- 从 HSK 到 USDGO:香港两大持牌机构,开始「脱钩」
- There is no new boss YET
- New situation and new games|0305 Asian
- B52 Were on the way to Iran|0304 Middle East
- 开放独角兽门票:从 Robinhood 到 MSX,一场 Pre-IPO 的链上平权实验
- Big player's 『Trigger moment』|0227Europe
- 简街有没有「操纵」BTC?拆解 AP 制度,读懂 ETF 申赎机制背后的定价权博弈
- Happy new year【Horse success】|0213Asian
比推 APP



