区块链系列十一:Truffle/Web3.js/infura开发eth

Truffle框架很好用, web3.js让你可以在js里很方便的通过JSON-RPC跟调用eth client的功能, infura可以让你不用自己搭建client。 eth同步是一个很痛苦的事情!

Truffle

truffle很不错的框架, 很多项目都在用, 包括OpenZeppelin。 ps, 据说Embark也很不错, 有机会试一下。

提供了compile, test, deploy等, 还提供了一个client, 方便开发测试。 建议把docs和tutorials都阅读一下。

infura

infura提供了一套client, 可以不用自己部署ETH client了。

Ethereum 智能合約開發筆記】不用自己跑節點,使用 Infura 和 web3.js 呼叫合約

truffle跟infura结合使用, 可以参考https://truffleframework.com/tutorials/using-infura-custom-provider

web3.js

https://github.com/ethereum/web3.js 简化了js通过JSON-RPC调用eth client的过程, 注意目前是1.0 beta, 跟truffle用的0.2接口不一致。

web3的其他语言实现

java

C

https://github.com/Nethereum/Nethereum

当然你也可以完全自己封装一下json-rpc即可。

TestNet

要在TestNet上运行, 需要获取到一些eth, 可以在MetaMask Ether Faucet上领取。

运行结果可以在Etherscan上查看。

一些问题

如果把Ganache重启了可能遇到问题:

the tx doesn't have the correct nonce

原因是eth里每个账号都有递增的nonce, 来保证tx的唯一性。 metamask记住之前发过的tx, 而Ganache重启后, 全部重来, nonce对不上。 可以把MetaMask重置一下

一些工具