BitVM中文社区
白皮书BTC Layer2生态BitVM生态BTC 2024 会议BTC测试网水龙头社交媒体
  • 社区介绍
  • 成员招募
  • BitVM
    • 📖英文白皮书
    • 📖中英文白皮书
    • 📖BitVM白皮书-详细讲解
    • 🍀BitVM项目概况
    • 🌾基础知识
      • BitVM论文中图1解析
      • 隔离见证的好处
      • Schnorr 签名:简介
      • 谨慎日志合约(DLC):比特币的可扩展智能合约
      • 什么是比特币默克尔化抽象语法树(MAST)?
      • 什么是多重签名钱包(Multisig)?
      • 什么是门限签名(TSS)?
      • 什么是图灵完备
      • 区块、链
      • UTXO与普通账户模型
      • UTXO Vs 普通账户模型
      • PoW共识
      • PoS共识机制
      • 哈希与加密算法
      • 点时间锁合约(PTLC)
      • 基于 Taproot 的闪电通道
      • Taproot 及 MuSig2 回顾
      • Taproot是什么(比特币升级Taproot)
      • SegWit和Taproot是什么?二者之间的差异与各自优势
      • DPoS共识机制
      • 比特币脚本研究
      • 零知识证明介绍
      • Optimistic Rollups
      • Rollup:详解ZK Rollups、Optimistic
  • 👨重要人物
    • Robin Linus
  • BitVM精选文章
    • 与BitVM有关的重要信息
    • BitVM:比特币层计算的突破
    • BitVM 入门
    • 深入探讨BitVM - 表达图灵完备比特币合约的计算范式
    • BitVM and Bridges-侧链桥
    • What is BitVM?
      • What is BitVM? with Robin Linus and Super Testnet (SLP520)
      • BitVM是什么?与Robin Linus和Super Testnet详细讲解
    • Robin Linus on BitVM
      • BitVM:Bitcoin的链下合约
      • BitVM:Off-chain Bitcoin Contracts
      • PPT中文版
      • PPT英文版
    • BitVM:图灵完备的 Taproot 智能合约
    • BitVM 在比特币上实现智能合约
    • 全面解析ZK Rollups和Optimistic Rollups
    • Optimism Rollup原理详解【以太坊L2方案】
    • 要在比特币上计算任何内容,资深开发者们怎么看BitVM?
    • BitVM 是什么?图文讲解
    • BitVM 脑洞大开,复杂概念和落地可行性剖析
    • BitVM:开启比特币的智能合约时代
  • 🆚生态对比
    • 从比特币应用编程理解 CKB 的可编程性
    • BitVM 与 RGB 协议:瞄准比特币生态的“双星”
    • 什么是 RGB 协议?
    • 牛市第一响:BTC L2将造就alpha之王
    • 比特币L2的机会
  • BitVM项目
    • BitVM项目概览
    • Bitlayer
      • Bitlayer 介绍
      • Bitlayer快速了解
      • 一文了解 Bitlayer:构建比特币计算层
      • Bitlayer Research:DLC 原理解析及其优化思考
    • zkBase
      • 为什么市场需要 ZKBase?
      • 了解 ZKByte:基于零知识证明和 BitVm 的比特币 Layer2 拓展解决方案
    • Bitstake
      • Bitstake 简介:基于 BitVM 的权益证明桥
    • Citrea
      • Citrea 概述:比特币首个 ZK Rollup
  • Runes
    • 作者
    • 优质文章
      • 为什么说 Runes 符文赛道即将爆发?
      • 超越BRC20?一文读懂比特币符文协议Runes的前世今生
      • 解读Runes协议:两大发行方式、文化与玩法
      • xiyu 对 Runes 协议的解读:提供了一种在比特币网络上创建和转移符号化资产的方法
      • 解读Runes协议:发展历程及其最新「公开铭刻」发行机制的拓展
      • Ordinals创始人Cesay:首次全面介绍Runes协议
      • Runes预挖矿概念:一文读懂Rune Kingdom符文龙
      • Runes是一个Bitcoin Token Standard协议
      • 一文读懂 Runes 与 BRC20 等同质化代币协议的对比
      • Ordinals创始人首谈Runes协议细节:前10个Runes只支持Open mint
      • 一文看懂BRC20、Atomicals、RUNE等协议的独特之处
    • 视频
      • No129. 什么是符文Runes协议?Runes协议几个关注度高的项目介绍
      • 比特币牛市行情下个热点赛道布局 | 符文协议 runes protocol | 什么是符文协议Runes
      • 被譽為下一個「銘文」的「符文」是什麼?Runes協定主網上線時間已定?|秒懂符文
  • btc
    • 📖白皮书
      • 中英文
      • 注解版
    • 📖《精通比特币》第二版
      • 原版序言
      • 中文版序言
      • 译者序
      • 第二版更新内容
      • 术语
      • 目录
      • 第一章 介绍
      • 第二章 比特币工作原理
      • 第三章 比特币核心
      • 第四章 密钥和地址
      • 第五章 钱包
      • 第六章 交易
      • 第七章 高级交易和脚本
      • 第八章 比特币网络
      • 第九章 区块链
      • 第十章 挖矿和共识
      • 第十一章 比特币安全
      • 第十二章 区块链应用
      • 附录A-1 比特币白皮书吴忌寒翻译
      • 附录A-2 比特币白皮书李笑来翻译
      • 附录B、交易脚本语言操作符,常量和符号
      • 附录C:比特币改进提案(BIP)
      • 附录D:Bitcore
      • 附录E:pycoin库、实用密钥程序ku和交易程序tx
      • 附录F:Bitcoin Explorer(bx)命令
    • 📖《精通比特币》第三版
    • 🌾精选文章
      • BTC生态扩容方案巡礼(1):铭文何去何从
      • BTC生态扩容方案综述
  • 培训
    • Web3技术培训
  • BTC 生态项目汇总
    • 图文版
  • 比特币 二层
    • Rollup
      • Bitlayer
      • QED Protocol
      • BitVM
      • Bison
      • B² Network
        • B² Network技术实现:基于零知识证明验证承诺的比特币ZK-Rollup
      • Chainway
      • bl2
      • Rollux
      • BOB
      • Hacash.com
      • BeL2
      • LumiBit
        • 详解原生比特币 Layer 2 网络 LumiBit
    • 比特币侧链
      • BEVM
        • BEVM Founder自述:为什么以及如何做BTC Layer2 ?
        • 以BTC为Gas且兼容EVM的BTC Layer2
      • MAP Protocol
      • Merlin Chain
      • Chain-key Bitcoin (ckBTC)
      • SatoshiVM
        • 比特币 L2 新机会?详解 SatoshiVM 及测试网交互流程
      • Rootstock
      • Libre
      • Stacks
      • Liquid Network
      • Babylon
      • BitBolt
      • Drivechain
      • RGB++
        • RGB++:为正统比特币L2添砖加瓦
        • RGB++ Protocol Light Paper
        • 从RGB到RGB++:CKB如何赋能比特币生态资产协议
        • 一文了解提出 RGB++ 协议的比特币二层:CKB
        • RGB++:比特币 L2 资产的新思路
    • 数据可用性
      • Veda
      • Nubit
    • 状态通道
      • OmniBOLT
      • Lightning Network
    • 客户端验证
      • BiHelix
      • RGB
    • 其他
      • Path Protocol
      • Bool Network
      • Dovi
      • Bitfinity Network
      • U Protocol
      • Botanix
        • Botanix protocol
      • AiPTP
  • BTC 基础设施
    • 链下索引
      • UniSat
      • Rooch Network
    • 资产协议
      • Layer1
        • Ordinals序列协议
          • BRC20.com
          • LRC-20/LTC-20
          • ORC-20
            • Ordinals
          • BRC-100
          • SRC-20(STAMPS 协议)
            • SRC20 OpenStamp
          • Runes 协议
          • Pipe 协议
          • Tap Protocol
        • Atomical原子协议
          • ARC-20
            • Atomicals Protocol
      • Layer2
        • BitVM
        • Lightning Network
        • RGB
        • Nostr Assets Protocol
    • 资产桥
      • DLC.Link
      • Liquidium
      • BoringDAO
      • GoWrap
      • XLink
      • MultiBit
      • UniRouter
      • VMPX
      • OrdBridge
      • BRCport
      • SoBit
      • BitSwap
      • SaxBridge
      • Ordinfinity
      • Shell Trade
    • 预言机
      • 概览
        • 预言机赛道大全图谱(经典收藏)
        • OKX Ventures研报:重新思考预言机,看到及未被看到的
      • Chainlink
        • 万字拆解 Chainlink 2.0 构成背景、技术原理、经济模型与未来挑战
        • Chainlink (LINK) 资金面情况及近期发展动态
      • Band Protocol
        • 投资 Band Protocol (BAND) – 您需要了解的一切
      • Pyth Network
        • Pyth Network 研报:Solana 生态预言机发展现状与前景分析
      • Supra
        • Supra万字研究报告: Intralayer中间件,能否撼动Link预言机龙头地位?
  • twitter-space
    • 怎么样的 BTC Layer2 更有机会胜出?
      • 全文
    • BTC Layer2 技术创新盘点
      • 全文
    • 比特币L2混战:从业者 / 市场如何选择?
      • 全文版
      • 精简
  • BTC Layer2 周报
    • BTC Layer2 68个项目盘点
    • 2024.3.11 - 2024.3.17
    • 2024.3.4 - 2024.3.10
    • 2024.2.19 - 2024.2.25
  • BitVM 周报
    • 2024.3.18 - 2024.3.24
    • 2024.3.11 - 2024.3.17
    • 2024.3.4 - 2024.3.10
    • 2024.2.26 - 2024.3.3
  • BTC 2024 会议
    • 比特币复兴 2024:按主题演讲和专题小组分段
