blockchainjapan’s blog

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

技術シリーズ#9: ViteXの仕組みを理解するための5つのチャート


技術シリーズ#9: ViteXの仕組みを理解するための5つのチャート

著:Christy Li

これまでの記事では、コントラクトの設計、マッチングエンジン、バックエンドサービス、分散化など様々な観点から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 で実際にマッチングされます。インタラクションの流れは以下の通りです。

  1. ユーザーAは、1 BTC-000を Contract Fund の取引所アカウントに送信します。これは、コントラクトへの関数呼び出しとして表現されます。
  2. ユーザーAは発注トランザクションに署名し、Contract Fund に送信します。コントラクトはトランザクションを検証し、検証が通過した場合はBTC-000をロックします。そうでない場合は、発注は失敗します。
  3. Contract Fund は Contract Trade を呼び出し、注文を発注します。
  4. Contract Trade は注文をオーダーブックに載せます。
  5. ステップ5から8では、別のユーザーBの発注処理を繰り返します。ステップ8では、価格が一致していれば、ユーザーAが発注した注文が処理されます。次のセクションでは、価格が一致した場合の処理について見ていきます。

2.2 オーダーマッチング

オーダーマッチング処理は、次の図のようになります。

  1. ユーザーAはまず、Contract Fund に 1 BTC-000 を送ります。
  2. ユーザーAは、1 BTC-000 で 10,000 VITEを買う注文を出すために、Contract Fund にファンクションコールを送信します。
  3. 発注トランザクションが確認されると、Contract Fund はContract Trade を呼び出して買い注文を発注します。
  4. Contract Trade はオーダーブックに注文を出します。
  5. ユーザーBは、Contract Fund に 5,000 VITE を送ります。
  6. ユーザーBは、5,000 VITEを0.5 BTC-000で売却するために、Contract Fundにファンクションコールを送信します。
  7. Contract Fund は Contract Trade を呼び出して売り注文を出します。
  8. Contract Trade は注文をユーザーAの買い注文と照合します。照合が完了すると、 5,000 VITE と0.5 BTC-000 がそれぞれユーザーAとユーザーBの Contract Fund の口座に送金されます (例では取引手数料は考慮されていません)。この時点で、Bの売り注文は完全に約定されてオーダーブックから削除されますが、Aの買い注文は部分的に約定され、オーダーブックに残ります。

2.3 オーダーキャンセル

キャンセルできるのは、保留中(未約定または部分的に約定)の注文のみです。 約定またはキャンセルされた注文をキャンセルしようとすると、エラーが発生します。

  1. ステップ1から4は、ユーザーAの注文プロセスを表しています。
  2. ステップ5では、ユーザーAが注文キャンセルトランザクションに署名し、Contract Fund に送金します。
  3. 注文キャンセルトランザクションが確認された後、Contract Fund はContract Trade を呼び出して注文をキャンセルします。後者は注文をオーダーブックから削除します。
  4. Contract Trade により資産のロックが解除され、Contract Fund のユーザーAのアカウントに戻ります。

2.4 決済

ViteXでは、ウォレットの残高と取引所の残高は異なります。 取引は取引所の残高に関連付いています。 資産を別のユーザーに転送したり、ゲートウェイを介して引き出したりするときは、最初に資産を取引所からウォレットに移動する必要があります。

  1. 最後のチャートのステップ8で、ユーザーAは引き出しトランザクションに署名し、Contract Fund に送金します。
  2. 引き出しトランザクションが確認された後、資産は取引所からユーザーのウォレットに移されます。