SOLのウォレットの残高を取得してみた。
今回は、SOLの開発をpythonでちょこっとやってみようと思い、pythonから始めてみました。最近、tsとかgoとかいじってた人間のため、pythonを久々に書いたらちょっと違和感あったけど、なんとかかけました〜
対象ウォレット
検証用でメインネットにウォレットがあるので、それを使ってその残高を取得してみます。
EDuVpfE29Rb7S9q1bM5Db8WwtqMAPbZb8bqrfNcNt24c
→ ウォレットを晒しただけでは、なにもできないので安心してください。(秘密鍵は公開しないよ!!)
残高:0.002267881
となっているので、この数値が取れればいいわけです!ちなみに、桁数は違う可能性があります。explorerはちょっと短い。
コード書いてみた
必要なモジュール
requests
asyncio
solana
上記のものになるので、下のコマンドを叩いてみてください。バージョンで拒否られたら頑張ってください笑
$ pip install requests asyncio solana
これらをしたら、以下のコードを書いてください!
from operator import truediv
import requests
import asyncio
from solana.rpc.async_api import AsyncClient
SOLANA_ENDPOINT = 'https://api.mainnet-beta.solana.com'
SOL_PROGRAM_ID = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'
# 今回は、このウォレットアドレスにしていますが、自分のがあれば書き換えてください!
SOL_WALLET = 'EDuVpfE29Rb7S9q1bM5Db8WwtqMAPbZb8bqrfNcNt24c'
# connection api server
async def main():
async with AsyncClient(SOLANA_ENDPOINT) as client:
res: bool = await client.is_connected()
if res == 1:
print("connection success") # True
elif res == 0:
print("connection failed") # False
payload = {
'jsonrpc': '2.0',
'id': 1,
'method': 'getTokenAccountsByOwner',
'params': [
f'{SOL_WALLET}',
{
'programId': f'{SOL_PROGRAM_ID}'
},
{
'encoding': 'jsonParsed'
}
]
}
r = requests.post(SOLANA_ENDPOINT, json = payload)
j = r.json()
print(j)
await client.close()
asyncio.run(main())
意外とpythonでも同期処理をするようにasync/awaitの操作が必要になるので、気をつけてくださいね!
ちなみに
progeram id
Solanaのブロックチェーンにおいて、"Token Program ID" は、SPLトークン(Solana Program Libraryトークン)の作成や管理に関わるプログラムの識別子のことで、SPLトークン標準は、ERC-20トークンというものに相当するSolana用のものであり、トークンの作成、転送、および管理を可能にするスマートコントラクトのセットのことをさしています。
Token Program ID
基本的に以下の固定値になっているようなので、これをうめこみました!
TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
このトークンの詳細についてはexplorerを見てみてください!
さらにちょっと覗きたい方はこちら!
今回はここまで!