REMIX开发以太坊智能合约简介

古翠码翁 2022-04-22 21:16:47

一、引言

       REMIX IDE是一款可以在线快速编写、调试和部署合约代码的编辑器,完全在浏览器环境中运行,方便易用,非常适合智能合约开发初学者使用。本文以开发一个智能合约为例,简单介绍一下REMIX的使用方法,供有兴趣读者作为智能合约开发入门参考。

二、开发流程

1. 环境准备

a. 登录REMIX页面

       如果用户的网络环境正常,不需要任何安装动作,访问REMIX页面就可以在浏览器中使用这款IDE工具。具体网页地址是:https://remix.ethereum.org/图1是访问REMIX主页面时,浏览器中呈现内容。

 图1. REMIX主页面

b. 安装Metamask钱包插件

        因为部署合约需要花费油气(gas)费用,因此需要将钱包地址与REMIX关联起来,以便在部署合约时从钱包扣除相应费用。REMIX是一款基于浏览器的IDE工具,使用以浏览器插件形式提供的MetaMask钱包工具自然能与之无缝配合。安装MetaMask工具请访问网址:https://metamask.io/ 按照主页上提示选择相应浏览器插件安装即可。笔者这里使用谷歌Chrome浏览器,安装完毕后,在浏览器右上角有插件提示,就是一个那个狐狸头图标,点击就可以激活插件。没有钱包地址的用户可以在上面生成一个钱包地址,钱包地址可以对外公开,但是要注意要保存好密钥和助记词,任何情况下不要对外泄露。图2是安装好后,MetaMask插件在浏览器中位置。

 图2 MetaMask安装好后,位于Chrome浏览器右上角

2. 编写合约

        打开IDE页面,设置好环境后,我们来编写一个智能合约,完成一个开发流程。

        首先,在REMIX页面左边菜单栏打开文件夹contracts,然后在主页面左侧工作区菜单上点击“New File"创建新的文件,命名为DevExample.sol。

 

 图3 创建新只能合约DevExample.sol

       其次,编写智能合约代码,本例使用Solidity语言作为开发工具。图4 是编写的智能合约例子,这个例子几乎什么也没做,就是在部署合约时候,构造函数中触发一个事件,发出消息”A smart contract of DevExample is created'。showCaller()触发一个事件,提示这个方法调用者地址,并把这个地址返回。

 图4 编写智能合约代码

 

3. 编译合约

       图5是编译界面,左侧工具栏上,椭圆框圈起按钮是编译菜单选项,点击后会在编辑区和工具栏之间显示编译配置选项。根据各项提示,选择相应配置选项,编译器我们选择0.8.7,实际开发中,根据项目需要选择合适版本。开发语言我们选择Solidity。其他默认选项。选择好配置后,点击Compile DevExample.sol 注意编译的文件要跟你选择的一致。点击编译后,如果编译失败,会显示错误提示,根据提示修改错误后再次编译,直到成功。

图5 编译智能合约 

       编译完成后,点击左侧编译菜单的"Compilation Details",可以看到编译输出的各项细节内容,包括元数据、字节码、ABI以及各种哈希值等。图6为编译细节展示菜单显示内容。

 图6 “编译细节” 展示内容

4. 部署合约

       合约部署按照部署位置,可以分成虚拟环境部署(多用于调试),测试链部署(接近真实环境的测试)和主链部署几种方式。

a. 虚拟环境部署运行

       虚拟环境的选项是JavaScript VM,这种模式下,执行环境没有连接到任何节点(node),所有操作均在本地及内存进行,合约部署、运行都建立在REMIX的内置虚拟机之上。这样的好处是部署合约不需要消耗Gas费用(即使测试链部署也需要消耗测试代币),运行得到结果也比较快,调试排错效率高。图7是在JS VM环境下部署合约的操作示例。

 图7 本地虚拟环境部署合约

       由图7可见,Environment选项我们选择第一个JavaScript VM。Account选择默认,这个是只执行合约部署操作的账户,待会合约运行时候,会看到这个账户就是构造函数中msg.sender。Gas Limit是部署花费Gas的限制,Gas是计价单位,部署合约最终花费是由花费的Gas数量和Gas价格共同相乘决定。Value指明涉及转账操作的价值。Contract对应的我们要部署的合约,这里是contracts/DevExample.sol。下面点击Delpoy按钮就是完成部署操作。

