Help us understand the problem. What is going on with this article?

JSON-RPC使って、gethを動かしてみた

More than 1 year has passed since last update.

公式サイトをみながら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を使っていきます。
もっといろんなメソッドを使いたい方は、公式サイトを参考にしてください。

kagami-r0927
都内に住む大学生 機械学習/業務効率化/フロント/バックエンドに興味があります。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away