🌈

EVM と比較しながら XRP Ledger を理解する #1

2024/04/30に公開

本記事の目的

Ethereum Virtual Machine(EVM) の開発経験や知識は多少あるが XRP のことは全く知らない人を主な対象とし、EVM と比較しながら XRP Ledger を理解するシリーズです。コンセンサスアルゴリズムなどの理論にはあまり焦点を当てず、アプリ開発の中で必要になりそうな部分を中心に EVM と比較しながらコンパクトにまとめていこうと思います。

XRP Ledger とは

XRP Ledger とは Ethereum などと同じ分散型のパブリックブロックチェーンです。Bitcoin の初期コントリビュータを含む3人の開発者らにより2012年に開発が始まりました。最近 EVM 互換のサイドチェーンも発表されましたが、メインチェーンである XRP Ledger は EVM 非互換です。

少なくとも日本では「XRP」と書いて「リップル」と読むと認識されがちのように思いますが、実はこれは誤りであり、「リップル(Ripple)」は社名、「XRP Ledger」がブロックチェーンの名称、「XRP(エックスアールピー)」が XRP Ledger 上で管理される暗号通貨の名称になります。お馴染みの青いロゴマークも法人の方のロゴであり、ブロックチェーンの方は「X」をあしらったロゴです。
https://xrpl.org/

EVM との比較

プログラミング言語

EVM XRP Ledger
Solidity など なし

EVM の場合は Solidity などでスマートコントラクトを記述し実装しますが、XRP Ledger の場合は EVM のスマコンにあたる機能はプロトコルが提供します。そのため開発者は Solidity 等を勉強する必要もなければスマコンを実装する必要もなくアプリを開発することが可能です。
スマコンを自由に実装できる EVM の方がブロックチェーン上でできることの幅は広いように思いますが、XRP Ledger でも多種多様な機能が実装されており、また、コミュニティ主導で順次機能の拡大が進められています。
https://xrpl.org/ja/docs/references/protocol/transactions/types/

サーバ(ノード)

EVM XRP Ledger
フルノード、ライトノード、アーカイブノード APIサーバ、全履歴サーバ、Clioサーバ

XRP Ledger の世界ではノードではなくサーバと呼ぶようです。EVM のように、XRP Ledger でも用途に応じて複数種類のサーバが存在します。
正確にはサーバの種類には rippled サーバと Clio サーバの2種類があり、rippled サーバのモードを変えることでAPIサーバ、全履歴サーバなどさまざまな役割を担うことができるようです。ここではアプリ開発時に必要になりそうなモードのみ抜粋して記載します。詳細はドキュメントをご覧ください。

API サーバ

データを取得したり、トランザクションを送信したり、レジャーのアクティビティを監視したりするためのAPIを提供します。また過去どれだけのトランザクションのデータを保持するかをサーバの運用者が設定することができます。例えば過去6ヶ月と設定された API サーバであれば、その API サーバから3ヶ月前のトランザクションデータを取得することは可能ですが、1年前のトランザクションデータを取得することはできません。

全履歴サーバ

全てのトランザクションデータを保持している API サーバのことです。

Clio サーバ

検証済みの ledger(block) のデータ読み取りに最適化された API サーバです。トランザクションの発行はできません。データの保存に最適化されており rippled サーバに比べて最大4倍程度スペース効率が良いそうです。P2P ネットワークには参加しません。

https://xrpl.org/ja/docs/concepts/networks-and-servers/rippled-server-modes/

ところで rippled サーバのレポートモードと Clio サーバの違いがドキュメントから読み取れなかったのですが、rippled サーバの README によると将来的にレポートモードのサーバは Clio サーバに置き換えられる計画のようです。レポートモードか Clio サーバか迷った際には後者を使っておくのが無難でしょう。

If you are interested in running an API Server (including a Full History Server) or a Reporting Mode server, take a look at Clio. rippled Reporting Mode is expected to be replaced by Clio.

エクスプローラー

EVM XRP Ledger
Etherscan など XRPSCAN

サイトのデザインは異なりますが、名前はお馴染みの SCAN でした。
基本的な使い勝手はそれほど違わないようです。

アカウント(ウォレット)の作成

EVM XRP Ledger
オフチェーンで作成 オフチェーンで作成 + アカウントを有効化

EVM のウォレットは楕円曲線 DSA(ECDSA) を利用して秘密鍵から公開鍵を生成し、公開鍵を所定の手続で変換したものです。XRP Ledger もこの手順はほとんど同じですが、発行したアカウントを実際に利用するためには準備金をアカウントに用意する必要があります。後述のレジャーデータが肥大化することを防ぐためにこのような仕組みを採用しているようです。

準備金

準備金は CEX からの送金やほかのアカウントからの送金で満たすことができます。準備金が基準値を下回ると、一部のタイプのトランザクションを発行できなくなるようです。
https://xrpl.org/ja/docs/concepts/accounts/reserves/

マスターキーとレギュラーキー

XRP Ledger のアカウントでは、マスターキーとは別にスペアのキー(レギュラーキーと呼ぶ)を作ることができます。マスターキーはオフラインに保管し、普段はレギュラーキーを利用することが推奨されています。
マスターキーにレギュラーキーを割り当てるトランザクションが用意されており、こちらを使って設定するようです。
この機能は EVM にはないですがとても便利そうですね。
https://xrpl.org/ja/docs/concepts/accounts/cryptographic-keys/#マスターキーペア

レジャー(ブロック)

EVM XRP Ledger
ブロック レジャー
Block Height ledger index

XRP Ledger のブロックは、 レジャーバージョンまたは略してレジャーと呼ばれます。EVM のブロックと同様に、レジャーはその時点でのすべてのアカウントの残高や設定、そのほかの情報をスナップショットとして表します。
https://xrpl.org/ja/docs/concepts/ledgers/

トランザクション

トランザクションは XRP Ledger の世界でも EVM と同じくトランザクションで、XRP Ledger を変更する唯一の方法です。
EVM ではトランザクション発行のインターフェースは基本的に1つで、スマコンに渡すパラメータを変えることでさまざまな操作を行いますが、前述の通り XRP Ledger の世界では EVM のスマートコントラクトにあたる部分はプロトコルレベルで実装されているため、操作に応じてトランザクションのタイプが存在し、フィールドが異なります。
https://xrpl.org/ja/docs/concepts/transactions/


ここでは EVM と比較して XRP Ledger の基本的事項を取り上げました。スマコンを実装しなくて良い分、ブロックチェーン開発が初めてのエンジニアでも取りかかりやすい印象を持ちました。
次回は実際に XRP Ledger 上のデータを取得したりトランザクションを発行してみようと思います。

Discussion