当你打开区块浏览器,看到一长串十六进制字符,或许会疑惑:比特币交易到底怎么运作?
其实,它只是一段“锁—解锁—再锁”的二进制数据:
上一笔输出(UTXO)被私钥签名后变成输入,再生成新的输出等待下一次解锁。
搞懂这个循环,你就掌握了区块链价值的流动内核。
交易生命周期:三步看懂比特币如何“搬家”
- 选择输入
把旧的、尚未花掉的 UTXO 作为输入,提交有效签名证明你拥有它。 - 定义输出
指定收款方地址与金额,同时用 ScriptPubKey 把比特币锁进去。 - 广播与确认
矿工验证签名→打包→上链,新 UTXO 诞生,旧 UTXO 永久失效。
每个区块因此形成 UTXO 链条,不断延伸。
交易字节结构拆解:从十六进制到人类可读
所有比特币交易都遵循同一套字段顺序,只要知道每段数据大小就能逐字节切割。下面以 v2 字节序并排示例 概括:
- 版本号(4 字节)
01000000 → 常用 2 号版本,支持 BIP-68 相对锁时。 - 可选 Marker + Flag(共 2 字节,仅 SegWit)
0001 → 00 标识 SegWit,01 表示版本 1,未来可递增。 - 输入数(可变长 CompactSize)
例如 01 → 本交易包含 1 个输入。 输入结构循环
- TXID(32 字节反向字节序,指向祖先交易)。
- VOUT(4 字节小端序,指定祖先交易中的第几个输出)。
- ScriptSig 长度 + ScriptSig(传统 P2PKH 的签名+公钥写在这里;若是 SegWit,仅留 00)。
- Sequence(4 字节,决定是否启用 Replace-by-Fee 或锁定时间)。
输出数与输出循环
- Amount(8 字节 satoshi 金额)。
- ScriptPubKey 长度 + ScriptPubKey(锁定脚本:P2PKH、P2WPKH、P2SH、P2WSH……)。
Witness(仅 SegWit)
每个输入拥有自己的见证字段:02 47 [signature] 21 [publickey]数据虽与 ScriptSig 类似,但不执行任何 OPCODE,仅是纯压栈数据。
- Locktime(4 字节)
00000000 → 可立即广播;若设为非零值,相当于“延期支票”。
👉 探索更多真实案例,直接查看链上原生十六进制
Signature、私钥与公钥:密码学让“所有权”可被验证但无法伪造
- 锁定:ScriptPubKey 内含收款地址对应的公钥哈希。
解锁:ScriptSig 或 Witness 内提供原公钥 + ECDSA 签名。
- 签名哈希覆盖当前交易关键字段,确保交易一经签名无法被篡改。
- 任何人 都能验证签名确由对应私钥签署,却不知其内容,实现去中心化信任。
度量交易尺寸:Bytes、Weight、vBytes 你别再晕
| 名称 | 意义 | 实际用途 |
|---|---|---|
| Bytes | 原始字节数 | 纯存储占用 |
| Weight | 非见证区×4 + 见证区×1 | 区块容量上限 4M weight |
| vBytes | Weight ÷ 4 | 钱包展示、费用比较的通用单位 |
省手续费秘诀:
SegWit 的见证区字节被折扣 75%,因此相同金额交易,vBytes 更低。
手续费:找零与矿工小费的艺术
输入总和 600 sats
输出1 300 sats + 输出2 200 sats
手续费 = 600 - 300 - 200 = 100- 任何 剩余 都会被矿工收入囊中。
- 动态费率 决定优先级:费率 = 手续费 ÷ vBytes。
FAQ:如果输错金额导致巨额矿工费怎么办?
——无法撤回。再三检查输出或借助离线签名工具可大幅降低风险。
混合场景示例:一笔交易同时花传统地址与隔离见证地址
- 输入1:Legacy P2PKH,解锁使用 ScriptSig。
- 输入2:SegWit P2WPKH,解锁使用 Witness。
在十六进制中,你将看到:
– 第一组输入的 scriptsigsize=0x6a,后接长达 106 字节的签名字节;
– 第二组输入的 scriptsigsize=0x00,而在 witness 区出现 stackitems=2。
每个输入仍保持独立,钱包在构造时复杂性更高,用户无感知。
FAQ:新手常见疑问一次说清
Q1:转账时“找零地址”为什么要另外生成一个新地址?
A:保护隐私。若始终以同一地址收款,链上分析可瞬间定位你的全部余额。
Q2:比特币地址区分大小写吗?
A:区分。Base58Check 编码故意去掉了易混淆字符,但依旧要完整复制,手写极不推荐。
Q3:TXID 与 wTXID 有何不同?
A:TXID 忽略 SegWit 见证数据;wTXID 将见证数据一并哈希,用于计算 Coinbase 的 witness 承诺。
Q4:Locktime 成立后还能撤销交易吗?
A:能,只要交易尚未被打包,并且 Sequence 允许 Replace-by-Fee,你就可以发布一笔更高费率的新交易。
Q5:为何某些交易看到大量输入导致手续费飙升?
A:小额碎片过多,合并 UTXO 会放大 vBytes;建议定期在手续费低谷手动整理。
Q6:如何简单验证交易已上链?
A:拿到 TXID 即可在任意区块浏览器查询;确认数 ≥ 6 通常视为不可逆。
小结:交易 = “解锁旧锁,挂新锁”的数学化可信流程
不论是早期简单 P2PKH,还是最新的 Taproot P2TR,本质流程均一致:
上一笔输出签名→生成当前输入→创造下一笔输出。
只需牢记 UTXO 只能花一次、签名必须符合锁定脚本条件 这两条铁律,你就拥有了阅读整条区块链的能力。现在,动手去解析你的第一笔链上交易吧!