🐳

XRPLのPythonライブラリを使ってみる

2024/05/07に公開

本記事の目的

本記事はブロックチェーン自体に初めて触れる方が、手を動かしながら理解することを目的として作成されています。
そのため細かな説明を省いており、とりあえずネットワークに接続して情報を取得できるようになるまでを解説します。

具体的には、XRP Ledger(以下、XRPL)のPythonライブラリであるxrpl-pyを使用して、以下を実行します。

  • XRPLへの接続
  • Testnetアカウント入手
  • XRPL上の情報確認

まずは触って動かしてみましょう!

本記事で説明しないこと

  • ブロックチェーンとは何か
  • 仮想通貨とは何か
  • Pythonの実行環境セットアップ

XRPLとは

分散型のパブリックブロックチェーンです。送金や金融取引、NFTなどに関する様々なユースケースを提供しています。
仮想通貨としてよく聞くXRP(エックスアールピー)とは、XRP Ledger上で使用可能な暗号通貨のことです。

より詳しく知りたい方は公式ドキュメントを参考にしてみてください。
https://xrpl.org/ja/docs/introduction/what-is-the-xrp-ledger/

XRPLでは開発者向けに、Python、Java、JavaScriptなどのライブラリを提供しており、今回はその中のPythonライブラリを使用します。

そのほかのライブラリについて↓
https://xrpl.org/ja/docs/references/

Pythonライブラリのインストール

それでは早速始めていきましょう!
ターミナルを開き以下のコマンドを実行することでxrpl-pyをインストールします。

pip3 install xrpl-py

実際に使ってみよう

任意のエディタを開き、コードを書いていきます。

1. XRP Ledgerに接続する

xrpl-pyを使用してXRPLのTestnetに接続するには、以下のモジュールを使用します。

# ネットワーククライアントを定義
from xrpl.clients import JsonRpcClient
JSON_RPC_URL = "https://s.altnet.rippletest.net:51234/"
client = JsonRpcClient(JSON_RPC_URL)

2. アカウントの取得

XRPL上で取引を実行するにはアカウントが必要です。
本環境でアカウントを作成し運用するには、実際に資金を入れる必要があるので、テストや開発目的であれば、XRP Faucetsを使ってTestnet用アカウントを作成します。

xrpl-pyでは、Testnetアカウントを作成するにはgenerate_faucet_walletメソッドを使用します。

# ウォレットの作成 
# https://xrpl.org/xrp-testnet-faucet.html 
from xrpl.wallet import generate_faucet_wallet 
test_wallet = generate_faucet_wallet(client, debug=True)

このメソッドは戻り値として、Walletインスタンスを返します。

3. XRP Ledgerの情報を参照してみよう

xrpl-pyのxrpl.accountモジュールを使用して、前のステップで取得した口座の情報を参照します。

# アカウント情報を調べる
from xrpl.models.requests.account_info import AccountInfo
acct_info = AccountInfo(
	account=test_account,
	ledger_index="validated",
	strict=True,
)
response = client.request(acct_info)
result = response.result
print("response.status: ", response.status)
import json
print(json.dumps(response.result, indent=4, sort_keys=True))

4. 処理を全てまとめる

ここまでの処理を全てまとめることで、以下を実行することができます。

  1. Testnetアカウントの取得
  2. XRPLへの接続
  3. 作成したアカウント情報を参照し、出力
# ネットワーククライアントを定義
from xrpl.clients import JsonRpcClient
JSON_RPC_URL = "https://s.altnet.rippletest.net:51234/"
client = JsonRpcClient(JSON_RPC_URL)

# ウォレットの作成
# https://xrpl.org/xrp-testnet-faucet.html
from xrpl.wallet import generate_faucet_wallet
test_wallet = generate_faucet_wallet(client, debug=True)

# ウォレットインスタンスからアカウント名を取得
test_account = test_wallet.address
print("\nAddress:\n\n", test_account)

# アカウント情報を調べる
from xrpl.models.requests.account_info import AccountInfo
acct_info = AccountInfo(
	account=test_account,
	ledger_index="validated",
	strict=True,
)
response = client.request(acct_info)
result = response.result
print("response.status: ", response.status)
import json
print(json.dumps(response.result, indent=4, sort_keys=True))

5. 出力結果の確認

各項目の内容は異なる箇所がありますが、以下のような結果が出力されます。

Address:

 rpaokCM2fPGmumV1ju21Ak5fCdnHY5enQ2
response.status:  ResponseStatus.SUCCESS
{
    "account_data": {
        "Account": "rpaokCM2fPGmumV1ju21Ak5fCdnHY5enQ2",
        "Balance": "200000000",
        "Flags": 0,
        "LedgerEntryType": "AccountRoot",
        "OwnerCount": 0,
        "PreviousTxnID": "331591BA1F98AA0121705005F94790ECF9FB399403BE74BA9BF2B39275BEA5A7",
        "PreviousTxnLgrSeq": 475307,
        "Sequence": 475307,
        "index": "D7DE0FCE3AFD2515E35AA821674B8EB0E81D0B5453A5A943B087FB970DC52FE0"
    },
    "account_flags": {
        "allowTrustLineClawback": false,
        "defaultRipple": false,
        "depositAuth": false,
        "disableMasterKey": false,
        "disallowIncomingCheck": false,
        "disallowIncomingNFTokenOffer": false,
        "disallowIncomingPayChan": false,
        "disallowIncomingTrustline": false,
        "disallowIncomingXRP": false,
        "globalFreeze": false,
        "noFreeze": false,
        "passwordSpent": false,
        "requireAuthorization": false,
        "requireDestinationTag": false
    },
    "ledger_hash": "7112FF4EF642E5FF556066182D3D977A8E4FDD68125EA397A6304CA1BFB86767",
    "ledger_index": 475308,
    "validated": true
}

各フィールドの詳細については以下を参考にしてください。
https://xrpl.org/docs/references/http-websocket-apis/public-api-methods/account-methods/account_info/#response-format

まとめ

「細かいことは後にしてとにかく触って動かしてみたい」という方に向けて、XRPLのPythonライブラリの簡単な使用方法について解説しました。
今回は情報の確認だけでしたが、次回以降は送金のトランザクションの発行などを試してみたいと思います。

本記事は以下を参考に作成されています。
https://xrpl.org/ja/docs/tutorials/python/

Discussion