BTC
ETH
HTX
SOL
BNB
View Market
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

TWAMM: Uniswap で大量の注文を効率的に処理するための新しいアイデア

Moni
Odaily资深作者
この記事は約8709文字で、全文を読むには約13分かかります
新しい自動マーケットメーカー TWAMM を理解するための記事。
AI要約
新しい自動マーケットメーカー TWAMM を理解するための記事。

概要

日常翻訳者 |


概要

このペーパーでは、イーサリアム上のトレーダーが大量の注文を効率的に実行できるようにする新しいタイプの自動マーケットメーカー (AMM) を紹介します。

私たちはこれを時間加重平均マーケットメーカーと呼び、TWAMM (「ティーワム」と発音) と略します。

導入

導入

アリスがオンチェーンで1億ドル相当のETHを購入したいとします。Uniswapのような既存のAMMでこのサイズの注文を実行するには非常にコストがかかります。これは、アリスが内部の何かを知らないことを防ぐためです。アリスに高額な料金を請求しなければならない。

現在、アリスにとっての最善の選択肢は、注文を手動でいくつかの部分に分割し、数時間以内に実行することで、内部情報がないことを市場に認識させ、より良い価格を提示する時間を与えることです。

彼女がいくつかの大規模なサブ注文を送信した場合、各注文は依然として価格に重大な影響を及ぼし、敵対的なトレーダーによるサンドイッチ攻撃に対して脆弱です。一方、彼女が多数の小規模なサブオーダーを送信する場合、彼女はアクティブなトランザクションのすべての作業とリスクを引き受ける必要があり、マイナーにトランザクションガス料金の形で高額なコストを支払うことになります。

副題

「マーケットメイク」に関する2つの基本概念

1. マーケットメーカー

この市場には 2 つの金融資産、たとえば USDC と ETH があると考えてください。マーケットメーカーはこの市場の参加者であり、いつでもあらゆる資産を別の資産と取引したいと考えています。

あなたが 1 億 USDC を持っていて、それを使って ETH を購入したい場合、同時に反対の取引をしたい人を見つけることができないかもしれません。代わりに、1 人以上のマーケットメーカーで構成される市場に参入し、彼らと取引することになるでしょう。

2. 逆選択

マーケットメーカーがスプレッドから得る利益は、事実上、各取引に課す手数料となります。価格が自分に反するとき、つまり資産を購入して価格が下がった場合、または資産を売却して価格が上昇した場合、彼らはお金を失います。

マーケットメーカーにとって残念なことに、価格は彼らの操作とは逆の方向に動く傾向があり、これは逆選択として知られる現象です。これは、将来の価格変動について情報を得ているトレーダーがマーケットメーカーと大規模な取引を行う可能性が高いために起こります。

副題

自動マーケットメーカー

文章

1. コンスタントトレードフォーミュラ

一定の取引公式は、誰でも即座に新しい市場と新しい資産ペアの新しい AMM を作成できるシンプルなルールです。

2 つの資産 X と Y の間に新しい定常トランザクション AMM (CPAMM) を作成するには、流動性プロバイダー (LP) と呼ばれるユーザーがこれら 2 つの資産の準備金 x と y をデポジットします。

特定の時点でのこれらの資産の比率は、AMM の即時価格、または非常に少額の注文に対して請求される価格を表します。たとえば、CPAMM の準備金に 2,000 USDC と 1 ETH がある場合、ETH の瞬間価格は 2,000 USDC になります。

文章

2. 例

たとえば、ETH/USDC の CPAMM には 2,000 USDC と 1 ETH の準備金があるため、x = 2,000、y = 1、つまり x * y = k = 2,000 となります。この AMM の瞬間価格は、ETH あたり 2,000 / 1 = 2,000 USDC です。

トレーダーが 2,000 USDC 相当の ETH を購入しに来た場合、予備として 2,000 USDC を X に預けることを意味するため、x = 2,000 + 2,000 = 4,000 となります。

