見出し画像

web3.pyでBlockChainのWallet残高を取得する方法

残高(Balance)の取得方法

@yutakikuchi_です。
web3.pyを使ってBlockChainに接続したときに、自身のWalletアドレスの残高(Balance)を取得する方法を書きます。コードは非常にシンプルでget_balance関数を呼び出すだけで実行できます。

テストネットワークであっても残高(Balance)を持っておかないと、テストトランザクション用のガス代が無いなど、残高エラーが出たりするので注意が必要です。下記はweb3.pyでbalanceが足りない際に出るエラーログです。

ValueError: {'code': -32000, 'message': 'insufficient funds for gas * price + value'}

下記はweb3.pyを活用し、Polygonのmumbaiのテストネットワークに接続しています。pythonの実行引数として、残高を確認したいWalletアドレスを渡します。w3.toChecksumAddressの処理を入れないとエラーで怒られるので処理を追加しています。

message:('Web3.py only accepts checksum addresses. The software that gave you this non-checksum address should be considered unsafe, please file it as a bug on their platform. Try using an ENS name instead. Or, if you must accept lower safety, use Web3.toChecksumAddress(lower_case_address).
$ python get_balance.py <wallet address>

import sys
from web3 import Web3

if __name__ == '__main__':
 try:
   user_address = sys.argv[1]
   w3 = Web3(Web3.HTTPProvider('https://rpc-mumbai.maticvigil.com/'))
   user_address = w3.toChecksumAddress(user_address)
   balance = w3.fromWei(w3.eth.get_balance(user_address), 'ether')
   print(f"balance : {balance} matic")
 except Exception as e:
   tb = sys.exc_info()[2]
   print("message:{0}".format(e.with_traceback(tb)))

また​w3.fromWeiで残高の表示桁数を調整しています。

その他

web3.pyのinstallの説明、テストネットワーク(Polygon mumbai)のトークン取得は下記のnoteに記載しました。よければ参考にしてみてください。


この記事が気に入ったらサポートをしてみませんか?