Uniswap(ユニスワップ)とは?Ethereum上で最大の取引高を誇るDEX概説

Uniswap(ユニスワップ)とは?Ethereum上で最大の取引高を誇るDEX概説

はじめに

様々なトークンが流通するEthereum上では、トークンスワッププロトコルが重要な役割を担っています。本記事で紹介する「Uniswap」(ユニスワップ)は、高い透明性と検閲耐性を備えたEthereum上のDEX(Decentralized Exchange)プロトコルです。

今回はEthereum上のDEXとして大きな存在感を示すUniswapの概要や仕組み、2020年第2四半期に予定されているUniswap V2へのアップグレードについて紹介していきます。

Uniswap(ユニスワップ)とは?

Uniswapは、Ethereum上でEther(ETH)やERC20トークンを交換するためのプロトコルです。トークンスワップは、流動性プールとして機能するコントラクトアドレスで行われています。なお、流動性とはアセットの交換しやすさのことです。

Uniswapはオープンソースで開発が進められており、出資企業やファンド、株主やトークン保有者が存在しません。したがって、分散度合いが高いDEXプロトコルだと評価できます。

Ethereum上でもっとも使われているDEX

Uniswapがローンチされた2018年11月当時、Ethereum上のDEXとしてはすでに「Kyber」や「0x」などがありましたが、Uniswapは後発でありながらも、もっともトランザクションが多いDEXとなっています(2020年4月27日現在)。

例えば、2020年4月20〜27日の期間では、イーサリアム上のDEXで発生したトランザクションのうち、およそ半分がUniswapのものでした。

https://etherscan.io/stat/dextracker?range=7

また、一時的な急落はあるものの、コントラクトにロックされたETHの量も着実に増えており、2020年4月27日の時点で約10.7万ETHがロックされています。これはEthereum上のDEXとしてはもっとも多く、DeFi(Decentralized Finance)系アプリ全体でも4番目に大きな数値です。

https://defipulse.com/uniswap

Uniswapの活用事例

当然ながら、Uniswapプロトコルのユースケースは「Uniswap Exchange」のようなDEXですが、ほかのDEXと接続して流動性プロバイダーとしても機能しています。例えば、DEXプロトコルの「Kyber」とは流動性を共有しており、アプリケーション側はKyberに接続すれば、そのユーザーはUniswapの流動性も含めたベストレートでのトークンスワップが可能です。

その他にも、Uniswapを活用したプロジェクトとしては「RealT」があります。RealTは、不動産をトークン化してパブリックチェーンのEthereum上で発行する企業であり、発行されたトークン「Real Token」はUniswap上でトレード可能です。なお、RealTに関しては、別の記事で紹介しています。

Uniswap V1の仕組み

Uniswapでは流動性プール(コントラクトアドレス)に対して、不特定多数の参加者がETHとERC20のペアをリザーブとしてデポジット可能です。流動性プールにリザーブを提供する主体は「liquidity providers」と呼ばれています。

ペアには必ずETHが含まれているため、UniswapではETHがブリッジ通貨の役割を果たしています。

例えば、DAIとUSDCをUniswapで交換したい場合、アプリのインターフェイス上では直接スワップしているように見えても、実際にはDAI⇔ETH⇔USDCという風に、2ペア分の交換が行われているのです。

https://uniswap.org/blog/uniswap-v2/

Uniswapの交換レート決定モデル

Uniswapでは流動性プールにデポジットされている2種類のトークンの量の積が、常に一定となるように交換レートが決定されています。

ある流動性プールにデポジットされているトークンAとトークンBがあり、それぞれの量をa、bとして、aとbの積を定数Cとすると、常にC=a×bが成り立つように調整されているのです。

例えば、ETHのリザーブが10ETHで、OMGというERC20トークンのリザーブが500OMGだったとしましょう。この流動性プールの定数Cは、C=10×500=5000となります。ある買い手がこのプールで1ETHをOMGへ交換したい場合、以下のようなプロセスでETH/OMGの交換レートが算出されます。

  1. ETHリザーブ10ETH・OMGリザーブ500OMGの流動性プールに1ETHを送る
  2. ETHのリザーブが11ETHに増える
  3. 定数C=5000になるようにOMGの数量が調整される(C=5000となるようなOMG=5000÷11=454.5)
  4. 45.5 OMG(500-454.5=45.5)が買い手に送られる(つまり、1ETH=45.5 OMG)

https://hackmd.io/C-DvwDSfSxuh-Gd4WKE_ig#ETH-%E2%87%84-ERC20-Trades

なお、ここでは単純化するために、liquidity providersへの手数料0.3%は考慮していません。実際には、買い手が1ETHを流動性プールへ送る際に、手数料分の0.003ETHが差し引かれます。したがって、プールに送られるEtherの量は0.997ETHです。

