XRPLでのクロスチェーンブリッジ
はじめに
XChainはXRP Ledgerにてクロスチェーンブリッジを行うためのスマートトランザクタ(ネイティブ機能)です。
ブリッジは一方のチェーンでトークンをロック/バーンし、もう一方のチェーンでwrappedトークンを発行します。トークンはXRP Ledgerのネイティブなトークン発行機能を利用します。
XRP Ledgerをメインチェーンとして利用するサイドチェーンには現時点で次のようなものが挙げられます。
XRPL Mainnnetへこの機能が有効化された場合、さまざまなチェーンと相互にトークンのやりとりが行えるようになります。
例えば特定のユースケースに特化したチェーンやプライベートチェーン、トランザクションを独自にカスタマイズしたチェーンなどがメインネットと接続可能になります。
基本
XChainでは各チェーン上のドアアカウントを通してトークンのロック/バーン、wrap、unwrap等を行います。
ブリッジの過程で請求ID(ClaimID)が発行され、トランザクションのリプレイを防ぐための重要な要素になっています。
クロスチェーンブリッジの転送元となるチェーンをソースチェーンと呼び、クロスチェーンブリッジの転送先となるチェーンを宛先チェーンと呼びます。
チェーンの種類
ブリッジを行うチェーンには次の2つの種類が存在します。
- ロックチェーン
- 発行チェーン
ロックチェーンはブリッジの際にトークンをドアアカウントがロックするチェーンであり、トークンの償還時はロックされているトークンをアンロックします。
発行チェーンはブリッジの際にwrapしたトークンをバーンするチェーンであり、トークンの償還時はwrappedトークンを発行します。
例1) XRPLメインネット(XRPL)とサイドチェーンA(SC-A)においてXRPLのXRPをブリッジする場合、XRPLはロックチェーンであり、SC-Aは発行チェーンとなります。
XRPLからSC-AにXRPをブリッジする場合、XRPLのドアアカウントはXRPをロック(保有)し、SC-AはXRPのwrappedトークン(wXRP)を発行します。
SC-AからXRPLにwXRPをブリッジ(償還)する場合、SC-AではwXRPをバーンし、XRPLではドアアカウントのXRPをブリッジ先アカウントへ送信されます。
┌─────────────────────────┐ ┌────────────────────────────┐
│ │ │ │
│ ロックチェーン │ │ 発行チェーン │
│ XRPL │ │ SC-A │
│ │ │ │
│ Lock XRP |--------------------->│ Issue wXRP │
│ │ │ │
│ │ │ │
│ Unlock XRP |<---------------------| Return wXRP │
│ │ │ │
└─────────────────────────┘ └────────────────────────────┘
例2) XRPLメインネット(XRPL)とサイドチェーンB(SC-B)においてSC-BのトークンTSTをブリッジする場合、XRPLは発行チェーンであり、SC-Bはロックチェーンとなります。
SC-BからXRPLにTSTをブリッジする場合、SC-BのドアアカウントはTSTをロック(保有)し、XRPLではTSTのwrappedトークン(wTST)を発行します。
XRPLからSC-BにwTSTを転送する場合、XRPLではwTSTをバーンし、SC-Bではドアアカウントからブリッジ先アカウントへTSTトークンが送信されます。
┌─────────────────────────┐ ┌────────────────────────────┐
│ │ │ │
│ ロックチェーン │ │ 発行チェーン │
│ SC-B │ │ XRPL │
│ │ │ │
│ Lock TST |--------------------->│ Issue wTST │
│ │ │ │
│ │ │ │
│ Unlock TST |<---------------------| Return wTST │
│ │ │ │
└─────────────────────────┘ └────────────────────────────┘
トランザクションの証明
XChainを用いたクロスチェーンブリッジにはソースチェーンおよび宛先チェーンの2つのチェーンに加えて、Witnessサーバが必要です。
Witnessサーバはブリッジ先チェーンのドアアカウントのマルチシグ署名者によって構成され、一方のチェーンでトランザクションが発生したことを証明するオラクルの役割を果たします。
Witnessサーバによる証明書が定足数集まることでブリッジが完了し、ブリッジ手数料を受け取ることができます。
ブリッジのセットアップ
- Witnessサーバの起動
-
XChainCreateBridge
トランザクションを使用し、ブリッジ(オブジェクト)を作成します。(両方のチェーン) -
SignerListSet
トランザクションを使用し、ドアアカウントをマルチシグとして設定します。(署名者はWitnessサーバのリスト) -
AccountSet
トランザクションを使用し、ドアアカウントのマスターキーを無効化します。
この時点でドアアカウントはWitnessサーバ(またはその管理者)の署名によってのみトランザクションの送信が可能になります。
ブリッジ
- 宛先チェーンで
XChainCreateClaimID
トランザクションを使用し、請求ID(ClaimID)を作成します。 - ソースチェーンにおいて1.で作成した請求IDを指定した
XChainCommit
トランザクションを使用します。これによりドアアカウントでXRPまたはトークンのロック/バーンが行われます。 - Witnessサーバはソースチェーンでトークンがロック/バーンされたことを示す証明書に署名し、
XChainAddClaimAttestation
トランザクションを使用して、宛先チェーンへ提出します。 - Witnessサーバの提出した署名が定足数に達した時、XRPまたはトークンは
XChainCommit
とトランザクションで指定したアカウントへ送信されます。アカウントが指定されていない場合はXChainClaim
トランザクションで資金を請求します。 - ブリッジ送金の完了後、報酬はWitnessサーバへ自動的に配布されます。
リプレイアタック
XChainではリプレイアタックを防止するために、ブリッジ送金毎に宛先チェーンにて請求ID(ClaimID)を発行します。ブリッジ送金の完了時、請求IDは破棄されるため、トランザクションのリプレイは不可能となります。
まとめ
XRP Ledgerのクロスチェーンブリッジ機能であるXChainはWitnessサーバというチェーン外のオラクルを通じてクロスチェーンブリッジを行います。
将来的にはEVMチェーンとのブリッジが実現される可能性も秘めており個人的にも楽しみにしている機能の1つです。またカナリアテスト用チェーンとしてサイドチェーンを利用することも可能になり、より十分な機能の検証も行えると同時に新機能をいち早く試してみるようなこともできるようになるかも知れません。
XRP Ledgerに興味を持たれた方は開発者のDiscordチャンネルへ是非お越しください!
日本語チャンネルもありますので、英語ができなくても大丈夫です!
Discussion