LoginSignup
1
1

[Python] solanaのウォレットの残高を取得する

Posted at

SOLのウォレットの残高を取得してみた。

今回は、SOLの開発をpythonでちょこっとやってみようと思い、pythonから始めてみました。最近、tsとかgoとかいじってた人間のため、pythonを久々に書いたらちょっと違和感あったけど、なんとかかけました〜

対象ウォレット

検証用でメインネットにウォレットがあるので、それを使ってその残高を取得してみます。

EDuVpfE29Rb7S9q1bM5Db8WwtqMAPbZb8bqrfNcNt24c

→ ウォレットを晒しただけでは、なにもできないので安心してください。(秘密鍵は公開しないよ!!)

Screenshot 2024-02-24 at 13.59.55.png

残高:0.002267881
となっているので、この数値が取れればいいわけです!ちなみに、桁数は違う可能性があります。explorerはちょっと短い。

コード書いてみた

必要なモジュール

requests
asyncio
solana

上記のものになるので、下のコマンドを叩いてみてください。バージョンで拒否られたら頑張ってください笑

$ pip install requests asyncio solana

これらをしたら、以下のコードを書いてください!

balance.py
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を見てみてください!

Screenshot 2024-02-24 at 14.07.16.png

さらにちょっと覗きたい方はこちら!

今回はここまで!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1