比特币交易中的签名与验证

本文引用自:

https://www.jianshu.com/p/a21b7d72532f

比特币的交易主要由两部分构成:输入(input)输出(output)
Input是要说明我打算花的这UTXO是从哪儿来的。
具体的参数包括:
txid : 引用的UTXO所在的那笔交易ID
vout : 引用的UTXO所在交易的输出中的序号(从0开始)
scriptSig : 解锁脚本,包含付款人对本次交易的签名()和付款人公钥()。

Output是要说明我打算生成几个UTXO,分别给谁,每个UTXO里面有多少BTC。
具体的参数包括:
value : 比特币数量
n : UTXO序号(从0开始)
scriptPubkey : 锁定脚本,包含命令(OP_DUP等)和收款人的公钥哈希()。
比特币交易中的签名与验证_第1张图片
签名的过程:
签名的输入:

  1. 待签名的交易数据(输入和输出),即。
  2. 引用的UTXO相关信息(交易ID、序号、锁定脚本)
  3. B的私钥,即
  4. 签名类型

签名的输出:

  1. scriptSig ,即解锁脚本,包含签名()和 B的公钥()。

至此,一个完整的交易即创建成功,可以发送给其它节点验证了。

签名的验证
交易发送至其它节点后,其它节点会对其进行验证,只有验证通过的交易才会被继续传播。交易验证的项目很多,这里只讲关于签名的验证。

签名验证的目的有两个:

  1. 证明交易所引用的UTXO的确属于付款人。
    具体到本次交易,就是证明交易001的序号为0的UTXO的确是发给B的。
  2. 证明交易的所有数据的确是付款人提供的,且未被修改过。
    具体到本次交易,就是证明B的确创建了交易002,且交易内的数据未被修改过。

你可能感兴趣的:(学术)