EVM と比較しながら XRP Ledger を理解する #5

2024/05/29に公開

本記事の目的

Ethereum Virtual Machine(EVM) の開発経験や知識は多少あるが XRP のことは全く知らない人を主な対象とし、EVM と比較しながら XRP Ledger を理解するシリーズです。コンセンサスアルゴリズムなどの理論にはあまり焦点を当てず、アプリの開発や利用で必要になりそうな部分を中心に EVM と比較しながらコンパクトにまとめていこうと思います。

NFT マーケットプレイスの概況

30日間の取引高(2024年5月時点)

Ethereum XRP Ledger
1位 Blur
2位 OpenSea
3位 Magic Eden
1位 xrp.cafe
2位 onXRP
3位 Sologenic

Ethereum などのマーケットプレイスであれば OpenSeaBlur などいくつか思いつきますが、XRP Ledger の対応の NFT マーケットプレイスは1つも知らなかったため、DappRadar で調べてみました。
直近30日間の取引量を確認したところ、xrp.cafe というマケプレが一番盛り上がっていそうなため、今回はここを利用させていただきます。アイコンがかわいいですね。


DappRadar で XRP Ledger 対応のマケプレを検索

ウォレットのセットアップ

早速 xrp.cafe で NFT を買ってみる...前に、まずはウォレットをセットアップし、購入用の XRP を用意します。xrp.cafe はメインネット版のみ公開されており、テストネット版は一般ユーザーに公開されていないそうです。

今回は Xamam というウォレットを利用します。
https://xumm.app/

概ね以下のような手順でセットアップを行います。

  1. スマートフォンに Xamam のアプリをインストール。
  2. アプリ上でアカウントを作成。
  3. 準備金として XRP をアカウントに送信しアクティベート。XRP は GMO コインから送金しました。理由は後述しますが20 XRP ほど送っておくと良いでしょう。


アクティベートすると右のようになります

NFT を購入

  1. xrp.cafe にアクセスし、ユーザーページから QR コードを Xamam でスキャンしてウォレットを接続します。

    接続できると Connected と表示されます

  2. 購入する NFT を探します。今回はこちらの NFT を購入してみます。購入の方法は売値で即時に買う、つまり売却オファーを受け入れる方法と、購入オファーを送る方法の2つ存在します。今回は売値(0.7 xrp)で即時購入します。

  3. 「Buy Now」をクリックすると、QR コードが表示されるので Xamam でスキャンすると、スマホアプリの方にトランザクションの内容が表示されます。問題なければトランザクションを発行します。

  4. しばらくするとトランザクションの結果がスマホアプリに表示されます。

    購入に成功

  5. 購入した NFT をブロックエクスプローラーで確認してみると、所有者もしっかり変わっています。購入できているので当たり前ですが Flag には transferable のみが設定されています。

  6. せっかくなのでプログラムからも確認してみましょう。メインネットに account_nfts をリクエストしてみます。

import { Client } from "xrpl";

const client = new Client("wss://xrpl.ws/"); // メインネットのサーバ
await client.connect();

// NFT を取得
const response1 = await client.request({
  command: "account_nfts",
  account: "rwXu2EcS1hoKhhub5FePXUCJnWBv7SHuqV",
  ledger_index: "validated",
});
console.log(response1.result);
console.log(response)
{
  account: 'rwXu2EcS1hoKhhub5FePXUCJnWBv7SHuqV',
  account_nfts: [
    {
      Flags: 8,
      Issuer: 'rDsBpwaeZCTQsYu21dC9QqqY4JUsBmrxKv',
      NFTokenID: '00082710840AB49F792D66082F312DF17E8A4C0AC5D6CD253929EC1500001DB5',
      NFTokenTaxon: 69,
      TransferFee: 10000,
      URI: '697066733A2F2F62616679626569636369646F67746A776F6F337A3665357265687A7137686B7534676C37676F687664743576747A7771346A77796F347772346E752F393532382E6A736F6E',
      nft_serial: 7605
    }
  ],
  ledger_hash: 'BD534CC76A5E7232D24C839D9738F182C63A045FC2C5F92CBE06B9A8D9D5317B',
  ledger_index: 88165787,
  validated: true,
  _nodepref: 'nonfh'
}

こちらでも NFT を所有していることを確認できました。

購入時の注意点

アカウントの準備金

本シリーズ #1 や上記でも簡単に触れましたが、XRP Ledger には準備金という概念が存在し、一定数の XRP をアカウントに預けないと操作に制限がかかります。準備金は基本準備金と所有者準備金の2つに分けられ、NFT を1つ購入するためには NFT の代金以外に最低12 XRP の準備金が必要になります。(厳密には、トランザクション手数料を支払うために12 XRP とは別に少々の XRP も必要になります。)

基本準備金

各アカウントに必要なXRPの最小額です。メインネットにおける現在の要件は10 XRP になります。

所有者準備金

アカウントが所有しているオブジェクトの数に応じて発生する準備金です。メインネットにおける現在の要件はオブジェクトにつき2 XRP となります。少しややこしい点として、NFT 1つにつき2 XRP が発生するわけではなく、NFT を保持するオブジェクトである NFTokenPage 1つにつき2 XRP が必要になります。また、 #3 でも取り上げたオファーもオブジェクトのため、オファーを1つ作成すると準備金要件が2 XRP 増加します。
こちらの詳しい計算方法は公式ドキュメントにとてもわかりやすくまとまっていますのでぜひご覧ください。
https://xrpl.org/ja/docs/concepts/tokens/nfts/reserve-requirements/

Burnable ではないか

#3 で紹介したように、NFTokenMint で NFT をミントする際に、発行者は Flags フィールドで Burnable にするかどうかを決めることができます。Burnable な場合、所有者が誰かにかかわらず発行者または発行者が許可した者が NFT を Burn (破棄)できてしまいます。
EVM 系のチェーンでも NFT プロジェクトの管理者が新しいスマコンをリリースし、古いスマコンから新しいスマコンに移行する際に所有者への連絡もなしに NFT を取り上げたりミント時の値段で買い戻したりすることが稀にありますが、同じように Burnable NFT の場合はある日突然自分の NFT が Burn されてなくなっていた、ということが起きるリスクがあることを認識しておくことは重要でしょう。Web3 の世界では誰もあなたを守ってくれません。
(Web3 以外、例えば X(Twitter) でもこのような事案は起こっていますが...)


今回はマーケットプレイスで XRP Ledger 上の NFT を購入する方法を取り上げました。XRP Ledger が NFT に対応してまだ日が浅いということもあり、これらの情報がまだあまり日本語ではまとまっていないように感じますが、XRP Ledger の NFT の今後の盛り上がりに期待です。

Discussion