技術シリーズ#9: ViteXの仕組みを理解するための5つのチャート
これまでの記事では、コントラクトの設計、マッチングエンジン、バックエンドサービス、分散化など様々な観点からViteXを紹介してきました。今回の記事では、ViteXテック探訪の次の教材の一つとして、ViteXスマートコントラクトの実行プロセスやユーザーとのインタラクションに焦点を当てていきたいと思います。お楽しみください。
1 機能モジュール
ViteX分散型取引所には、オンチェーンのデータソースであるvDexとオフチェーンのデータサービスであるDexServerが含まれています。下の図に示すように、Wallet Gateway、Token Issuance、および DEX Manager はオンチェーンモジュールです。ユーザーは、ゲートウェイを介してクロスチェーントークンをViteチェーンにマッピングするか、Viteネイティブトークンを直接発行し、取引所に転送して取引を行うことができます。DEX Data Processor と Data Collectionは、オフチェーンモジュールです。これらは、フルノードからデータを収集し、データ処理とインデックス作成を行い、集約されたデータサービスをユーザーに提供します。具体的には、DEX Manager が入金、出金、取引、新規取引ペアの開設を処理し、Data Collection がチェーンをクロールしてオンチェーンイベントを捕捉し、DEX Data Processor がサービスを提供する役割を担っています。
ViteXで取引される資産には2つの種類があります。一つはVite, VX, EBLX-000のようなViteチェーンで発行されたトークンです。もう一つはETH-000, BTC-000, USDT-000のようなクロスチェーントークンです。クロスチェーントークンは他のパブリックチェーンのネイティブコインであり、ViteXで取引する前にViteトークンにマッピングする必要があります。
2 機能詳細
以下のセクションでは機能な詳細について説明します。
2.1 コントラクト設計
ViteXはマルチコントラクト方式を採用しており、明確なビジネスモデルを構築し、シングルコントラクトの潜在的なパフォーマンスのボトルネックを回避するのに役立ちます。さらに、この設計はデータのプルーニングも容易にします。
この設計は、2つのビルトインコントラクトで構成されています。Contract Fund は資産の入出金、決済、ロック、アンロック、マイニング、配当などを担当し、注文は Contract Trade で実際にマッチングされます。インタラクションの流れは以下の通りです。
- ユーザーAは、1 BTC-000を Contract Fund の取引所アカウントに送信します。これは、コントラクトへの関数呼び出しとして表現されます。
- ユーザーAは発注トランザクションに署名し、Contract Fund に送信します。コントラクトはトランザクションを検証し、検証が通過した場合はBTC-000をロックします。そうでない場合は、発注は失敗します。
- Contract Fund は Contract Trade を呼び出し、注文を発注します。
- Contract Trade は注文をオーダーブックに載せます。
- ステップ5から8では、別のユーザーBの発注処理を繰り返します。ステップ8では、価格が一致していれば、ユーザーAが発注した注文が処理されます。次のセクションでは、価格が一致した場合の処理について見ていきます。
2.2 オーダーマッチング
オーダーマッチング処理は、次の図のようになります。
- ユーザーAはまず、Contract Fund に 1 BTC-000 を送ります。
- ユーザーAは、1 BTC-000 で 10,000 VITEを買う注文を出すために、Contract Fund にファンクションコールを送信します。
- 発注トランザクションが確認されると、Contract Fund はContract Trade を呼び出して買い注文を発注します。
- Contract Trade はオーダーブックに注文を出します。
- ユーザーBは、Contract Fund に 5,000 VITE を送ります。
- ユーザーBは、5,000 VITEを0.5 BTC-000で売却するために、Contract Fundにファンクションコールを送信します。
- Contract Fund は Contract Trade を呼び出して売り注文を出します。
- Contract Trade は注文をユーザーAの買い注文と照合します。照合が完了すると、 5,000 VITE と0.5 BTC-000 がそれぞれユーザーAとユーザーBの Contract Fund の口座に送金されます (例では取引手数料は考慮されていません)。この時点で、Bの売り注文は完全に約定されてオーダーブックから削除されますが、Aの買い注文は部分的に約定され、オーダーブックに残ります。
2.3 オーダーキャンセル
キャンセルできるのは、保留中(未約定または部分的に約定)の注文のみです。 約定またはキャンセルされた注文をキャンセルしようとすると、エラーが発生します。
- ステップ1から4は、ユーザーAの注文プロセスを表しています。
- ステップ5では、ユーザーAが注文キャンセルトランザクションに署名し、Contract Fund に送金します。
- 注文キャンセルトランザクションが確認された後、Contract Fund はContract Trade を呼び出して注文をキャンセルします。後者は注文をオーダーブックから削除します。
- Contract Trade により資産のロックが解除され、Contract Fund のユーザーAのアカウントに戻ります。
2.4 決済
ViteXでは、ウォレットの残高と取引所の残高は異なります。 取引は取引所の残高に関連付いています。 資産を別のユーザーに転送したり、ゲートウェイを介して引き出したりするときは、最初に資産を取引所からウォレットに移動する必要があります。