Edited at

pythonからbitcoindにアクセスする

More than 1 year has passed since last update.

この記事では、Mac OS Sierra 10.12.4を使っています。

bitcoindにpythonからアクセスする環境を構築した時の情報をまとめました。

bitcoindをインストールしていることを前提とします。

参考:bitcoindをdockerで環境構築する


python-rpcのインストール

python-bitcoinrpcを利用します。

pip install python-bitcoinrpc


rpc接続の確立

bitcoinで利用されるrpc(リモートプロシージャコール)の接続を確立します。

quick_startに従って始めます。

from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException

rpc_user="bitcoinrpc"
rpc_password='passwordxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
rpc_connection = AuthServiceProxy("http://%s:%s@127.0.0.1:8332"%(rpc_user, rpc_password))

rpc_user,rpc_passwordはbitcoindの環境構築時に設定したものを使います。

わからなければ、bitcoin.confを確認すれば書かれているはずです。

なお、2017/6/24時点、AuthServiceProxyにおいて、パスワードに「/」が入っているとエラーになります。

(urllibでrpc_user,rpc_passwordを分解する際の区切りがうまく識別できないため)

/が混じらないpasswordにするなど工夫が必要です。


rpc接続の確認

rpc_connectionを定義したら、ブロックをとってみましょう

blhash = rpc_connection.getblockhash(0) #blhashはブロックのhash文字列

bl = rpc_connection.getblock(blhash) #blはブロック情報

結果確認

bl

{'bits': '1d00ffff',
'chainwork': '0000000000000000000000000000000000000000000000000000000100010001',
'confirmations': 1,
'difficulty': 1,
'hash': '000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f',
'height': 0,
'mediantime': 1231006505,
'merkleroot': '4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b',
'nonce': 2083236893,
'size': 285,
'strippedsize': 285,
'time': 1231006505,
'tx': ['4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b'],
'version': 1,
'versionHex': '00000001',
'weight': 1140}

genesisブロック情報が取れています。

次回はブロック内のトランザクション情報を取得するコードを作成します。