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 调试器的详细信息,您可以访问这个文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sCrypt Web3应用开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值