JSON-RPC是一种无状态的,轻量级的远程过程访问协议,并使用JSON作为其数据格式。
JSON-RPC主要是在处理过程中定义了一些数据结构和规则,能够在不同的消息传递环境中如Sockets、HTTP中传递信息。
这里将介绍如何使用JSON RPC接口在以太坊私链中部署调用合约。
编写合约:
contract SimpleTest {
uint data;
function set(uint n) public {
data = n*3;
}
function get() public returns (uint) {
return data;
}
}
编译合约:
首先需要在一个终端中(A终端)开启以太坊私链;然后再开启另一个终端(B终端)并输入以下命令来调用以太坊中的JSON-RPC接口。
所有JSON-RPC都需要使用curl的方式来调用,jsonrpc输入的是版本号,目前一般使用2.0;method中的"eth_compileSolidity"是要调用的JSON-RPC接口方法名;params中是调用方法需要传入的参数,如果有多个参数,也会包含多个字段;最后的localhost:8545是要调用的以太坊地址,由于我们开启的是私有链,默认以太坊go-ethereum客户端端口号为8545。B终端中返回结果,返回的结果中最重要的数据就是code字节码和abiDefinition数据。
curl --data '{"jsonrpc":"2.0","method": "eth_compileSolidity", "params": ["contract SimpleTest {uint data;function set(uint n) public {data = n*3;}function get() public returns (uint) {return data;}}"], "id": 5}' localhost:8545
报错:
查询原因,因为端口8545未打开,按以下命令重新启动geth:
geth --datadir "~/.ethereum&#