图8 部署合约后返回信息 

       部署后显示结果如图8所示,这里把重点信息介绍一下。

       在控制台返回信息中,绿色√表明部署成功。如图7所示,左侧绿色框内容是合约部署成功后开放出来的方法,在这里可以直接调用方法查看结果,对合约进行测试验证。控制台返回的信息中,红色椭圆框是交易哈希值,通过这个哈希值,可以进一步查询交易细节,这个在下一节测试网部署例子中会介绍;橙色矩形框是部署账户地址,就是在部署时候设置的部署账户参数;最后红色矩形框是返回日志内容,这里面包括了合约部署触发的事件,可以明确看到,构造函数中触发的DevExampleCreated事件被触发,deployer和msgText都与代码中设置一致。

       下面点击左侧绿框中的showCaller按钮,看一看调用合约方法后返回是什么样的(见图9)。

 图9 showCaller控制台返回信息

       由控制台可见,调用showCaller方法, 触发了CallerEvent事件,同时方法也产生了返回信息(output),事件参数callerAddress和方法返回信息都是账户地址0x5B38Da6a701c568545dCfcB03FcB875f56beddC4,这个是部署合约的账户地址,也是本次测试发出调用请求的账户地址。

b. 测试网部署

       演示完如何在虚拟环境部署,下一步我们进行测试链部署。这里我们选择以太坊测试链Rinkeby,在部署合约之前我们先要到测试网的水龙头(Faucet)上获取一定数量测试代币,因为测试网部署合约要像主网一样产生费用,只不过这个费用的代币可以免费获取。

 图10 获取测试代币后,连接REMIX页面

       如图10所示,在获取测试代币之后,激活MetaMask工具,与当前REMIX页面连接,网络、账户、连接状态和账户余额都保持正常。

       选择部署环境,上一节部署环境选择JavaScript VM,本节在测试链部署,部署环境选择Injected Web3,此时REMIX会根据MetaMask信息配置,识别出连接的网络是Rinkeby(见图11)。

 图11 Rikeby测试链部署的选项

       按图11所示,测试链部署与虚拟环境部署最大区别就是环境选项,在连接MetaMask钱包后,选择 Injected Web3选项,识别出测试链网络,然后点击Deploy进行部署。 

5. 调试合约

       如果想要在REMIX中对智能合约进行调试,首先确保激活调试器插件,具体操作方法是到首页面(Home),点击MORE选项,选择DEBUGGER,然后点击Activate进行激活,如图12所示。 

 

 图12 激活REMIX调试器

       安装好调试器插件后,在刚才部署或者调用合约操作的控制台输出信息中,找到Debug按键,点击即进入到调试页面,见图13和图14所示。

 图13 点击按钮进入Debug模式

 图14 Debug功能菜单

        由图14可见,进入到Debug状态后,会将之前的操作进行回放,然后根据上面的单步、跳出等操作进行单步调试,下面数据区显示了堆栈、局部和全局变量,内存区以及字节码指令等信息。但是这个调试无法在调试中途对一些状态进行修改。

三、结语

       本文从一个实例入手,简单介绍了一下如何使用REMIX IDE工具开发智能合约,供新手入门作为参考。需要注意的是,文中所述的功能仅仅涉及REMIX全部功能的一小部分,满足智能合约开发的最基本呢需求,REMIX更高级的使用方法以及智能合约更深入的开发细节内容,我们另文会做系列介绍。

 

...全文
3331 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

46

社区成员

发帖
与我相关
我的任务
社区描述
这里是CSDN讨论Web产品技术和产业发展的大本营, 欢迎所有Web3业内和关心Web3的朋友们.
社区管理员
  • Web3天空之城
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