一个新交易的组成部分如下:
1. 交易ID: 就是该交易的哈希值。
2. 版本号:比特币协议的版本, 也就是交易依据得到规则,4 bytes长。
3. 输入的总数:总数可以是1个或多个, 1-9 bytes长。
4. 输入列表:依据输入的总数不同,其长度变化不同。下面是一个输入的结构。
1). 交易的哈希值:是指产生了本输入对应的未被花费的输出来自的那个交易的哈希值。32 bytes长。
2). 输出索引: 指明本输入对应的未被花费的输出是来自过去某交易所产生的第几个输出。第一个输出是0。4 bytes长。
3). 解锁脚本大小: 用字节表示的后面的解锁脚本长度. 1-9 bytes长。
4). 解锁脚本: 用来解锁该未被花费的输出的解锁脚本。长度不定。
5). 序列号:用来允许不触发时间锁定的情况下把交易添加到区块中。4bytes长。
说明:1)和2)实际上指明了要被花费的输入是来自于过去的哪一个具体交易的哪一个具体输出。
5. 输出的总数:总数可以是1个或多个, 1-9 bytes长
6. 输出列表:依据输出的总数不同,其长度变化不同。下面是一个输出的结构。
1). 货币数量:规定了该输出未来的票面值。
2). 锁定脚本大小: 用字节表示的后面的锁定脚本长度. 1-9 bytes长。
3). 锁定脚本: 用来锁定该输出的解锁脚本。长度不定。
7. 锁定时间: 一个区块号或UNIX时间戳用来锁定交易的正式开始时间。