トランザクションをXummで署名してみよう!

2023/04/10に公開

Xummとは

Ethereumで開発を行う際はメタマスクを使うのと同じように、XRP LedgerではXummというウォレットがデファクトスタンダードとなっています。
Xummはモバイル向けのウォレットであり、iOSやAndroidで利用することができます。

Xummアプリの準備

XummアプリはApp Store / Google Storeからダウンロードすることができます。
各ストアへのリンクは公式サイトから確認することができます。

https://xumm.app

インストール後は簡単な初期設定があるため、行っておいてください。

テストネットアカウント

テストネットアカウントの取得

以下のサイトからテストネットアカウントを取得することができます。

https://xrpl.org/ja/resources/dev-tools/xrp-faucets

Choose NetworkTestnetを選択し、Generate Testnet credentialsをクリックするとアカウントが発行されます。

表示されたAddress(rから始まるrKcdtakF...のような文字列)とSecret(sから始まるsEdVspQ8...のような文字列)をメモしておきましょう!

テストネットアカウントの登録

先ほど取得したSecretからテストネットアカウントをXummへ登録します。

Xummアプリを起動し、設定アカウントアカウントを追加する既存のアカウントをインポートをクリックします。

アカウントの種類は全権アクセス、シークレットタイプはシークレットキーを選択し、先ほどメモしたSecretを入力します。

その後、アドレスの確認、署名方法、アカウント名の設定を行います。

これでテストネットアカウントのインポートが完了です!

接続先ネットワークの変更

この時点では接続先ネットワークがメインネットになっています。
Facucetはテストネットアカウントに行っているため、当然メインネットでは有効化されておらず、残高も確認できません。

接続先ネットワークをテストネットに変更する

設定詳細設定ノードからwss://testnet.xrpl-labs.comを選択しましょう!

選択後ホーム画面に戻ると、アカウントが有効化され、残高が表示されているはずです。
表示されていない場合は一度アプリを再起動してみてください。

ここまででテスト用アカウントの準備が完了しました!

次にXummを使った開発の準備を行いましょう!

Xumm API Keyの取得

アプリケーションからXummを利用するためにはXumm Developer Consoleに登録し認証情報の取得を行う必要があります。

https://apps.xumm.dev

任意の方法でログインし、アプリケーション情報を登録します。
今回はテストでのみ使用するため、仮の入力で問題ありません。

登録後表示されるAPI KeyとAPI Secretをメモしておきましょう!

コード

今回は簡単な説明とするため、Node.jsを利用したバックエンドアプリケーションを作成します。

Xumm SDKのインストール

Xummと接続するためのライブラリとしてXumm Universal SDKを利用します。

https://github.com/XRPL-Labs/Xumm-Universal-SDK

https://www.npmjs.com/package/xumm

  • npm
npm install xumm
  • yarn
yarn add xumm

コード例

index.js
const { Xumm } = require('xumm')

const xumm = new Xumm("api-key", "secret-key");

xumm.payload?.create({
  TransactionType : "Payment",
  Destination : "rQQQrUdN1cLdNmxH4dHfKgmX5P4kf3ZrM",
  Amount : "100" // 100 drops (=0.000100XRP)
}).then((payload)=>{
  console.log(payload.next.always)
})

コード実行後表示されたURLにアクセスすると、Xumm向けのQRコードが表示されます。
Xummで読み取ることで署名確認画面が表示され、トランザクションの署名を行うことができます。

もっと試してみましょう

XRP Ledgerは支払いのためのPaymentトランザクション以外にも様々なトランザクションが存在します。

たとえば次のようなトランザクションがあります。

  • AccountSet: アカウントの状態などのプロパティを変更する
  • NFTokenMint: NFTを発行する
  • OfferCreate: DEXへの注文を作成する
  • SignerListSet: マルチシグを設定する

https://xrpl.org/ja/docs/references/protocol/transactions/types/

これらを参考に、先ほどのコードを修正し、他のトランザクションを試してみましょう!

まとめ

Xummを利用したトランザクションへの署名方法について解説しました。
今回解説したバックエンド向けのコード以外にも、フロントエンド向けやXumm内アプリでも利用可能です。
数行のコードだけでXRP Ledgerで利用可能なトランザクション全てでウォレットを介した署名が可能になります。

興味を持たれた方はXRP Ledger開発者のDiscordチャンネルへ是非お越しください!
日本語チャンネルもありますので、英語ができなくても大丈夫です!
https://xrpldevs.org

Discussion