由 GitBook 提供支持
在本页

这有帮助吗?

  1. btc
  2. 《精通比特币》第二版

附录B、交易脚本语言操作符,常量和符号

上一页附录A-2 比特币白皮书李笑来翻译下一页附录C:比特币改进提案(BIP)

这有帮助吗?

以下的表和描述参见

表1.脚本压入堆栈

符号
值 (十六进制)
描述

OP_0 or OP_FALSE

0x00

一个字节空串被压入堆栈中

1-75

0x01-0x4b

把接下来的N 个字节压入堆栈中,N 的取值在1 到75 之间

OP_PUSHDATA1

0x4c

下一个脚本字节包括N,会将接下来的N 个字节压入堆栈

OP_PUSHDATA2

0x4d

下两个脚本字节包括N,会将接下来的N 个字节压入堆栈

OP_PUSHDATA4

0x4e

下四个脚本字节包括N,会将接下来的N 个字节压入堆栈

OP_1NEGATE

0x4f

将脚本-1 压入堆栈

OP_RESERVED

0x50

终止- 交易无效(除非在未执行的OP_IF语句中)

OP_1 or OP_TRUE

0x51

将脚本1 压入堆栈

OP_2 to OP_16

0x52 to 0x60

将脚本N 压入堆栈,例如OP_2 压入脚本“2”

