学习笔记《区块链技术与应用》第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

相关推荐
fanchenxinok2 小时前
学习笔记:LabVIEW调用DLL解析S19文件教程
笔记·学习·labview·dll解析
疯狂打码的少年2 小时前
【软件工程】结构化设计:模块独立性与耦合内聚
java·开发语言·笔记·软件工程
芷栀夏3 小时前
Java教育平台实战复盘:课程、考试与学习行为分析系统设计
java·开发语言·学习
从零开始的代码生活_3 小时前
C++ 多态详解:虚函数、动态绑定、抽象类与虚表原理
开发语言·c++·后端·学习·算法
执笔论英雄5 小时前
【大模型推理 】 vllm kvconnet 学习
学习·vllm
后季暖5 小时前
langgraph笔记
笔记
小果因子实验室5 小时前
量化研究--编写第一个回测算法策略研究
大数据·区块链
·醉挽清风·6 小时前
学习笔记—算法—算法题
笔记·学习·算法
西岸行者6 小时前
硬刚DeepSeek: UDPC与MTFAA的血缘辩论
笔记
a1117767 小时前
机器人导航入门指南(从 0 到 1)
笔记·学习·slam