以太坊社区开发并开源了非常好用的在线 Solidity 集成开发环境
Remix
,可以方便的在 Remix 中编写、部署、测试智能合约,Remix 提供了强大的自动完成,语法高亮,实时编译检查错误等。打开remix,界面如下:
![](https://pic4.zhimg.com/v2-f25cfcc977fe2ed576a7053513cafe2f_b.jpg)
在代码区输入一下合约代码:
pragma solidity ^0.4.21;
contract Phone {
string public model;
int64 price;
function Phone (string initalModel, int64 initalPrice) public {
model = initalModel;
price = initalPrice;
}
function setModel(string newModel) public {
model = newModel;
}
function getModel() public view returns (string) {
return model;
}
}
Solidity
以太坊上写智能合约,只要是用到了Solidity语言。Solidity官方文档如是说:
Solidity is a contract-oriented, high-level language for implementing smart contracts. It was influenced by C++, Python and JavaScript and is designed to target the Ethereum Virtual Machine (EVM).
翻译为中文就是:Solidity是面向合约的高级智能合约编程语言,其设计受到了 C++、Python、Javascript 语言的影响,运行环境是以太坊虚拟机(EVM)。
Solidity 属于强类型语言,内含的类型除了常见编程语言中的标准类型,还包括 address 等以太坊独有的类型,Solidity 源码文件通常以 .sol 作为扩展名。
通过solidity在代码区写好了代码之后,就可以进行部署了。
部署智能合约
接下来看看在remix中合约是如何部署,运行的。
首先是要编译,点击Compile下的“Start to compile”按钮。如果选择了“Auto compile”,就会自动编译,不需要这部操作。
![](https://pic3.zhimg.com/v2-c997f39ff206eccccae686cf9a757ab7_b.jpg)
如果程序编译出错,会直接在编译区抛出异常,如果无误,就会显示如上图的绿色区域。
然后切换到Run,remix会自动识别出要部署的合约实例。
![](https://pic4.zhimg.com/v2-7a217f638843ac1e165a921b0ae303d3_b.jpg)
部署智能合约时,需要注意的是:
-
Environment选择Javascript VM,即把合约部署到运行在浏览器内存中的测试网络,不过运行在浏览器内存中的网络,页面刷新的话数据将会被重置,如果部署在主域 Rinkeby 测试网络上,数据就不会丢失;
-
部署时如果要传入字符串类型的参数,一定要加上双引号
-
点击“Deploy”部署
部署完成之后,就会显示出可被调用的合约方法:
![](https://pic1.zhimg.com/v2-83efbe8d65dc572e844333a67a5dda5e_b.jpg)
可以看出程序中只有setModel和getModel方法,但是部署之后却多了一个model方法(但是没有price方法)。这就是 Solidity 为public类型的存储型变量生成的 getter 方法,实际上如果一个存储变量类型为public,就不需要手动为它写一个get方法了。