公式サイトをみながらgethを動かして行こうと思います。
https://github.com/ethereum/wiki/wiki/JSON-RPC
必須
こちらを参考にgethのインストールやmyGenesis.jsonファイルを準備してください。
Ethereum [Solidity 開発環境準備]
Ethereum [プライベートネットワークに接続する]
Ethereum [etherの採掘]
Json RPC
こちらを実行してください。
$ geth --rpc --networkid 15 --nodiscover --datadir "ethereum-rpc" console
// Result
<略>
INFO [09-28|16:49:25.542] HTTP endpoint opened url=http://127.0.0.1:8545 cors= vhosts=localhost
Welcome to the Geth JavaScript console!
instance: Geth/v1.8.14-stable/darwin-amd64/go1.10.3
modules: admin:1.0 debug:1.0 eth:1.0 ethash:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
となっていればおkです。
--rpcの説明
gethのオプションで--rpcをつければrpc接続できます。
$ geth --rpc --rpcaddr "0.0.0.0" --rpcport "8545" --rpcapi "web3,eth,net,personal"
ブラウザからRPCにアクセスする場合は、適切なドメインを設定してCORSを有効にする必要があります。
また、--rpcapi "web3,eth,net" をつけることによって、利用する機能を個別に指定するオプションを追加することができます。
- --rpc: HTTP-RPCサーバを有効にする。
- --rpcaddr "0.0.0.0": エンドポイントのホストアドレスの指定。無指定の場合、"localhost"。
- --rpcport "8545": エンドポイントのポート番号の指定。無指定の場合、8545。
- --rpcapi "web3,eth,net,personal": APIで受け付けるHTTP-RPCインターフェースの種類の指定。インターフェース名をコンマ区切りのリストで記述する。無指定の場合、"eth,net,web3"。
- –rpccorsdomain:クロスドメインを許可する設定。
JSON-RPC Errors
Code | Message | Meaning |
---|---|---|
-32700 | Parse error | Invalid JSON was received by the server.An error occurred on the server while parsing the JSON text. |
-32600 | Invalid Request | The JSON sent is not a valid Request object. |
-32601 | Method not found | The method does not exist / is not available. |
-32602 | Invalid params | Invalid method parameter(s). |
-32603 | Internal error | Internal JSON-RPC error. |
-32000 to -32099 | Server error | Reserved for implementation-defined server-errors. |
Versionの取得
web3_clientVersionで現在のクライアントのバージョンを返してもらいます。
新しいタブを開いて以下を実行してください。
$ curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' http://localhost:8545
// Result
{"jsonrpc":"2.0","id":67,"result":"Geth/v1.8.14-stable/darwin-amd64/go1.10.3"}
このように返ってきたと思います。
直前のブロックの数を返す
eth_blockNumberを使って直前のブロック数を表示します。
$ curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":83}' http://localhost:8545
// Result
{"jsonrpc":"2.0","id":83,"result":"0x0"}
採掘をしていないので、0が16進数で返されます。
16進数を10進数にする場合は、このようにします。
$ echo $((0x0))
// Result
0
このようにして、JSON-RPCを使っていきます。
もっといろんなメソッドを使いたい方は、公式サイトを参考にしてください。