LoginSignup
5
5

More than 5 years have passed since last update.

Infura の JSON RPC API で Ethereum アドレスの残高を取得

Last updated at Posted at 2018-04-30

はじめに

  • Geth と呼ばれる Ethreum クライアントは、JSON RPC API を提供することができます。
  • JSON RPC API を使用することで、Geth を実行せずに、外部のサーバ(ノード)を使用して、Ether の残高を取得したり、トランザクションを投げたりすることができます。
  • ただし、JSON RPC API を提供しているサーバが返す値を読む形になるので、そのサーバを信用する必要があります。
  • 通常は、自らが所有するサーバの JSON RPC API を使用することが望ましいと思いますが、この記事では Infura というサービスが提供する JSON RPC API を使用します。
  • Infura のサーバ上で動いている Geth に、API 経由でアクセスするといった形になります。

Infura に登録して API Key 取得

  • Infura を使用するために、API Key を取得する必要があります。
  • https://infura.io/ でメールアドレスを登録すると、次のようなフォーマットで API Key つきの URL がメールで送られてきます。
  • https://mainnet.infura.io/xxxxxxxxxx

curl で JSON RPC API にアクセス

  • 今回は Ethereum アドレスの残高を知りたいので、Geth の JSON RPC API eth_getBalance を使用します。
  • API ドキュメント 

API に渡すパラメータ

  • DATA: 残高を取得したい Ethereum アドレス
  • QUANTITY|TAG: ブロックの番号または、"latest" つまり最新のブロックを指定
"params" : [
  "0xF02c1c8e6114b1Dbe8937a39260b5b0a374432bB",
  "latest"
]

リクエストのサンプル

  • 実際に使用する際は、次の箇所を変更してください
    • YOUR_API_KEY の部分を、自分の API Key に変更してください。
    • アドレス 0xF02c1c8e6114b1Dbe8937a39260b5b0a374432bB を、残高を調べたいアドレスに変更してください。
curl -i -X POST \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0xF02c1c8e6114b1Dbe8937a39260b5b0a374432bB","latest"],"id":1}' \
"https://mainnet.infura.io/YOUR_API_KEY"

レスポンスのサンプル

HTTP/2 200 
date: Mon, 30 Apr 2018 18:21:08 GMT
content-type: application/json
content-length: 55
server: nginx/1.10.3 (Ubuntu)
vary: Origin

{"jsonrpc":"2.0","id":1,"result":"0x2453625cffc4f000"}
  • この result の値が Ethereum アドレスの残高になります。
  • この値は16進数なので、次のようなコマンド等で10進数に直すと wei の値になります。
echo $((16#2453625cffc4f000))
# => 2617543960000000000
  • 1 Ether = 1000000000000000000 Wei なので、今回は 26175439600000000001000000000000000000 で割った値 2.61754396 が残高になります。

参考

sushiether

 

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5