酸饼博客
关注区块链技术应用与数字货币

区块链入门100问(16) :如何理解比特币交易的输入和输出的数据结构?

上一节介绍到比特币交易的数据结构包括如下字段:
1. version
2. Flag
3. input_count
4. tx_in
5. output_cout
6. tx_out
7. lock_time
8. Witnesses

其中,Flag和Witnesses是可选字段,并且同时出现。

在以上几个字段中,tx_in与tx_out分别表示交易输入和交易输出,其内容长度可变。本节接着介绍两者的数据结构。

比特币的交易输入是指向UTXO的指针,他们指向特定的UTXO。一个交易输入包含解锁脚本,用来满足UTXO支付的条件。解锁脚本通常是签名,用来证明对锁定脚本中的比特币地址拥有所有权。

交易输入的数据结构包含如下字段:
1. 前置交易的hash,32个字节。
2. 前置交易的交易输出的索引,4个字节。
3. 解锁脚步长度,1~9个字节,表示脚本长度。
4. 解锁脚本,可变长度,由上一个字节确定。
5. 序列号,4个字节,用来覆盖在锁定时间之前失效的交易。这项功能目前在比特币中没有用到,大部分交易将其设置为最大整数0xFFFFFFFF。

接着说交易输出。
每一笔比特币交易都会创造一个或者多个交易输出。交易输出被记录在比特币的账本上。
大部分的比特币交易输出都能创造一笔一定数量、可用于支付的比特币,也即是“未花费输出”(UTXO)。

每一个交易输出由两部分组成:
1. 一定数量的比特币,单位是“聪”
2. 锁定脚本。将来要使用这部分比特币,需要满足脚本的判断条件。

交易输出的数据结构是:
1. 总量,用聪表示的比特币数量,8个字节。
2. 锁定脚本的长度,1~9个字节,表示后面的锁定脚本的长度。
3. 锁定脚本,可变长度,定义了支付这笔输出所需要的条件。

通过本节和上一节,可以了解到比特币一笔交易的数据结构。掌握了比特币交易的数据结构之后,我们可以从特币账本里解析出一笔交易的数据;也可以根据比特币交易的数据结构,构建一笔比特币交易。

未经允许不得转载:酸饼 » 区块链入门100问(16) :如何理解比特币交易的输入和输出的数据结构?
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

留言联系关于酸饼