网赚论坛

 找回密码
 免费注册
查看: 294|回复: 0
打印 上一主题 下一主题

简单介绍一下比特币交易的脚本系统

[复制链接]

19

主题

19

帖子

76

积分

Ⅰ级财主

Rank: 1

积分
76
跳转到指定楼层
楼主
发表于 2017-11-20 22:42:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
写这篇文章是因为觉得这两篇文章还需要补充一点东西
比特币交易构成(一)
比特币交易构成(二)


先复习一下比特币地址是什么
比特币地址 = base58( RIPEMD-160( SHA-256( 公钥 ) ) + 校验和 )
校验和 = 取前四位( SHA-256( SHA-256( 版本字节 + RIPEMD-160( SHA-256( 公钥 ) ) ) ) )

RIPEMD-160也是一种Hash函数
base58用于将字节串转换为字符串

base58并不是hash函数,校验和的位数也是知道的,也就是说知道了比特币地址我们就能反推出RIPEMD-160( SHA-256( 公钥 ) )我们把它记作。它是构造交易的重要组成部分。

假设Alice通过比特币交易TX1发送1BTC给Bob,那么TX1的输出中就包含了这些信息(代码有所简化便于理解):

(以下设绿色所写的都是Bob的,并且都是相关联的)
"value" : 1
"address" : 地址
"scriptPubKey" : OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG

前两个好理解,一个是发送金额,一个是对方地址,那为什么还要scriptPubKey这一串那么长的东西呢。
它其实是交易中最重要的部分,它定义了如果Bob想要花费这1BTC,应该满足什么条件。
现在再假设Bob通过TX2要发送这1BTC给Carol,那么他需要在TX2的输入中包含下面的信息:

"txid" : TX1的ID
"scriptSig" :

那么我们来看其他节点要如何验证TX2这笔交易的合法性:
首先通过txid找到TX1中的scriptPubKey(并不需要address),然后与TX2的scriptSig合在一起,组成:

OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG

这就是其他节点验证TX2合法性的脚本了,它从左到右按顺序执行,遇到常数(尖括号表示的)就压入堆栈,遇到操作符(OP开头的)就执行相应操作。表中一行为一步。

堆栈脚本描述
OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIGscriptSig与scriptPubKey合并
OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG常数入栈
  OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG复制栈顶元素
   OP_EQUALVERIFY OP_CHECKSIGhash栈顶元素
  OP_EQUALVERIFY OP_CHECKSIG常数入栈
OP_CHECKSIG检查栈顶两个元素是否相等
检查签名


我们回想刚才这句话:scriptPubKey定义了如果Bob想要花费这1BTC,应该满足什么条件。
Alice写下的OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG 规定了Bob如果想花费这笔钱,必须提供  ,其中hash后必须与相等,Bob所提供的必须相对应。Alice这样写的就是标准的比特币交易,她也可以不这样写,协议是允许的,利用OP操作符,可以写出各种复杂的高级交易类型。再举四个简单的例子:

支付到公钥(而不是公钥的hash)
scriptPubKey :  OP_CHECKSIG // Alice只要求Bob提供与对应的签名
scriptSig :  // Bob提供签名

支付给任何人
scriptPubKey : (空) // 任何人都可以花费的输出

scriptSig : OP_TRUE // 直接给出真,就可以用这笔钱了,看谁先抢到

永久销毁
scriptPubKey : OP_RETURN // 直接返回。任何人都不再能花费这笔输出

Puzzle交易
scriptPubKey : OP_HASH256  OP_EQUAL // 要求提供一段数据,hash后与相等
scriptSig :  // 提供数据

有时会在blockchain.info看到无法解码出地址的交易,有些就是使用了这些高级交易脚本。
其他可用的操作符可参考:https://en.bitcoin.it/wiki/Script

捐助: 1oCaUmXQa8tsqWBkigo8sUALARXXUk2os
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

广告合作|Archiver|手机版|小黑屋|财富吧

GMT+8, 2026-7-19 05:16 , Processed in 0.343201 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.1

© 2014-2021 财富吧

快速回复 返回顶部 返回列表