趣旨
EtherScanが便利なことを発見し、これを応用すると面白そうなものができると直感的に感じたので忘れないうちにメモしておきます。
以下のコードの中身はドキュメントにあったBinanceからのUSDT出金を追うためのものです。特にパラメータはいじっていませんので、以下の解説がわかりづらい場合はドキュメントを直接参照するのがよいかと思います。
コマンドラインによる操作
APIはHTTPSリクエストで通信しているだけなのでパラメーターにAPIキーをセットすればcurlでも同じ結果が得られます。コードを書くのが面倒な方はとりあえずcurlで実際に受け取れるデータを確認してもよいかと思います。
curl "https://api.etherscan.io/api?module=account&action=tokentx&contractaddress=0xdac17f958d2ee523a2206206994597c13d831ec7&address=0xdfd5293d8e347dfe59e90efd55b2956a1343963d&page=1&offset=100&startblock=0&endblock=99999999&sort=desc&apikey=yourapikey"
Pythonによる操作
PythonにてAPI通信をするときはrequestsライブラリを使えば即コードができあがるので便利です。コマンドラインからsubprocessを利用する方法などもありますけど、多分requestsのためのコードを直接書いたほうが直感的でわかりやすいです。
import requests
from pprint import pprint
url = "https://api.etherscan.io/api"
params = {
"module": "account",
"action": "tokentx",
"contractaddress": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"address": "0xdfd5293d8e347dfe59e90efd55b2956a1343963d",
"page": 1,
"offset": 100,
"startblock": 0,
"endblock": 99999999,
"sort": "desc",
"apikey": "YourActualApiKey"
}
response = requests.get(url, params=params)
data = response.json()
pprint(data)
EtherScanのドキュメント
ドキュメントを見れば他にもいろいろ応用に使えそうなのがいっぱいあるのでぜひ覗いてみてください。