次に、k = 2000 なので、トランザクション後に y = x/k = 2000/4000 = 0.5 を取得する必要があります。 y は元々 1 だったので、1 – 0.5 = 0.5 ETH がトレーダーに流れたはずです。

トレーダーは 2000 USDC で 0.5 ETH を購入したため、彼らが支払った平均価格は 1 ETH あたり 4,000 USDC でした。瞬間価格と比較したこの高価格は、AMM の流動性における大きな注文サイズを反映しています。

3. 価格効果と逆選択

上記の場合、少額注文のコストが ETH あたりわずか 2,000 USDC である場合、トレーダーは大口注文に対して ETH あたり 4,000 USDC の手数料を支払わなければなりません。この価格差は注文の価格影響と呼ばれます。受信する注文のサイズが大きくなるほど、価格への影響も大きくなります。

副題

現在の AMM で大量の注文を実行する

1.注文を手動で分割する

これまで見てきたように、AMM で 1 つの大規模な注文を実行する場合の取引コストは高く設定されています。この優れた記事はこの問題を掘り下げ、いくつかの解決策を推奨しています。

つまり、AMM で大量の注文を実行したいトレーダーは、1 回の取引で注文を実行すべきではありません。注文をいくつかの部分に分割したほうがよいでしょう。これには、一度に複数の AMM に注文を送信することが含まれる場合がありますが、それらの AMM の流動性は常に限られています。時間が経つにつれて、注文が大きくなるほど、分割することが合理的になります。

たとえば、投資家がオンチェーンで 1 億ドルの ETH を購入したいと考えているとします。しかし、ETH の価格に関する短期的な情報がないため、注文の実行には時間がかかる可能性があります。この場合、注文をそれぞれ 1,000 万ドルの 10 個の注文に分割し、1 時間ごとに実行することで、各注文の価格への影響を軽減することができます。

2. サブオーダーサイズのトレードオフ

明らかに、非常に大規模な注文が複数の部分に分割された場合、個々のサブ注文は依然として大きくなり、それに応じて価格に影響を及ぼします。このとき、注文をより小さなものに分割すると便利ですが、これにより 2 つの新たな問題が同時に発生します。

最初の問題は運用の複雑さであり、これはリスクと作業負荷の増加を意味します。トレーダーは取引を間違った金額に分割したり、間違った方向を選択したりする可能性があります。一方で、一部の命令の実行を妨げるために、彼のコンピュータがクラッシュする可能性があります。そして、たとえすべてがうまくいったとしても、そのプロセスには時間と労力がかかり、より価値のあるものへの人々の試みに影響を与える可能性があります。

副題

従来の金融との類似

従来の金融分野では、投資家や機関が Apple 株を 1 億ドル購入したい場合、取引所に 1 億ドルの成行買い注文を直接送信することはありません。また、1,000 万ドル相当の注文を 10 件も送信することはありません。注文をこれよりもはるかに小さいサブ注文に分割することは、専任の取引スタッフやインフラストラクチャを持たない大多数の人にとって現実的ではありません。

代わりに、彼らはブローカーに大量の注文を送信し、ブローカーが手数料を払ってアルゴリズム取引を行う可能性があります。ブローカーは、特定の基準を参照した価格で、指定された期間(たとえば 8 時間)取引を実行します。ブローカーには、そのような取引を安全かつ経済的に実行することに専念するチームがいます。

1.TWAP注文

おそらく最も基本的なタイプのアルゴリズム取引は、時間加重平均価格または TWAP (「ティーワップ」と発音) 注文です。その名前が示すように、Apple 株に対して 1 億ドル相当の TWAP 注文が 8 時間以内に実行された場合、最終的にはその期間内の Apple 株の時間加重平均価格に近い価格で取引されることになります。

たとえば、Apple 株が期間中の 4 時間で 100 ドル、残りの 4 時間で 120 ドルで取引された場合、時間加重平均価格は (100 ドル * 4 + 120 ドル * 4)/8 = 110 ドルとなり、ブローカーは TWAP を実行します。その価格に近い注文。

