IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> sCrypt 调试器简介 -> 正文阅读

[开发工具]sCrypt 调试器简介

在开发 sCrypt 智能合约时,推荐使用之前介绍过的 VSCode 插件 IDE,其中重要的一个原因是可以借助其中的调试器进行调试,它支持断点、步进、堆栈跟踪和变量检查,所有这些都非常有助于开发人员发现和修复错误。

如何使用调试器

只需在工作区的 .vscode 文件夹中创建一个 launch.json 文件,在调试视图中选择配置,然后按 F5 即可开始调试。

在这里插入图片描述

与其他 VSCode 调试器一样,launch.json 文件存储调试配置。下面是关于特定于 sCrypt 调试器的 launch.json 属性的参考。

{
    "type": "scrypt",
    "request": "launch",
    "name": "Debug sCrypt",
    "program": "${workspaceFolder}/contracts/xxx.scrypt",
    "constructorArgs": [123456],
    "pubFunc": "unlock",
    "pubFuncArgs": [123, 456],
    "txContext": {
        "hex": "01000000015884e5db9de218238671572340b207ee85b628074e7e467096c267266baf77a40000000000ffffffff0000000000",
        "inputIndex": 0,
        "inputSatoshis": 100000
    }
}

其中 typerequest 属性是固定的。其他属性分别为:

  • name:调试会话的名称
  • program:调试的 sCrypt 程序的绝对路径。 ${workspaceFolder} 是一个预定义的变量,指的是打开的文件夹的路径
  • constructorArgs:合约的构造参数
  • pubFunc:要调试的 public 函数名称
  • pubFuncArgs:要调试的 public 函数的参数
  • txContext: 运行函数所需的交易上下文

参数输入格式

constructorArgspubFuncArgs 中配置参数值时需要注意,具体格式需要符合以下规范:

参数类型格式
booltrue 或者 false
int数字或字符串,如果值小于 9007199254740991 (2^53 ? 1), 可以直接使用数字表示,也可以使用字符串表示(包括十进制 字符串和 0x 开头的十六进制字符串),如果值大于等于 9007199254740991,应该使用字符串表示
bytes字符串, 例如: “b’0011’”
PubKey字符串, 例如: “PubKey(b’036cfa9a0b0abf4fa56e583b99f8d1ba4a2608096283cdea68ecf1d4f5bdefeb1f’)”,括号中间是 bytes
PrivKey字符串, 例如: “PrivKey(1000000000000)” or “PrivKey(0x036cfa9a)”, 括号中间是十进制或十六进制数字
Sig字符串, 例如: “Sig(b’036cfa9a0b0abf4fa56e583b99f8d1ba4a2608096283cdea68ecf1d4f5bdefeb1f’)”,括号中间是 bytes
Ripemd160字符串, 例如: “Ripemd160(b’ba53f598a150a242b21bcb6963a2db6dae6fa896’)”,括号中间是 bytes
Sha1字符串, 例如: “Sha1(b’3e5b01787918c4e39f99ee70d7db11dddb1cc98d’)”,括号中间是 bytes
Sha256字符串, 例如: “Sha256(b’5a3d057ba410db21e6e92788779e6262a83d0a305762d5ece77dc801c6242f70’)”,括号中间是 bytes
SigHashType字符串, 例如: “SigHashType(b’4c’)”,括号中间是 bytes
SigHashPreimage字符串, 例如: “SigHashPreimage(b’0100000028bcef7e73248aa273db19d73f65730862b2491c8e0eeb767f7fbd78c4…’)”,括号中间是 bytes
OpCodeType字符串, 例如: “OpCodeType(b’81’)” 表示 OP_1,括号中间是 bytes
数组同 JSON 的数组,所有元素必须是以上基本类型或者是结构体、数组
结构体同 JSON 的对象,所有成员必须是以上基本类型或者是结构体、数组

交易上下文

交易上下文,即 txContext 参数,指定调试时当前交易的相关上下文信息,仅当在合约内进行签名或者原象校验时才需要。缺少会导致调试器无法进行校验。

字段必须说明
hex序列化的当前交易,即解锁脚本所在交易。可以是签名过的,也可以是未签名的
inputIndex要花费的、被合约锁定的 UTXO 所对应的 input 索引
inputSatoshis要花费的、被合约锁定的 UTXO 中比特币数量,单位 satoshis
opReturn带状态合约的状态(asm 格式),从OP_RETURN开始,不包含OP_RETURN

更多关于 sCrypt IDE 调试器的详细信息,您可以访问这个文档

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-12-10 11:15:55  更:2021-12-10 11:16:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 14:40:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码