BlockBaseのエンジニアの@suhara_pontaです
先日BlockBaseのdiscordでPancakeSwapの勉強会を開催しました。この記事から数回に渡ってその内容をまとめていきたいと思います。
DEX(分散型取引所)の歴史
暗号資産の取引所はCEX(中央集権型取引所)とDEX(分散型取引所)に分類できます。
スマートコントラクトを用いて、ユーザーが秘密鍵を自分で管理したまま取引を行えるのがDEXです。
初期(2017~18年くらい)のDEXの例として0xやKyber Networkなどがあります。この頃のDEXはCEXと同様、Order Book方式を採用していました(現在はAMMに移行したりしています)。希望者が購入と売却のオーダーをそれぞれ作成してマッチすると取引が成立する方式です。
(出典 https://thecontrol.co/a-comparison-of-decentralized-exchange-designs-1deef249f56a)
これらのプロトコルが抱えていた問題点として、DEXは流動性が低く、なかなか取引が成立しない点にありました。
UniswapはAMM(automated market maker) という仕組みを生み出し、現時点ではこの課題を解決していると言えます。
AMMについて
UniswapのAMMの仕組みについて見ていきます。
https://uniswap.org/docs/v2/protocol-overview/how-uniswap-works/
AMMでは流動性提供という概念があります。LP Providor(流動性提供者)は特定の通貨どうしのペアからなるLiquidity Pool(流動性プール、以下LP)というものを作ります。
このLPはx * y = k
という式で端的に表されます。
例としてDAIとETHのペアを考えます。xはDAIの量、yはETHの量を表します。
LP Providerが100DAIと1ETHのペアをPoolに追加するとK = 100 * 1
で100になります。(このとき後述するLPトークンというものをLP Providerは手に入れます。)
ここに100DAIをETHに交換したい人がやってきます。LPに100DAIを追加すると、x = 200DAI
になりますが、このときk = 100
を維持するようにyの量が 100 / 200DAI = 0.5ETH
に変化します。100DAIをETHに変換したい人は、元々LPの中にあった1ETHから変化後の0.5ETHの差額 1ETH - 0.5ETH = 0.5ETH
を得ることができます。
ここに0.3%の取引手数料が加わります。実際には0.5ETHを入手するためには100.3DAIをswapする必要があるということです。取引が行われるごとにkが少しずつ増えていきます。
最後にLP ProviderがLPの資金を引き上げます。前述したLPトークンをバーンして、DAIとETHを入手します。このとき返還されるのは元の100DAI + 1 ETHではなく、現在LPにある200.3DAI + 0.5ETHです。
図の例ではLP Providerは一人だけですが、実際には不特定多数が金利収入を得るために流動性を提供します。このとき自分がLPにいくら流動性を提供したかを示すのがLPトークンです。LPトークンの保有割合に応じたトークンが返還されます。
DeFiでよく聞くimpermanent lossというのは、この100DAI + 1ETHが 200.3DAI + 0.5ETHに変化することで、損失が起きていることを指します。増加した100.3DAIより減少した0.5ETHのほうが価値が大きい場合、損失が起きています。DeFiの高金利の裏にはこのリスクがあることを理解してください。
さらに各プロトコルは独自のガバナンストークンを発行したり、LPトークン自体をステーキングしてトークンを稼ぐ方法を提示したりなどして、利率を引き上げユーザーを獲得しようと競争していますが、Qiitaにふさわしくない内容になってくるのでここでは割愛します笑
まとめ
- DEXの低い流動性という課題をAMMが解決した
- AMMは提供されている流動性が
x*y=k
で維持されるようにswap時のレートが決まる
以上、AMMについて解説しました。
次の記事ではUniswapの仕組みをBinance Smart Chain上に持ち込んだPancakeSwapのコントラクトを概観します。