↑关注获取专业的区块链开发学习计划
NEO最大特色就是支持智能合约,你可以用各种通用高级语言进行逻辑编程,实现千变万化的无限可能。
但是智能合约到底是有别于普通程序,对于初学者最困惑的是,怎么知道合约执行的过程、结果,它不像普通高级语言那么易于调试(尤其涉及私有化存储区等链上元素时),目前它也不会再执行完后直接返回结果(即使你写了return)。
NEO智能合约与外界的交互机制目前是两种,log和notify,即日志和通知。
设计上来说,log是调试用,notify是事件驱动的通知。不过,目前官方只实现了对notify的捕获(dotnet neo-cli.dll --log –rpc启动cli),所以一般log用的不多(需要自己修改cli捕获log)。
举个例子
我们的NNS通用解析器就使用了notify通知外部某个NNS的解析情况。
通过clirpcgetapplicationlog 方法即可获取类似以上数据,当然你可定要说看不懂。应为所有数据都是被NEOVM二进制转义后输出的。
这个时候你就需要用到我们的contractNotifyExtractor(通用合约通知入库分析器)了。Github地址:
【https://github.com/NewEconoLab/contractNotifyExtractor】。
使用contractNotifyExtractor后,就会自动处理成以下形式。
一看就懂,某个NNS(namehash)被设定解析为AHDV7M54NHukq8f76QQtBTbrCqKJrBH9UF地址。
contractNotifyExtractor的设计目标是:
l不修改任何代码,即可通过配置extractTaskList.json实现对任意结构notify的自动入库与分析
l具有独立的从cli rpc入库notify的能力
l支持String、Address、BigInteger、HexString等常用数据表现形式的自动化转义
contractNotifyExtractor的目标使用人群是广大NEODAPP的开发者。contractNotifyExtractor的使用可以使得DAPP开发者从获取和解析通知(尤其是每次变动合约代码,解析通知代码都要跟着变动)的繁琐中解脱出来,专注于合约逻辑开发。
更多详情,请参阅Github源码。extractTaskList.json已有大量通知设定示例,参考修改即可快速使用。
JOIN US
如果你对区块链有兴趣
想从一名开发者转型为区块链开发者
欢迎加入NEL开发者社区
在这里,你可以得到专业的区块链开发学习计划
NEL将不定期的在社区分享开发技术文章视频干货
也会不定期邀请区块链技术大咖进行线下面对面分享
我们会以线下讲座、线上直播、社区问答、文字介绍等形式推广NEO区块链平台
同时我们会发布一些简单又具有意义的开发任务帮助初学者练习提高
领取专属 10元无门槛券
私享最新 技术干货