表2.有条件的流控制的操作符

符号
值 (十六进制)
描述

OP_NOP

0x61

无操作

OP_VER

0x62

终止- 交易无效(除非在未执行的OP_IF 语句中)

OP_IF

0x63

如果栈项元素值为0,语句将被执行

OP_NOTIF

0x64

如果栈项元素值不为0,语句将被执行

OP_VERIF

0x65

终止- 交易无效

OP_VERNOTIF

0x66

终止- 交易无效

OP_ELSE

0x67

如果前述的OP_IF 或OP_NOTIF 或OP_ELSE 未被执行,这些语句就会被执行

OP_ENDIF

0x68

终止OP_IF, OP_NOTIF, OP_ELSE 区块

OP_VERIFY

0x69

如果栈项元素值非真,则标记交易无效

OP_RETURN

0x6a

标记交易无效

表3.时间锁操作符

符号
值 (十六进制)
描述

OP_CHECKLOCKTIMEVERIFY (previously OP_NOP2)

0xb1

如果栈顶元素比交易锁定时间字段大,则将交易标记为无效。否则脚本评测将像OP_NOP操作一样继续执行。交易在一下4种之一的情况下是无效的:1.堆栈是空的;2.栈顶元素是负数;3.当交易锁定时间字段值少于500000000时,栈顶元素大于等于500000000,反之亦然;4.输入序列字段等于0xffffffff。具体内容详见BIP-65。

