NEO智能合约黑盒测试框架

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

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

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

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

过去,如果初入NEO的开发人员要测试合约,只能用NEO 的GUI调试合约功能或者构造RPC调用CLI,但是使用非常不便,尤其当合约方法有数个且互相关联的时候。

好在,最近NEL发布了Neo_SDK_Thin

www.nuget.org/packages/ne…),

将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/NewEconoLab…

PS:如果你只是想要在项目中使用NNS相关合约方法,可以直接用nuget www.nuget.org/packages/NN…

原文转自NEL新经济实验室:mp.weixin.qq.com/s/fFzLiTjA9…


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值