「PythonでSolanaブロックチェーンアプリの開発を行いたい」
「PythonでSolana関連のシステムを開発したい」
「Pythonで仮想通貨SOLを扱う仕組みを考えている」
このような場合には、Solana.pyがオススメです。
この記事では、Solana.pyについて解説しています。
本記事の内容
- Solana.pyとは?
- Solana.pyのシステム要件
- Solana.pyのインストール
- Solana.pyの動作確認
それでは、上記に沿って解説していきます。
Solana.pyとは?
Solana.pyとは、Solana JSON RPCにアクセスするためのPython APIです。
ライブラリとして提供されており、pipでインストールできます。
Solana JSON RPC
https://docs.solana.com/developing/clients/jsonrpc-api
Solana JSON RPCは、Solanaが公式に公開している仕様になります。
Solana.pyを使えば、面倒なコーディングが不要になるということです。
Solanaに関して言えば、実質2021年がスタートと言えます。
そのため、まだまだSolana関連のライブラリが充実しているとは言えません。
しかし、その中でもSolana.pyが現在は最有力と言えます。
これは、Pythonに絞った場合の話になります。
よって、Python使いであればSolana.pyを追いかけるのはアリだと思います。
以上、Solana.pyについて説明しました。
次は、Solana.pyのシステム要件を確認します。
Solana.pyのシステム要件
現時点(2022年2月)でのSolana.pyの最新バージョンは、0.21.0となります。
この最新バージョンは、2022年1月14日にリリースされています。
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
サポート対象となるPythonのバージョンは、以下となっています。
- Python 3.7
- Python 3.8
- Python 3.9
- Python 3.10
以下は、Python公式開発サイクルです。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月23日 |
3.7 | 2018年6月27日 | 2023年6月27日 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年10月4日 | 2026年10月 |
Solana.pyは、Python公式開発サイクルへ完璧に対応しています。
こういう地味なところが、ライブラリへの信頼度に関わると感じます。
ここまでをまとめると、Solana.pyはPythonのバージョンだけに注意です。
それさえ注意すれば、特に問題はないと言いたいのですが・・・
実は、Solana.pyは依存関係のあるパッケージ数が結構多いです。
そのため、Python仮想環境の利用をオススメします。
以上、Solana.pyのシステム要件を説明しました。
次は、Solana.pyのインストールを行います。
Solana.pyのインストール
検証は、次のバージョンのPythonで行います。
$ python -V Python 3.10.2
まずは、現状のインストール済みパッケージを確認しておきます。
$ pip list Package Version ---------- ------- pip 22.0.3 setuptools 60.7.1 wheel 0.36.2
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、Solana.pyのインストールです。
Solana.pyのインストールは、以下のコマンドとなります。
pip install solana
インストールは、そこそこ時間がかかります。
では、どんなパッケージがインストールされたのかを確認しましょう。
$ pip list Package Version ------------------ --------- anyio 3.5.0 apischema 0.16.6 attrs 21.4.0 base58 2.1.1 cachetools 4.2.4 certifi 2021.10.8 cffi 1.15.0 charset-normalizer 2.0.11 construct 2.10.67 construct-typing 0.5.2 h11 0.12.0 httpcore 0.13.7 httpx 0.18.2 idna 3.3 jsonrpcclient 4.0.2 jsonrpcserver 5.0.6 jsonschema 3.2.0 OSlash 0.6.3 pip 22.0.3 pycparser 2.21 PyNaCl 1.5.0 pyrsistent 0.18.1 requests 2.27.1 rfc3986 1.5.0 setuptools 60.7.1 six 1.16.0 sniffio 1.2.0 solana 0.21.0 types-cachetools 4.2.9 typing-extensions 3.10.0.2 urllib3 1.26.8 websockets 10.1 wheel 0.36.2
すでに述べた通り、多くのパッケージがインストールされます。
依存関係が多いと、やはりその分だけインストールの難易度は上がります。
以上、Solana.pyのインストールを説明しました。
次は、Solana.pyの動作確認を行います。
Solana.pyの動作確認
WalletのSOL残高を確認してみましょう。
Walletと言えば、最近ではPhantomに勢いがあります。
とにかく、SOLの残高があるWallteを用意しましょう。
残高がある方が、動作確認する際にはわかりやすいです。
なお、開発環境であれば簡単に残高を増やせます。
その方法は、次の記事で説明しています。
以下は、動作確認用のコードになります。
import asyncio from solana.rpc.async_api import AsyncClient ENDPOINT = "https://api.devnet.solana.com" PUBKEY = "あなたのWalletアドレス" async def main(): async with AsyncClient(ENDPOINT) as client: res = await client.is_connected() if res: balance = await client.get_balance(PUBKEY) print(balance) asyncio.run(main())
上記コードを実行すると次のように表示されます。
{'jsonrpc': '2.0', 'result': {'context': {'slot': 112738197}, 'value': 2901749956}, 'id': 1}
該当するアドレスのWalletをPhantomで確認します。
Phantomでは四捨五入しているのでしょうかね。
でも、同じ残高のSOLがあると言えます。
上記は、開発環境で確認しました。
本番環境での残高を確認する場合は、次のように変更します。
ENDPOINT = "https://api.mainnet-beta.solana.com" PUBKEY = "あなたのWalletアドレス"
本番環境に変更してプログラムを実行した結果は、以下。
{'jsonrpc': '2.0', 'result': {'context': {'slot': 119548530}, 'value': 356426609}, 'id': 1}
このときのPhantom上の表記は、次のようになります。
本番環境でも問題なく残高を取得できています。
Solana.pyの動作確認としては、ここまでやれば十分でしょう。
以上、Solana.pyの動作確認について説明しました。