💸

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

2022/10/01に公開約2,700字

XRP Ledger とは

Bitcoin や Ethereum などと同じ分散型のパブリックブロックチェーンです。PoW や PoS とは異なる独自のコンセンサスアルゴリズムが用いられています。
EVM によるスマートコントラクトは搭載しておらず、プロトコルレベルでの機能(広義のスマートコントラクト)拡張を行うことで進化し続けており、執筆時点では 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

ログインするとコメントできます