在区块链的世界中,比特币被称为区块链1.0,以太坊进化为区块链2.0,这一跨越的实现缘于以太坊对智能合约的实现。智能合约在以太坊网络中扮演着至关重要的角色,目前ERC20代币的发行、多重签名乃至DApp的开发等都需要通过智能合约来进行实现等,因此学习智能合约的开发是很重要的。这篇文章会详细阐述该如何进行以太坊合约开发环境的搭建,以及编写第一个以太坊上的智能合约。
环境准备
进行以太坊智能合约的开发需要我们有一个以太坊网络的环境,我建议使用自己搭建的私链进行测试,在自己的私链上,以太币的获取比较容易,对于以太坊私链的的搭建可以参考我的另一篇博文《【Ethereum基础实践】:以太坊测试私链的搭建》。
Remix的使用
Remix是以太坊官方推荐使用的IDE,在Remix上我们可以进行合约的编写,并且还可以对以太坊环境进行集成,进行智能合约的部署与调试。
Remix有Web版本和Electron APP两个版本:
- Web:http://remix.ethereum.org/
- Electron APP:https://github.com/horizon-games/remix-app
你可以选择Web版或者Electron版本,它们的功能没有任何差别。
安装Remixd服务
由于Remix提供的是一个在线的Web环境,因此在本地不会存储你所编写的智能合约源文件,如果你希望文件能一直保存在本地,你可以安装Remixd服务。
1 | npm install -g remixd |
启动remixd:
1 | 使用绝对路径 |
点击Remix IDE左上方按钮连接至remixd服务:
这样就可以在本地编写智能合约了:
连接到以太坊节点
在Remix IDE中,我们可以连接我们自己的以太坊节点进行测试,在控制面板的Run
页面中可以配置自定义的以太坊节点,在Environment
中选择Web3 Provider
:
输入节点对应的IP地址和RPC端口即可进行连接:
在连接节点之后,我们可以看到私链中的各个账户的余额等信息:
这样我们就可以使用自己的以太坊私链进行智能合约的部署与测试了。
一个简单的智能合约
接下来我们会编写和部署一个简单的智能合约来演示一下整个流程。
先来看一下合约的源文件代码:
1 | contract Demo { |
这个合约的功能是在合约中存储了一个数字number
,并且提供了一个对该数字进行+1的方法add()
.
我们先对源代码进行编译:
之后在Run
面板点击Create
进行部署:
由于该合约的构造方法中需要一个参数,来对number
进行初始化,这里我填的是10
,另外,在Account
中需要选择部署该合约的账户(需要消耗gas),并且输入对应的密码对账户进行解锁:
待创建合约的交易广播至矿工节点并且被打包至区块中之后,我们就可以在面板中看到相关的合约信息了:
点击number
可以查看当前的值:
点击add
可以触发对应方法(该操作是一个transaction,需要消耗gas),number
的值会进行+1:
我们在控制台中可以看到该交易的详细信息:
至此,我们就完成了一个简单的智能合约的部署。
部署一个ERC20的合约
在这部分,我们会以以太坊上的EOS代币合约为例,进行ERC20代币的合约部署与测试。
首先,我们要获取EOS智能合约的源代码,可以在etherscan上获取对应源码:
https://etherscan.io/address/0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0#code
1 | contract DSNote { |
使用上述相同的部署方法,我们就可以看到EOS合约中提供的相关方法,并且开始测试了:
本文的版权归作者 罗远航 所有,采用 Attribution-NonCommercial 3.0 License。任何人可以进行转载、分享,但不可在未经允许的情况下用于商业用途;转载请注明出处。感谢配合!