blockchain script 中文描述

2024-04-28 00:38

本文主要是介绍blockchain script 中文描述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

script 总结
废话不多说,直接上干货,每一个脚本的中文翻译,可以当个词典查阅:

  • 常数
关键字操作码十六进制输入输出描述
OP_0,OP_FALSE00×00一个字节空串被推到堆栈中(并非no-op操作,有一个元素压入堆栈)
N/A1-750×01-0x4b(特殊)数据下一个操作码字节是要被压入堆栈的数据
OP_PUSHDATA1760x4c(特殊)数据下一字节是要被压入堆栈的数据的长度
OP_PUSHDATA2770x4d(特殊)数据下两个字节是要被压入堆栈的数据的长度
OP_PUSHDATA4780x4e(特殊)数据下四个字节是要被压入堆栈的数据的长度
OP_1NEGATE790x4f-1数字-1被压入堆栈
OP_1,OP_TRUE810×511数字1被压入堆栈
OP_2-OP_1682-960×52-0×602-16与关键名相对应的数字被压入堆栈
  • 流程控制
关键字操作码十六进制输入输出描述
OP_NOP970×61无任何操作
OP_IF990×63<expression> if [statements] [else [statements]]* endif 如果栈项元素值不为0,语句将被执行,栈项元素值被删除。
OP_NOTIF1000×64<expression> if [statements] [else [statements]]* endif 如果栈项元素值为0,语句将被执行,栈项元素值被删除。
OP_ELSE1030×67<expression> if [statements] [else [statements]]* endif 如果前述的OP_IF或 OP_NOTIF或OP_ELSE 未被执行,这些语句就会被执行;如果前述的OP_IF或 OP_NOTIF或OP_ELSE被执行,这些语句就不会被执行
OP_ENDIF1040×68<expression> if [statements] [else [statements]]* endif 结束if/else语言块
OP_VERIFY1050×69True / false无 / False如果栈项元素值非真,则标记交易无效。True会被删除,False不会被删除。
OP_RETURN1060x6a标记交易无效
  • 堆栈
关键字操作码十六进制输入输出描述
OP_TOALTSTACK1070x6bx1(alt)x1把输入压入辅堆栈的项部,从主堆栈删除。
OP_FROMALTSTACK1080x6c(alt)x1x1把输入压入主堆栈的项部,从辅堆栈删除。
OP_IFDUP1150×73xx / x x如果栈项元素值不为0,复制该元素值
OP_DEPTH1160×74<堆栈大小>把堆栈元素个数压入堆栈
OP_DROP1170×75x删除栈顶元素
OP_DUP1180×76xx x复制栈顶元素
OP_NIP1190×77x1x2 x2删除栈顶的下一个元素
OP_OVER1200×78x1 x2x1 x2 x1复制栈顶的下一个元素到栈顶
OP_PICK1210×79xn … x2 x1 x0 <n>xn … x2 x1 x0 xn把堆栈的第n个元素拷贝到栈顶
OP_ROLL1220x7axn … x2 x1 x0 <n>… x2 x1 x0 xn把堆栈的第n个元素移动到栈顶
OP_ROT1230x7bx1 x2 x3x2 x3 x1栈顶的三个元素向左翻转
OP_SWAP1240x7cx1 x2x2 x1栈顶的两个元素交换
OP_TUCK1250x7dx1 x2x2 x1 x2把栈顶元素拷贝并插入到栈顶下一个元素之后。注意:原文为“插入到栈顶下一个元素之前”,可能有误,翻译时改为“之后”
OP_2DROP1090x6dx1 x2删除栈顶两个元素
OP_2DUP1100x6ex1 x2x1 x2 x1 x2复制栈顶两个元素
OP_3DUP1110x6fx1 x2 x3x1 x2 x3 x1 x2 x3复制栈顶三个元素
OP_2OVER1120×70x1 x2 x3 x4x1 x2 x3 x4 x1 x2把栈底的两个元素拷贝到栈顶
OP_2ROT1130×71x1 x2 x3 x4 x5 x6x3 x4 x5 x6 x1 x2以一对元素为单位,向左翻转。注意:原文大意“把第五和第六元素移动到栈顶”,明显有误
OP_2SWAP1140×72x1 x2 x3 x4x3 x4 x1 x2以一对元素为单位,交换栈顶的两对元素的位置。
  • 字符串

如果标记为已禁用的操作码出现在交易中,必须终止和失败返回。

关键字操作码十六进制输入输出描述
OP_CAT1260x7ex1 x2out连接两个字符串,已禁用
OP_SUBSTR1270x7fin begin sizeout返回字符串的一部分,已禁用
OP_LEFT1280×80in sizeout在一个字符串中保留左边指定长度的子串,已禁用
OP_RIGHT1290×81in sizeout在一个字符串中保留右边指定长度的子串,已禁用
OP_SIZE1300×82inin size把栈顶元素的字符串长度压入堆栈(无需弹出元素)
  • 位逻辑

