美文网首页区块链研习社
比特币交易源码研读一(交易脚本)

比特币交易源码研读一(交易脚本)

作者: 方建强 | 来源:发表于2017-12-01 06:19 被阅读631次

比特币交易本质是数据结构,还有比特币参与者和价值转移的相关信息,比特币区块链是全球复式记账总账本,每个比特币交易是在比特币区块链上的公开记录。

交易实例

一、交易数据结构

由CTransaction类来定义的,位于Src/primitives/transaction.h,参数都是常量,都定义成const字段,目的是这些参数在没有更新缓存和哈希值的时候不能被恶意修改。

交易数据结构

版本信息:1、current_version(默认值)2、max_standard_version(作过渡)3、nversion(位于transaction.cpp中查看)

交易类型:1、一个输入两个输出

2、多个输入一个输出(化零为整)

3、一个输入多个输出(发工资)

二、交易的输入与输出

UTXO(Unspent Transaction Output):未花费的交易输出,不能分割,被所有者锁住或者记录于区块链中的,并被网络识别成货币单位,一定量的比特币货币。就像钱包里的零钱,每个零钱就相当于UTXO,一个用户的比特币会被当作UTXO,分散到数百个交易,数百个区块链中,实际上并不存在储存比特币地址或帐户余额的地点,只有被所有者锁住的分散的UTXO。一个用户的比特币余额这个概念是一个通过比特币钱包应用创建的派生之物,比特币钱包通过扫描区块链并聚合所有属于该用户的UTXO来计算该用户的余额,也就是说钱包里不会存我们起初所想像的比特币,而是通过密钥去扫描哪些地址的比特币(UTXO)属于我,我能够解开,通过全网扫描,累加得到比特币总额。

输入:被交易消耗的UTXO

输出:被交易创建的UTXO

比特币在不同人之间进行价值转移,并在交易链中消耗和创建UTXO,一笔交易通过所有者的签名来解锁UTXO,并使用新的所有者的比特币,地址来锁定并创建UTXO,接收者会利用私钥对其锁定,确保资产安全。

交易输入 CTXIN(包含四个字段)

1、

字段名称  prevout

类型      coutpoint

长度        36

作用      前一交易输出点(使交易形成链条)

2、

字段名称  scriptsig

类型        cscript

长度        不定长

作用    交易解锁脚本(脚本签名)

3、

字段名称  nsequence

类型          uint32_t

长度        4

作用    序列号

4、

字段名称    scriptwitness

类型        cscriptwitness

长度        不定长

作用      用来支持隔离见证时使用

coutpoint数据结构

1、

字段名称      hash

类型    uint256

长度      32

作用  前一交易的哈希值

2、

数据结构      n

类型          uint32_t

长度      4

作用    前一交易输出索引,从零开始

通过prevout使交易形成链条。

交易输出CTXOUT(包含两个字段)

1、

字段名称    nvalue

类型          camount

字段              8

作用        比特币数量

2、

字段名称  scriptpubkey

类型            cscript

长度            4

作用        锁定脚步

        区块链研习社源码研读班方建强

相关文章

  • 比特币交易源码研读一(交易脚本)

    比特币交易本质是数据结构,还有比特币参与者和价值转移的相关信息,比特币区块链是全球复式记账总账本,每个比特币交易是...

  • 比特币源码研读四(交易脚本)

    再上一篇我写了什么是脚本和交易的操作符,今天我继续往下写: 一、脚本操作符如何运行(基于堆栈模型) 我以 2+3=...

  • 比特币源码研读二(交易脚本)

    上一次我发了第一篇研读记录,不过我是在菜班长的研读记录上写的,哈哈,谁叫我零基础呢,继续写下去就对了。 今天接着写...

  • 比特币源码研读三(交易脚本)

    这是我在菜班长的课程基础上写的第三篇研读记录,课听了三遍才能明白点皮毛,感谢班长的鼓励与支持,虽然速度很慢,...

  • PalletOne技术讲堂之比特币与区块链特辑(二)

    比特币与区块链技术进阶 AGENDA 交易脚本 扩容与分叉 交易脚本 比特币的交易验证引擎依赖于两类脚本来验证比特...

  • 比特币源码研读

    forest21000版 比特币源码研读之一比特币源码研读之二比特币源码研读之三比特币源码研读之四比特币源码研读之...

  • 比特币源码研读---交易

    0x00 废话 距离上次开篇已有半个多月了,平时晚上回家又懒,周末回家还要带娃,研读代码工作进展很慢,趁今天出差的...

  • 零基础搞懂比特币的交易创建

    为了让你了解比特币交易的构造,我提供了以下最小必要知识: 比特币交易的组成元素 交易脚本中的构成元素 比特币交易的...

  • PalletOne技术讲堂之比特币与区块链特辑(二)

    原创:曾毅Pallet6月20日 比特币与区块链技术进阶 AGENDA 交易脚本 扩容与分叉 交易脚本 比特币的交...

  • 锁定和解锁

    比特币的交易验证引擎依赖于两类脚本来验证比特币交易:锁定脚本和解锁脚本。 锁定脚本是一个放置在输出上面的花费条件:...

网友评论

    本文标题:比特币交易源码研读一(交易脚本)

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