OP_CHECKSEQUENCEVERIFY (previously OP_NOP3)

0xb2

如果输入值(BIP 0068强制规定的顺序)的相对锁定时间不等于或多于栈顶元素值时,将交易标记为无效。具体内容详见BIP-112。

表4.堆栈操作符

符号
值 (十六进制)
描述

OP_TOALTSTACK

0x6b

从主堆栈中取出元素,推入辅堆栈。

OP_FROMALTSTACK

0x6c

从辅堆栈中取出元素,推入主堆栈

OP_2DROP

0x6d

移除栈顶两个元素

OP_2DUP

0x6e

复制栈顶两个元素

OP_3DUP

0x6f

复制栈顶三个元素

OP_2OVER

0x70

把栈底的第三、第四个元素拷贝到栈顶

OP_2ROT

0x71

移动第五、第六元素到栈顶

OP_2SWAP

0x72

将栈顶的两个元素进行交换

OP_IFDUP

0x73

如果栈项元素值不为0,复制该元素值

OP_DEPTH

0x74

Count the items on the stack and push the resulting count

OP_DROP

0x75

删除栈顶元素

OP_DUP

0x76

复制栈顶元素

OP_NIP

0x77

删除栈顶的下一个元素

OP_OVER

0x78

复制栈顶的下一个元素到栈顶

OP_PICK

0x79

把堆栈的第n 个元素拷贝到栈顶

OP_ROLL

0x7a

把堆栈的第n 个元素移动到栈顶

OP_ROT

0x7b

翻转栈顶的三个元素

OP_SWAP

0x7c

栈顶的三个元素交换

OP_TUCK

0x7d

拷贝栈顶元素并插入到栈顶第二个元素之后

表5.字符串接操作

符号
值 (十六进制)
描述

OP_CAT

0x7e

连接两个字符串,已禁用

OP_SUBSTR

0x7f

返回字符串的一部分,已禁用

OP_LEFT

0x80

在一个字符串中保留左边指定长度的子串,已禁用

OP_RIGHT

0x81

在一个字符串中保留右边指定长度的子串,已禁用

OP_SIZE

0x82

把栈顶元素的字符串长度压入堆栈

表6.二进制算术和条件

符号
值 (十六进制)
描述

OP_INVERT

0x83

所有输入的位取反,已禁用

OP_AND

0x84

对输入的所有位进行布尔与运算,已禁用

OP_OR

0x85

对输入的每一位进行布尔或运算,已禁用

OP_XOR

0x86

对输入的每一位进行布尔异或运算,已禁用

OP_EQUAL

0x87

如果输入的两个数相等,返回1,否则返回0

OP_EQUALVERIFY

0x88

与OP_EQUAL 一样,如结果为0,之后运行OP_VERIFY

OP_RESERVED1

0x89

终止- 无效交易(除非在未执行的OP_IF 语句中)

OP_RESERVED2

0x8a

终止-无效交易(除非在未执行的OP_IF 语句中)

表7.数值操作

符号
值 (十六进制)
描述

OP_1ADD

0x8b

栈顶值加1

OP_1SUB

0x8c

栈顶值减1

OP_2MUL

