Lazy loaded image
⛓️BTC 脚本(二):交易数据结构
字数 1657阅读时长 5 分钟
2025-1-13
2026-8-17
← 返回总目录 · 区块链技术与应用笔记(BTC)
随意给出一个交易的json数据,数据内容如下
这笔交易的主要内容是将比特币从地址 1Kr6QSydW9bFQG1mXiPNNu6WpJGmUa9i1g 转移到两个不同的地址,分别是 3E6A5SL5vkP34ww6i1gHAxnkes1XZaXSD61Kr6QSydW9bFQG1mXiPNNu6WpJGmUa9i1g。其中一部分金额(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(Replace-by-Fee)交易的处理,控制交易的执行顺序。在没有 RBF 的情况下,它基本上不影响交易。
      RBF 机制允许你在一笔交易发布后,如果该交易尚未被矿工打包进区块,可以 通过增加交易手续费“替换” 原先的交易,使其更容易被矿工优先处理。
      过程:
      1. RBF交易的创建
          • 当你发起一笔交易时,你可以选择启用 RBF。启用 RBF 后,交易会被标记为可以被替换,即使它已经广播到比特币网络,但尚未被确认(即未被打包进区块)。
          • 在交易中,标记了 RBF 的交易通常会有一个特殊的字段,标记该交易为“可替代”的。
      1. RBF的替换机制
          • 一旦这笔交易在网络中传播,矿工会查看交易的手续费和优先级。如果你的交易没有被矿工选择打包(可能是因为手续费较低),你可以发起一个 新的交易,这个新交易引用的是同样的输入(即原交易的输出),但它提供更高的手续费。
          • 新交易的手续费更高,因此矿工更有动力处理这笔交易。新交易的手续费越高,它就越可能被优先打包进区块。
      1. 原交易的替代
          • 一旦新的交易被矿工接受,它就会替代原来的交易。这意味着原来的交易会被“淘汰”,不再被打包进区块。新的交易将以更高的手续费被矿工优先选择。
  • 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:是否已花费(falsetrue
    • 第一笔输出:未花费(false),表示这笔比特币还没有被花费。
    • 第二笔输出:已花费(true),表示这笔比特币已经被另一个交易使用。
  • spender:如果已花费,提供消费交易的 ID 和输入索引
    • 第二笔输出的 spender:提供了消费该输出的交易 ID 0e8920a026930f4172ecc337702e527661156b95877540147dd45ba85b55295d
区块信息
  • block
    • height:区块高度(880413)
      • 这是该交易所在区块链中的位置(区块链中的区块编号)。
    • position:区块中的位置(108)
      • 表示该交易在区块中的位置索引。
其他信息
  • deleted:交易是否已删除(false
    • 该字段表示交易没有被删除。
  • time:交易的时间戳(1737583780
    • 表示交易的时间,单位为 UNIX 时间戳。
  • rbf:是否为可替代费用(false
    • 这表示该交易不支持 RBF,即不能通过支付更高的手续费来替换该交易。
  • weight:交易的重量(892)
    • 这是比特币交易的一个度量标准,表示交易占用的区块大小。

 
上一篇
BTC 多重签名与链上数据记录
下一篇
BTC 脚本(一):输入与输出脚本

评论
Loading...