记录智能合约开发的环境配置及各个软件的功能。
Remix
一个在线的智能合约开发环境。
MetaMask
https://metamask.io/
这是一个 chrome 插件,管理以太坊钱包。用这个插件,你可以把你以太坊的公有和私有的钱包导入进来进行关联,并且使用 Remix 开发合约时,可以直接连通,使用钱包中的信息。
ganache
https://www.trufflesuite.com/ganache
快速启动个人 Ethereum 区块链,您可以使用它来运行测试、执行命令和检查状态,同时控制链的操作方式。
安装完后,启动后,它会在http://127.0.0.1:7545
上启动一个服务,并生成几个私有合约的账号,用这些可以方便我们进行测试。
启动后,就可以使用MetaMask
连接。
- 把 metaMask 的网络选择”自定义 RPC”
- 输入名称,url 中输入
http://127.0.0.1:7545
上面两步就连上了metamask
启动的服务。把metamask
上面的账户导入到 metamask 中,就可以看到对应账户的以太币。
复制账户的私钥,然后在 metamask 中导入即可
和metamask
连通后,刷新remix
,remix
可以自动读取metamask
的账户信息,可以用来进行智能合约的测试。
Truffle
https://www.trufflesuite.com/
这个是以太坊的开发套件,大家都喜欢称为瑞士军刀套件。有了这个就可以让智能合约的编译和部署就可以变的自动化。
在使用 remix 时,编译和部署都是在浏览器中自动进行的。我们自己开发中,合约写完后,需要把编译成 bat code 和 ibi 接口,ibi 是一个 json,是用来部署和 web3 来做接口。使用 truffle 可以让上面的流程自动化。
全局安装
1 | npm install -g truffle |
使用下面的命令可以下载官网提供的宠物领养的例子
1 | truffle unbox pet-shop |
contracts/
: 合约都放在这个文件夹中migrations/
:部署文件放在这里truffle-config.js
: Truffle configuration file
使用如下命令编译合约
1 | truffle compile |
部署合约
1 | truffle migrate --reset |
也可以加–reset 重启服务
部署成功后,在ganache
中就可以看到新部署的合约账户了。
测试
1 | truffle test |
上面会测试所有 test 文件夹下的测试文件。注意:需要在项目中安装 truffle,即使全局已安装。
浏览器端和智能合约进行交互
上面的所有的操作,就把只能合约开发的服务端配置做完了,写的合约也能编译部署了,接下来就可以通过客户端来进行操作了。
前端操作智能合约需要两个库
- web3
- truffle-contract //这是 truffle 在前端又包了一层
创建一个 react 项目,把上面的合约服务器代码放到 src 下面,然后退回到前端代码的根目录,安装下面的两个库,因为这两个库是给前端开发使用的。
在项目中安装这两个库
1 | npm i web3 truffle-contract --save |
浏览器安装了
metaMask
,浏览器中就有了 web3 实例。
IPFS
“IPFS 全称是 Inter Planetary File System,直接翻译的话叫做“星际文件系统”,它由 Protocol Lab 提出,是一种点对点(P2P)的分布式文件系统。不过虽然说它是文件系统,是一种用来存储数据的技术,但更确切的说 IPFS 是一种传输协议。”
ipfs 可以通过多种方式操作,也有 nodejs 的版本。https://github.com/ipfs/js-ipfs
1 | npm install ipfs --global |
全局安装以后,可以直接在命令窗口中进行操作。
1 | jsipfs --help |
就可以直接查看它的所有命令。下面命令是简单演示,上传一个本地文件,并查看和同步
1 | jsipfs init |
<hash>
是上传的时候生成的 hash 值,通过这个就可以直接在网页或者命令查看上传的内容。