取引所としてのXRPの上場
本書では、取引所がXRPを上場するために必要なステップを説明します。
Alpha Exchange
本書での説明目的で、架空の企業である Alpha Exchange を使用して、XRPを上場するために必要な手順の概要を説明します。本書では、Alpha Exchangeは以下のような取引所です。
現在BTC/USDの上場を専門としています
BTC/XRPとXRP/USDの取引ペアの追加を希望しています
すべての顧客の残高を保持しています
サポートしている各通貨の残高を保持しています
ユーザの利益
Alpha Exchangeは、BTC/XRPおよびXRP/USDの取引ペアを上場することを希望しています。理由の1つとして、これらのペアがユーザにとって有用なものであることが挙げられます。特に、このサポートによりユーザは以下ができるようになります。
XRP Ledger から Alpha Exchange に XRPを入金できます
Alpha Exchange から XRP Ledger に XRPを送金できます
XRPをBTCやUSDなどの他の通貨と交換できます
XRPをサポートするための前提条件
XRPをサポートするために、Alpha Exchangeでは以下を行う必要があります。
関連項目:
- コンプライアンス指針 — ゲートウェイと取引所は異なりますが、取引所は地域の規制に準拠し、適切な当局の監督下になければなりません。
Partial Payments
追加の前に、取引所はPartial Payments機能について知っておく必要があります。この機能を使用すると、XRP Ledgerのユーザは、SendMax
を増やさずに、受取金額を減額して、支払いを正常に送信できます。この機能は、送信者側に追加費用が発生せず、支払いの返金に便利です。
Partial Paymentsに関する警告
tfPartialPaymentフラグが有効にされると、Amount
フィールド は受取り金額とは同じでなくなることがあります 。支払いのメタデータにあるdelivered_amount
フィールドは、宛先アカウントが実際に受け取る通貨の金額を示しています。支払いを受信するときに、Amountフィールドの代わりに、delivered_amount
を使用してアカウントで受信した金額を判断します。
アカウント
XRPは、XRP Ledgerの アカウント ( ウォレット や アドレス とも呼ばれる)で保持されます。XRP Ledgerのアカウントは、例えばBitcoinのような、アカウントに経費がほとんどまたは一切かからない他のブロックチェーンの台帳とは異なります。XRP Ledgerでは、アカウントの削除は可能が、各アカウントは個別の、他の人に送信することのできない、XRPの準備金を保持する必要があります。このような理由から、Rippleでは利用機関に対し、必要のない過剰なアカウントを作成しないように勧めています。
Rippleが推奨するベストプラクティスに従い、Alpha Exchangeは、XRP Ledgerに最低2つのアカウントを作成する必要があります。シークレットキーが悪用された場合の危険を最小限にとどめるため、Rippleでは、 コールドアカウント 、 ホットアカウント 、 ウォームアカウント (それぞれコールドウォレット、ホットウォレット、ウォームウォレットとも呼ばれる)の作成をお勧めしています。コールド/ホット/ウォームのモデルは、セキュリティと利便性のバランスをとるためのものです。XRPを上場する取引所は、以下のアカウントを作成する必要があります。
大部分のXRPと顧客の資金を維持する コールドウォレット 。取引所にとって、これはユーザが預入れをするアドレスです。 セキュリティを最適化するため、このアカウントのシークレットキーはオフラインにする必要があります。
取引所のコールドウォレットが悪用されると、以下のような結果が生じるおそれがあります。
不正使用者が、コールドウォレットの全XRPにアクセスできます。
マスターキーが悪用されると、不正使用者は(マスターキーを無効にし、新しいレギュラーキーや署名者リストを設定することにより)そのコールドウォレットを恒久的に制御できます。これにより、その不正使用者は今後そのコールドウォレットで受信するすべてのXRPも制御できるようになります。
- このような事態が発生した場合には、取引所は新しいコールドウォレットアドレスを作成し、顧客にその新しいアドレスを伝える必要があります。
レギュラーキーや署名者リストが悪用された場合には、取引所はコールドウォレットの制御を取り戻すことができます。ただし、不正使用者の行為の中には、以下のように簡単に元に戻せないものもあります。
不正使用者が、コールドウォレットを使用してXRP Ledgerで通貨を発行しても、その通貨の価値はだれにも認められません。(取引所が明示的にゲートウェイでもあると示した場合を除きます)。
不正使用者が、アカウントにasfRequireAuthフラグを設定した場合。この設定は解除できません。ただし、これは通貨の発行のみに関係し、ゲートウェイではない取引所には影響しません。不正使用者がマスターキーで設定または設定解除したその他の設定は、元に戻すことができます。
顧客のXRP出金や入金を管理する、日常業務を遂行するための1つ以上の ホットウォレット 。例えば、ホットウォレットがあれば、取引所はこの種のXRPの自動送金を安全にサポートできます。出金リクエストにただちに応じるため、ホットウォレットはオンラインである必要があります。
不正使用されたホットウォレットによって発生するおそれのある結果についての詳細は、Operational Account Compromiseをご覧ください。
オプションとして、コールドウォレットとホットウォレットの間で追加のセキュリティ層を提供する、1つ以上のウォームウォレット。ホットウォレットとは異なり、ウォームウォレットのシークレットキーはオンラインである必要はありません。さらに、ウォームウォレットのシークレットキーを複数の人に分散し、マルチシグを導入してセキュリティを強化することもできます。
不正使用されたウォームウォレットによって発生するおそれのある結果についての詳細は、待機アドレスの漏えいをご覧ください。
関連項目:
バランスシート
顧客のXRPを管理するため、Alpha Exchangeは各顧客のXRP残高と自身の保有残高を追跡する必要があります。このためには、Alpha Exchangeは別のバランスシートまたは会計システムを作成し、維持する必要があります。以下の表は、このバランスシートを説明するものです。
新しいXRP Ledgerアカウント( Alpha Hot 、 Alpha Warm 、 Alpha Cold )が、「XRP LedgerのXRP残高」表のユーザ列に示されています。
「Alpha ExchangeのXRP残高」表は、新しい追加のバランスシートを表します。Alpha Exchangeのソフトウェアは、この会計システムでユーザのXRP残高を管理します。
XRP Ledgerの XRP残高 | Alpha Exchange のXRP残高 | ||||
ユーザ | 残高 | アカウント番号 | ユーザ | 残高 | |
Dave | 25,000 | 123 | Alice | 0 | |
Edward | 45,000 | 456 | Bob | 0 | |
Charlie | 50,000 | 789 | Charlie | 0 | |
Alpha Hot | 0 | ... | |||
Alpha Warm | 0 | ||||
Alpha Cold | 0 | ||||
... |
XRPの額
XRPの額は、XRP Ledgerで、符号なし整数の drop として示されます。1XRPは1,000,000 dropです。Rippleでは、ソフトウェアでXRP残高をdropの整数値として格納し、これらの数値に整数演算を実行することをお勧めしています。ただし、ユーザインターフェイスでは残高をXRPの単位で表示すべきです。
1drop(.000001XRP)はこれ以上分割できません。XRPと他の資産の間でFXレートを計算して表示するときには、この点にご注意ください。
詳細は、通貨額の指定をご覧ください。
台帳上と台帳外
Alpha Exchange のような取引所では、XRPは「台帳上」または「台帳外」に存在します。
台帳上のXRP: XRP保有者のパブリックアドレスを指定し、パブリックのXRP Ledgerを通じて照会できるXRP。これらの残高の取引相手はXRP Ledgerです。詳細については、XRPをご覧ください。
台帳外のXRP: 取引所の会計システムに保持されている、取引所のインターフェイスで照会できるXRP。台帳外のXRP残高はクレジットペースです。取引相手は、XRPを保有している取引所です。
台帳外のXRP残高は、取引所の参加者の間で取引されます。このような取引をサポートするため、取引所は取引で使用可能な、 台帳外 のXRP合計金額に等しい 台帳上 のXRP残高を保持する必要があります。
資金の流れ
残りのセクションでは、ユーザによる入金、取引、XRP残高の換金の過程で、Alpha Exchangeが管理するアカウントを通じて資金がどのように流れるのかを説明します。資金の流れを解説するため、本書では、「バランスシート」セクションで使用した表を使用します。
取引所の一般的な資金の流れには、主要な4つステップが伴います。
このリストには、取引所の前提条件が含まれていません。
この時点で、 Alpha Exchange はXRP Ledgerのホットウォレット、ウォームウォレット、コールドウォレットを作成し、それらをバランスシートに追加しましたが、ユーザからの入金はまだ受け付けていません。
XRP Ledgerの XRP残高 | Alpha Exchange のXRP残高 | ||||
ユーザ | 残高 | アカウント番号 | ユーザ | 残高 | |
Dave | 25,000 | 123 | Alice | 0 | |
Edward | 45,000 | 456 | Bob | 0 | |
Charlie | 50,000 | 789 | Charlie | 0 | |
Alpha Hot | 0 | ... | |||
Alpha Warm | 0 | ||||
Alpha Cold | 0 | ||||
... |
取引所へのXRPの入金
台帳外のXRP残高を追跡するには、取引所は新しいバランスシート(または類似の会計システム)を作成する必要があります。以下の表は、ユーザがXRPを入金するにつれ、Alpha Exchangeの新しいバランスシートで発生する残高の変化を示すものです。
CharlieというユーザがAlpha Exchangeに50,000XRPを入金したいと希望しています。これには、以下のステップが伴います。
Charlieは50,000XRPの支払いを、Alpha Exchangeのコールドウォレットに送信します。
a. Charlieは識別子(このケースでは
789
)を支払いに追加し、Alpha Exchangeにある自身のアカウントに関連付けます。これは、 宛先タグ と呼ばれます。(これを使用するには、Alpha Exchangeは、すべての入金でCharlieのような宛先タグを必要とするように、すべてのアカウントでasfRequireDestフラグをオンに設定している必要があります。詳細については、AccountSet Flagsをご覧ください。)Alpha Exchangeのソフトウェアは、受信される支払を検出し、
789
をチャーリーのアカウントの宛先タグとして認識します。受信される支払を検出すると、Alpha Exchangeのソフトウェアは、入金された50,000XRPがCharlieによって管理されるものであることを示すようにバランスシートを更新します。
Charlieは、これで、取引所で最大50,000XRPまで使用できます。例えば、XRPをBTCやその他のAlpha Exchangeでサポートされている通貨と取引するオファー(注文)を作成できます。
XRP Ledgerの XRP残高 | Alpha Exchange のXRP残高 | ||||
ユーザ | 残高 | アカウント番号 | ユーザ | 残高 | |
Dave | 25,000 | 123 | Alice | 0 | |
Edward | 45,000 | 456 | Bob | 0 | |
Charlie | 50,000 | 789 | Charlie | 50,000 | |
Alpha Hot | 0 | ... | |||
Alpha Warm | 0 | ||||
Alpha Cold | 50,000 | ||||
... |
取引所でのXRPの取引
Alpha Exchangeユーザ(Charlieなど)は、Alpha Exchangeでクレジットベースの残高を取引できます。Alpha Exchangeは、これらの取引の作成時に、新しいバランスシートでユーザの残高を追跡する必要があります。これらの取引は、 台帳外 であり、XRP Ledgerから独立しています。このため、この残高の変化はXRP Ledgerには記録されません。
XRPを自身のXRP Ledgerアカウントに保有している顧客は、XRP Ledgerに組み込まれた分散型取引所 を使用して、ゲートウェイによって発行された通貨を取引することもできます。XRP Ledger 上 での取引の詳細は、オファーのライフサイクルをご覧ください。
XRPの保有高のリバランス
取引所は、いつでもホットウォレットとコールドウォレットの間で残高を調整できます。各残高調整には、トランザクションコストがかかりますが、それ以外にはすべてのアカウントの合計残高に影響はありません。台帳上の合計残高は、取引所で取引に使用できる合計残高を常に上回る必要があります。(XRP Ledgerのトランザクションコストをカバーできるだけの十分な余剰が必要です。)
以下の表は、(XRP LedgerでPaymentトランザクションを介した)Alpha Exchangeのコールドウォレットとホットウォレットの間での80,000XRPの残高調整を示すものです。コールドウォレットから引き落としが行われ、ホットウォレットに入金が行われました。この支払いを逆にすると(ホットウォレットから引き落としが行われ、コールドウォレットに入金が行われる)、ホットウォレットの残高は減少します。このような残高調整は、取引所がオンラインホットウォレットにXRPを保持することに関連するリスクを抑えるために役立ちます。
Alpha Exchangeの 台帳外のXRP残高 | Alpha Exchangeの台帳上のXRP残高 | ||||
アカウント番号 | ユーザ | 残高 | XRP Ledgerアカウント | 残高 | |
123 | Alice | 80,000 | ホット | 80,000 | |
456 | Bob | 50,000 | ウォーム | 0 | |
…. | …. | ||||
789 | Charlie | 50,000 | コールド | 100,000 | |
... | ... |
取引所からのXRPの出金
出金により、取引所のユーザは、取引所の台帳外バランスシートから、XRP LedgerのアカウントにXRPを移動できます。
この例では、Charlieは、Alpha Exchangeから25,000XRPを出金します。これには、以下のステップが伴います。
Charlieは、Alpha ExchangeのWebサイトでプロセスを開始します。彼は、25,000XRPをXRP Ledgerの特定のアカウント(以下の表では、「Charlie XRP Ledger」という名前)に送金する指示を出します。
Charlieの指示に対応し、Alpha Exchangeは以下の作業を実行します。
A. その金額(25,000XRP)を台帳外バランスシートのCharlieのアカウントから引き出します。
B. XRP Ledgerで、Alpha ExchangeのホットウォレットからCharlieのXRP Ledgerアカウントに同じ金額(25,000XRP)の支払いを送信します。
XRP Ledger台帳上のXRP残高 | Alpha Exchangeの 台帳外のXRP残高 | Alpha Exchangeの台帳上のXRP残高 | ||||||
ユーザ | 残高 | アカウント番号 | ユーザ | 残高 | XRP Ledgerアカウント | 残高 | ||
Dave | 25,000 | 123 | Alice | 80,000 | ホット | 55,000 | ||
Edward | 45,000 | 456 | Bob | 50,000 | ウォーム | 0 | ||
…. | …. | …. | ||||||
CharlieのXRP Ledger | 75,000 | 789 | Charlie | 25,000 | コールド | 100,000 | ||
... | ... | ... |