开发NEO智能合约的工作流程

当前位置:首页 > 币圈百科 > 开发NEO智能合约的工作流程

开发NEO智能合约的工作流程

2023-01-05币圈百科298

NEO智能合约的典型开发过程有两个实践阶段:编码(在IDE中编码和将源代码编译成an。avm文件)和测试(在测试网络上部署、调用和检查结果)。需要编译和部署此工作流来调试任何代码更改。在NEO community开发的一些最新工具集的帮助下,出现了四步工作流方法,从而进一步加快了开发效率。

在本教程中,我们将首先简要讨论标准的两步工作流方法并提供一些有用的参考资料,然后介绍四步工作流方法以及相关的新开发的工具。除非另有说明,否则在讨论中使用C#作为智能契约开发语言。

在本教程中,我很可能会犯错误或遗漏一些重要的点。非常感谢大家的评论。

两步过程法

传统上,NEO智能合约开发有两个步骤:编码和测试。这个官方教程提供了关于这个工作流程的详细信息。

在编码阶段,NEO正式支持C#(例)。我们也可以用Java和Python开发智能合约。你可以很容易地在谷歌和YouTube上找到教程和示例代码页,以了解如何编写NEO智能合同。

蓑衣网小编2022

我们依靠测试网络进行测试工作。如上图所示,对于测试网络,我们有很多选择。

公考网

最常见的方法是使用公考网。NEO Smart Economy、CoZ和NEL分别维护三个主要的公共测试网络。Alex Guba的教程详细解释了如何在NEO和CoZ测试网络上测试之前同步块和申请GAS,但NEL的测试网络对支持本地化的中国开发者更友好。

在大多数情况下,您可以通过NEO API(全引号)运行RPC调用来与区块链交互。有些API只能在运行NEO时使用。打开钱包的CLI节点。然而,如果尼欧。Scan授予测试网络权限,您可以调用类似的服务而无需运行节点。比如API getBalance需要一个运行节点,但是你可以使用Neo-Scan提供的get_balance接口来获得类似的函数。我建立了一个邮递员集合来帮助测试这些远程呼叫。您只需更改测试网络(或Neo-Scan)的值即可使用它。

NeoCompile Eco有一个新的特殊的公共测试网络,它启发我们转向四步工作流程。我们将在下一节详细讨论它。

私考网

另一个好办法就是组建自己的私考网。与公考网相比,私考网的优势在于你可以获得完全的控制权。使用私人测试网络的第一个原因是,它真的非常有用,非常鼓舞人心,因为它可以给人一种他们钱包里装着数百万颗近地天体和气体的错觉。同时,相对于公测网络,我们不需要担心链再生,连接失败,或者其他开发者的失误导致的网络拥塞。

NEO官网提供了在云服务器上设置私有网络的分步指南。但是,在Azure上查看了我的账单后,我不建议你这么做,除非你不得不与他人共享链数据。Neo-privatenet-docker非常适合在您的本地计算机上构建私有测试网络,它可以节省您大量的配置和执行指令的时间。如果你在笔记本电脑上运行它,它还可以帮助你在加拿大的冬天保持体温。

两步工作流方法的局限性

这种两步工作流方法已经比较成熟,被现有的大多数项目所采用。但是,与传统的软件项目相比,它仍然具有一定的局限性。 主要是调试很贵。要监控变量的运行时值,最好的选择是使用运行时通知,如下面的代码片段所示:

byte[]?ba0?=?CallSomeFunction();byte[]?ba1?=?CallAnotherFunction();//打印?出局?那个?价值?的?ba0?然后呢。ba1?去哪?ApplicationhLogRuntime。通知(ba0,ba1);

我们需要用neon重新编译项目,确保有足够的GAS并重新部署,使用正确的格式形成合适的参数,然后调用它,等待20-30秒,等待下一个块出现。调用API getapplicationlog获取JSON格式的日志,用pretty格式打印响应的内容,找到日志值(见下面例子中高亮显示的部分)。Log值通常表示为字节数组,所以我们需要将其转换为字符串或大整数类型…共7步。

