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

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

作者: 方建强 | 来源:发表于2018-02-05 16:58 被阅读89次

再上一篇我写了什么是脚本和交易的操作符,今天我继续往下写:

一、脚本操作符如何运行(基于堆栈模型)

我以 2+3=5 为例

1)首先将数字2放入堆栈当中,作为堆栈的顶部,之后执行指针向右移➡️

图1

2)将数字3移入堆栈的顶部,执行指针继续向右移➡️

图2

3)执行ADD操作,对栈顶的两个元素进行加法运算,得出数字5,同时把2和3移除,把数字5放入堆栈当中

图3

4)执行指针继续向右移➡️将数字5放入堆栈顶部

图4

5)执行指针移至EQUAL,操作进行逻辑判断,两值是否相等,如果相等堆栈顶部就得到TRUE

图5

特点:

1、逆波兰操作,数字在前,符号在后

2、从左到右执行

3、堆栈存储(POP、PUSH)

二、交易脚本创建

还是以2+3=5为例

1)加法运算锁定脚本

3 OP_ADD 5 OP_EQUAL(3+?=5)

2)加法运算解锁脚本

    2(把2代入3+2=5)

3)运算验证组合

2 3 OP_ADD 5 OP_EQUAL

逻辑判断理解为数学函数的求解

比特币交易脚本的创建

以Alice为例

1)交易锁定脚本

OP_DUP OP_HASH160<Alice Public Key Hash>OP_EQUAL VERIFY OP_CHECKSIG(对Alice进行公钥哈希,判断比较,验证签名)

2)解锁脚本

<Alice Signature><Alice Public Key>(Alice的签名,Alice的公钥)

3)交易验证组合

<Alice Signature><Alice Public Key>OP_DUP OP_HASH160<Alice Public Key Hash>OP_EQUAL VERIFY OP_CHECKSIG(Alice的签名与公钥,解锁脚本代入到锁定脚本中,实现交易的验证组合。)

交易脚本的执行过程

类似于2+3=5的运算过程,如图:

图6 图7

以上就是对交易的公钥和签名的验证过程,验证正确后就能获得比特币的使用权,这是在比特币交易中执行最多的脚本交易类型:P2PKH(支付到公钥哈希)

二、5种标准交易

1、OP_Return

不用于真正的交易处理,其主要是用于最多40个字节的非交易数据的存储。

2、P2PKH(最常用)

图8

3、P2PK(pay to public key)

公钥本身已经存储在锁定脚本中,而且代码长度也更短,用于Coinbase交易中(挖矿奖励)。

1)锁定脚本形式

<Public Key A>OP_CHECKSIG

2)解锁脚本形式

<Signature from Private key A>

3)脚本组合

<Signature from Private key A><Public Key A>OP_CHECKSIG

4、MS(Multiple signature)

M-N模式的交易脚本机制,其形式为

M<public key 1><public key 2>...<public key N>N OP_CHECKMULITSIG(N为公钥总数,M为需要验证的公钥,M≦N)

例:2-3多重签名条件

2<public key A><public key B>...<public key C>3 OP_CHECKMULITSIG

一共有3个公钥签名,其中需要2个公钥签名符合条件才能予以解锁,从而提高安全性。

5、P2SH(pay-to-script-hash)

在2012年被作为一种新型的,能大大简化复杂交易脚本的交易类型而引入。是MS多重签名的简化版。目的是降低网络存储结构,暂缓节点存储的压力,同时让支付方降低费用。

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

相关文章

  • 比特币源码研读

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 比特币源码研读之十一

    比特币源码研读系列已经发表了十篇了,通过这十篇源码研读系列让我对比特币源码及比特币运行原理有了进一步的理解,也让我...

  • 比特币源码研读之一

    比特币源码研读之一——区块链研习社 《比特币源码研读班》 一看文件夹结构 和 github编译依赖,分析的依赖库 ...

  • 比特币源码研读之一

    作者:区块链研习比特币源码研读班 菜菜子 一、源码下载 本文比特币源码下载地址为:https://github.c...

网友评论

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

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