学习笔记《区块链技术与应用》第4天 比特币脚本语言

输入0.7

输出0.5

23个确认 不太可能回滚了


交易id

hash值

版本

locktime 交易剩下时间:0立即生效

confirmation:确认信息

time:产生时间

blocktime:块产生时间


vout: 交易中第0个输入

scriptSig:输入脚本(input script)

n:交易里第0个输出

scriptPubKey:输出

reqSigs: 需要1个签名才能兑现

addresses:公钥地址


第一种

最简单情况,直接给出收款人的公钥



执行过程,压入栈=》检查签名

方式二


输出 脚本没有直接给公钥 只给Hash

公钥是在输入 脚本里给出的,也要给出签名

执行过程:

DUP 复制

HASH160: 弹出栈顶元素取Hash,然后把得到的hash压入栈

推入output中的PubKeyhash

当前两个Hash一个是input提供一个是output计算hash后得到

EQUALVERIFY 弹出栈顶两个元素比较他们是否相等

CHECKSIG 弹出栈顶两个元素 检查签名是否正确

第三种

给出收款人提供的一个脚本(redeemScript) 的hash

举例:

拼接输入+输出脚本

压入sig

压入RSH

计算HASH

压入RAH

EQUAL比较

反序列化执行脚本

检查PubKey

多重签名

× 存在bug需要多压入一个元素


交易时需要给出公钥以及M,N的值。

多重签名 方式2

将复杂度转移到输入脚本

赎回脚本由input提供(电商)。

第二阶段

第二阶段与之前paytohash一样

最后一个

RETUREN 用于返回false

  1. 用于销毁比特币,有些小币种要求销毁一定数量,AlternativeCoin
  2. 添加永久保存的内容:digital commitment。某种知识产权保护放到RETURN后面不会被执行。证明你在某个时间点已经知道某个知识。
  3. coinbase只有获得记账权的节点才能用,


    输入金额全部用于支付交易费

PPT例子中省略了执行命令的OP_前缀正常应该是:

OP_CHECKSIG

OP_DUP

OP_xxx

相关推荐
东方芷兰10 小时前
LLM 笔记 —— 02 大语言模型能力评定
人工智能·笔记·python·神经网络·语言模型·自然语言处理·cnn
charlie11451419110 小时前
理解C++20的革命特性——协程支持1
c++·学习·c++20·协程·语言特性·调度·现代c++
The_Killer.11 小时前
近世代数(抽象代数)详细笔记--群
学习·抽象代数·
阿明611 小时前
list模拟实现(简单版)【C++】
开发语言·c++·学习·list
wilson_go11 小时前
动态Vault
区块链
wilson_go11 小时前
Raydium
区块链
Yupureki11 小时前
从零开始的C++学习生活 1:命名空间,缺省函数,函数重载,引用,内联函数
c语言·开发语言·c++·学习·visual studio
小墨宝11 小时前
web前端学习 langchain
前端·学习·langchain
9毫米的幻想11 小时前
【Linux系统】—— 程序地址空间
java·linux·c语言·jvm·c++·学习
71-311 小时前
C语言——循环的嵌套小练习
c语言·笔记·学习·其他