この仕組みの詳細はさまざまですが、ブローカーはおそらくこの取引を多くの小さな部分に分割し、一日を通して市場に送信することによって実行します。 8 時間で 1 億ドルの Apple 株を購入することは、100 ミリ秒ごとに約 350 ドルの Apple 株を購入することに相当し、これはブローカーが行うことを誰もが期待するべきことです。

副題

時間加重平均マーケットメーカー

時間加重平均マーケット メーカー (TWAMM) は、TWAP 注文と同等のオンチェーンを提供します。 TWAMM は、注文分割と組み込み取引所への直接接続のための独自のロジック アルゴリズムを備えており、より低いガス料金でスムーズな取引を実行します。同時に、裁定取引者はTWAMM組み込み取引所の価格を市場価格と一致させ、資産の時間加重平均価格付近での執行を保証します。

1。概要

各 TWAMM は、ETH と USDC などの特定の資産ペア間のトランザクションを容易にします。

TWAMM には、両方の資産の標準の定常製品マーケット メーカーである組み込み AMM が含まれています。誰でもこの組み込み AMM を使用して、通常の AMM であるかのようにいつでも取引を行うことができます。

トレーダーは、固定注文を TWAMM に送信できます。これは、固定数のブロックに対して固定量の資産を売却する注文です。たとえば、次の 2,000 ブロックで 100 ETH を売却する注文です。

TWAMM は、これらのスタンディング注文を無限数の無限に小さい仮想サブ注文に分解し、これらのサブ注文は、長期にわたり均一レートで組み込み AMM で取引されます。これらの仮想サブ注文トランザクションを個別に処理すると、無限の量のガスがかかることに注意してください。ただし、クローズドエンド計算を使用すると、必要な場合にのみ累積的な影響を計算できます。

時間の経過とともに、スタンディング注文の実行により、組み込み AMM の価格が他の市場の価格から遠ざかります。これが起こると、裁定取引者は埋め込まれた AMM 価格に逆らって取引し、価格を一致させ、ロング注文の適切な執行を保証します。

長期的な売却によって組み込みAMMのETHが特定の集中取引所よりも安くなった場合、裁定取引者は組み込みAMMからETHを購入し、価格が回復したときにそれを集中取引所で売却して利益を得るでしょう。

2.イーサリアムのアップデート

2.1 ブロック

Ethereum はトランザクションを、約 13 秒ごとに発生する連続したチャンク (ブロックとも呼ばれます) にパッケージ化します。この記事では、各ブロックに番号を付けます。ブロック 1 の後にブロック 2、次にブロック 3 というように続きます。

2.2 マイナー

分散化されたマイナーのグループが各ブロックの処理を競い合い、インターネット接続があれば誰でもマイナーになることができます。これは、イーサリアム上で AMM のようなプログラムを実行することは秘密ではないことを意味します。入力が与えられたときに何が生成されるかを全員が正確に計算する必要があります。

2.3 ガス料金

イーサリアムではコンピューティング能力が希少なリソースであるため、ユーザーはガス料金の形でマイナーに支払う必要があります。特定のトランザクションに関与する計算が増えるほど、より多くのガスが消費されます。そして、このガス料金は、トランザクションを送信する人によって全額支払われます。

3. 基本的なトランザクション設計の考え方

3.1 スタンディングオーダー

アリスは、今後 8 時間以内に 1 億 USDC 相当の ETH、つまり約 2,000 ブロックを購入したいと考えています。彼女は TWAMM にスタンディングオーダーを入力し、1 億 USDC 相当の 2,000 ブロック ETH を購入します。これは、ブロックあたり 50,000 USDC に相当します。

前述したように、どのマイナーが TWAMM でこれらの将来のトランザクションを処理するかは、事前にはわかりません。これは、アリスの注文が誰にでも見えるようにする必要があることも意味し、後述する情報漏洩の問題につながります。

3.2 オーダープール

ボブが次の 5,000 ブロックで USDC 価格で 500 ETH を販売したいとします。これは、ブロックごとに 0.1 ETH を販売することに相当します。