如果标记为已禁用的操作码出现在交易中,必须终止和失败返回。

关键字操作码十六进制输入输出描述
OP_INVERT1310×83inout所有输入的位取反,已禁用.
OP_AND1320×84x1 x2out对输入的所有位进行布尔与运算,已禁用
OP_OR1330×85x1 x2out对输入的每一位进行布尔或运算,已禁用
OP_XOR1340×86x1 x2out对输入的每一位进行布尔异或运算,已禁用
OP_EQUAL1350×87x1 x2True/false如果输入的两个数相等,返回1,否则返回0。
OP_EQUALVERIFY1360×88x1 x2True/false与OP_EQUAL一样,之后运行OP_VERIFY 。
  • 算术逻辑

注意:算术逻辑的输入限于有符号32位长整数,但输出有可能会溢出。
如果任何命令的输入值长度超过4字节,脚本必须中止和失败返回。如果标记为已禁用的操作码出现在交易中,也必须终止和失败返回

关键字操作码十六进制输入输出描述
OP_1ADD1390x8binout输入值加1
OP_1SUB1400x8cinout输入值减1
OP_2MUL1410x8dinout输入值乘2,已禁用
OP_2DIV1420x8einout输入值除2,已禁用
OP_NEGATE1430x8finout输入值符号取反
OP_ABS1440×90inout输入值符号取正
OP_NOT1450×91inout如果输入值为0或1,则输出1或0;否则输出0。I
OP_0NOTEQUAL1460×92inout输入值为0输出0;否则输出1。
OP_ADD1470×93a bout输出a+b
OP_SUB1480×94a bout输出a-b
OP_MUL1490×95a bout输出a*b,已禁用
OP_DIV1500×96a bout输出a/b, 已禁用
OP_MOD1510×97a bout输出a/b的余数,已禁用
OP_LSHIFT1520×98a bout把a向左移动b位,保留符号,已禁用
OP_RSHIFT1530×99a bout把a向右移动b位,保留符号,已禁用
OP_BOOLAND1540x9aa bout如果a和b都不为0,输出1,否则输出0
OP_BOOLOR1550x9ba bout如果a或b不为0,输出1,否则输出0
OP_NUMEQUAL1560x9ca bout如果a=b则输出1,否则输出0。
OP_NUMEQUALVERIFY1570x9da bout与OP_NUMEQUAL一样,之后要运行OP_VERIFY
OP_NUMNOTEQUAL1580x9ea bout如果a!=b则输出1,否则输出0。
OP_LESSTHAN1590x9fa bout如果a<b则输出1,否则输出0。
OP_GREATERTHAN1600xa0a bout如果a>b则输出1,否则输出0。
OP_LESSTHANOREQUAL1610xa1a bout如果a<=b则输出1,否则输出0
OP_GREATERTHANOREQUAL1620xa2a bout如果a>=b则输出1,否则输出0
OP_MIN1630xa3a bout输出a,b中的最小值
OP_MAX1640xa4a bout输出a,b中的最大值
OP_WITHIN1650xa5x min maxout如果x在min和max之间,则输出1,否则输出
  • 加密
关键字操作码十六进制输入输出描述
OP_RIPEMD1601660xa6inhash输入用RIPEMD-160算法HASH
OP_SHA11670xa7inhash输入用SHA-1算法HASH.
OP_SHA2561680xa8inhash输入用SHA-256算法HASH.
OP_HASH1601690xa9inhash输入被HASH两次,先用 SHA-256,再用 RIPEMD-160.
OP_HASH2561700xaainhash输入用SHA-256算法HASH两次.
OP_CODESEPARATOR1710xab所有签名检查只需匹配最近一次执行的OP_CODESEPARATOR 操作数据的签名即可。
OP_CHECKSIG1720xacsig pubkeyTrue / false全部交易的输出、输入和脚本(从最近执行的OP_CODESEPARATOR操作到最)都被HASH,OP_CHECKSIG使用的签名必须是该HASH值和公钥的有效签名,如果是真则返回1,否则返回0。
OP_CHECKSIGVERIFY1730xadsig pubkeyTrue / false与OP_CHECKSIG一样,但之后执行 OP_VERIFY
OP_CHECKMULTISIG1740xaex sig1 sig2 … <number of signatures> pub1 pub2 <number of public keys>True / False对于每个签名和公钥对,OP_CHECKSIG 都会被执行,如果公钥列得比签名多,一些公钥/签名对会失败。所有的签名要与公钥匹配。如果所有签名有效,输出1,否则返回0。因为存在BUG,一个未使用的外部值会从堆栈中删除。
OP_CHECKMULTISIGVERIFY1750xafx sig1 sig2 … <number of signatures> pub1 pub2 … <number of public keys>True / False与 OP_CHECKMULTISIG,一样,但是之后运行 OP_VERIFY。
  • 伪关键字

这些关键字仅供内部使用,用辅助进行交易匹配,如果使用在实际的交易中则是无效的。

