NEO智能合约黑盒测试框架

做者:青冥子
git

最近在作NNS合约测试工具,目标是简单好用,适用非技术人员测试,同时开发快捷,实现快速。再写完后,发现这不就是一个NEO智能合约黑盒测试框架吗嘛,因此写个文章分享给你们。github

选择的代码平台是C#,显示和逻辑处理分开两部分,逻辑部分用netstandard2.0(同时支持.net framework4.6.1以上和.net core 2.0以上)写,UI先用.net framework桌面程序作,后面有时间用.net core 2.1也作几个简单的示例。json

要测试智能合约,最大的难点是构造合约调用交易,这个工道别说非技术人员,就算非智能合约的开发人员也是一头雾水的。网络

可是,随着NEO智能合约的复杂度(例如NNS的竞拍注册器合约)、合约内管理资产量的提高,外加开发人员自身思惟死角。合约的非技术人员规模黑盒测试快速实现工具是不可或缺的。这对矛盾,亟待解决。框架

过去,若是初入NEO的开发人员要测试合约,只能用NEO 的GUI调试合约功能或者构造RPC调用CLI,可是使用很是不便,尤为当合约方法有数个且互相关联的时候。工具

好在,最近NEL发布了Neo_SDK_Thin测试

www.nuget.org/package...),.net

将NEO种公私钥计算、各类格式转换、脚本构造、交易构造等核心方法单独实现了出来,不依赖区块同步。这是一个很是有用的工具,本文所说的项目也依赖它。可是这距离快速开始调试合约仍是很远。构造交易必不可少的UTXO信息仍是缺乏,如何使用Neo_SDK_Thin的交易类构造交易对于初学者仍是困难,发布交易后的结果查看仍然不太方便。设计

因此,这里向你们推荐,这个测试框架,但愿可以帮助你们更加快速、温馨的开始智能合约调试。调试

框架要点

构造nelApiHelper类,方便使用NEL系列实用API(仅合约调用相关部分)
构造neoHelper类,在Neo_SDK_Thin基础上扩展了一些功能

  • HexStr转Str、HexStr翻转、HexStr转数值、大整数精度调整等方法
  • Jarray2script方法,构造Jarray形式的合约入参,一键输出合约调用脚本
  • neoAddress类,输入WIF,就能自动构造出地址、公钥、私钥
  • neoTranstion类,目前实现了普通转帐交易和合约调用交易,一键构造、签名、发送

构造contractOperate类,为快速合约调用的基础类

一个简单方便的集成黑盒合约测试界面框架(可能比较丑)

图片描述


其实能够看出,只要替换合约功能区,就能够快速为任何合约提供黑盒测试工具。查看项目代码能够看出,其实合约功能区的代码很是少。

获取合约信息类方法,如NEP5 balanceOf(只需invokeScript不须要发送交易)

图片描述

执行合约功能类方法,如NEP5 transfer(须要发送到链上)

图片描述

这些方法,本身写的部分都只需2-3行代码便可完成,而构造一个合约入参也就是一个编辑json的过程而已。

同时,交易发送后只要将txid丢到txid暂存区,出新快后会自动加载该交易相关的ApplicationLog,能够一站式查看合约方法结果、消耗gas、抛出的通知等重要信息。

固然这个还不是最终版,后期还会增长:

交易构造增长网络手续费功能
实现CGAS这类设计UTXO出入合约的复杂调用交易
将框架的通用类单独发布nuget,使用更加方便
xx等
最后送上代码地址(一开始是为NNS测试开发的,不要在乎名字):github.com/NewEconoLa.…

PS:若是你只是想要在项目中使用NNS相关合约方法,能够直接用nuget www.nuget.org/package...

相关文章
相关标签/搜索