NeoRay 2.0的使用体验

前言

    NeoRay是NEL社区推出的一个方便NEO开发者开发合约的工具。自这个工具推出以来,受到不少开发者的好评,极大的便捷了广大的NEO合约开发者。我也一直使用这个工具进行NEO合约的开发和调试。html

    最近NEL推出了新版的NeoRay,增长了python语言的合约开发,人性化了一些操做流程。做为一名NEO合约开发爱好者,火烧眉毛的尝了个鲜。体验下来仍是不错的,页面看起来更加简单明了,合约调用部分也更加人性化。python

    因为新版较旧版来讲,改动仍是很大的,页面和流程都大不相同。做为一个尝鲜者仍是颇有必要记录一下尝鲜过程和心得的,方便后来者体验。git

正文

0x01 登陆

        NeoRay2.0再也不直接使用私钥或者nep6钱包登陆来进行合约的部署与调用,改而使用了NEL社区以前推出的产品TEEMO插件钱包。在使用NeoRay2.0以前须要安装好插件钱包。否则会出现如下提示:github

        这里附上Teemo插件钱包的介绍:传送门数组

0x02 页面功能介绍

        新版的NeoRay的总体页面以下,左边有五个功能按键:文件浏览、合约部署、合约调用、合约调试、支持。同时提供了切回旧版NeoRay的功能。网络

0x03 编写或载入合约文件

        在文件浏览功能模块内,一共有三种方式导入一个合约文件。第一种是添加本地文件,第二种是建立新的文件直接在线编写,剩下的一种是经过合约hash载入别的开发者部署的合约。能够根据本身的须要合理选择。这里咱们就使用第一种方式来作演示。以下图我导入了一个本地的test合约:工具

0x04  部署合约

        当合约编写或导入完成以后呢,咱们就须要编译发布合约。点击左侧合约部署按钮进入到部署页面,首先点击编译按钮,若是合约书写正确下方的输出框就会显示合约的hash。若是合约有错误,就会提示编译失败。目前对于失败的缘由提示的不够详细,但愿后续的更新中能完善失败缘由。spa

        设置部署合约时的一些参数。“动态调用”是指该合约中是否存在调用可变合约的状况,例如调用B合约可是B合约在合约发布时不可以明确其hash值,那么就须要动态调用的功能。“建立存储区”是指合约使用了存储功能。“可接受付款”是指合约是否能够接受别的地址给其转资产。.net

        须要注意的是不一样的参数选择会带来不一样的收费,目前来说“动态调用”会增长500gas的费用,“建立存储区”会增长400gas的费用。插件

        点击部署合约按键后Teemo钱包会弹出弹窗要求签名,点击赞成便可。

0x05 合约调用

        经过Teemo钱包等待部署合约的交易被确认

        交易被确认后,点击NeoRay2.0左侧的合约调用按钮,来到合约调试模块。接下来我就介绍一下这个模块下一些参数的意义和使用方法。

        系统费:neo公链上调用合约是根据调用的指令收费的,虽然有10gas的免费额度,可是一些复杂操做仍是可能会超出10gas的额度的。因此若是你调用的合约过于复杂致使费用超过了10gas,这里就须要填写你超出的数额。手续费价目表

        网络费:最新的收费规则要求超出1024字节的交易要额外手续必定的手续费。Teemo会自动帮加上网络费。因此这个地方直接默认0就能够了。

        交易附带Gas:若是你须要向调用的合约转帐一笔gas,那么就在这个地方填入具体的数额。

        增长参数:通常合约的参数都是(string,object[])这样的类型。因此第一个增长的参数选择string类型,第二个选择数组类型。若是你的合约不同凡响,那就对应你合约的参数类型选择合适的类型。

举几个简单的例子

                        1.   若是你的合约是  Main(int a) ,那么参数一就是 Integer ,不须要参数二。
                        2.   若是你的合约是  Main(int a , int b) ,那么参数一就是 Integer ,参数二也是Integer。

            ps : Address 类型填写的就是“AWKqEmC1HsC4uBDvaoh5JLtQ2rigMdRSwX “,NeoRay会内部转成byte[]。若是对应参数的选择还有不理解的能够看一下论坛中对应的帖子。传送门

        调用合约与试运行:调用合约意味着发送交易上链,会改变链上的数据。试运行意味着模拟执行合约,并不会形成链上数据的更改。

        接下来根据咱们以前部署的合约,试运行三个例子演示一下:

第一个例子以下,参数一填写“Hello”,获得的返回是“ByteArray”类型,转换以后就是“World”。经常使用转换工具:传送门

        

第二个例子以下,参数一填写“return”,参数二中数组的首位填写数字2:

第三个例子以下,参数一填写“add”:

        接下来咱们使用第三个例子的参数进行调用交易的发送,Teemo钱包会弹出弹框要求签名,交易发出后等待一会等交易被确认。

0x06 合约调试

        一个调用合约的交易被确认后,能够点击合约调试按钮进行合约的调试。这个功能主要是当合约的执行结果与预期不符时,观察合约的执行流程来寻找合约的问题。

        须要注意的是,必定要选择正确你要调试的合约。由于交易列表里只会显示当前钱包地址调用此合约的交易。

        若是一个交易被链上确认了可是在这个页面尚未显示对应的交易,请耐心等待几秒或者切换一下功能模块,尽可能不要刷新页面。 

        选择一个交易以后即可以调试,下图是这个调用所执行的指令过程,经过键盘的上下按钮能够观察合约的执行过程。经过notify能够获得这个交易的返回值,以及合约抛出的通知。必要的时候能够经过抛出通知的方式来调试合约,相似调试时打log的方法。右下角的CalcStack&AltStack中能够观察计算栈和临时栈中保存的数据。

  

        经过左边执行的指令以及右边的合约代码,能够观测合约执行到了哪一行代码报错。或者执行错了哪一些流程。方便开发者调试。

0x07 支持

        支持功能模块中有一些NEL社区的导航,以及索取gas的功能。

 

后言

        NeoRay新版带来的惊喜仍是很大的。因为我不会py,因此也没有体验py的流程。但就C#编写的合约进行的流程来说,仍是很是完美的。调试调用都很是的便捷。同时给我带来惊喜的还有插件钱包Teemo,有点MetaMask的感受。有能力成为NEO上普遍使用的插件钱包。

        最后但愿NEL社区越作越好,推出更多方便咱们开发者的工具。

相关文章
相关标签/搜索