← 返回总目录 · 区块链技术与应用笔记(BTC)
随意给出一个交易的json数据,数据内容如下
这笔交易的主要内容是将比特币从地址 1Kr6QSydW9bFQG1mXiPNNu6WpJGmUa9i1g 转移到两个不同的地址,分别是 3E6A5SL5vkP34ww6i1gHAxnkes1XZaXSD6 和 1Kr6QSydW9bFQG1mXiPNNu6WpJGmUa9i1g。其中一部分金额(264642 satoshis)尚未被花费,而剩余的金额(20642350538 satoshis)已经被花费到其他交易中。各个字段的意思如下:
交易基本信息
- txid:交易 ID (
f6ee6eca2a96d8039ad8e07fa776040de7b23a798206053845e6157a81478f89)
这是交易的唯一标识符,用于标识这笔交易。
- size:交易大小(223 字节)
交易在区块链中占用的字节数。大小与交易的输入输出数量及其它数据有关。
- version:交易版本(2)
表示交易数据格式的版本。
- locktime:锁定时间(0)
锁定时间为 0 表示这笔交易可以立即被处理,不会延迟。
- fee:交易手续费(1358 satoshis)
这是交易发起者支付给矿工的费用,通常用于激励矿工处理交易。
输入(Inputs)
交易的输入部分包含了该交易所引用的上一笔交易的输出。输入信息指示从哪些比特币地址获取资金,以及如何授权(通过签名)来进行支出。
- coinbase:是否为 Coinbase 交易(false)
这表示该输入并不是一个新区块生成的交易。Coinbase 交易通常是矿工生成的第一笔交易。
- txid:上一笔交易的交易 ID(
cbde256f366df87627c5761876a10e534d089bd34811c206c30e612bc8530544)
这表示该输入引用的是上一笔交易的某个输出。
- output:上一笔交易的输出索引(1)
这是指向上一笔交易输出的位置,输出索引从 0 开始。
- sigscript:签名脚本(
47304402206f2090f9a61bbac2b11845a990486095c7e6c0e1334450e93d75ed3e8b0b6a4e0220688d40d34a044c6cbb9764cf2dc291f763d8e41077a78ca0ccec27134bcca787012103786af4b32017ec640dba2d2a7e1fd5aa4a231a658e4cbc114d51c031576e19bc)
这是交易发起者对交易的签名,用来证明其拥有用于支付的私钥。
- sequence:序列号(4294967293)
- RBF交易的创建:
- 当你发起一笔交易时,你可以选择启用 RBF。启用 RBF 后,交易会被标记为可以被替换,即使它已经广播到比特币网络,但尚未被确认(即未被打包进区块)。
- 在交易中,标记了 RBF 的交易通常会有一个特殊的字段,标记该交易为“可替代”的。
- RBF的替换机制:
- 一旦这笔交易在网络中传播,矿工会查看交易的手续费和优先级。如果你的交易没有被矿工选择打包(可能是因为手续费较低),你可以发起一个 新的交易,这个新交易引用的是同样的输入(即原交易的输出),但它提供更高的手续费。
- 新交易的手续费更高,因此矿工更有动力处理这笔交易。新交易的手续费越高,它就越可能被优先打包进区块。
- 原交易的替代:
- 一旦新的交易被矿工接受,它就会替代原来的交易。这意味着原来的交易会被“淘汰”,不再被打包进区块。新的交易将以更高的手续费被矿工优先选择。
通常用于 RBF(Replace-by-Fee)交易的处理,控制交易的执行顺序。在没有 RBF 的情况下,它基本上不影响交易。
RBF 机制允许你在一笔交易发布后,如果该交易尚未被矿工打包进区块,可以 通过增加交易手续费 来 “替换” 原先的交易,使其更容易被矿工优先处理。
过程:
- pkscript:公钥脚本(
76a914cebb2851a9c7cfe2582c12ecaf7f3ff4383d1dc088ac)
这是一个用于验证输出的脚本,包含了发送者的公钥和相关的加密信息。
- value:输入的金额(20642616538 satoshis)
这是这笔交易输入的金额,单位是 satoshi(1 BTC = 10^8 satoshis)。
- address:输入的来源地址(
1Kr6QSydW9bFQG1mXiPNNu6WpJGmUa9i1g)
这是提供比特币的地址。
- witness:见证数据(空数组
[])
在此交易中未使用 SegWit(见证交易),因此该字段为空。
输出(Outputs)
输出部分描述了这笔交易将比特币发送到哪些地址以及发送的数量。
- address:接收比特币的地址
- 第一笔输出地址:
3E6A5SL5vkP34ww6i1gHAxnkes1XZaXSD6 - 第二笔输出地址:
1Kr6QSydW9bFQG1mXiPNNu6WpJGmUa9i1g
- pkscript:公钥脚本,指定接收者地址的验证规则
- 第一笔输出:
a9148801e1f19845fb8aa47958cf92b2830cfdc7f3cd87 - 第二笔输出:
76a914cebb2851a9c7cfe2582c12ecaf7f3ff4383d1dc088ac
- value:发送到每个地址的金额(单位:satoshis)
- 第一笔输出金额:264642 satoshis
- 第二笔输出金额:20642350538 satoshis
- spent:是否已花费(
false或true) - 第一笔输出:未花费(
false),表示这笔比特币还没有被花费。 - 第二笔输出:已花费(
true),表示这笔比特币已经被另一个交易使用。
- spender:如果已花费,提供消费交易的 ID 和输入索引
- 第二笔输出的
spender:提供了消费该输出的交易 ID0e8920a026930f4172ecc337702e527661156b95877540147dd45ba85b55295d。
区块信息
- block:
- height:区块高度(880413)
- position:区块中的位置(108)
这是该交易所在区块链中的位置(区块链中的区块编号)。
表示该交易在区块中的位置索引。
其他信息
- deleted:交易是否已删除(
false)
该字段表示交易没有被删除。
- time:交易的时间戳(
1737583780)
表示交易的时间,单位为 UNIX 时间戳。
- rbf:是否为可替代费用(
false)
这表示该交易不支持 RBF,即不能通过支付更高的手续费来替换该交易。
- weight:交易的重量(892)
这是比特币交易的一个度量标准,表示交易占用的区块大小。
- 作者:JIAHE
- 链接:https://blog.jiaheliu.top/Study-Notes/BTC-Script-2-Transaction-Data-Structure
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。