[?{?' jsonrpc ''2.0'id '5,结果'{?txid '0 x7e 3f 08 A8 af 4290693184 b 413 ba1d 58 be de 8462 CB 565 Baba 8 ffcc 380 BF 947 e 317 '执行'[?{?触发器'应用程序'合同'0x 32682404d 4313 ECF 80 b 70 e 1323 CFC 908 a 80 fdfc 0 '“vmstate”:站住。打破''消耗的气体''0.039'堆栈'[],?}?]?}?}]

官方文档中有关于单元测试的章节,但是示例仍然需要编译和/或部署。avm文件。

当我们开发基于NEO的区块链游戏CarryBattle时,我的团队norchain.io强烈感受到了这种限制。在社区的帮助下,我们开始尝试4阶段工作流,大大提高了开发效率。

四步流程法

这个工作流程的四个阶段是:编辑、调试、私有测试和Beta测试。主要思路是:

用一些新的工具把编码阶段拆分成编码阶段和调试阶段。在调试阶段,我们尽可能地跳过或运行本地测试用例,就像传统的软件项目一样,不与区块链交互。

将测试阶段分为私有测试和beta测试,分别使用privateNet/NeoCompiler Eco进行私有测试,使用公共测试网络进行Beta测试。使用这种方法,我们以最低的成本确保最大的灵活性和兼容性。

用四步工作流法开发NEO智能合约(C#)?

对于编辑调试阶段,我建议使用Neo-Debugger和Neunity两种方法。

neo-debugger

neo-debugger的项目是Relfos公司开发的。使用Neon的特殊版本和调试json文件,您可以编写调用级测试用例,并在IDE中逐步运行源代码,以跟踪GAS使用情况和应用程序日志,而无需与区块链交互。Neo-Debugger的另一个很好的特性是它可以在检查堆栈时跳过操作码。Nikolaj-k为Neo-Debugger做了一个视频教程。

Fabio也用类似的想法做了一个很好的项目SCTracker,但是当他知道Neo-Debugger的存在后,他决定跳过这个项目。但是感谢他的贡献。

neu nity . adapter

Neo-debugger在NeoVM级别的调试做得很好,但还是有一些局限性。例如,它不支持变量监控、断点或功能级测试用例。

nor chain . io创建的框架Neunity的适配器层采用的是不同的本地调试方式。Neunity的概念。适配器是:

引入适配器层隔离NeoVM和普通的区别。Net项目。我们有两个适配器,Neunity。适配器。NEO和Neunity。Adapter.Unity,它们具有相同的方法签名集和不同的名称空间和实现。它们分别用于NEO Smart Contract和Unity项目(实际上它们也适用于许多其他项目。净项目)。这些方法大多与类型转换、运算符或系统调用模拟有关。

然后我们就可以在适配器层上写应用层逻辑了。显然,通过简单地改变名称空间,这个应用层逻辑可以被智能契约或普通的。Net项目。

现在我们可以使用功能级测试驱动开发(TDD),甚至可以与C # DAPP客户端共享逻辑。

我做了一个视频教程,演示如何使用Neunity。适配器在功能级执行TDD,执行测试步骤,同时监控变量和调用堆栈。

对比下表,可以看出Neo-Debugger和Neunity的优势。相应的适配器。根据我们的经验,Neo-Debugger更适合小规模项目,因为它不消耗汽油,而Neunity。Adapter更适合更大规模或更复杂的项目,因为它更好地支持TDD、多类、断点、变量跟踪等。

Neunity的设计实践了大型软件的项目方蓑衣网小编2022法论(我指的是系统逻辑的规模,并不是说单个调用就一定要复杂或者昂贵)。适配器层的使用迈出了重要的一步,缩小了。Net开发人员和NEO开发人员。同时,Neunity也提供了一个Neunity。工具层,有灵活的序列化工具(NuSD)、类HTTP通信协议(NuTP)、类URI存储管理器(NuIO)等。我们希望帮助更多的新区块链Dapps土地。

私有测试

通过迭代编码和调试阶段完成逻辑后,我们就可以进入私有测试阶段,开始与区块链交互了。我们建议使用私有测试网络或NeoCompiler Eco进行私有测试,因为他们的环境简单,易于交互和管理。Neo Research公司开发的

NeoCompiler生态公测网是一个新的、特殊的。它不需要使用GAS,提供了一整套基于web的GUI工具,包括编译、导入操作码、部署、调用、交易、转换等。NeoResearch最近还集成了gitter.im用于即时聊天,以便更好地与开发者交流。Igor有很好的教程介绍它的基本功能。

这个测试网络的另一个优点是,块生成的时间间隔为5-7秒,几乎比正常情况下快5倍。缩短了等待时间,同一区块的开发者之间几乎没有调用冲突,使得测试几乎像私有测试网络一样简单。这就是为什么我们推荐它作为私有测试选项。

Beta测试

如果私有测试阶段的所有功能测试都成功完成,我们就可以进入最后一个阶段,然后上线Dapp。公测网络是Beta测试的最佳场所,因为它类似于主网络环境。另一个好处是,你也可以邀请你的朋友来帮助测试。您的智能合约应该能够冷静地面对来自并行调用、潜在盲点或无效输入的挑战。

总结

NEO与其他很多公链项目相比,有很多优势:比如事务处理速度快、开发语言相对友好(C #、Python)、国际化、活跃的社区氛围等。

改进开发工作流程有助于提高NEO的语言优势,同时可以将优秀的想法与至关重蓑衣网小编2022要的项目结合起来,而无需花费太多时间解决琐碎的问题。

我的知识有限。希望这篇教程能给你一些帮助。感谢Fabio和Relfos在本教程中的帮助。欢迎任何建议和意见。

原文链接:https://medium . com/coin monkeys/the-workflows-of-developing-neo-smart-contracts-c 65279 AC 165 b

翻译:包子

开发NEO智能合约的工作流程 | 分享给朋友: