geth, web3.js, JSON RPC, truffle, Ganache之间的关系

1. geth

geth的全称是Go-ethereum,是一个以太坊客户端,用go语言编写。它可以通过交互式控制台启动,该控制台提供了一个JavaScript运行时环境。内置了eth, web3.js等对象(来自书籍《区块链开发实战:以太坊关键技术与案例分析》)

 

2. web3.js

web3.js封装了JSON RPC,可以和任何暴露了RPC接口的以太坊区块链节点链接。

 

3. JSON RPC

JSON RPC可以和任何暴露了RPC接口的以太坊区块链节点链接,操作比web3.js更繁琐,需要配合curl使用,命令写起来比较长,如:

curl -X POST -H “Content-Type”:application/json –data ‘{“jsonrpc”:”2.0″, “method”:”eth_getBalance”,”params”:[“0x75b567b6d35c56a4e25c217efe892cfbb53d3d46″,”latest”],”id”:1}’ localhost:3000

 

4. truffle

truffle是以太坊开发智能合约的框架,可以快速构建项目并部署智能合约到区块链。几个步骤就可以创建、编译和部署项目:

truffle init

truffle compile

truffle migrate

为了便于测试,一般和Ganache配合使用。

 

5. Ganache

Ganache的前身是 testRPC ,作为一个桌面应用程序来启动私有链,比部署Rinkeby,Ropsten 等公共的测试链上速度更快,效率更高,也不需要申请假的以太币。图形界面如下:

geth, web3.js, JSON RPC, truffle, Ganache之间的关系