🌱

XRPL NFTのミント時にOfferも同時に作成する

2024/07/10に公開

XRP LedgerのNFTについて

XRP Ledgerは2012年に誕生したパブリックブロックチェーンです。XRP Ledgerにスマートトランザクタ(ネイティブな機能)として搭載されているNFT(XLS-20)は2022年にメインネットで有効化されました。
このNFT機能では、次のような一般的なユースケースをカバーしており、ロイヤリティの強制力も存在します。

  • ミント
  • 売買
  • Burn
  • 代理Mint
  • 発行者によるBurn(フラグ)
  • SBT(フラグ)
  • 二次販売でのロイヤリティの強制

またスマートトランザクタとして実装されているため、データ量によってトランザクション手数料が変化することはなく、XRPLの他のトランザクション同様非常に低いトランザクション手数料で、Mintや売買が可能となっています。
一般的には0.000010XRP程度でトランザクションを送信可能です。

https://zenn.dev/tequ/articles/try-xrpl-nft

NFTの発行と売買

XRPLではNFTを発行(ミント)するにはNFTokenMintトランザクションを使用します。

売買するためには、NFTの保有者と取引者の2者からNFTokenOfferの作成(NFTokenCreateOffer)と承認(NFTokenAcceptOffer)のトランザクションが必要です。

発行者による一般的なトランザクションフローとしては以下があります。

  1. NFTokenMintトランザクションでNFTを発行
  2. NFTokenCreateOfferトランザクションでNFTを売りに出す(Listing)

このように2つのトランザクションが必須となっています。

NFTokenMintOffer

XRP Ledgerのサーバソフトウェアであるrippledの次期バージョン2.3.0においてNFTokenMintOffer Amendmentが導入される予定となっています。

https://github.com/XRPLF/rippled/pull/4845

このNFTokenMintOffer機能はNFTokenMintトランザクションを拡張し、NFTokenMintトランザクション処理内でOfferを同時に作成することが可能となります。
つまり上のトランザクションフローが1.のみで済ませることが可能になります。

具体的にはNFTokenMintトランザクションにAmountフィールドやDestinationフィールド、Expirationフィールドが追加され、それぞれNFTokenCreateOfferトランザクションのフィールドと対応したものとなります。

1レジャーでNFTokenMintトランザクションとNFTokenCreateOfferトランザクションを送信できるのでは?

NFTokenCreateOfferトランザクションではNFTokenMintトランザクションの実行後に確定するNFTokenIDが必要です。
NFTokenMintトランザクションの送信前からNFTokenIDを仮で計算することは可能ですが、その計算結果が保証されているわけではありません。

NFTokenMintトランザクション内でOfferを作成する場合、処理内部でNFTokenIDが確定し、そのNFTokenIDを利用することが可能なのです。

コード

以下のコードはxrpl.jsを使用してNFTokenMintOffer機能を利用するコードです。

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

現在Devnetで利用可能となっているため、ぜひ試してみてください。

import { stringToHex } from '@xrplf/isomorphic/utils'
import { Client, convertStringToHex, xrpToDrops } from 'xrpl'

const client = new Client('wss://s.devnet.rippletest.net:51233/')

await client.connect()

const { wallet } = await client.fundWallet()

const response = await client.submitAndWait(
  {
    TransactionType: 'NFTokenMint',
    Account: wallet.address,
    NFTokenTaxon: 0,
    URI: stringToHex('https://example.com'),
    Amount: xrpToDrops('10'), // 販売金額
    Destination: 'rQQQrUdN1cLdNmxH4dHfKgmX5P4kf3ZrM', // 販売先
  },
  { wallet },
)

console.log(response.result)

まとめ

NFTokenMintOffer Amendmentにより、XRPLエコシステムのNFTマーケットプレイスやゲームプロジェクトにおけるNFTの発行と売買がより高速化します。

またNFTを発行するクリエイターの方々にとってもトランザクションへの署名回数が減少し、より手軽にNFTを発行することが可能となります。

今後更なるNFToken機能の拡張も予定されており、NFTエコシステムの発展が期待されます。

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

また、XRPL JapanのDiscordサーバもありますので、こちらもぜひご参加ください!
https://discord.gg/invite/xrpljapan

私のX/Twitterアカウントはこちら!

Discussion