Uniswap
概要
DEX
オーダーブックなし、プールされたトークンと交換するタイプ
誰でもトークンをプールして流動性を提供できる
Constant Product Market Maker Model
EF Grant Wave 3 $100k
Vyperで実装
Constant Product Market Maker Model
https://gyazo.com/23db292b95b6063cdff85002ea6f5404
二種類のトークンX, Yにつき、そのプール量を$ x,$ yとしてこれらの積を一定に保つ
すなわち、定数$ kを用いて、
$ x*y=k
微小量の取引について
$ (x + dx) * (y + dy) =k
トークンY建てでのXの価格は、
$ P = |dy/dx| = |-k/x^2|=k/x^2 = y^2/k = y/x(元の比)
例: YがETH, XがOMGなど, YでXを買うとき
Yのプール量の2乗に比例
取引のたびに価格が変化する
歴史
2016年ころGnosisのMartin Köppelmannが提案したらしい
Uniswapの人もこのスレに登場
https://gyazo.com/b21934316f8537be7a1b3496dd108d70
他DEXとの比較
プールされたトークンと交換するタイプのDEXとの比較
Bancor Networkとの比較
共通点
価格、トークン量の関係が事前にモデル化されている
違い: モデルが違う
Bancorで2種類のトークン$ (i, j)をコネクタートークンとしたときと比較
トークン$ j建てでの$ iの価格をトークン$ jのプール量で表すと、
$ P'_j / P'_i = {S'}^{1/F_j - 1/F_i} = {R'_j}^{1 - F_j/F_i}
ただし$ P_iは合体トークンのトークンi建てでの価格、$ Sが合体トークンの供給量、$ R_iはトークンiのプール量、ダッシュ($ ')をつけて初期値からの比をあらわす
トークンのプール量の積は当然一定ではない
Bancorではそれぞれの固定準備率として二つのパラメタがあるが、Uniswapでは$ k一つしかない
その他の違い
Bancorでは手数料などの流動性提供のインセンティブはない
Bancorの運営元はBNTトークンでICOして大量のBNTを保有しているため、BNTで流動性提供してユーティリティトークンとして値段を上げるインセンティブがある
プロトコル自体は分散的だが、この経済的構造はBancor運営への依存度を高めている
注意: Bancorのスマートトークンとの比較ではない
トークン発行まで兼ねる物ではなく、流動性リスクがなくなるとかはない
Kyberとの比較
共通点
手数料インセンティブによりプール提供者を集める
違い
交換比率(価格)は数式により決まっている、Kyberのようにプール提供者が自由に決めるわけではない
Uniswapは独自トークンとかはない
フロントランニング
Bancorと同じフロントランニングの課題を引き継ぐ
Uniswapには交換レートの条件、deadlineなどの定石の仕組みはある
(仮想的に)二つのプールを用意し、同一ブロックにおいては売りと買いで分け、ブロック毎に清算する
ブロックN-1でトークンYの価格がPのとき、ブロックNでは、買い注文は買い注文だけでまとめられPから値段が上がっていき、一方売り注文はまとめてPから下がっていく
ブロックN+1で整合性を取るため、交換して得られるトークン量は、単純に価格がPの時のx, yから積分して得られるものではない(はず)
なぜこれで防がれるか
従来だと1つのブロックに自分の(先回りした)買いと売りを入れればよかった、つまりブロック生成 ⇔ フロントランニング成功、ノーリスクだったが、2つのブロックにまたがる必要が出る、つまり、先回り買いを含む1つのブロック生成できた時点では成功ではなく、次のブロックになんとかして売りを入れる必要が出てしまう
nrryuya.icon > マイニングを使ったフロントランニングは本質的には、トランザクション処理のアトミック性に起因しているが、シンプルにそれを使えなくするアプローチ
清算する期間は1ブロックよりさらに長くすることも可能
クジラ投資家向けではないこと、急な価格下落時に大きなアービトラージチャンスが生まれてしまうことは認めている
設計
createExchange()で誰でも新しいERC20トークンの取引プールを解説できる
実際にはExchangeコントラクトのデプロイ
基本はERC20トークンとETHの組み合わせ
ERC20 to ERC20の場合は、ETHを経由する
https://gyazo.com/144e7fa825b204c8f3a8094bc43df603
ほかのDEXに比べてGAS代が安い(工夫しているらしい)
https://gyazo.com/1a36d3464379b9a0ebe8547d8a16bb97
実装
Vyperだぞ!!!!!!
Vyper界隈で盛り上がり
Vyperで実装された初の本番稼働プロダクト!?
yudetamago.icon > productionレベルのVyper実装あるの嬉しい nrryuya.icon > うむ!
tomoaki.icon > v2はsolidity
フロントエンドも丁寧に作ってある、使いやすい!
Runtime VerificationによるFormal Verification
gas costなどを除いたバイトコードの検証
加えて、Constant Product Market Maker Modelの数学的形式化と丸め誤差の議論 pdf 参考