再上一篇我写了什么是脚本和交易的操作符,今天我继续往下写:
一、脚本操作符如何运行(基于堆栈模型)
我以 2+3=5 为例
1)首先将数字2放入堆栈当中,作为堆栈的顶部,之后执行指针向右移➡️
图12)将数字3移入堆栈的顶部,执行指针继续向右移➡️
图23)执行ADD操作,对栈顶的两个元素进行加法运算,得出数字5,同时把2和3移除,把数字5放入堆栈当中
图34)执行指针继续向右移➡️将数字5放入堆栈顶部
图45)执行指针移至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(最常用)
图83、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多重签名的简化版。目的是降低网络存储结构,暂缓节点存储的压力,同时让支付方降低费用。
区块链研习社源码研读班方建强
网友评论