顺序不是共识,却是信息
一笔比特币交易的输入列表和输出列表内部怎么排,共识规则不作要求:同样的集合换任何顺序,交易一样合法有效。但正因为随意,各家钱包排法不一,链上观察者就能从排列习惯反推软件、找零策略甚至账户结构——这被称为钱包指纹。BIP 提出的背景案例是:研究者曾通过交易所交易中输入顺序的规律,识别出哪些转账出自同一交易所热钱包,让交易对手方获得信息优势。

BIP69 怎么排
BIP69 给出确定性的字典序方案。输入按前序引用的交易哈希(txid)升序排列,txid 相同再按输出序号升序。输出先按金额升序,金额相同再按锁定脚本(scriptPubKey)的字节序升序。两个规则都只依赖交易里已有的数据,任何实现算出的结果都一样,不存在“每个钱包自己的随机数”。
为什么不干脆随机排
随机排列同样能隐藏找零位置,但 BIP69 指出随机方案难以审计:如果排序算法被恶意实现,随机性的种子可以成为泄露私钥比特信息的隐蔽信道,而且不可复现的排法事后无法验证。确定性字典序则相反——用户可以直接拿开源代码比对链上交易,证明钱包没有夹带暗号。这类“用可验证的确定代替不可验证的随机”的思路,与地址复用的聚类风险是同一场隐私攻防的另一面,见 收款地址能否重复使用。
找零位置与隐私边界
过去“第二个输出是找零”的猜测之所以流行,正是因为不少钱包按“收款在前、找零在后”的习惯拼装交易。采用字典序后,找零按金额与脚本落在随机位置,单纯看位置猜找零失效。但边界要说清:字典序不处理选币相关性(同一地址集的输入聚类)、不改变金额模式,也躲不开时间相关性分析,它只是把最便宜泄露的字段藏起来,更完整的选币与合并策略见 钱包找零地址与选币机制。
现状怎么理解
BIP69 是信息性提案(Informational),不是所有钱包都实现,也不是任何协议部署。它没有激活高度、没有链上生效时间,谈“版本”没有意义——把它当作钱包软件工程规范更准确。核对某笔交易是否遵循它,把输入 txid 排序、输出按金额列表比对即可,任何区块浏览器都够用。
顺序是会被哈希的字段
补充一个常被忽略的机制层:交易的序列化字节里明确记录了输入列表与输出列表的排列次序,txid 就是对这段序列化做哈希的结果。这意味着排序不是外观问题——同样的选币结果,只有采用同一套排序规则,两个钱包才能生成字节相同、txid 也相同的交易,审计工具、观察钱包和离线签名流程赖以”重放核对”的正是这种确定性;反过来,每次随机换序都会连 txid 一起改变,任何按交易号做状态跟踪的系统都得重新适配。也正因为次序会被哈希,前文”排序可以成为隐蔽信道”的担忧才真正成立:不可复现的排法无法事后审计,恶意实现可以把信息编进次序里一点点往外漏。BIP69 在”可审计的确定性”与”不可验证的随机性”之间选择前者,理由就在这条哈希链条上。
风险提示:比特币价格与网络状态波动较大,本文仅作技术与安全科普,不构成任何投资建议;涉及资金操作前请小额试转并逐项核对,所有协议参数以官方规范与源码为准。
一次自查练习
想知道自己的钱包守不守规矩,方法很朴素:发起一笔两进两出的测试交易,从区块浏览器把两笔输入的 txid 抄下来排序,再按金额给两笔输出排序,与链上实际的排列比对。输入若严格按 txid 字典序、输出严格按金额(同金额再比脚本),即可确认实现了这套约定。多测几笔,如果排列忽而符合忽而随机,说明钱包可能部分实现或另有选币逻辑。需要说明合规收益的边界:一致性排序不会让所有遵循者的交易长得”一样”——选币不同、金额不同、时间不同,指纹依然存在,它消除的只是最低级的顺序泄露。把这类自查当成钱包隐私审计的入门项目:先验证便宜的,再评估昂贵的。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。