美文网首页
比特币代码研读笔记(4)---交易原理

比特币代码研读笔记(4)---交易原理

作者: Saiwaimuma | 来源:发表于2018-03-18 20:43 被阅读0次

    上篇介绍了交易过程中用到的数据结构,这一篇 介绍下交易的原理,关于交易的代码细节方面还没有看的特别明白,只写写交易的原理吧,代码级别的放到下一篇中。一个交易要被创建,广播出去,然后进行验证。上篇写到了,交易的数据结构,其实交易建立的过程就是在填充这样的数据结构。 以A给B转账说明整个过程,假如A已经获得了B的地址:

    (1)A要查看自己的CWalletTx ,所谓自己的WalletTx 是指,out是指向自己的Tx,也即out 的scriptPubkey中的地址是自己的公钥生成的

      (2)  然后在所有的这样的out中选择value大于或是几个之和大于转账金额的out

    (3)根据选择的Out所在的Tx开始创建创建交易

     根据B的地址生成的scriptPubkey和转账的金额,生成Txout,填充到vout的第一个元素中

    如果选择的out的金额大于转账的金额,此时会有找零情况的发生。此种情况发生时,需要再生成一个Txout,该Txout的值为找零,scriptPubkey则是根据自己的地址生成的。然后将该Txout填充到下一个Txout中。

    (4)根据在(3)所有选择的out来创建Txin,对于每一个out,使用out所在的Tx的hash,和位于Tx的index作为参数构建Txin,将该Txin添加到Vin中,

      (5)  对每一个out都构建完Txin之后,需要生成Txin的scriptSig,由于每一个out的scriptPubkey(即锁定脚本) 是由自己的地址构成的,所以此时的解锁脚本可以由自己的私钥来生成签名。

    由于交易费用是由交易的大小决定的,所以当交易创建好后,需要验证加上交易费用之后是否超过提供的金额,如果超过了,那么把添加交易费用后的金额作为需要转账的金额,重新开始计算。

    相关文章

      网友评论

          本文标题:比特币代码研读笔记(4)---交易原理

          本文链接:https://www.haomeiwen.com/subject/nndyqftx.html