比特币的交易,由一个或多个输出和一个或多个输入(Coinbase 交易是一种特殊情况)构成。
交易的每个输出上,都会附上一个加密难题,定义将来在花费这笔 UTXO 时需要满足的条件。
交易的每个输入上,都要提供一个解锁脚本,解决或满足之前附在这笔 UTXO 上的加密难题或条件,解锁 UTXO 用于支付。
如果你从前面的文章一路看过来,理解了比特币交易的细节,你应该能设计出下面的数据结构。
对交易的每个输出 TxOut,需要有
- 这个 UTXO 的币值
- 锁定脚本
对交易的每个输入 TxIn,需要有
- 这笔 UTXO 来自之前哪笔交易的第几个输出(需要表达交易链条)
- 解锁脚本
对交易,需要有
- 这笔交易的哈希(数据指纹),用于标识和索引这笔交易
- TxIn 数组,表示这笔交易的所有输入
- TxOut 数组,表示这笔交易的所有输出
这样的设计能满足需求,同时又足够精简。这篇文章,介绍比特币交易的数据结构。