共计 1391 个字符,预计需要花费 4 分钟才能阅读完成。
Neo 智能合约调试比较麻烦,我们 NEL 在开发 NNS 的过程中,发现现存的工具根本无法支撑我们开发如此复杂的智能合约。
所以我们搞了一整套自己的智能合约调试工具
第一步、编译智能合约
安装 neondebug
Git 抓取编译:https://github.com/NewEconoLa…
你将得到一个崭新的 neon.exe
用他替换掉你原来用的那个 neon.exe
怎么替换呢,请参照如下步骤移除你原来 neon.exe 的 path,换上 neondebug 的
为什么要安装 neondebug
Neondebug 多导出了一个 map.json 文件,实现 avm 到源码的映射。
同时按照 hash 将 avm abi cs map.json 整理到一起
比如生成
就会直接用 scripthash 整理相关文件
检查编译结果
用 neondebuggui“load avm from file“按钮,加载刚生成的 avm 文件
可以进行查看,查看以后,就可以用 NEONDEBUGGUI 的调试交易工具调试使用此脚本的交易。
查看一次即可。文件会被 copy 到 neondebuggui 的目录中
开源智能合约
使用 upload this to server 按钮,可以将智能合约代码上传到服务器,则任何人可以获取到此合约信息
使用 load from server 按钮,可以根据 scripthash 查看服务器上的合约信息。
第二步、产生一个交易
安装 neo-gui-nel
Git 抓取编译:https://github.com/NewEconoLa…
你将得到一个 NEL 定制版本的 NEO-GUI
这个定制版本乍看没有什么东西,但是来发布一下刚才的智能合约你就会发现一点不同
请注意 neo-gui-nel 默认配置在 testnet 上面。
发布合约
NEL 定制版本 NEO-GUI 已经率先支持了发布 NEP4(dyncall) 合约
第三步、调试
调用合约
调用合约 NEOGUI 定制版也可以添加一个 Array
试想这个智能合约 Main(string,object[] args), 其中 args[0] 是 一个 string[]
这就需要 array 里面嵌套 array,现在的 neogui 是没有办法调用这样的合约的
调试试运行合约
当你点击试运行以后就已经可以调试了
按照 Neo-gui-nel 默认的配置,你点击试运行之后,就会在这个目录得到一个 0x00 文件
使用它就可以完成 NEO 智能合约调试了。
使用 NEONDEBUGGUI 的 Debug Transaction 选项卡
LoadFromFile button,打开这个 0x00 文件
你就得到了一个拥有智能合约详细执行的每一步的工具。
并且可以对应到源码,可以观察执行栈细节,可以观察每一个数据的细节的工具。
让你可以完全了解到这次 test 是怎么运行的
调试交易
发送一笔交易,等一会儿,等这笔交易被确认
你就可以在 fulllog 目录找到这笔交易对应的文件
打开它,就能够调试这笔交易在链上的实际运行细节。
第四步、更多更方便
只要有人 upload 过一次的智能合约,所有人随时都能调试时看到源码
我们有一个爬虫,随时将 testnet 的合约的 log 文件上传到服务器
即使你没有安装 NEO-GUI-NEL,你使用 loadformserver 按钮也可以调试,只要你知道交易 id 就行。
未来我们将开发纯网页版的调试工具
未来我们也将同步主网的数据也上传服务器
原文转自:https://mp.weixin.qq.com/s/sZ…