BTC交易数据 - Script

Signature Script

在比特币交易中,通常称为 “ScriptSig” 或 “Signature Script” 的部分在交易输入中用于提供解锁条件,以使输出可以被使用。这个部分包含数字签名、公钥、以及其他数据,以满足输出脚本的条件。

在比特币交易输入中,ScriptSig 可以包含一段用于解锁输出的脚本。这通常是一个包含数字签名和相关数据的脚本。这个脚本的具体格式取决于所使用的交易类型和脚本系统。

分析ScriptSig实例

BTC交易数据是怎样的 文章中的ScriptSig如下:

注:ScriptSig使用 DER编码

47304402204300d701d7beb055b369955adf7fa39faedc2c0d1f1cd49b4c7e7913ac937d9c0220713f7f19b72e4399db2a1a627176c4a093db8ea72bb612dd949f3e0c0cf28a3c012103683ad7dd8a485e4be62e963d8f60cf51aca0652660b1ed8cf2b6b2a2e34631f0

我们分析下这个脚本:

47 # 表示DER表示的签名有71(47是16进制表示的)个字节
    30 # DER 编码的 SEQUENCE 标识符
    44 # 后面 DER 编码的长度为 68(44是用16进制表示的) 字节
    02 # DER 编码的整数标识符
    20 # 签名(R值)占用32个字节
    4300d701d7beb055b369955adf7fa39faedc2c0d1f1cd49b4c7e7913ac937d9c # 具体签名内容
    02 #  DER 编码的整数标识符
    20 # 签名(S值)占用 32 字节
    713f7f19b72e4399db2a1a627176c4a093db8ea72bb612dd949f3e0c0cf28a3c # 具体签名内容
01 # HashType 签名的使用方式
21 # 公钥的长度,33个字节
03683ad7dd8a485e4be62e963d8f60cf51aca0652660b1ed8cf2b6b2a2e34631f0 # 压缩格式的公钥

HashType类型

Hash Type Hexadecimal English Description Chinese Description
SIGHASH_ALL 0x01 Includes all inputs and outputs in the signature hash. 包含所有输入和输出的签名哈希。
SIGHASH_NONE 0x02 Includes none of the outputs in the signature hash. 不包含签名哈希中的任何输出。
SIGHASH_SINGLE 0x03 Includes only the output corresponding to the input index. 仅包含与输入索引相对应的输出的签名哈希。
SIGHASH_ANYONECANPAY 0x80 Allows the signer to sign only their own input, ignoring others. 允许签名者仅签署自己的输入,忽略其他输入。

Public Key Script

公钥脚本(Public Key Script)通常是比特币交易输出脚本(Output Script)的一部分,用于定义花费输出所需的条件。
以下是公钥脚本的典型形式之一,即 P2PKH(Pay to Public Key Hash)脚本:OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG

分析pkScript实例

BTC交易数据是怎样的 文章中的输出的pkScript如下:76a9144d6567616e264769616e6e69466f72657665722188ac

分析脚本:

76 # 操作码:OP_DUP,复制栈顶元素
a9 # 操作码:OP_HASH160,将栈顶元素进行 HASH160 操作
144d6567616e264769616e6e69466f726576657221 # 公钥哈希值(20字节)
88 # 操作码:OP_EQUALVERIFY,检查栈顶两个元素是否相等,如果不相等则标记为错误,否则继续执行
ac # 操作码:OP_CHECKSIG,使用栈顶的公钥和签名检查交易的签名是否有效

操作码文档

关注我,关注我的专栏,一起探索Web3的世界

你可能感兴趣的:(一步步了解Web3,深入了解BTC,区块链,web3)