そして、チャーリーは次の 2,000 ブロックで USDC の価格で 100 ETH を販売したいと考えています。つまり、ブロックごとに 0.05 ETH を販売します。

チャーリーの注文が 2,000 ブロック以内に期限切れになるとすぐに、ボブの注文とチャーリーの注文はプール内で結合されます。

この ETH 販売プールは、次の 2,000 ブロックの間、ブロックあたり 0.15 ETH で ETH を販売します。ボブはマイニング プールで獲得した USDC の 66% (0.1/0.15 ≈ 66%) を取得でき、チャーリーはマイニング プールで獲得した USDC の 33% (0.05/0.15 ≈ 33%) を取得できます。

3.3 仮想順序

次の 2,000 ブロックでは、TWAMM はアリスに代わって 50,000 USDC 相当の ETH を購入し、ETH 販売プールに代わって USDC で 0.15 ETH を販売する必要があります。

TWAMM は、これら 2 つのサブ注文を、仮想注文と呼ばれる数兆個の小さなサブ注文に分割すると想像できます (実際には、それらを無限数の無限小の仮想注文に分割します)。

次に、TWAMM は、埋め込まれた AMM に対してこれらの仮想注文を順番に実行します。最初にアリスの仮想注文、次に ETH 販売プールからの注文、次に別のアリスの注文というように実行します。

3.4 アービトラージ

アリスは販売されたETHプールよりもはるかに多くのETHを購入したため、埋め込まれたAMMのETHの価格はブロックごとに増加します。

この価格が他の場所のETH価格と比較して十分に高い場合、裁定取引者は他の取引所でより安価なETHを購入し、埋め込まれたAMMで販売することで、価格を市場平均と一致させ、アリスの注文のより適切な執行を保証します。 '

3.5 注文の有効期限

ブロック 2,000 以降、アリスの命令は完全に実行され、チャーリーの命令も完全に実行されます。ボブの ETH 販売注文は次の 3,000 ブロックまで有効であり、その間 TWAMM はブロックあたり 0.1 ETH のレートで実行され続けます。

他の外部活動がなければ、時間の経過とともに、これにより埋め込まれた AMM の ETH 価格が強制的に引き下げられ、裁定取引者が価格を抜け出したら回復することも可能になります。

3.6 トークンエコノミー

アリス、ボブ、チャーリーのいずれも注文を執行することに熱心ではないため、他の市場参加者は、彼らの注文がそうでない場合よりも不利な選択を示していると推測でき、価格への影響を低く抑えることができます。

文章

4. 微小な仮想注文

TWAMM は長期注文を無限に小さなサブ注文に分割すると上で述べました。これは流暢さと効率という 2 つの理由から行われます。

4.1 流暢さ

TWAMM の主な目標は、長期注文を長期間にわたってスムーズに実行し、一般的な時間加重平均価格に近い価格で注文を実行できるようにすることです。

仮想取引のサイズを縮小すると、AMM での価格の動きがよりスムーズになりました。

極端な場合、仮想取引を実行すると、無限に小さな取引が無数に行われるため、価格の動きが非常にスムーズになります。

4.2 効率

埋め込む

埋め込む

1. 遅延評価

TWAMM は仮想サブオーダーをブロック間のスペースで発生するものとして扱います。これはサンドイッチ攻撃を回避するために重要です。

これをガス効率の高い方法で実現するために、TWAMM は遅延評価を使用し、インタラクションの結果を決定する必要がある場合にのみ仮想トランザクションの影響を計算します。

ユーザーが TWAMM と対話するたびに (たとえば、組み込み AMM を使用して取引を行う、または新しいスタンディング注文を追加するなど)、TWAMM は最後の対話以降に発生したすべての仮想取引の影響を遡及的に計算します。

これらの仮想トランザクションは TWAMM の組み込み AMM とのみ対話するため、TWAMM の動作は外部対話間で完全に決定的です。 TWAMM が外部インタラクション間で 100 万ブロックを移動したとしても、次回誰かが TWAMM とインタラクションするときには、介在するすべての仮想トランザクションの結果を正確に計算できます。

