BTC找零处理方式

一、coinbase交易结构

每个区块的第一个交易叫做coinbase交易,它的结构如下:

字节长度字段说明
4交易版本号明确这笔交易参照的规则
1-9输入计数器包含的交易输入数量
不定交易输入一个或多个交易输入
1-9输出计数器包含的交易输出数量
不定交易输出一个或多个交易输出
4锁定时间一个区块号或UNIX时间戳

coinbase的交易输入结构为:

字节长度字段说明
32交易哈希值固定为全0
4输出索引固定为全1
1-9Coinbase脚本长度coinbase的脚本字节长度
不定coinbase脚本coinbase脚本,可以任意填充
4序列号固定值0xFFFFFFFF

coinbase交易的输入格式经过数次改变,在高度227836之前遵从的区块版本号为1。因为本文分析的区块实例高度为170,则coinbase交易遵从版本1的规定。之后的区块版本中规定coinbase数据中需要添加区块高度值,版本2、3、4更详细的说明可以查看比特币官网的开发文档,在此不再赘述。

coinbase的交易输出结构为:

字节长度字段说明
8总量用聪表示的比特币值
1-9锁定脚本大小用字节表示的后面的锁定脚本长度
不定锁定脚本一个定义了支付输出所需条件的脚本

二、普通交易信息结构

剩余的信息就是一个普通交易信息,普通交易结构为:

字节长度字段说明
4交易版本号明确这笔交易参照的规则
1-9输入计数器包含的交易输入数量
不定交易输入一个或多个交易输入
1-9输出计数器包含的交易输出数量
不定交易输出一个或多个交易输出
4锁定时间一个区块号或UNIX时间戳

普通交易输入结构为:

字节长度字段说明
32交易哈希值指向被花费的UTXO所在的交易的哈希
4输出索引被花费的UTXO的索引号,第一个是0
1-9解锁脚本大小用字节表示的后面的解锁脚本长度
不定解锁脚本满足UTXO解锁脚本条件的脚本
4序列号固定值0xFFFFFFFF

普通交易输出结构为:

字节长度字段说明
8总量用聪表示的比特币值
1-9锁定脚本大小用字节表示的后面的锁定脚本长度
不定锁定脚本一个定义了支付输出所需条件的脚本

     当发起一笔交易时,如果输入的UTXO远大于输出的给对方的数量时,需要找零。 这时,比特币钱包就会自动创建一个新的地址,用来接收除去转账金额和手续费之后的找零。比特币在进行交易时,会把发起交易地址的余额清零,转账后的剩余金额会转到找零地址中去。当然找零的接收地址也可以设置为发起交易的原地址。 通常情况下,比特币客户端在一开始会产生 100 个用户专属地址的私钥,创建找零地址时会优先使用这 100 个地址中的某一个,当这些地址全部被使用之后,将会继续创建新的找零地址。一般一次交易用一次找零地址,故100个地址只能使用100次交易,超过时,会继续创建地址提供使用,但需要注意备份。

      

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值