智能合约开发笔记

记录智能合约开发的环境配置及各个软件的功能。

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连通后,刷新remixremix可以自动读取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
2
3
jsipfs init
jsipfs add file.html
jsipfs cat <hash>

<hash> 是上传的时候生成的 hash 值,通过这个就可以直接在网页或者命令查看上传的内容。

文章作者: wenmu
文章链接: http://blog.wangpengpeng.site/2020/01/09/%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6%E5%BC%80%E5%8F%91%E7%AC%94%E8%AE%B0/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 温木的博客
微信打赏