Solidity IDE中文版Remix由汇智网提供,使用国内CDN进行加速,其访问速度比较快。通过浏览器打开官方网址即可使用,目前这个Solidity IDE中文版为老版本,不过不影响我们使用。接下来介绍Remix的功能和使用方法。
Remix的界面为左、中、右三栏布局,左侧为Remix文件管理器,中间为Remix编辑器及终端,右侧为Remix功能面板。文件管理器顶部的工具栏可提供创建新文件、上传本地文件、发布gist等快捷功能,将鼠标移到相应的图标处停顿,能够查看功能的浮动提示信息。Remix界面如图2.1所示。
Remix文件管理器
Remix文件管理器用于列出在浏览器本地存储中保存的文件,分为browser和config两个目录。第1次访问Remix时,在browser目录下将会有两个预置的代码,即ballot.sol合约和对应的单元测试文件ballot_test.sol。
Remix编辑器及终端
在Remix编辑器面板上,“+”“-”符号对应功能为增大和缩小字体。在Remix终端内置了web3.js 1.0.0、ether.js、swarmgy和当前载入的Solidity编译器,因此我们可以在终端内使用熟悉的web3 API与当前连接的区块链节点进行交互。Remix终端的另一个作用是显示合约执行或静态分析的运行结果。
图2.1
Remix功能面板
编辑Solidity代码时,需要先选择代码中声明的Solidity对应版本后再编译,否则会出现编译错误。编译功能区可通过下拉框选择不同的Solidity版本,如图2.2所示。
设置编译代码完成后,在运行功能区,Remix提供了三种不同节点的部署环境,包括“JavaScript虚拟机”“注入的Web3对象”“Web3提供器”,如图2.3所示。
图2.2
图2.3
JS(JavaScript)虚拟机是一个JS版本的以太坊虚拟机实现,它运行在浏览器内,因此不需要考虑节点配置或者担心损失以太币,适合进行学习和快速原型验证。如果浏览器中安装了MetaMask插件,或者使用Mist之类的以太坊兼容浏览器,那么就可以选择第2个节点,即环境,“注入的Web3对象”。如果我们有自己的节点,那么就可以选择第3个环境,即“使用Web3提供器”,将Remix连接到节点上。
我们已经讲解了Remix的基本功能,下面就开始进行实践。新建hello.sol文件,编写一个Hello测试合约,将合约中echo函数返回接收的字符串,代码如下:
接下来选择Solidity 0.5.1版本的编译器,单击“开始编译”按钮或使用组合键“Ctrl+S”进行编译。如果编译后没有报错,则Hello会出现在底色为绿色的框里,单击“详情”按钮可以查看编译的详细信息。单击“ABI”按钮可以复制相关的ABI信息,单击“字节码”按钮可以复制编译后的字节码,如图2.4所示。
图2.4
完成前面两步后,就要进行部署合约了。切换到运行功能区,在“部署”按钮上方的下拉框里选择“Hello”(因为这里只有一个合约Hello,所以下拉框默认为Hello)。然后单击“部署”按钮,部署成功后就会显示出已部署的合约“Hello at 0x692...77b3a(memory)”。echo是Hello合约里的函数,可通过单击“echo”按钮来调用echo函数,如图2.5所示。
图2.5
至此,合约已经部署完成,可以测试一下合约中函数的功能。输入字符串“1111”后单击“echo”按钮即可调用echo函数,echo函数已正确执行完成,返回结果为“1111”,如图2.6所示。
图2.6
因为这里输入的是数字类型的字符串,不用加双引号。如果输入的是字母类型的字符串,则需要加上双引号,输入格式为“"hello"”,如图2.7所示。
图2.7