这篇写于我第一次尝试部署智能合约之时。首先配置好了geth环境、搭建了一条私链。然后了解了一下智能合约的开发工具。感谢本篇引用到的网络教程们,是这些教程让开发对新手友好。也希望我的文章能有那么一点点作用。
操作系统:macOS Mojave 10.14
1. 环境准备:geth客户端和以太坊账户
先抛开truffle、solidity这类合约相关的内容不谈,我们首先要做的是:(1)安装并启动geth客户端,(2)搭建测试链并设置好账户。
1.1| geth安装
brew tap ethereum/ethereum
brew install ethereum
运行 brew tap ethereum/ethereum 报错:
remote: Repository not found.
fatal: repository 'https://github.com/ethereum/homebrew-thereum/' not found
Error: Failure while executing; `git clone https://github.com/ethereum/homebrew-thereum /usr/local/Homebrew/Library/Taps/ethereum/homebrew-thereum --depth=1` exited with 128.
根据网上文章判断是在terminal手动输入的用户名密码与之前本地保存过的不一致。尝试:
1. 删除掉“钥匙串访问”中所有与Github有关的条目。未果。
2. 删除掉~/.ssh下的github_rsa和github_rsa.pub。成功。看来是本地不知什么时候保存的ssh与手动输入的账户不匹配导致报错。
1.2| 启动geth客户端
geth --datadir testNet --dev console 2>> test.log
--datadir testNet表示将区块数据及密钥存放在testNet文件夹(在当前目录新建的文件夹)中;
--dev表示启动的是开发者网络,启动后会自动分配一个账户给当前区块链;
console表示进入控制台模式;
2>> test.log表示将控制台日志输出到test.log中。test.log与启动节点后生成的testNet文件夹在同一目录下,是平级而不是包含关系。
* 新开一个终端窗口,跳至test.log所在的文件夹下,输入以下语句可以看到log信息。
tail -f test.log
1.3| 新建一个能够部署智能合约的账户
详见智能合约开发环境搭建及Hello World合约,参考“准备账户-》创建账户+给新账户转账+解锁账户”这部分即可。写得很清晰。
以上所部署的账户信息在退出geth后仍旧会保留。
至此准备工作完成,可以准备写智能合约啦。
2. 工具介绍:truffle
介绍合约开发工具们。
2.1| 什么是Solidity?
使用最多的以太坊智能合约语言。可选的还有Serpent(类Python),III(类Fortran)。Solidity类似Java。
2.2| 什么是Truffle?
Truffle是一套开发框架,针对基于以太坊Solidity语言的开发。Truffle本身基于Javascript。
方便智能合约的开发、测试、部署,高度集成。
2.3| 什么是Ganache?
Ganache(戳这里下载dmg安装包)是一个应用程序,与truffle配套使用。其因有图形界面而被建议取代之前的testrpc。安装好后要以开发者模式打开,即:进入finder-》应用程序,找到Ganache.app右键,然后按住shift后点击“打开”。
打开后点击“Quick Start”程序会自动建立10个账号,每个账号拥有100个以太币。这些账号和以太币都是假的(仅运行在内存),每次重新打开会重新生成。
2.4| 什么是Browser-Solidity/Remix?
Remix是Solidity官方推荐的编译器,有网页版和本地编译版(安装方法)。
网页版Remix无需本地安装Solidity便可使用,适合新手。