手数料分の0.003ETHは、最終的にliquidity providersに分配されますが、コントラクトアドレスから引き出さない限りは、流動性プールに貯まっていきます。したがって、流動性プールのトークン量の積は微増し、交換レートが変動することになるのです。

また、ERC20同士をスワップしたい場合は、ETHを介して交換が行われます。例えば、ABCトークンとXYZトークンを交換する際のフローは以下の通りです。

  1. 買い手はABCトークンと受け取り用のXYZアドレスを、ABC⇔ETHコントラクトアドレスに送る
  2. ABC⇔ETHコントラクトからXYZ⇔ETHコントラクトへ、ETHと買い手のXYZアドレスが送られる
  3. XYZ⇔ETHコントラクトから、買い手のXYZアドレス宛にXYZトークンが送られる

https://hackmd.io/C-DvwDSfSxuh-Gd4WKE_ig#ERC20-%E2%87%84-ERC20-Trades

以上のように、基本的にはETHがブリッジとなってトークンの交換が行われており、交換レートは与えられた数式によって自動的に算出されています。

KyberやBancorとのざっくり比較

流動性プールを活用するDEXは、Uniswap以外にも「Kyber」や「Bancor Protocol」などがあります。両者はUniswapよりも先に発表されたプロトコルであり、UniswapはKyberやBancorを参考にしたはずです。

KyberとUniswapの比較

まず、KyberとUniswapの共通点は、流動性の提供者に対して手数料収入のインセンティブを設定している点です。

一方で相違点としては、Uniswapには独自トークンが無いことやトークンの交換レートが数式によって決定される点、流動性プロバイダーに誰でもなれる点だと言えるでしょう。Kyberには独自トークンKNCがあり、流動性プロバイダーになれる主体は限られています。

Bancor ProtocolとUniswapの比較

BancorとUniswapは、トークンの交換レートが事前に数式で与えられている点が共通しています。ただし、価格決定モデルは異なります。

一方で、Bancorには独自トークンBNTが存在します。また、Bancorには、Uniswapにおける手数料収入のような流動性を提供するインセンティブが設けられていません。

Uniswap V2概要

Uniswapは、2020年第2四半期にUniswap V2へのアップグレードを予定しています。本記事の最後に、概要を簡単に紹介しておきましょう。

ERC20とERC20のペアが可能に

V1ではデポジットできるのはETHとERC20のペアでしたが、V2はERC20とERC20のペアをデポジットできるようになります。V1ではERC20同士のスワップに2ペア分の手数料が発生していましたが、V2では手数料が1ペア分で済むのです。

https://uniswap.org/blog/uniswap-v2/#erc20–erc20-pairs

さらに、RouterContractという仕組みによって、直接ペアが提供されていないERC20同士であっても複数のペアを経由することで、交換できるようになります。

https://uniswap.org/blog/uniswap-v2/#erc20–erc20-pairs

Price Oracles

V2の新しい機能として、オンチェーン上のデータを基としてトークン価格が提供するPrice Oracleが追加されました。オンチェーンに記録された価格データを使うため、攻撃者の不正コストが高く、価格操作やデータ改ざんに強い設計となっています。

参考:Price Oracles

Flash Swaps

Uniswap V2では、無担保でERC20を引き出して、好きな用途に使うことが出来ます。例えば、UniswapでDAIを調達して使いたい場合、V1では最初にETHをプールに送る必要がありました。

一方のV2では、最終的に使ったDAIと同額のETHを流動性プールに返却すれば、無担保でトークンを引き出して利用できるのです。なお、ETHが返却されなかった場合は、DAIを引き出すトランザクション自体が無かったことになります。

https://uniswap.org/blog/uniswap-v2/#flash-swaps

上記のほかにもいくつか変更点があり、例えばV1はVyperで実装されていましたが、V2はSolidityが採用されています。その他、V2の詳細は以下の記事をご覧ください。

参考:Uniswap V2Uniswap Documentation

まとめ

Uniswapは、比較的新しいプロジェクトでありながらも、ロックされているETHの額やトランザクション数が多く、Ethereum上でもっとも使われているDEXへと成長しています。オープンソースであり、株主やトークンホルダーもいないため、分散性が高い点も特徴的であると言えるでしょう。RealTのように、Uniswapを活用する企業が現れている点も見逃せません。

今後は、2020年第2四半期に予定されているV2へのアップグレードによって、機能が追加されていくため、新たなユースケースに要注目です。

製造業におけるブロックチェーン活用方法とは?

CTA-IMAGE 【ホワイトペーパー】製造業における業務変革をテーマに、業界の課題に対してブロックチェーンを活用する方法を紹介します。

ブロックチェーンカテゴリの最新記事