NEO智能合约黑盒测试框架

2018-11-28 16:39 栏目:经验之谈 来源: 查看()
最近我在做NNS合同测试工具,目标简单易用,适合非技术人员测试,同时开发快速,快捷。写完之后,我发现这不是NEO智能合约黑盒测试框架,所以写一篇文章与大家分享。

选定的代码平台是C#。显示和逻辑处理分为两部分。逻辑部分使用netstandard2.0编写(支持.net框架4.6.1及更高版本和.net核心2.0)。 UI首先使用.net框架桌面程序完成。有时可以使用.net core 2.1做一些简单的例子。

测试智能合约的最大困难是构建一个调用交易的合约。即使非智能合约的开发人员感到困惑,这项工作也不是非技术人员。

然而,随着NEO智能合约(如NNS的拍卖登记合同)的复杂性,合同内管理的资产数量的增加,加上开发商自己的思维死胡同。合同黑箱测试的非技术人员快速实施工具是必不可少的。这个矛盾需要解决。

过去,如果首次进入NEO的开发人员必须测试合同,他只能使用NEO的GUI调试合同功能或构建RPC来调用CLI,但使用非常不方便,特别是当合同方法有几个并且相关时对彼此。

幸运的是,NEL最近发布了Neo_SDK_Thin
(https://www.nuget.org/packages/neo.sdk.thin/),

NEO公钥 - 私钥计算,各种格式转换,脚本构造和事务结构等核心方法分别实现,不依赖块同步。这是一个非常有用的工具,本文中提到的项目也依赖于它。但是,从调试合同开始,这还有很长的路要走。仍然缺乏对构建交易至关重要的UTXO信息。如何使用Neo_SDK_Thin的交易类构建交易对于初学者来说仍然是困难的,并且在交易发布后查看结果仍然不方便。

因此,这里向大家推荐这个测试框架,希望能帮助大家启动智能合约调试更快更舒适。

框架点

构建nelApiHelper类以便于使用NEL系列实用程序API(仅限合同调用的相关部分)
构造neoHelper类并基于Neo_SDK_Thin扩展一些函数

HexStr到Str,HexStr翻转,HexStr传输值,大整数精度调整等。
Jarray2script方法,以Jarray的形式构建合同条目,一键输出合同调用脚本
neoAddress类,输入WIF,可以自动构造地址,公钥,私钥
neoTranstion类目前实现正常传输事务和合同调用事务,一键构建,签名和发送

构造contractOperate类,快速契约调用的基类
一个简单方便的集成黑匣子合同测试界面框架(可能很难看)

NEO智能合约黑盒测试框架

实际上,您可以看到通过更换合同功能区,您可以快速为任何合同提供黑盒测试工具。查看项目代码,您可以看到合同功能区的代码非常小。

获取合约信息类方法,例如NEP5 balanceOf(你只需要向invokeScript发送一个事务)

NEO智能合约黑盒测试框架


执行合同函数类方法,如NEP5传输(需要发送到链)

NEO智能合约黑盒测试框架

这些方法,你自己编写的部分只能在2-3行代码中完成,而契约条目的构造是编辑json的过程。
同时,在发送事务之后,txid将被抛入txid临时存储区域。在新的交易之后,与交易相关的applicationLog将被自动加载,并且可以一站式查看诸如合同方法的结果,燃气消耗和投掷通知等重要信息。

当然,这不是最终版本,但稍后会添加:

交易结构增加网络费功能
实现复杂的调用事务以设计UTXO访问合同,例如CGAS
使用框架的泛型类分别发布nuget更方便。
Xx等

最后,发送代码地址(最初为NNS测试开发,不关心名称):
https://github.com/NewEconoLab/NNS_SDK_CSharp

PS:如果您只想在项目中使用NNS相关合同方法,可以直接使用nuget
https://www.nuget.org/packages/NNS.sdk/1.0.0


资料来源:NEL新经济实验室

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发