上一篇主要给大家介绍了 BSV 智能合约高级语言 sCypt 的一些基础知识,有些同学可能已经跃跃欲试了。俗话说得好,工欲善其事必先利其器。在真正的编码工作开始前,还是有必要花些时间学习如何使用合适的工具。
相信不少开发者朋友都在使用 Visusal Studio Code 这款微软出的 IDE,其优异的性能和灵活的插件机制带来了非常丝滑的编程体验。为了帮助大家更加轻松高效地编写 BSV 智能合约,sCrypt 提供了一个功能丰富实用的工具应用:sCrypt Visual Studio Code 插件。大家可以在 VS Code 的插件(Extensions)视图中直接搜索 “sCrypt” 进行安装,也可以在这里下载独立安装包。
下面我将根据开发过程中典型的三个场景(编码->调试->测试),分别介绍下这个插件的功能和使用方法。
编码
在编码阶段涉及到的主要功能包括:
- 语法高亮:自动高亮关键字、函数名、数据类型;
- 跳转到定义:在文档编辑区右键函数或变量,弹出菜单中选择 “Go to Definition” 可将光标跳转至函数或变量定义处;
- 查找变量引用:在文档编辑区右键函数或变量,弹出菜单中选择 “Go to References” 可显示所有引用;
- 重命名:在文档编辑区右键函数或变量,弹出菜单中选择 “Rename Symbol” 可对其进行重命名;
- 鼠标悬浮提示:显示鼠标悬浮处变量或函数的定义;
- 编译结果输出:在文档编辑区右键,弹出菜单中选择 “Compile to Bitcoin Script” 可将编译结果输出至文件;
- 自动提示:在代码编辑过程中,根据当前已输入的信息自动给出可能的函数或者变量名提示;
- 函数签名帮助:在代码编辑过程中,根据当前已输入的信息自动给出函数签名的相关提示;
- 代码格式化:在文档编辑区右键,弹出菜单中选择 “Format Document” 可对该文件进行格式化;
- 自动错误检查:在代码编辑过程中,自动实时地将编译错误信息显示在 “Problems” 窗口;
调试
调试功能可以帮助开发者快速定位和解决代码中的错误。通常启动调试之前,需要在 .vscode/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
}
}
在调试过程中,可使用的功能包括:
- 设置 / 取消 断点;
- 单步调试 / 继续运行;
- 进入 / 跳出 目标函数;
- 查看变量值;
- 查看调用栈;
- 增加 / 删除 观察表达式或变量值;
- 支持 REPL1 (即允许在 “DEBUG CONSOLE” 中输入并执行 sCrypt 语句,如下图);
测试
sCrypt 提供了一个名为 scryptlib
2 的 npm 包来帮助开发者进行合约集成和测试。大家可以使用 Javascript 或者 Typescript 来编写单元测试,并且可以通过在编辑器中右键选择 “Run sCrypt Test” 执行单个测试文件。当然,也可以通过在命令行运行类似 npm test
的命令执行测试用例。
注意:如果想在编辑器中通过右键方式运行测试文件,需要满足两个前提:
- 该文件的后缀名只能是
.scrypttest.js
或者.scrypttest.ts
; - 在测试目录的 package.json 中需要有一条名为
single-test
的脚本指定了具体运行的测试命令。例如:
"scripts": {
"single-test": "mocha -r ts-node/register --timeout 120000"
},
以上就是 sCrypt Visual Studio Code 插件的简单介绍。下一篇我们将进入实操阶段,完成一个简单合约从开发到部署的全流程。