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

简介: 比特币 解锁脚本signature script 包含了那些东西?使用 UTXO 需要私钥签名,私钥到底都签了什么东西呢?一直比较好奇.比特币的私钥签名总共有五中类型,具体见 btcd 代码,如下:// SigHashType represents hash type bits at the end of a signature.

比特币 解锁脚本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, 但是不包含签名本身(这个是不可能做到包含自身的).
这是目前主要的签名用法.
signature_all

SigHashNone

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

signature_none

SigHashSingle

对所有的 TxIn和某个 TxOut 进行签名
不清楚用途
signature_single

SigHashAnyOneCanPay

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

目录
相关文章
|
4月前
|
JavaScript 前端开发 程序员
通过一篇文章带你解决如何加密代码任然可以运行
在实际生活中,作为程序员偶尔会因为资金不够用了选择去兼职写代码,当我们写完一个代码,将他发给某个公司的时候,我们经常会想到如何让目标公司看不见你写的源代码(源代码是你好不容易想出来的,难免不有些心疼嘛),但目标公司却可以运行他所需要的代码,下面我将讲解一种静态库的使用方法,来实现这个方法。
235 0
|
算法 安全 大数据
即将删除,这些秘密今天只讲一次
即将删除,这些秘密今天只讲一次
90 0
|
存储 安全 区块链
储存比特币的钱包开发源码规则解析
储存比特币的钱包开发源码规则解析
|
SQL .NET
Bytom的链式交易和花费未确认的交易
当我们基于比原做应用的时候,在构建交易过程中会遇到以下两种情况。多个地址向一个地址转账,还有一种就是从一个地址分批次向多个地址转账。那我们今天就来介绍一下这两种交易构建的具体流程,以及贴出具体实现的代码。
1227 0
币币合约执行解析(包含部分源码)
比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 本文解析的为比原提供的币币合约 模板如下: contract TradeOffer(assetReques.
1200 0
|
区块链
一个比特币脚本示例
pay-to-pubkey-hash解析 本文主要译自比特币 wiki scriptPubKey: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG scriptSig: 例如如下的raw scriptPubKey: 76A91489ABCDEFABBA...
1435 0
|
前端开发 JavaScript API
剥开比原看代码13:比原是如何通过/list-balances显示帐户余额的?
作者:freewind 比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 在前几篇里,我们研究了比原是如何通过web api接口来创建密钥、帐户和地址的,今天我们继续看一下,比原是如何显示帐户余额的。
1342 0
|
安全 前端开发 NoSQL
EOS节点远程代码执行漏洞细节
这是一个缓冲区溢出越界写漏洞 漏洞存在于在 libraries/chain/webassembly/binaryen.cpp文件的78行, Function binaryen_runtime::instantiate_module: for (auto& segment : module->table.
1622 0
|
存储 安全 区块链
imtoken钱包创建/备份/删除/导入教程,你的第一个智能数字钱包
imToken是一个以太坊移动轻便钱包,致力于为用户提供简单,安全和强大的数字资产管理工具。 用户可以在创建/导入钱包,安全数字资产管理,便利的交易执行,实时市场更新方面体验自由,并通过imToken探索以太坊DApps的潜力。
2005 0