XRP Ledgerでのアドレス間の価値の移転
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つ(送信者、受信者)取得します。
ここでは次の2つのアカウントを取得したとします。
アカウントA (送信者)
Address: rKSL87PSZ3bzGmGbdNqhWzKxJnVwjCfDz6
Secret: sEdVQyU4UVsXYmCJRXMYgA2mWgGMR3z
アカウントB (受信者)
Address: rEayfJvHPZ7KLd2nhFgUs36fWYhy1UpdDq
Secret: 受信者のシークレットキーは送信者は知り得ないため、非表示
ライブラリのインストール
npm i xrpl
コード
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でもトランザクションを確認できます。
まとめ
この記事ではXRP Ledgerで価値を移転するPaymentトランザクションについて説明をしました。
XRP Ledgerでは近日NFT機能が有効化されると期待されており、AMM機能やスマートコントラクト機能も開発中です。それぞれの機能が利用可能なテストネットも用意されているため、誰でも触ってみることが可能です。
コミュニティによって運営されているドキュメントでは主要なページは日本語化されています。
私のTwitterでもXRP Ledgerに関する技術的な情報をつぶやいています。
Discussion