0x8d

无效(栈顶值乘2)

OP_2DIV

0x8e

无效(栈顶值除2)

OP_NEGATE

0x8f

栈顶值符号取反

OP_ABS

0x90

栈顶值符号取正

OP_NOT

0x91

如果栈顶值为0 或1,则输出1或0;否则输出0

OP_0NOTEQUAL

0x92

输入值为0 输出0;否则输出1

OP_ADD

0x93

弹出栈顶的两个元素,压入二者相加结果

OP_SUB

0x94

弹出栈顶的两个元素,压入二者相减(第二项减去第一项)结果

OP_MUL

0x95

禁用(栈顶两项的积)

OP_DIV

0x96

禁用(输出用第二项除以第一项的倍数)

OP_MOD

0x97

禁用(输出用第二项除以第一项得到的余数)

OP_LSHIFT

0x98

禁用(左移第二项,移动位数为第一项的二进制位数)

OP_RSHIFT

0x99

禁用(右移第二项,移动位数为第一项的二进制位数)

OP_BOOLAND

0x9a

布尔与运算,两项都不为0,输出1,否则输出0

OP_BOOLOR

0x9b

布尔或运算,两项有一个不为0,输出1,否则输出0

OP_NUMEQUAL

0x9c

两项相等则输出1,否则输出为0

OP_NUMEQUALVERIFY

0x9d

与NUMEQUAL 相同,如结果为0运行OP_VERIFY

OP_NUMNOTEQUAL

0x9e

如果栈顶两项不是相等数的话,则输出1

OP_LESSTHAN

0x9f

如果第二项小于栈顶项,则输出1

OP_GREATERTHAN

0xa0

如果第二项大于栈顶项,则输出1

OP_LESSTHANOREQUAL

0xa1

如果第二项小于或等于第一项,则输出1

OP_GREATERTHANOREQUAL

0xa2

如果第二项大于或等于第一项,则输出1

OP_MIN

0xa3

输出栈顶两项中较小的一项

OP_MAX

0xa4

输出栈顶两项中较大的一项

OP_WITHIN

0xa5

如果第三项的数值介于前两项之间,则输出1

表8.加密和散列操作

符号
值 (十六进制)
描述

OP_RIPEMD160

0xa6

返回栈顶项的RIPEMD160 哈希值

OP_SHA1

0xa7

返回栈顶项SHA1 哈希值

OP_SHA256

0xa8

返回栈顶项SHA256 哈希值

OP_HASH160

0xa9

栈顶项进行两次HASH,先用SHA-256,再用RIPEMD-160

OP_HASH256

0xaa

栈顶项用SHA-256 算法HASH 两次

OP_CODESEPARATOR

0xab

标记已进行签名验证的数据

OP_CHECKSIG

0xac

交易所用的签名必须是哈希值和公钥的有效签名,如果为真,则返回1

OP_CHECKSIGVERIFY

0xad

与CHECKSIG 一样,但之后运行OP_VERIFY

OP_CHECKMULTISIG

0xae

对于每对签名和公钥运行CHECKSIG。所有的签名要与公钥匹配。实现中存在一个BUG,会从堆栈中弹出一个前缀为OP_0的值。

OP_CHECKMULTISIGVERIFY

0xaf

与CHECKMULTISIG 一样,但之后运行OP_VERIFY

表9.非操作符

符号
值 (十六进制)
描述

OP_NOP1-OP_NOP10

0xb0-0xb9

无操作忽略

表10.仅供内部使用的保留关键字

符号
值 (十六进制)
描述

OP_SMALLDATA

0xf9

代表小数据域

OP_SMALLINTEGER

0xfa

代表小整数数据域

OP_PUBKEYS

0xfb

代表公钥域

OP_PUBKEYHASH

0xfd

代表公钥哈希域

OP_PUBKEY

0xfe

代表公钥域

OP_INVALIDOPCODE

0xff

代表当前未指定的操作码

📖
https://en.bitcoin.it/wiki/Script