blockchainjapan’s blog

旬のブロックチェーンを記事を厳選して提供!

技術シリーズ#7: ViteXの分散化の解説

技術シリーズ#7: ViteXの分散化の解説

著:Christy Li

一般的に言えば、ある特定の取引所のサブシステムが分散型で実装されていれば、それは分散型取引所に分類されます。既存の分散型取引所を分散度の観点から見てみると、より分散しているものもあれば、あまり分散していないものもあります。どのようなコンポーネントを分散化すべきか、どの程度の分散化を実現すべきかについては、業界では共通の認識がなく、実際の実装は、アーキテクトの分散化の考え方、柔軟性、性能、それらの間のトレードオフを反映したものとなっています。DEXの確固たる実践者として、ViteXの使命は、最高の分散型取引所を構築することです。そして、それは完全に分散化されたコアコンポーネントと、柔軟性とユーザーエクスペリエンスを考慮するために、いくつかの中央集権化されたクリティカルではないサブシステムのハイブリッドなアプローチにつながっています。以下に詳しく説明します。

分散型の実装

資産管理、注文発注、注文マッチング、決済、マイニング、配当などのサブシステムがViteX上で分散化されています。

1. 資産管理

資産管理は、入金、出金、資産の保管が含まれます。入金では、ユーザーは、取引所で資産をロックするためにdexFundの組み込みコントラクトを呼び出すために彼のアカウントでトランザクションを開始します。出金インターフェイス以外に、コントラクトの外に資産を転送するための場所はありません。出金時には、ユーザーはdexFundを呼び出して、コントラクトからユーザーの口座への資産移動を開始します。dexFundのコントラクトは、資産残高を追跡するために、各ユーザーのコントラクトストレージにキーバリューレコードを作成します。アカウントの累積残高は、Vite チェーン上で dexFund コントラクトが保持している資産残高と全く同じでなければなりません。

2. 注文発注、マッチング、キャンセル

注文を出す際には、ユーザーはdexFundに注文をリクエストします。dexFund コントラクトは、リクエストを確認し、受渡した資産をロックし、完了した場合はdexTrade コントラクトを呼び出して注文を約定させ、そうでない場合は失敗となります。dexTradeのマッチングエンジンは、価格-時間の優先順位に基づいてTaker-Makerモデルを採用しています。例を見てみましょう。

新たに発注された注文Aに対して、オーダーブックの別の注文Bが一致すると、Aがテイカーとなり、メイカーBの価格で注文が約定されます。Aの注文が完全に満たされていない場合、次の注文の照合が試行されます。一致する、または満たす注文がなくなるまで、この処理が続きます。 満たす注文がなくなった場合、Aは他の人の注文を待つメイカーになります。
注文のキャンセルは、注文の発注と似ています。オーダーブックのオーダーIDを検索し、オーダーIDが見つかればオーダーを削除し、アセットのロックを解除します。
ViteXでは、注文の発注、マッチング、キャンセルのプロセスは2つのスマートコントラクト(dexFund、dexTrade)によって実行され、オーダーブックはdexTradeコントラクトで実装されます。これは完全に分散化された設計です。

3. 決済

ViteXでは、注文のマッチングやキャンセル、マイニング、配当などで資産決済が発生することがあります。資産はdexFundコントラクトで確保されているため、コントラクト上の各口座の残高を更新することで、決済処理が簡素化されます。注文マッチングや取消の場合、dexTradeコントラクトでは、dexFundへの[アドレス、トークン、金額変更]トリプルのリストを含むリクエストランザクションを開始するため、コントラクトでは、キーバリューベースのストレージで検索し、それに応じて残高を更新します。マイニングや配当については、dexFundで実行されるため、決済はコントラクトで独立して処理することができます。マイニングでは循環するトークンの供給量を上げ、配当ではVXをコントラクトにロックして手数料収入を口座に分配します。

4. マイニング

ViteXでのマイニングは、VXのマイニング、バーン、転送、VXエミッタンス曲線、マイニングメトリクス、アルゴリズムに関連しています。
VXにはインフレはありません。発行された後、すべてのVXトークンはdexFundコントラクトに転送され、ロックされます。VXの発行はリリースカーブに厳密に従っています。スマートコントラクトは、VXが前倒しでリリースされないことを保証します。
2019年12月には、コントラクトの特別なインターフェイスを介して、70M以上のVXが新しい生成曲線に従ってバーンされました。新しいマイニングカーブは、ベースサイクルと与えられたサイクルの距離からその日の放出量を計算するdexFundで書かれたアルゴリズムによって決定されるため、誰も改ざんしたり妨害したりすることはできません。
ViteXは、ステイクマイニング、トレードマイニング、リファラルマイニング、流動性マイニングなど、複数のマイニング方法をサポートしています。ステイクマイニングでは、ステイクやアンステイクによるバランスの変化は、dexFundのコントラクトで追跡されます。ステイクマイニングと同様に、トレードマイニングでは取引手数料の変化を追跡し、リファラルマイニングでは、招待者と招待者の両方の累積報酬を計算します。マイニングサイクルの最後に、dexFundコントラクトは関連するマイニングアルゴリズムを実行して、各マイニング口座の合計でマイニングされたVXの割合を計算し、VXを口座に割り当てます。
各サイクルでマイニングされた流動性マイニングのVXの合計は、まずdexFundの一時口座に送られ、その後、オフチェーンサービスがdexFundのコントラクトを呼び出して、一時口座から個々のマイニング口座にVXを分配します。流動性マイニングは完全には分散化されていません。
流動性マイニングを除いて、ViteXでのマイニングはすべて完全に分散化されています。

5. 配当

ViteXの配当には、VXのロック、ロック解除、配当アルゴリズムが含まれています。
ロックとロック解除は、ユーザーがdexFundコントラクトと呼ばれるトランザクションを介して開始します。コントラクトは、現在のサイクルの各口座のロックされたVXを追跡し、サイクル終了時に配当金を計算します。現在のところ、配当金は累積配当プールの1%で、前サイクルのプールの99%と現在のサイクルで収集された取引手数料の合計で構成されています。ViteXでは、配当金計算と分配の両方がdexFundで完結するため、分散化されています。

6. Trading Pairs

ViteXでは、誰でも10,000VITEをdexFundに送ることで、所有しているトークンの新規取引ペアを開設し、操作権を取得することができます。トークンの所有権と操作権を譲渡することもできます。操作権があれば、取引手数料を設定したり、取引ペアの取引を一時停止したり、解除したりすることができます。すべてのステップはdexFundコントラクトの対応するインターフェースを呼び出すことで完了します。取引ペアの操作は分散化されます。

中央集権的な実装

1. 市場トレンド

値動き、出来高ローソク足チャート、注文の深さなど、市場に関連する様々なデータは、集中型クローラーサービスによってオンチェーンの注文マッチング結果から生成されます。

2. 高度な注文クエリ

市場トレンドデータと同様に、ViteXの注文クエリも集中型サービスでサポートされています。ユーザーはサービスAPIを呼び出して、過去の注文を検索したり、さまざまな条件に応じて未決済の注文を照会したり、必要に応じて注文をキャンセルしたりすることができます。

3. 流動性マイニング

ステイクマイニングやトレードマイニングに比べて、流動性マイニングはルールが複雑すぎて、コントラクトの中で処理することができません。そのため、中央集権的サービスに入れています。流動性マイニングについては、次の記事で紹介します。

サマリー

この記事では、分散化の観点からViteXサブシステムの実装の詳細を紹介しました。 高度に分散化された取引所として、ViteXはトレーサビリティ、透明性、セキュリティのコミットメントを満たします。