Could IDE的入口
新版的Cloud IDE已经去除证书配置的要求,开发者开通区块链之后可直接开始智能合约的开发。在本节中,我们将会使用Could IDE来进行合约的编写、编译和调试的工作。
如果是体验链,请在新手引导引导界面,找到合约体验链卡片,点击调试合约。
如果是正式的托管链或区块链创新大赛的链,通过合约管理>新建工程或编辑已有工程进入Cloud IDE。
从一个最简单的合约开始
选择目标链
编译部署合约前,要指定好所要部署的链以及部署用的账户:
在右边栏中,点击环境配置:
在本例中,选择合约体验链:
部署账户暂时先用平台提供的默认账户Test001和对应的私钥;
在编译部署过程中,开发者一定要正确选择对应的链。
部署账户可以使用默认的账户进行,后期开发者如果有需求,可以按照自己需求配置部署合约的账户。
点击确定。
编译合约
在打开的Could IDE界面中,新建一个合约文件(main.sol)。
在中间的编辑器中的填入以下内容:
pragma solidity ^0.4.0;
contract SimpleStorage {
uint storedData;
function set(uint256 x) public {
storedData = x;
}
function get() public view returns (uint256) {
return storedData;
}
}
在Cloud IDE右边栏,点击编译。
然后可以在左下角看到编译的结果(下图×××区域),包括Warning和Error。在右边栏,可以看到编译生成的合约字节码(bytecode)和合约接口说明(ABI)(下图绿色区域)。
点击保存按钮,可以把当前合约文件保存到合约工程中。
注意,这里只是把合约文件保存到工程文件中,并不是保存到区块链上。下一节会介绍如何通过Cloud IDE把编译好到合约部署到链上。
部署合约
当合约编译完毕,点击字节码右上角的部署合约:
给要部署的合约实例一个名称:
合约每成功部署一次,在链上就存在一个实例。
同一条链上的合约实例不得重名。
部署成功后,应该在右边栏看到如下信息:合约ID
,部署交易的交易Hash
,合约暴露的可调用接口
调用合约
对于上面的样例代码,我们做了非常简单的三件事情:
- 声明了一个类型为Uint的Stroage变量
storedData
,该变量在部署的时候会被初始化为0,并保存在区块链上; - 暴露了一个设置该变量的接口
set(uint256)
; - 暴露了一个获取该变量的接口
get()
。
先点击调用合约
调用set
接口,在弹出的输入参数窗口,输入一个非负数,点击确定。
调用完成后,可以看到如下结果:
同样的,再调用get
方法去获取storedData
值,调用成功后,可以在output
字段中见到我们设置到值,具体结果参考下面:
至此,我们完整的编译、部署和调用了一个智能合约。这个合约永久的存储在我们的目标链上,合约名或合约ID是该合约实例的访问接口,任何人都可以通过Cloud IDE或其他SDK来接入链并调用该合约所暴露的方法。
进阶
更新合约
目前Could IDE不支持合约更新。部署之后,如果需要修改合约,那么只能修改后,重新编译并重新部署成一个新的合约实例,合约名和合约ID都要更新。
连接到已部署的合约
开发者经常需要测试调用已经部署好的合约,目前Could IDE中的工程文件并不保存合约部署后的合约名,ID,ABI和字节码。因此,要实现这个需求,操作的步骤如下:
- 打开Could IDE,配置好链的环境。
- 打开之前已部署合约的代码。
- 编译合约一次,生成合约字节码和ABI接口说明。(关键点:产生和链上合约完全一致的ABI接口说明)
-
点击ABI接口右上角的已部署合约按钮。
-
输入之前部署的合约名或合约Identity。
- 连接后,可以看到合约的方法,并可以继续调用:
连接到已部署合约的时候,Cloud IDE是不会做任何接口检查的,开发者要保证生成的ABI和已部署的合约完全一致,否则可能导致调用失败。
注意:一旦工程文件里面的合约代码逻辑发生了变化,就不能继续链接到之前部署过的实例上,否则会产生调用错误。如果代码有更新,建议部署新的实例来进行调试。
小结
Cloud IDE是一个极为方便的合约管理、调试和部署工具。开发者需要多加熟悉并理解各个功能的使用,这对后续开发工作帮助非常大。