LoginSignup
2
0

More than 5 years have passed since last update.

Ethereumの新規ブロックを検出してコールバックする方法。(web3.py)

Last updated at Posted at 2017-10-08

やったこと

web3.pyを使用してEthereumのブロックが作成された時にコールバックする方法を確認する。
web3.pyで確認している事例があまりないので記録しておく。

※geth --version 1.70, web3.py --version 3.15

[Step1] gethを起動させる。(Light client mode)

gethをLightクライアントモードで起動させる。(同期方法はfastでもいいけど、サイズも重く
同期が長いため。今回は同期が早いLight modeにする。)

geth
geth --datadir "~/light" --syncmode "light" console --rpc --rpcaddr "localhost" --rpcport "8545"

[Step2] サンプルを書く。

sample_filter.py
from web3 import Web3,HTTPProvider,IPCProvider
import time

web3 = Web3(HTTPProvider('http://localhost:8545'))

def new_block_callback(block_hash):
    print("New Block: {0}".format(block_hash))

new_block_filter = web3.eth.filter('latest') #フィルタを作成する。
new_block_filter.watch(new_block_callback) #ブロックが生成されたらコールバックする。

while True: #終了しないように待機する。
    time.sleep(1)

[Step3] 結果の確認

gethのプロンプト上では次のように、新しいブロックが生成されるたびMSGが出力されることを確認する。

geth
INFO [10-09|06:45:31] Imported new block headers   count=1   elapsed=6.232ms   number=4348769 hash=82a83d…31d8dd ignored=0
INFO [10-09|06:45:32] Imported new block headers   count=1   elapsed=5.492ms   number=4348770 hash=998bf4…3f41a3 ignored=0

出力(例)
$ python3 sample_filter.py
New Block: 0x82a83dadf80b59c7137649c3bf4a192bd2981cd51379be1df6539591ac31d8dd
New Block: 0x998bf46e587da0639bba709da59159ba08ebc499227383f263a3d6961e3f41a3

・・・

参考

2
0
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
2
0