初めまして。
CryptoGamesというブロックチェーンゲーム企業でエンジニアをしている cardene(かるでね) です!
ERCについてひたすらまとめたり、スマートコントラクトを書いたり、フロントエンド・バックエンド・インフラと幅広く触れています。
以下でも情報発信しているので、興味ある記事があればぜひ読んでみてください!
https://twitter.com/cardene777
https://chaldene.net/
https://qiita.com/cardene
https://zenn.dev/heku
https://mirror.xyz/0xcE77b9fCd390847627c84359fC1Bc02fC78f0e58
https://cardene.notion.site/ERC-EIP-2a03fa3ea33d43baa9ed82288f98d4a9?pvs=4
また、これからも情報を見逃したくないという方はぜひ以下の購読ボタンを教えてください。
更新があった時、登録しているメールアドレス宛に通知が飛ぶようになります。
今回はXRP LEDGERについての第1回の記事になります。
XRP LEDGERとはなんなのかについてまとめていきます。
この記事は以下の公式ドキュメントを参考にまとめていきます。
https://xrpl.org/docs/introduction/
XRP LEDGERとは?
XRP Ledger(XRPL)は、独自のデジタル通貨を使用して金融取引を処理・記録する分散型のブロックチェーンです。
ブロックチェーンとは、データブロックから始まる連続した記録リストのことで、各ブロックは複雑な暗号化ハッシュ(64桁の16進数)とタイムスタンプによって一意に識別されます。
ブロックは信頼できる検証ノード(バリデータ)によって合意形成され、検証されたデータブロックは、チェーンの以前のブロックにハッシュポインタでリンクされています。
これにより、変更不可能なブロックの連鎖が形成され、トランザクションは効率的かつ確認可能な方法で記録されます。
データの改ざんは、バリデータの大多数が変更に同意した場合にのみ可能です。
XRPLの合意形成プロセス(Federated Consensus)は、複数の検証ノードが新しいトランザクションのリストを集め、他のノードと共有し、提案された変更を組み込んで新しいバージョンのレジャー提案を配布します。
バリデータの80%がトランザクションセットに同意すると、新しいレジャーインスタンスがチェーンの末尾に作成され、プロセスが再開されます。
このプロセスは4-6秒で完了します。
XRP Ledgerのレジャーは、XRP Ledgerネットワーク上で合意形成された取引履歴の単位です。
レジャーは約4〜5秒ごとに生成され、その間に行われた取引が記録されます。
各レジャーにはシーケンス番号が付与され、時系列に並べられます。
レジャーには、取引内容、アカウントの残高、オーダーブックの状態などが含まれます。
バリデータノードが合意アルゴリズムを通じてレジャーの内容を検証し、承認します。
承認されたレジャーは改ざん不可能であり、ネットワーク全体で共有されます。
このように、レジャーはXRP Ledgerの分散型台帳としての基本的な構成要素であり、取引の整合性と不変性を保証する役割を果たしています。
XRPLはMainnet(メインネットワーク)として知られる公開ネットワークで、誰でも自分のrippledサーバーを設定し、ネットワークを監視したりトランザクションを実行したり、バリデータになることができます。
XRP Ledgerの
rippled
サーバーは、XRP Ledgerネットワークを構成する個々のノードで動作するソフトウェアです。
rippled
サーバーは、XRP Ledgerネットワークに参加し、取引の処理とレジャーの維持に関与します。各
rippled
サーバーは、ネットワーク上の他のサーバーと通信し、取引情報や最新のレジャーデータを同期します。
rippled
サーバーには、バリデータ、ストックrippled
、rippled
の3種類があります。
バリデータ
レジャーの検証と合意形成に参加します。
ストック
rippled
レジャーデータの完全なコピーを保持します。
rippled
取引の中継とAPIの提供を行います。
ユーザーは自身の
rippled
サーバーを運用することで、XRP Ledgerネットワークに直接アクセスできます。
rippled
サーバーはコマンドラインインターフェース(CLI)と、JSON-RPC APIを提供し、ユーザーやアプリケーションとのインタラクションを可能にします。
rippled
サーバーは、XRP Ledgerの分散ネットワークを支える重要なコンポーネントであり、取引処理、データ同期、APIアクセスなどの中核的な機能を担っています。
開発者や新規ユーザー向けには、TestnetとDevnetという二つの開発環境があり、ユーザーは1,000 XRP
(テストトークン)が入ったアカウントを作成して、XRPLの機能を試すことができます。
XRPとは?
XRPは、XRP Ledger(XRPL)によってサポートされる暗号通貨です。
暗号通貨とは、暗号技術によって保護され、ブロックチェーンを使用して追跡されるデジタルまたは仮想通貨のことです。
この技術により、暗号通貨は偽造や二重支払いがほぼ不可能になっています。
暗号通貨は、以下の特徴を持っています。
デジタルネイティブ
プログラム可能
低コストで迅速な送金が可能
オープンで透明性がある
国境や政府に制約されない
偽造ができない
支払い決済のための銀行口座やインフラが不要
XRP Ledgerは初期には「Ripple」と呼ばれていましたが、技術と企業名の混同を避けるために、通貨自体は「XRP」と呼ばれるようになりました。
そして、2018年には、企業とデジタル資産を区別するために新しい「X」シンボルがコミュニティによって選ばれました。
ウォレット
暗号通貨ウォレットは、XRP Ledger上でユーザーのアカウントと資金を管理する方法を提供します。
どのウォレットを選ぶかはユーザーごとのニーズとXRPの取り扱いに依存します。
保管型ウォレット vs 非保管型ウォレット
ウォレットには保管型ウォレットと非保管型ウォレットの2種類があります。
保管型ウォレット
第三者がユーザーの資金を管理しておりXRP Ledger上で管理するアカウントに保持されます。
これは銀行のようなもので、ユーザーの資金を安全に保つために別のエンティティを信頼していると考えることができます。
多くの中央集権型取引所が保管型ウォレットを提供しており、これらの取引所のアカウントを作成してアプリを使用すると、技術的にはレジャー上にアカウントを持っているわけではありません。
パスワードを忘れた場合にはリセットができたり、何か分からないことがある場合にサポートを受けられるため通常の支払いには向いています。
また、通常一定量のトークンをウォレットに入金する必要がありますが、個別のXRP Ledgerアカウントを持っていない場合は適用されません。
非保管型ウォレット
アカウントの秘密鍵を持っています。
これは、アカウントのセキュリティ管理は自分自身で行い、秘密鍵を失うとXRP Ledgerアカウントにアクセスできなくなり、リカバリーオプションはありません。
非保管型ウォレットはXRP Ledgerと直接やり取りしているため、制限なく任意のタイプのトランザクションを扱うことができ、よりユーザーが自由に使用することができます。
また、非保管型ウォレットは、資金を第3者に委託する必要がなく自分自身で資金を守ることができます。
自身のウォレットを作成する
XRP Ledgerはオープンソースプロジェクトであり、公に利用可能なクライアントライブラリとAPIメソッドがあります。
技術的にはHTTP/WebSocketツールを使用してレジャーとやり取りすることができますが、日常的な使用には実用的ではありません。
レジャーとやり取りするために自分自身のウォレットを作成することは可能ですが、アカウント、トランザクション、レジャーの動作を正確に理解する必要があります。
トランザクションとリクエスト
XRP Ledgerでのほとんどのやり取りは、レジャーを変更するトランザクションの送信またはレジャーからの情報の要求の送信に関連しています。
トランザクションの仕組み
トランザクションは、XRPやその他のトークンをアカウント間で転送したり、NFTをmint・burnしたり、オファーを作成・承認・キャンセルしたりするために使用されます。
トランザクションを実行するには、XRP Ledgerにコマンドを送信し、トランザクションが完了したことを確認する必要があります。
すべてのトランザクションに共通のコマンド構文フォーマットがあります。
トランザクションを実行する時には、常に「TransactionType」とトランザクションを行うアカウントの公開アドレスを提供する必要があります。
トランザクションには、トランザクションの手数料とアカウントの次のシーケンス番号を含む必要があります。
トランザクションタイプに応じて必要なフィールドがあります。
例えば、支払いトランザクションでは、送金額(ドロップ単位、つまりXRPの百万分の一)と資金が入金される宛先の公開アドレスが必要です。
以下は、JSON形式のサンプルトランザクションです。
{
"TransactionType": "Payment",
"Account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
"Amount": "1000000",
"Destination": "ra5nK24KXen9AHvsdFTKHSANinZseWnPcX"
}
このトランザクションでは、アカウントrf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn
から宛先アカウントra5nK24KXen9AHvsdFTKHSANinZseWnPcX
に1 XRP
を送ります。
すべてのトランザクションにはオプションフィールドが用意されており、特定のトランザクションには追加のフィールドが用意されています。
必要なだけ多くのオプションフィールドを含めることができますが、全てのフィールドを含める必要はありません。
リクエストの仕組み
リクエストは、 レジャーから情報を取得するために使用され、レジャーを変更することはありません。
情報は自由に誰でも閲覧できるため、アカウント情報で署名する必要はありません。
リクエストする情報のタイプに応じて送信するフィールドが異なります。
通常、いくつかのオプションフィールドがあります。
リクエストを送信すると、rippled
サーバーまたは専用のClioサーバーによって処理されます。
Clioサーバーは、処理速度と信頼性を向上させるために、XRPL上の他のrippled
サーバーの負荷を軽減します。
以下は、JSON形式でのサンプルリクエストです。
このリクエストは、提供されたアカウント番号の現在のアカウント情報を取得します。
{
"command": "account_info",
"account": "rG1QQv2nh2gr7RCZ1P8YYcBUKCCN633jCn"
}
リクエストは様々な情報を返します。
以下は、アカウント情報リクエストの例としてのJSON形式のレスポンスです。
{
"result": {
"account_data": {
"Account": "rG1QQv2nh2gr7RCZ1P8YYcBUKCCN633jCn",
"Balance": "999999999960",
"Flags": 8388608,
"LedgerEntryType": "AccountRoot",
"OwnerCount": 0,
"PreviousTxnID": "4294BEBE5B569A18C0A2702387C9B1E7146DC3A5850C1E87204951C6FDAA4C42",
"PreviousTxnLgrSeq": 3,
"Sequence": 6,
"index": "92FA6A9FC8EA6018D5D16532D7795C91BFB0831355BDFDA177E86C8BF997985F"
},
"ledger_current_index": 4,
"queue_data": {
"auth_change_queued": true,
"highest_sequence": 10,
"lowest_sequence": 6,
"max_spend_drops_total": "500",
"transactions": [
{
"auth_change": false,
"fee": "100",
"fee_level": "2560",
"max_spend_drops": "100",
"seq": 6
},
{
"LastLedgerSequence": 10,
"auth_change": true,
"fee": "100",
"fee_level": "2560",
"max_spend_drops": "100",
"seq": 10
}
],
"txn_count": 5
},
"status": "success",
"validated": false
}
}
このJSONレスポンスは、XRP Ledgerにおける特定のアカウントの情報を示しています。
アカウントデータ(`account_data`)
Account
アカウントのアドレス (
rG1QQv2nh2gr7RCZ1P8YYcBUKCCN633jCn
)。
Balance
アカウントの残高(
999999999960 drop
;XRPでは1XRP = 1,000,000 drop
)。
Flags
アカウントに設定されているフラグ(
8388608
)。
LedgerEntryType
レジャー内のエントリータイプ(
AccountRoot
)は、アカウントの基本情報を示します。
OwnerCount
このアカウントが所有するオブジェクトの数(
0
)。
PreviousTxnID
このアカウントに影響を与えた最後のトランザクションのID。
PreviousTxnLgrSeq
最後のトランザクションが含まれるレジャーのシーケンス番号(
3
)。
Sequence
次にこのアカウントから送信されるトランザクションのシーケンス番号(
6
)。
index
アカウントの一意のインデックス。
レジャーの現在のインデックス(`ledger_current_index`)
ledger_current_index
この情報が取得された時点でのレジャーのインデックス(
4
)。
キューデータ(`queue_data`)
auth_change_queued
承認変更がキューに入れられているかどうか(
true
)。
highest_sequence
キューにあるトランザクションの中で最高のシーケンス番号(
10
)。
lowest_sequence
キューにあるトランザクションの中で最低のシーケンス番号(
6
)。
max_spend_drops_total
キューにある全トランザクションの最大消費ドロップ総量(
500
)。
transactions
キューに入れられているトランザクションの詳細。
各トランザクションには、承認変更の有無、手数料、手数料レベル、最大消費ドロップ、シーケンス番号が含まれます。
txn_count
キューにあるトランザクションの数(
5
)。
ステータスとバリデーション
status
リクエストの成功を示す(
success
)。
validated
このデータがバリデートされたレジャーからのものかどうか(
false
;つまり、まだ確定していない可能性があります)。
この情報は、アカウントの状態や関連トランザクションを確認する時に重要であり、特にセキュリティや監査目的で使用されます。
ソフトウェアエコシステム
XRP Ledgerは、価値のインターネットを可能にする多層的なソフトウェアプロジェクトの生態系を提供しています。この生態系は以下のレベルに分かれています。
「価値のインターネット」とは、世界中で価値を瞬時にかつ安全に交換することを可能にするデジタルネットワークの概念です。通常のインターネットが情報の自由な流通を実現したように、価値のインターネットはお金、資産、その他の価値あるデジタルアセットを国境を越えて迅速に交換できるようにすることを目指しています。これにより、金融取引がより効率的で透明になり、全ての人にとってアクセスしやすくなります。ブロックチェーン技術や暗号通貨(例えばXRP Ledgerなど)がこの概念の実現に向けた重要な技術基盤とされています。
コアサーバー(Core Servers)
役割と機能
コアサーバーはXRP Ledgerの基盤であり、ピアツーピアネットワークを通じて常時トランザクションを中継および処理します。
「rippled
」と呼ばれる参照実装サーバーソフトウェアがあり、これはXRP Ledger Foundationによって公開されています。
このサーバーはオープンソースライセンスのもとで利用可能で、誰でも自由に検査、修正、再公開することができます。
ネットワークと同期
すべてのコアサーバーは同一のネットワークに同期し、ネットワーク全体の通信にアクセスします。
これらのサーバーはXRP Ledgerの最新の状態データとトランザクション履歴を完全に保持し、それぞれのトランザクションを独立して処理します。
サーバーは、より多くのレジャー履歴を保持するために設定され、バリデータとして合意形成プロセスに参加することも可能です。
APIアクセス
コアサーバーはHTTPおよびWebSocket APIを提供し、ユーザーがデータを検索したり、サーバーを管理したり、トランザクションを送信したりできるようにします。
クライアントライブラリ(Client Libraries)
機能
クライアントライブラリはXRP Ledgerへのアクセスを簡素化し、HTTP / WebSocket APIを通じてデータを操作します。
これらのライブラリは、データを様々なプログラミング言語に適した形式に変換し、トランザクションのローカル署名などの一般的な操作を含んでいます。
ミドルウェア(Middleware)
役割
ミドルウェアサービスは、XRP LedgerのAPIを使用してデータを取得し、他のアプリケーションやサービスが使用するための独自のAPIを提供します。
これにより、より高度なアプリケーションの構築が容易になります。
特徴
ミドルウェアサービスは通常、独自のデータベースや設定ファイルを持ち、クラウドサービスとして提供されることもあります。
アプリケーションとサービス(Apps and Services)
機能
この層では、XRP Ledgerへのユーザーレベルのインタラクションが提供されます。
これには、プライベートな取引所、トークンの発行者、マーケットプレイス、分散型取引所へのインターフェース、ウォレットなどが含まれます。
これらのサービスは、XRPや様々な種類のトークンの購入、販売、取引のためのユーザーインターフェースを提供します。
用途
この層の上またはその中で構築できる具体的な例として、さまざまな種類のデジタル資産の交換、スマートコントラクトの実行、カスタマイズ可能な金融サービスなどがありま
各レベルは、XRP Ledgerにおける異なる種類の操作やアプリケーションの開発に対応しており、それぞれが独自の役割を果たしています。
サーバーはデータとトランザクションの実際の処理を担当し、ライブラリとミドルウェアは開発者がより簡単にレジャーと対話できるように支援し、アプリとサービスは最終的なユーザーエクスペリエンスを提供します。
最後に
今回はXRP LEDGERとはなんなのかについてまとめました。
これからも他のブロックチェーンやサービスについてもまとめていきます。
情報を見逃したくないという方はぜひ以下の購読ボタンを教えてください。
更新があった時、登録しているメールアドレス宛に通知が飛ぶようになります。
また、拡散もしてくれると嬉しいです🙇♂️