coinbase 交易:每个区块第一笔交易的三个秘密 图 1
coinbase 交易:每个区块第一笔交易的三个秘密 · 图 1

名字误导了一代人

“coinbase”一词在矿工语境和交易所语境里指两种完全不同的东西,本栏目此前讨论交易所入金地址的托管风险时已专门做过辨析,见 如何安全地把比特币从交易所转入自托管钱包?完整流程与核对清单。协议里的 coinbase 交易是每个区块中的第一笔交易:它没有正常的输入,唯一“来源”是区块本身;它的第一笔输出里装着出块奖励,其余数据字段则藏着矿工信息——历史上矿工常在这里写入公告文字,早年那个著名的报纸头条就埋在第一笔 coinbase 里。奖励的构成逻辑——补贴加本块手续费——见 比特币区块奖励由什么构成?挖矿补贴和交易手续费怎么算

高度承诺:让每笔 coinbase 独一无二

早期 coinbase 交易的哈希可能彼此相同,带来一个理论缺陷:Merkle 树顶可能出现重复叶子。BIP34 以软分叉方式要求 coinbase 的脚本输入开头写入当前区块高度,既消灭了重复哈希,也让任何节点仅凭 coinbase 就能判断这个块在链上的位置。今天你解码任何一笔 coinbase,前几个字节就是高度编码;再叠加 BIP30 对重复交易的防御,出块结构被一层层焊死,细节见 BIP 原文。

见证承诺:藏在第四行输出里的摘要

自隔离见证激活起,只要区块里含有任意 SegWit 交易,coinbase 必须携带一个见证承诺输出:把全块交易的见证根哈希拼进一个永不花费的输出并放进 coinbase。它不转账,纯粹是给后续验证者留的“全块见证完整性收据”,验证块内每笔 SegWit 交易时被用来确认见证数据没有在中继中被篡改,权重记账规则背景见 比特币的聪和 vB 是什么?手续费单位与计价换算详解。解码 coinbase 时看到 OP_RETURN 加一串十六进制却没有任何转账含义,别慌——那是协议在记账。

一百个区块的成熟期

挖矿收入不能马上花。共识规则规定 coinbase 输出的前一百个区块内不可被花费,这条成熟期规则的动机与链重组直接相关:若出块奖励即挖即花,一次普通重组就会让花掉它的交易悬空,甚至制造凭空双花。成熟期把“这笔钱属于胜者链”的稳定性问题摊平到一个安全窗口,配合重组观察见 getchaintips如何识别链分叉?。钱包在筛选 UTXO 时会自动跳过未成熟的出块收入,自持节点运行矿工的读者可在 listunspent 里看到对应确认数提示。

小结与风险提示

coinbase 交易是区块的“出生证明”:它记录谁赢了这一局、补贴怎么分、见证数据完不完整,也用成熟期给新钱上了第一道保险。理解它之后再看减半、难度与费率占比,你会多一条从区块内部出发的核对路径——每十四天一次的补贴台阶就写在 coinbase 输出金额里。本文讨论协议机制,不构成投资建议。

从 coinbase 读出一个块的健康度

三行解码就能给陌生区块做体检。看高度:coinbase 输入前缀解码出的数字应与区块实际高度一致,不一致的块在当年曾引发真实兼容事故,今天节点已把它当作硬校验。看金额:输出总额等于该高度补贴加本块全部手续费,超过即凭空增发,任何节点都会拒绝,补贴台阶与减半高度的对应见 比特币减半是什么?四次减半周期怎么看。看承诺:含 SegWit 交易的块必须有见证承诺,缺失即无效块。矿工身份类字段(历史遗留的 extranonce 与自定义文本)不属于共识内容,不同池的编码风格各异,跨池统计时不要把它当协议字段,看到奇怪字符既不必解读也不必报警。把这三步跑一遍,你就拥有了不依赖任何浏览器厂商的独立验块路径。顺带一提,coinbase 的输出脚本可以指向任何标准地址类型——矿池把收入打进冷钱包时,用的和你我钱包里的是同一套脚本语法,这条从区块内部直连自托管的通路,是让矿工资金与普通人资金处在同一套共识保护下的设计细节。