How to determine value in Uniswap v3

※本記事はDefi Japan様の動画を参考にしており、動画内で使用されていた画像を使用しています。

uniswap v2の価格決定方法は?

 Uniswapとは、あるトークンを別のトークンに変換できるDex(Decentralized Exchanges)です。本記事では、このサービスの根幹のである2つのトークンの相対的な価値の決定方法について解説していこうと思います。

 現在運用されているのはv3ですが、まずはv2の価格決定方法から説明させていただきます。v2での価格決定方法はとても単純で、スマートコントラクトにプールされているトークンの総量で割ったものになります。

 数式で表すと、トークンA,Bのそれぞれの総量をa,bとするとトークンAに対するトークンBの価値xはx = b / a となります。

 具体的な数値を入れてみましょう。ETHとUSDTのプールされている総量がそれぞれ10,100トークンだったとするとETHに対するUSDTの価値xは100 / 10 = 10となります。この数字が表すのは、1ETHと10USDTが等しい価値だということです。

 これがv2での価値決定の方法となります。何も問題はないように思えます。しかしv3が出ているということは何かしら問題があったということですが、何が問題なのでしょうか?

 その問題とは、スマートコントラクトにプールされているトークンのほとんどが直接取引に使われていないということです。下の図のように数%しか実際の取引に使われていないのです。

post image

 ではその使われていないほとんどのトークンは意味のないものなのでしょうか?そうではありません。これらがあるおかげで、トークンの価値が安定するのです。

 例えば、先ほどの例を挙げると10ETH,100USDTがスマートコントラクトにプールされているとして、ユーザーが5ETHをプールして50USDTをユーザーにswapしたとします。swap後のスマートコントラクトには15ETH,50USDTが残ることになります。この時のETHに対するUSDTの価値は50 / 15 = 3.33… となります。

 最初は10だったので-5.677…の変化が起こったことになります。こんなに変動があると困りますよね。

 では100万ETH,1000万USDTがスマートコントラクトにプールされているとして先ほどと同じようなswapが起こったとしましょう。このときプールされているトークンの数はほとんど変化しないのでETHに対するUSDTの価値はほぼ10となり変動がほとんどない状態を保てます。

 これが使われていないながら間接的にswapの安定性に寄与してくれるトークンの役割です。

 しかし、これでは資金効率が悪くなってしまします。これを解決しているのがv3です。次の章でv3について詳しくみていきましょう!

Uniswap v3の価格決定方法

 ここまででv2の概要とその弱点を解説してきました。

 v3ではその弱点をどのように解決しているのでしょうか?答えは下の図です。

post image

 これまで取引に使われていた割合の部分は現実でプールしてある分のトークン量であり、それ以外の大部分は仮想的にプールしてあるとしてあるものとしているのです!

 これによって、

 ①実際にプールしてあるトークン全てが取引に使われるようにできる

 ②より価値を安定させることができる

 の二つを実現しているのです。もし実際にプールしているトークンがなくなってしまったらどうするのかと思う方もいると思いますが、そのような状況になる前に取引は止められるようになるようです。

 また、これまでの取引実績を見てみるとある一定の幅から価値が変動することはほとんどなかったそうです。そのような前提があるからこのような仮想的なトークンのプールを実現できたのですね。

まとめ

 ここまでで説明したように、v2で課題となっていた取引に使用しないトークンの活用を仮想的なトークンによって解決したのがv3です。

 このようにプログラミングだけでなくDEXのシステム全体、一つの経済を実現させられるところもweb3の楽しいところですね。

 筆者がこのUniswapを調べたきっかけはswap機能を備えた送金アプリ作成の教材を作ることでした。このアプリにはv2の考え方を活用させているのでぜひチャレンジしてみてください!