TWAMM に接続されているフロントエンドの場合、まだオンチェーンに表現されていない仮想トランザクションは、現在のブロック番号を追跡し、TWAMM 自体の計算を行うことで処理できます。

2. ガスの最適化

2.1 注文のプール

例が示すように、同じ取引方向に複数のスタンディング注文がある場合 (つまり、USDC のために ETH を売る)、それらを一緒にプールし、仮想注文に分割します。その後、TWAMM はアルゴリズムを使用して残高を追跡できます。これは、Compound や Uniswap などのプロトコルで数十億ドルの LP トークン インセンティブを追跡するアルゴリズムと同じバージョンです。

技術的には、各 TWAMM には常に 2 つの長期注文プールがあり、資産ごとに 1 つずつあります。たとえば、USDC 販売用の注文プールと ETH 販売用の注文プールです。いつでも、これらの注文プールの一方または両方が空になる可能性があることに注意してください。

2.2 長期注文の有効期限

遅延評価で注文プーリングを使用すると、複雑な問題が発生します。

ボブが次の 100 ブロックで 100 ETH を売る注文を出し、チャーリーも次の 200 ブロックで 200 ETH を売る注文を出し、どちらの注文もブロックあたり 1 ETH の価格で販売されると想像してください。

次の 150 ブロックの間誰も TWAMM と対話しないと仮定すると、その時点で新しい外部対話が発生します。ボブとチャーリーが注文を行った後の最初の 100 ブロックでは、彼らの注文はブロックごとに 2 ETH を販売する共通の注文にプールされます。ただし、次の 50 ブロックでは、チャーリーの注文は独立し、ブロックごとに 1 ETH のみが販売されます。

これは、何が起こったのかを調べるために 2 つの別々のトランザクション計算を実行する必要があることを意味します。

* 最初の 100 ブロックの結果を一度に計算します。

* 最後の 50 ブロックの結果を一度に計算します。

最悪の場合、過去 150 ブロックのすべてのブロックに注文の有効期限がある場合、TWAMM はブロックごとに 1 つのトランザクションを処理する必要があり、ガス効率が破壊されます。

この問題に対する最も簡単な解決策は、注文の有効期限が切れるブロックの数を制限することです。たとえば、TWAMM では、注文が 250 ブロックごと、つまりほぼ 1 時間ごとにのみ期限切れになるように指定できます。

2.3 長期注文のキャンセル

ユーザーはいつでもスタンディング注文をキャンセルできます。実際には、これによりユーザーは、ブロックが注文トランザクションを完了するまで、自分の注文のキャンセル時間を選択できるようになります。この場合、キャンセルはすべてユーザー自身の決定であり、ガス料金を自分で支払う必要があるため、システムのガス負担は増加しません。

3. 仮想トレード数学

3.1 定義

TWAMM が最後に仮想トランザクションを実行してから t 個のブロックが生成されたとします。

簡単にするために、期限切れの長期注文がないものと仮定します。そのため、X を販売するプールは期間全体でブロックあたり x_{rate} を販売し、Y を販売するプールは期間部分全体でブロックあたり y_{rate} を販売します。

この場合、この期間中に販売された X の合計量は tx_{rate} = x_{in}、この期間中に販売された Y の合計量は ty_{rate}=y_{in} となります。

期間の開始時に埋め込まれた AMM リザーブをそれぞれ x_{ammStart} および y_{ammStart} と表します。

3.2 計算式

すべての仮想トランザクションを処理した後、組み込み AMM は次のように準備資産 X を取得します。

で

定数積の式から、次のことがわかります。

X を販売するプールは、埋め込み AMM に表示されないすべての Y を取得します。つまり、

副題

潜在的な攻撃ベクトル

1.サンドイッチ攻撃

1.1 説明

サンドイッチ攻撃では、攻撃者のアティカスは、トレーダーのトレイが AMM で取引しようとしていることに気づきました。アティカスはトレイの注文を挟んで2つの注文を送ることで利益を得た。

