💸

XRP Ledgerでのアドレス間の価値の移転

2022/10/01に公開

XRP Ledger とは

BitcoinやEthereumなどと同じ分散型のパブリックブロックチェーンです。PoWやPoSとは異なる独自のコンセンサスアルゴリズムが用いられています。
EVMによるスマートコントラクトは搭載しておらず、プロトコルレベルでの機能(広義のスマートコントラクト)拡張を行うことで進化し続けており、執筆時点ではNFT機能の有効化についてコミュニティによる投票待ちです。
NFT以外にもAMMや独自の(狭義の)スマートコントラクトについての開発が進められています。
ネイティブトークンとしてXRPが存在し、その最小単位は1 drop(1 XRP = 1000000 drop)となっています。

Payment トランザクション

XRP Ledgerのアカウント間にて価値を移転するには Payment トランザクションを使用します。このトランザクションはXRP Ledgerにて最も基本的なトランザクションであり、多くのユーザが使用しています。

環境の構築

node.js環境にて構築します。

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

XRP FaucetsまたはXRP Ledger Faucetからテストネット(testnet)用のアカウントを2つ(送信者、受信者)取得します。

https://xrpl.org/ja/xrp-testnet-faucet.html

https://faucet.tequ.dev/

ここでは次の2つのアカウントを取得したとします。

アカウントA  (送信者)

Address: rKSL87PSZ3bzGmGbdNqhWzKxJnVwjCfDz6
Secret:  sEdVQyU4UVsXYmCJRXMYgA2mWgGMR3z

アカウントB (受信者)

Address: rEayfJvHPZ7KLd2nhFgUs36fWYhy1UpdDq
Secret: 受信者のシークレットキーは送信者は知り得ないため、非表示

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

npm i xrpl

https://github.com/XRPLF/xrpl.js

コード

import { Client, dropsToXrp, Wallet, xrpToDrops } from "xrpl";

const sender = "rKSL87PSZ3bzGmGbdNqhWzKxJnVwjCfDz6";
const senderSecret = "sEdVQyU4UVsXYmCJRXMYgA2mWgGMR3z";

const receiver = "rEayfJvHPZ7KLd2nhFgUs36fWYhy1UpdDq";

const client = new Client("wss://s.altnet.rippletest.net:51233");

await client.connect();

/**
 * 残高の確認
 */

// 送信者の残高を確認
const senderBalance = await client.getXrpBalance(sender, {
  ledger_index: "validated",
});
console.log(senderBalance);

// 受信者の残高を確認
const receiverBalance = await client.getXrpBalance(receiver, {
  ledger_index: "validated",
});
console.log(receiverBalance);

/**
 * 価値の移転
 */
// 送信者から受信者へ価値を移転
await client.submitAndWait(
  {
    TransactionType: "Payment",
    Account: sender,
    Amount: xrpToDrops(100), // Amountはdrop単位で指定
    Destination: receiver,
  },
  { wallet: Wallet.fromSecret(senderSecret) }
);

/**
 * 結果の確認
 */
// 送信者の残高を確認
const senderBalanceResult = await client.getXrpBalance(sender, {
  ledger_index: "validated",
});
console.log(senderBalanceResult);

// 受信者の残高を確認
const receiverBalanceResult = await client.getXrpBalance(receiver, {
  ledger_index: "validated",
});
console.log(receiverBalanceResult);

await client.disconnect();

次のようなExplolerでもトランザクションを確認できます。

https://test.bithomp.com/explorer/rKSL87PSZ3bzGmGbdNqhWzKxJnVwjCfDz6

https://testnet.xrpl.org/accounts/rKSL87PSZ3bzGmGbdNqhWzKxJnVwjCfDz6

まとめ

この記事ではXRP Ledgerで価値を移転するPaymentトランザクションについて説明をしました。

XRP Ledgerでは近日NFT機能が有効化されると期待されており、AMM機能やスマートコントラクト機能も開発中です。それぞれの機能が利用可能なテストネットも用意されているため、誰でも触ってみることが可能です。

コミュニティによって運営されているドキュメントでは主要なページは日本語化されています。
https://xrpl.org/ja/

私のTwitterでもXRP Ledgerに関する技術的な情報をつぶやいています。
https://twitter.com/_tequ_

Discussion