比特币智能合约入门(3)- sCrypt 开发工具篇 - Visual Studio Code 插件

上一篇主要给大家介绍了比特币智能合约高级语言 sCypt 的一些基础知识,有些同学可能已经跃跃欲试了。俗话说得好,工欲善其事必先利其器。在真正的编码工作开始前,还是有必要花些时间学习如何使用合适的工具。

相信不少开发者朋友都在使用 Visusal Studio Code 这款微软出的 IDE,其优异的性能和灵活的插件机制带来了非常丝滑的编程体验。为了帮助大家更加轻松高效地编写比特币智能合约,sCrypt 提供了一个功能丰富实用的工具应用:sCrypt Visual Studio Code 插件。大家可以在 VS Code 的插件(Extensions)视图中直接搜索 “sCrypt” 进行安装,也可以在这里下载独立安装包。

比特币智能合约入门(3)- sCrypt 开发工具篇 - Visual Studio Code 插件_第1张图片

下面我将根据开发过程中典型的三个场景(编码->调试->测试),分别介绍下这个插件的功能和使用方法。

编码

在编码阶段涉及到的主要功能包括:

  • 语法高亮:自动高亮关键字、函数名、数据类型;
  • 跳转到定义:在文档编辑区右键函数或变量,弹出菜单中选择 “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",
            "constructorParams": "123456",
            "entryMethod": "unlock",
            "entryMethodParams": "123, 456",
            "txContext": {
                "hex": "01000000015884e5db9de218238671572340b207ee85b628074e7e467096c267266baf77a40000000000ffffffff0000000000",
                "inputIndex": 0,
                "inputSatoshis": 100000
            }
        }

在调试过程中,可使用的功能包括:

  • 设置 / 取消 断点
  • 单步调试 / 继续运行
  • 进入 / 跳出 目标函数
  • 查看变量值
  • 查看调用栈
  • 增加 / 删除 观察表达式或变量值
  • 支持 REPL1 (即允许在 “DEBUG CONSOLE” 中输入并执行 sCrypt 语句,如下图);

测试

sCrypt 提供了一个名为 scrypttest2 的 npm 包来帮助开发者进行合约测试。大家可以使用 Javascript 或者 Typescript 来编写单元测试,并且可以通过在编辑器中右键选择 “Run sCrypt Test” 执行单个测试文件。当然,也可以通过在命令行运行类似 npm test 的命令执行测试用例。

注意:如果想在编辑器中通过右键方式运行测试文件,需要满足两个前提:

  1. 该文件的后缀名只能是 .scrypttest.js 或者 .scrypttest.ts
  2. 在测试目录的 package.json 中需要有一条名为 single-test 的脚本指定了具体运行的测试命令。例如:
  "scripts": {
    "single-test": "mocha -r ts-node/register --timeout 120000"
  },

以上就是 sCrypt Visual Studio Code 插件的简单介绍。下一篇我们将进入实操阶段,完成一个简单合约从开发到部署的全流程。

附录


  1. REPL(Read-Eval-Print Loop):交互式解释器,方便调试、测试或实验一些代码; ↩︎

  2. scrypttest:sCrypt 测试工具包,封装了支持 JS 和 TS 单元测试场景所需的一些工具函数; ↩︎

你可能感兴趣的:(sCrypt)