SharkTeam: UniswapX ソース コード分析
SharkTeam
2023-08-08 03:58
本文约1763字,阅读全文需要约7分钟
UniswapX は、ルーティングの複雑さをサードパーティのフィラーのオープン ネットワークにアウトソーシングし、AMM プールや独自のプライベート インベントリなどのオンチェーン流動性を使用してスワップを埋めるために競合することで、この問題を解決することを目指しています。

設計原理

UniswapX は、ルーティングの複雑さをサードパーティのフィラーのオープン ネットワークにアウトソーシングし、AMM プールや独自のプライベート インベントリなどのオンチェーン流動性を使用してスワップを埋めるために競合することで、この問題を解決することを目指しています。

UniswapX を使用すると、スワッパーは最良の価格を取得しているかどうかを気にすることなく Uniswap インターフェイスを使用できるようになり、トランザクションは常に透過的に記録され、オンチェーンで決済されます。すべての注文は Uniswap Smart Order Router によってサポートされており、開始されるとフィラーは Uniswap v1、v2、v3、および v4 と競合することになります。

最初のレベルのタイトル

  • アドバンテージ


  • 流動性ソースを集約することでより良い価格を実現 ガスフリースワップ


  • MEV(最大抽出可能値)の防止


  • 今後数か月以内に、UniswapX はガスフリーのクロスチェーンスワップに拡大します。


最初のレベルのタイトル

動作原理

  • まず、アリス (交換者) が 1 ETH を USDC に交換したいとします。アリスは、(候補者)ボブ、チャーリー、ダニエルに見積もりをリクエストします。

  • ボブはアリスのETHを1,000 USDCで購入することを申し出る

  • チャーリーは現在 999 USDC を保有しています

  • ダニエルは 998 USDC を持っています

アリスは、Uniswap v 3 を通じて 1 ETH を 997 USDC に直接変換することもできます。

アリスはボブの 1,000 USDC の申し出を受け入れ、注文書に署名します。

注文には、最大値 (Bob の見積もり 1,000 USDC によって設定) と最小値 997 USDC (Uniswap Smart Order Router API によって設定) が含まれます。

ボブは、自身の USDC を使用するか、アリスの 1 ETH をさまざまなオンチェーン流動性手段 (Uniswap プロトコル、Sushiswap など) にルーティングして、アリスの注文を満たすことができます。

ボブは、アリスの注文を満たすために自分の USDC を使用することを決定し、アリスの 1 ETH と引き換えに 1,000 USDC を送信します。

ボブが提案を放棄することに決めた場合、アリスは新たな注文と署名を提出する必要はありません。

代わりに、彼女の既存の注文は自動的に更新され、代わりに 999 USDC を提供できる人に 1 ETH が提供されます。

ブロックが経過し、現在、チャーリーもダニエルも (そして UniswapX システムに参加している他のフィラーも) 999 USDC でアリスの注文を満たすつもりはありません。別のイーサリアム ブロック (12 秒) が期限切れになると、アリスの 1 ETH を 998 USDC と交換できます。

アリスに代わって、ダニエルはアリスの 1 ETH を Uniswap v3 と Sushiswap に送信し、998 USDC をアリスに返し、残りの 1 USDC 出力を自分用に保持します。

最初のレベルのタイトル

取引の流れ

UniswapX は、Permit 2 トークン認可コントラクトを利用して、ERC 20 トークンに署名ベースの認可および転送機能を導入する分散型交換プロトコルです。さらに、UniswapX はオンチェーン決済にも Reactor コントラクトを使用します。 Reactor コントラクトは、トランザクションがユーザー指定のパラメーターに準拠していることを検証する責任があり、基準を満たさないトランザクションを取り消すことができます。 UniswapX トランザクションに参加するには、コンバーターはまず Permit 2 契約を承認する必要があります。

  1. トランザクションを手動で作成して送信する代わりに、コンバータは次のパラメータを指定してトランザクション注文に署名します。

  2. トークンを入力(トークンを支払う)

  3. トークンの出力(トークンの取得)

  4. 入力(出力)量

  5. 初期出力(入力)量

  6. 最小出力(入力)量

  7. 減衰関数

  8. 償還期間

UniswapX Reactor コントラクトに、そのコントラクトに代わってトークンを使用する権限を与える

これらの注文は、MEV シーカー、マーケット メーカー、および/またはその他のオンチェーン エージェント (総称してフィラーと呼ばれます) によって受信され、Reactor コントラクトに送信されます。チェーン上でチェンジャーの注文を送信することにより、注文実行者はチェンジャーに代わってガス料金を支払います。これらの手数料は、ガスコストを補うために約定価格に反映されます。

UniswapX は、注文担当者が変更者の注文にどのように対応するかを規定していません。流動性は、Uniswap または他の分散型取引所のオンチェーン流動性プール、オフチェーン流動性ソース、または他の UniswapX オーダーブックから得ることができます。複数の注文を同じトランザクションにバンドルでき、他の操作をオンチェーンでアトミックに実行できます。

最初のレベルのタイトル

主要なソースコード分析

交換業者に代わって充填業者がガスを提出する必要があるため、注文を一括して執行することで取引に伴う手数料のロスを軽減することができます。

image.png

特定の注文の実行ロジックは _fill 関数で処理されます。ここには 2 つの状況があります。フィラーがユーザーの取引を完了するために自分の個人的なポジションを使用する場合、コールバック契約を使用する必要はなく、資金スワップを直接実行します。それ以外の場合は、他のトランザクション プールへの交換などの特定のロジックをコールバック コントラクトで処理する必要があります。

コントラクトは、validate 関数を使用して、フィルラーが注文の指定されたフィルラーであることを検証します。

契約では、permit 2 ライブラリを使用して署名の検証とトークンの転送を完了し、交換者のお金が自由に転送されないようにします。

記入者が個人の立場を使用して注文を完了することを選択した場合、トークンは記入者のアドレスから交換者のアドレスに直接転送されます。

SharkTeam のビジョンは、Web 3 の世界を完全に保護することです。このチームは世界中から集まった経験豊富なセキュリティ専門家と上級研究者で構成されており、ブロックチェーンとスマートコントラクトの基礎理論に精通しており、スマートコントラクトの監査、オンチェーン分析、緊急対応などのサービスを提供しています。 Polkadot、Moonbeam、polygon、OKC、Huobi Global、imToken、ChainIDE など、ブロックチェーン エコシステムのさまざまな分野の主要企業と長期的な協力関係を確立しています。

About Us

SharkTeam のビジョンは、Web 3 の世界を完全に保護することです。このチームは世界中から集まった経験豊富なセキュリティ専門家と上級研究者で構成されており、ブロックチェーンとスマートコントラクトの基礎理論に精通しており、スマートコントラクトの監査、オンチェーン分析、緊急対応などのサービスを提供しています。 Polkadot、Moonbeam、polygon、OKC、Huobi Global、imToken、ChainIDE など、ブロックチェーン エコシステムのさまざまな分野の主要企業と長期的な協力関係を確立しています。

公式ウェブサイト:https://www.sharkteam.org

SharkTeam
作者文库