VerifyTransaction-Bitcoin中交易验证的具体过程

比特币中的签名

签名存在于解锁脚本里面即ScriptSig,主要有身份认证,就是签名是用户使用私钥完成的,所以证明了花的钱是自己的,之后解锁脚本会去验证锁定脚本,进而解锁UTXO,所用到的也是sig和PubKey进行交易验证,验证成功即可完成交易产生新的UTXO。
那么在Bitcoin中验证交易的具体过程是怎样的呢?并且签名的类型也是多种:SIGHASH_ALL, SIGHASH_NONE, SIGHASH_SINGLE。今天我门主要探索的是SIGHASH_ALL中交易的验证过程。

具体过程

下图当成两张图片使用
VerifyTransaction-Bitcoin中交易验证的具体过程_第1张图片

  • 创建subscript:从OP_CODESEPARATOR到脚本的最后
    prevTx
  • 如果脚本中存在签名则移除
  • 把操作码:OP_CODESEPARATORS从脚本中移除
    remove
  • 把hashtype从签名中移除
    VerifyTransaction-Bitcoin中交易验证的具体过程_第2张图片
  • 复制一份TxNew命名为TxCopy
  • 把TxCopy中的所有TxIn置空
  • 复制Subscript到你要验证的TxIn中
  • 序列化TxCopy并且扩展4字节hashTypeCode(使用的是sha256^2)
  • 通过字符串验证签名(hash strings是big-endian)

小结

这一个比较细节的过程,希望以后能够用的到!!!

我的主页:Stride Max Zz欢迎大家访问!

你可能感兴趣的:(VerifyTransaction-Bitcoin中交易验证的具体过程)