比特币解锁脚本中的ScriptSignature都包含了什么东西

Posted baizx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比特币解锁脚本中的ScriptSignature都包含了什么东西相关的知识,希望对你有一定的参考价值。

比特币 解锁脚本signature script 包含了那些东西?

使用 UTXO 需要私钥签名,私钥到底都签了什么东西呢?一直比较好奇.
比特币的私钥签名总共有五中类型,具体见 btcd 代码,如下:

// SigHashType represents hash type bits at the end of a signature.
type SigHashType uint32

// Hash type bits from the end of a signature.
const (
    SigHashOld          SigHashType = 0x0
    SigHashAll          SigHashType = 0x1
    SigHashNone         SigHashType = 0x2
    SigHashSingle       SigHashType = 0x3
    SigHashAnyOneCanPay SigHashType = 0x80

    // sigHashMask defines the number of bits of the hash type which is used
    // to identify which outputs are signed.
    sigHashMask = 0x1f
)

SigHashOld 和 SigHashAll

从代码看,两者是一样的.具体签名内容见图.
主要内容:
所有的 TxIn,所有的 TxOut, 但是不包含签名本身(这个是不可能做到包含自身的).
这是目前主要的签名用法.
技术分享图片

SigHashNone

主要内容:
所有TxIn, 但是不包含 TxOut
我不知道这种签名用在什么地方, TxOut可以让别人随便改.

技术分享图片

SigHashSingle

对所有的 TxIn和某个 TxOut 进行签名
不清楚用途
技术分享图片

SigHashAnyOneCanPay

对当前TxIn 和所有 TxOut 进行签名
这个可以保证输入输出的安全,但是因为没有包含TxIn 之间的顺序关系. 所有这个 Tx 的 ID 是可以被修改的.
技术分享图片

以上是关于比特币解锁脚本中的ScriptSignature都包含了什么东西的主要内容,如果未能解决你的问题,请参考以下文章

区块链 虚拟机 比特币的脚本解释器evmwasm 是什么 区别

使用 Merklized 抽象语法树压缩智能合约

比特币交易的脚本是如何执行的

清华大学iCenter区块链公开课 第二节

一种基于比特币支付通道的 Netflix

一种基于比特币支付通道的 Netflix