見出し画像

トランザクションを発行するBot作成の道のり その①~接続と残高確認~

はじめに

pythonでブロックチェーン上のスマートコントラクトにトランザクションのリクエストを送信するBotを作ってみます。
最終的には以下のようなものを作成して、実際に実行できるところまでを目指します。
自分の学習のための備忘録的なものなので、いろいろ不備があるかもしれませんがご了承ください。

  • Read系では、ウォレットの情報を見やすく表示するようなもの

  • Write系では、NFTのミントやトークン交換を自動で行うようなもの

開発環境

IDE: VS Code
言語: Python
で開発していきます。

準備

pythonではトランザクションを実行したりするweb3関連のライブラリがあるためこちらをインストール。

pip install web3

接続~残高確認まで


web3.pyを使うとかなり簡単にトランザクションを実行することができる。
例えばウォレット残高は以下で確認が可能。

from web3 import Web3

# 確認したい対象のウォレットアドレス
myWalletAddress = "0xxxxxxxxxxxxxxx"

# RPCのURL
web3 = Web3(Web3.HTTPProvider("https://eth.llamarpc.com")) 
isConnected = web3.isConnected()

if isConnected:
    print('Connected')
    balance_wei = web3.eth.getBalance(myWalletAddress)
    print(web3.fromWei(balance_wei,'ether'))
else:
    print('Cant connect.')

やることは以下の2つのみ。

  1.  HTTPProviderにJSON-RPCを実行するためのノードのURLを設定

  2. getBalanceメソッドをウォレットアドレスを指定して実行

クライアントアプリケーションがイーサリアムのブロックチェーン上のスマートコントラクトを実行する際には、JSON-RPC(JSON形式で外部のプロセスをリモート実行)を用いて行う。
イーサリアムではJSON-RPCの形式が規格で決まっており、この規格にのっとっていればどの言語からでもスマートコントラクトを実行することができる。
1.でイーサリアムブロックチェーンのノードのURLを指定し、2.で数あるEthereum JSON RPC APIのうち、getBalanceを実行している。ということになる。

https://scrapbox.io/sushiether/Ethereum_JSON_RPC_API_%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9

実行すると、以下のように自分のウォレットのETH残高が出力される。

Connected
0.220240150154497311

web3.pyを使うことで、簡単にトランザクションを実行することができました。
今回は残高確認のみの単純なものでしたが、次回はトランザクションの履歴などを確認できるようにしてみます。
今回はここまで。

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