关键字操作码十六进制描述
OP_PUBKEYHASH2530xfd表示公钥用OP_HASH160操作码HASH
OP_PUBKEY2540xfe表示与OP_CHECKSIG.兼容的一个公钥
OP_INVALIDOPCODE2550xff匹配任何未指定的操作码
  • 保留关键字
关键字操作码十六进制描述
OP_RESERVED800×50交易无效,除非发生在未执行的OP_IF 分支
OP_VER980×62交易无效,除非发生在未执行的OP_IF 分支
OP_VERIF1010×65交易无效,即使发生在未执行的OP_IF 分支
OP_VERNOTIF1020×66交易无效,即使发生在未执行的OP_IF 分支
OP_RESERVED11370×89交易无效,除非发生在未执行的OP_IF 分支
OP_RESERVED21380x8a交易无效,除非发生在未执行的OP_IF 分支
OP_NOP1-OP_NOP10176-1850xb0-0xb9这些关键字被忽略


作者:wolf4j
链接:https://www.jianshu.com/p/169714d4449b
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

这篇关于blockchain script 中文描述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/941917

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

vscode中文乱码问题,注释,终端,调试乱码一劳永逸版

忘记咋回事突然出现了乱码问题,很多方法都试了,注释乱码解决了,终端又乱码,调试窗口也乱码,最后经过本人不懈努力,终于全部解决了,现在分享给大家我的方法。 乱码的原因是各个地方用的编码格式不统一,所以把他们设成统一的utf8. 1.电脑的编码格式 开始-设置-时间和语言-语言和区域 管理语言设置-更改系统区域设置-勾选Bata版:使用utf8-确定-然后按指示重启 2.vscode

javascript中break与continue的区别

在javascript中,break是结束整个循环,break下面的语句不再执行了 for(let i=1;i<=5;i++){if(i===3){break}document.write(i) } 上面的代码中,当i=1时,执行打印输出语句,当i=2时,执行打印输出语句,当i=3时,遇到break了,整个循环就结束了。 执行结果是12 continue语句是停止当前循环,返回从头开始。

【JavaScript】LeetCode:16-20

文章目录 16 无重复字符的最长字串17 找到字符串中所有字母异位词18 和为K的子数组19 滑动窗口最大值20 最小覆盖字串 16 无重复字符的最长字串 滑动窗口 + 哈希表这里用哈希集合Set()实现。左指针i,右指针j,从头遍历数组,若j指针指向的元素不在set中,则加入该元素,否则更新结果res,删除集合中i指针指向的元素,进入下一轮循环。 /*** @param

script中的src

<script src="http://www.somewhere.com/afile.js"></script> 浏览器在解析这个资源时,会向 src 属性指定的路径发送一个 GET 请求,以取得相应资源,假定 是一个 JavaScript 文件。这个初始的请求不受浏览器同源策略限制,但返回并被执行的 JavaScript 则受限制。 当然,这个请求仍然受父页面 HTTP/HTTPS

深入探讨:ECMAScript与JavaScript的区别

在前端开发的世界中,JavaScript无疑是最受欢迎的编程语言之一。然而,很多开发者在使用JavaScript时,可能并不清楚ECMAScript与JavaScript之间的关系和区别。本文将深入探讨这两者的不同之处,并通过案例帮助大家更好地理解。 一、什么是ECMAScript? ECMAScript(简称ES)是一种脚本语言的标准,由ECMA国际组织制定。它定义了语言的语法、类型、语句、

JavaScript整理笔记

JavaScript笔记 JavaScriptJavaScript简介快速入门JavaScript用法基础语法注释关键字显示数据输出innerHTML innerText属性返回值的区别调试 数据类型和变量数据类型数字(Number)字符串(String)布尔值(Boolean)null(空值)和undefined(未定义)数组(Array)对象(Object)函数(Function) 变量

解决Office Word不能切换中文输入

我们在使用WORD的时可能会经常碰到WORD中无法输入中文的情况。因为,虽然我们安装了搜狗输入法,但是到我们在WORD中使用搜狗的输入法的切换中英文的按键的时候会发现根本没有效果,无法将输入法切换成中文的。下面我就介绍一下如何在WORD中把搜狗输入法切换到中文。

JavaScript中document.cookie

“某些 Web 站点在您的硬盘上用很小的文本文件存储了一些信息,这些文件就称为 Cookie。”—— MSIE 帮助。一般来说,Cookies 是 CGI 或类似,比 HTML 高级的文件、程序等创建的,但是 javascript 也提供了对 Cookies 的很全面的访问权利。       每个 Cookie 都是这样的:<cookie名>=<值>   <cookie名>的限制与 javasc

javascript实现ajax

什么是 ajax ajax 即“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML),也就是无刷新数据读取。 http 请求 首先需要了解 http 请求的方法(GET 和 POST)。 GET 用于获取数据。GET 是在 URL 中传递数据,它的安全性低,容量低。 POST 用于上传数据。POST 安全性一般,容量几乎无限。 aj