Trey が USDC で ETH を購入する注文を AMM に送信し、この時点で Atticus が注文を発見したため、Atticus が Trey より先に注文を出し、AMM で ETH を購入し、価格が上昇したと想像してください。 Atticus は AMM に支払いを行っており、価格に影響を与えているため、この注文で損失を被っています。

トレイの注文が約定されると、アティカスが価格をつり上げたため、トレイはより高い価格でETHを購入する必要があり、このときトレイの実際の注文価格はさらに押し上げられました。

現在、Atticus は自分の ETH を AMM に売り戻しています。トレイは AMM を購入して以来、AMM の価格をつり上げているため、実際には購入した価格よりも高い価格で販売しているため、利益を得ることができます。

ただし、アティカスにとってこの攻撃は、トレイが購入直後に自分の ETH を AMM に売り戻すことをアティカスが保証できる場合にのみ意味を持ちます。このタイプの攻撃は、Atticus がマイナーである場合、マイナーと取引を行っている場合、または特定のブロック内で Flashbot などのサービスを使用している場合に実際に発生する可能性があります。

1.2 サンドイッチ順序と仮想順序

一見したところ、仮想注文は、誰もが注文が来ることを知っているため、特にサンドイッチ攻撃に対して脆弱であるように見えます。

ただし、一定数のブロック間で実行されるため、順序は保持されます。 TWAMM を「クリップ」したいダミー注文の攻撃者は、ブロックの最後に埋め込まれた AMM を使って取引する必要があり、これによりダミー注文がブロック間で悪い価格で約定され、次のブロック取引で開始されることになります。反対方向に。

現時点では、攻撃者が特定のブロックの最後でのみトランザクションを実行することを保証する方法はありません。攻撃は、次のブロックの先頭でトランザクションを実行する必要があるという前提でのみ実行できるためです。最大抽出可能価値 (MEV) の複数のブロックがより一般的になり、トレーダーが複数のブロックに挟まれるようになると、問題はさらに深刻になる可能性があります。

2 情報開示

TWAMM で長期トレーダーが遭遇する可能性のある最大のトレードオフは、「公開された」注文を行う際に情報漏洩のリスクに直面することですが、イーサリアムの性質上、これを避けるのは困難です。

トレーダーが十分な規模のスタンディング注文を出した場合、他のトレーダーはそのトレーダーに代わってTWAMMに組み込まれたAMMやその他の場所で資産を購入し、スタンディング注文Zhebinが価格を押し上げたので後でそれを取引所に売り戻すことを望むかもしれません。 。

ユーザーはいつでもスタンディング注文をキャンセルできるため、大規模な注文を行う過度に攻撃的なトレーダーが他のトレーダーに悪用されることが予想されるため、情報漏洩の全体的な影響を制御する必要があります。

2.1 例

詐欺師のサリーが TWAMM で積極的に先手を打つチャンスに気づいたと想像してください。この時点で、彼女は流動性アグリゲーターから 100 万ドルの ETH を購入することができ、その結果、市場全体の価格が上昇しました。その後、彼女は TWAMM に大規模な長期注文を出し、次の 24 時間でブロックごとに 100,000 ドルの ETH を購入することができます。

副題

Python リファレンス実装

ここここTWAMM の Python リファレンス実装を確認してください。

GitHub 上でJupyter Notebook 複数のキャンセルされたスタンディング注文と裁定取引者の操作動作を含む TWAMM の動作を示します。

結論は

結論は

TWAMM の設計フレームワークの概要を説明しましたが、私たちの作業はまだ始まったばかりです。

この問題または同様の問題の解決に興味がある場合は、電子メールまたは Twitter の DM で Uniswap Labs にお問い合わせください。

ETH
Uniswap
Odaily公式コミュニティへの参加を歓迎します
購読グループ:
https://t.me/Odaily_News
チャットグループ:
https://t.me/Odaily_GoldenApe
公式アカウント:
https://twitter.com/OdailyChina