DEXプロジェクトの比較/俯瞰
Note
こちらのページでは会員制のリサーチコミュニティ「TokenLab」で18年8月21日に公開したものを無料公開しています。
Decentralized Exchange、通称DEXについて書いていきます。構成としては、なぜDEXが必要なのかを書いた後、各DEXプロジェクトの「仕組み」・「トークンの役割」・「メリット」・「現状の課題」を書きます。最後に筆者の意見を書いていきます。
(後述しますが、厳密に言えば、DEXは第三者を信頼することなくトラストレスにトークンを交換する「仕組み」と考えているため、必ずしも「取引所」と呼ぶのが適切ではないと思っています。しかし、ここでは説明の便宜上、Etherdeltaのような取引所をDEXと思って頂いて問題ありません。)
DEXが必要である理由・CEXの欠点
2018年3月現在、暗号通貨における取引の大半は、運営主体がいる取引所を介して行われています。日本ではBitFlyerやZaif、Coincheckなどがあります。これらは法人が運営主体となり、取引所の意思決定において中央集権的な手法を用いることから、Centralized Exchangesと呼ばれ、CEXと略されることがあります。
このCEXの特徴としては、「ユーザが暗号通貨・トークンを交換し得る」巨額の量の通貨・トークンを所有しており、ユーザが取引をする際は、この取引所に通貨を「預け入れる」必要があります。
預け入れをもっと正確に書くとすれば、ユーザが保持するのウォレットから、取引所が保持するウォレットへ資産を送り、取引所ではそのユーザのデータベース上の残高を更新します。そして資産自体は、取引所が保持する形になります。
つまり取引所を完全にトラスト(信頼)する必要がでてくるため、万が一この取引所が保持している資産を持ち逃げしたり、ハッカーが取引所の保持する秘密鍵を入手し別のアカウントに送金された際には、預けた通貨はユーザの許可なく送られ、もう戻ってこないという結末に至ります。
さらにあげるとすれば、単一障害点が存在するので、アクセス集中やDDoS攻撃などによって、ブロックチェーンではなく取引所のサーバがダウンし、取引ができない可能性もあります。
以上がトレーディング・取引という文脈で考えたときのCEXのデメリットといえますが、もちろんCEXにはメリットもあります。それは、買い注文・売り注文などのオーダー時にブロックチェーンを使わないため、取引が速く、現代のシステムに慣れた人間に使いやすいという利点があります。またサポート体制が整っていればそういったサービスを受けられる点もメリットと言えるでしょう。
DEXのメリット・デメリット
上記のCEXに対して、運営主体の会社が存在せず、スマートコントラクト(プログラム)で実行される取引所をDecentralized Exchange(DEX)と呼びます。ここでは資産は常にユーザが持っていることになります。
交換の際は、ウォレットから直接スマートコントラクトにトークンを送りデポジットされるため、第三者に通貨を預ける必要なく(トラストレスに)、取引を実施することができます。たとえDEXが消えても(コントラクトが壊れても)秘密鍵さえ持っていればトークンはブロックチェーン上に残ります。
しかし既存のDEXは多くの欠点を持ちます。
- 高い
- 遅い
- 流動性
- フロントランニング問題
- オーダーブックあり
- EtherDelta
- 0x Project
- オーダーブックなし
- AirSwap
- Kybernetwork
- Bancor
- Gnosis DutchX
- Republic Protocol
- OmiseGo DEX
- その他Ethereum系以外
- Waves
- Komodo
- NEX
- Aragon
- Auctus
- Augur
- b0x
- Blocknet
- ChronoBank
- Dharma
- District0x
- dYdX
- EasyTrade
- Ethix
- Lendroid
- Maker
- MelonPort
- OpenANX
- Request Network
- Amadeus
- DDEX
- Dextroid
- ERC dEX
- Ethfinex
- IDT Exchange
- MobiDex
- OpenRelay
- Paradex
- RadarRelay
- SharkRelay
- The 0cean
- Token Jar
- CW = 100%
- CW = 50%
- CW = 10%
- CW = 90%
- スマートトークンAを買うとき
- スマートトークンAを売るとき
欠点としては、CEXとくらべて、ユーザのコストが高く、さらに遅いといえます。買い注文・売り注文(オーダーブック)やキャンセルなど、すべてブロックチェーン上で行われるため、ブロックチェーンを使うための手数料が必要になる(EthereumならGasが必要になる)からです。
さらにすべてブロックチェーンで処理をするということは、ブロックの承認時間が必要なので、オフチェーンと比べるとどうしても時間がかかります。
上記のような課題から使用者が少なく、流動性が低くなり、より利用のインセンティブを下げています。流動性のない市場だとスプレッドが広くなってしまい、高くついたり、ボラティリティが高かったり、そもそも交換すらできないという可能性と隣合わせです。そもそもDEXの取引量は暗号通貨全体の1%に満たないようです。
フロントランニング問題とは、取引情報を見た第三者がそれを悪用することを言います。このフロントランニングは、一般的に証券会社では違法とされていますが、似たようなことが暗号通貨の世界でも起きてしまっています。
ブロックチェーンの世界では、2つ種類があるといえます。
-
a) 他の市場参加者によるフロントランニング
b) マイナーによるフロントランニング
a) は、トランザクションを見た他のトレーダーが、まったく同じ注文を作り、より
高いGasを設定し、先に割り込むというものです。先回りされた人の注文はキャンセ
ルされGasだけが消費するなどの嫌がらせを受けます。
b) は、より高度でマイナーが自分の利益のために、トランザクションを操作する
ものです。
b)の問題は厄介なことにマイナーが利益をあげ、被害者は不利益を被ることになり
ます。具体例で見てみましょう。
①.例えばAさんが、あるコインAを100ETH分を買おうとトランザクションを出し
ます。このときコインAは100枚分買えるとします。(つまり1ETHで、1コインAが
買えるレート)
②.そのトランザクションを見たマイナーは、それよりも高いGasを設定し、先に
100ETH分のコインAを買います。マイナーは100コインAゲットし、買われたコイン
Aは少し高騰し、1ETHで0.9コインAしか買えないレートになります。
③.そこでマイナーはコインAを100ETHで買おうとしたトランザクションを通しま
す。(他にGasの高いトランザクションを無視してでもこのトランザクションを選び
ます)100ETH分なので、この時点のレートでいけば、100ETHで90コインAを買う
注文になります。
④.そこでマイナーは先程手に入れたコインAのうち90枚を売りに出し、上の注文
とぶつけます。
結果として、このマイナーには、100ETHが戻ってきて、コインAが10枚残っている
ので、その分だけ得することになるのです。そしてAさんはトランザクションの中身
を見られたことにより、より悪いレートで交換をさせられてしまっているのです
話をシンプルにしていますが、これがフロントランニング問題の1例です。
既存のDEXではこのようなことが可能になっています。
前置きが長くなりましたが、上記のような既存CEXの課題を解決し、かつ既存DEXの課題を解決する、新しいDEX(およびDEXプロトコル)を開発しているプロジェクトを紹介します。
以下のように多数のプロジェクトがありますが、今回はEthereum上のプロジェクトに絞り、かつ相対的に開発が進んでいるプロジェクトを説明していきます。
(太字を取り上げました。)
プロジェクト一覧
etc...
各プロジェクト
0x project
0xは、取引所そのものではなく、他のプロトコルと組み合わせてDEXを作る基盤・プロトコルであって、材料と思ってもらってよいでしょう。いかなるERC20のトークンもこのプロトコル上で交換ができるようになっています。
メリットを結論から書くと、買い注文と売り注文を "オフチェーン" でマッチングさせ、最終的な結果のみをブロックチェーンに刻むため、上で書いた従来のDEXよりも安くて速く、かつCEXよりも安全(トラストレス)に取引を実行できるようになっています。
仕組み
どう実現しているか、という話ですが、0xプロトコルを使うと、サードパーティたちが "取引所のように振る舞う" ことができます。この取引所のようなものを、「リレイヤー」と呼び、現在代表的なのが、Radar Relayです。
見た目は従来の取引所ですが、実際の取引実行はせず、リレイヤー同士がオフチェーンでメッセージを送り、注文をマッチングさせる役割をします。その名の通り注文をリレーしています。仮に、
・Aというリレイヤーが提供するプラットフォーム(取引所のような見た目)で1Cofeetimesトークン=1ETHで「買いたい人」がいて、
・Bというリレイヤーが提供するプラットフォーム(取引所のような見た目)で1Cofeetimesトークン=1ETHで「売りたい人」がいたとき、
AとB異なるリレイヤーであっても、0xを使ったリレイヤーであれば、それらの注文がマッチされ、0xのスマートコントラクトによってトークンの交換が実行されます。つまりリレイヤーはオーダーを共有するため、リレイヤーが増えていくにつれ流動性が上がっていきます。
このリレイヤーがその仕事をするインセンティブはというと、ユーザの取引の手数料でZRXというトークンが集められるからです。この手数料のZRX量は、リレイヤーが自由に決めることができます。
Dappsへの利用
トラストレスなトレードをしたいのは何も個人だけではありません。多数のトークンを使う分散型アプリ(Dapps)も、必要になるはずです。
そして上記のオーダープールは分散型アプリ(Dapps)とも共有することができます。
つまりネットワーク効果が発生し、プロトコルを必要として採用するプレイヤーが増えるほど、流動性を生み出しさらに採用するプレイヤーが増えるという循環を生みます。
(これが、最初に括弧書きで書いた、必ずしもDEXは従来の「取引所」が適切ではない、と書いた理由です。)例えば、分散予測市場のアプリは様々なトークンを利用しますが、オープンな0xのスマートコントラクトを使うことができます。その他にも今、0xを使っている、もしくは使う予定のアプリケーション(Dapps)は以下があります。
ちなみに、0xのリレイヤー(予定も含む)は現状以下があります。
また0x Trackerで0x上の取引高を見ることができます。2018.1.9に、一日$13mil(約13億円)の取引高になって以降、最近は落ち着き、平均して一日に$40万(約4000万円)程度の取引高のようです。
リレイヤーは同じ流動性が利用でき、トークンを保持しないため、これまで参入障壁であった流動性不足による低い収益性や、ハッキングリスクを避けられます。よって今後も独自の特色を持ったリレイヤーが生まれてくると予想され、より使いやすい形になっていくと感じます。
リレイヤーを介さないP2Pトレード
また0xチームは、慣れている人向けに、「リレイヤーを介さない個人間取引のプラットフォーム」をすでに作っています。例えば支払いなどで、すでに交換する相手が決まっていて、それでも信頼のおけない相手との交換(ビジネスのシーンなど)に使えます。
多くのトークンが登録されていますが、載っていなくても、ERC20トークンであれば、自分で簡単に追加することができます。
ZRXトークン
先程、ZRXはリレーヤーの手数料と説明しましたが、1番の目的はガバナンス用途になっています。0xはプロトコルですから、それを使う人にとって利益があるようなアップデート実施などの意思決定に参加することができます。トークンを投票するのかなど具体的なことはまだ定義されていませんが、分散型ガバナンスシステムを使う前提で、Aragonと実験も行っています。
ちなみに、0xのリレーヤー手数料をETHでなくZRXにした理由は、「ZRXの目的はプロトコルアップデート等のガバナンスだが、エコシステムを構成する要素2つ(リレーヤーとそれを使うユーザ)のうち、片方に偏る設計すると、分裂しやすくなる。少し多くユーザにZRXが分散されるように手数料として導入した」とCo-founderが言っています。
課題
課題として以下があげられます。
・フロントランニング問題
・リレーヤーのための機能整備
オーダーブックが公開されて誰でも中身を見れてしまう状況のため、フロントランニング問題を解決できていないという課題があります。こちらについては様々な手法が考えられており、取引をする人のParameterを取得し、ホワイトリストを作るだったり、Smart Contractを必ず通るようにしてチェックするなど提案がされていますが、UX・UIとトレードオフもあり、今まさに議論されているところです。
またそもそもリレーヤーがいないとエコシステムが成り立たないため、リレーヤーにとって使いやすく、また低コストで運用できるAPIなどの開発が必要です。
現在もNon Fungible Token(ERC721)をサポートなどのバージョンアップ(Ver2)が進められています。
0xまとめ
・オフチェーンのマッチング、オンチェーンのsettlement(最終決定)によって、速く安く、トラストレス
・リレイヤーによる流動性のシェア
・いかなるトークン同士でも(従来の取引所のようにETHとの交換でなくても)リレイヤーの設計次第で交換が可能
・Dapps向けのオープンなプロトコル
・WETHが必要(※)
※補足:WETHについて
このあとのプロジェクトでも登場しますので、ここで補足をさせていただきます。0xでは、ERC20と言われる規格のトークンを交換することができます。(現状、Ethereum上のトークンのほとんどがERC20のトークンです)。しかしETHは、ERC20の規格ができる前から存在する基軸トークンなので、ERC20ではありません。
すると0xなどのプロトコルでETHを交換できなくなってしまうため、Wrapped ETH(WETH)というものが生まれました。名前の通り、ラッピングしてETHをERC20として扱うというものです。こちらのサイトの以下の画像がわかりやすいと思います。
こうすることで、実質的にETHと、すべてのERC20のトークンを、0xプロトコル上のDEXで交換することができます。ETH→WETHに変換、もしくはWETH→ETHに変換は、0xのポータルページで実行できます。
現在、WETHへの変換を自動的に行う機能が開発がされているので、将来的には意識されなくなる予定です。
Gnosis DutchX
2018年2Qにローンチを予定している、ERC20のトークンを交換できる、ダッチオークション式のDEXです。Gnosisといえば、分散予測市場のプラットフォームとして有名ですが、交換の仕組みも考えています。このDEXの強みは、フェアな価格設定がされることとフロントランニング問題が起こらないことです。
ダッチオークションの仕組み
特徴はダッチオークション方式を取っており、通常のオークションとは逆に値段が時間とともに下がっていく方式でトークンを売っていくプラットフォームです。
トークンを売りたい人は、トークンをコントラクトに送信すると、デポジットされますが、その時行われているオークションに送られることはなく、次に始まるオークションを待つ形となります。
まだここの仕様は決まっていませんが、最後のオークションが終わってから(買い手が見つかってから)最低10分は待ってから開始されるように作る予定となっています。
また最低でも1,000 USD相当のトークンをデポジットしないと始まらないようにする予定となっています。これは最低限の流動性を担保するためです。
最初の価格は、前のオークションが最終決定した価格の2倍でスタートし、ここから買い手が自分の出せる金額でbid(入札)できるようになります。売りに出されたトークン量に対して、すべて買い手が見つかるとオークションは終了です。
オークションが終了すると、コントラクトがデポジットしたトークンを開放し、入札した買い手に渡されますが、最終的な価格ですべての買い手に渡されます。
例えば、Aさんが1GNOを1ETHで入札しても売り切れず、価格が下がっていき、Bさんが1GNOを0.5ETHで入札したときに売り切れオークションが終わったとすると、1ETHで入札したAさんも1GNOあたり0.5ETHのレートで購入できることになります。
この方式だと、最高で払ったとしても自分の入札した金額、そして多くの場合はそれより低い金額で購入することができるため、高い金額で入札するインセンティブとなります。
そして最終価格によって、受け取るトークンの量が決定し、最終価格より高めに入札した人は入札したときの計算より多く受け取れることになります。
先程の例で言えば、Aさんは入札時に、「1GNO=1ETH」と思っていたら、1GNO=0.5ETHで済むので、1ETHを使って、2GNOもらうことになります。
ダッチオークションはもともとゲーム理論的にも、フェアな価格決定に効果的であると言われていて、DutchXでも適切な価格に収束していく傾向があり、フェアな価格決定という利点があります。その一方、即時性がありません。これが課題ではありますが、上記2つはトレードオフなので、フェアな価格の決定を第一に目指すDutchXはインスタンドトレードを志向してないと考えられます。
OWLトークン
OWLトークンはGnosisプラットフォームの他のサービスの手数料としても使えるトークンですが、DutchXにおいても手数料の半分までをOWLで支払うことができます。
Tulipトークン
このトークンは、ダッチオークションによって、1ETH相当のトークンがDutchXでトレードされるごとに1TULが生成され、トレードをした買い手と売り手に自動的に配布される予定となっています。つまりオークション取引ボリュームに比例して、インフレを起こしていくトークン設計になっています。
目的は手数料を下げるためであり、ダッチオークションに参加するために必ずTULが必要なわけではありませんが、TULを持っているホルダーは、持っているだけで(消費するのでなく、ロックすることで)手数料を安くできます。
したがって、プラットフォームをたくさん使い、大きな取引高をつくるユーザは、恩恵を受けられるようになっています。
具体的な話で説明していきます。手数料はデフォルトで、取引量の0.5%であり、買い手も売り手も必要になります。しかしTULの全体のボリュームの0.001%を持っていれば、この手数料は自動的に下がることになります。どのくらい下がるかは、その時のTulipマーケット量に対して何%のTULを所有しているかによります。(そして10%のTULを持っていれば、手数料は0%になります)。
ディスカウントの推移は、曲線ではなく、階段状に効果が出る作りになっています。そしてTULによる効果がでない0.001%以下を持っている人は、意味がないので売るという選択をとるでしょうから、TULの流動性はあがります。
TULはどんどん発行されて全体のTUL数は大きくなっていくため、元々0.001%持っていて手数料減の恩恵を受けていた人が、同じ量では次第に恩恵を受けれなくなるため、買い増す人も出てくるかもしれません。もちろん次の割引レベルに達する量まで一気に買ってもいいわけです。
手数料はどこへいくのか
ちなみに手数料はどこかのサードパーティやGnosisチームにいくわけではなく、興味深いことに、「Gnosis経済圏を循環する」という設計がなされています。
何で手数料を支払うかといえば、オークションに参加中のトークンなのですが、上で書いたように希望するならその最大半分までをOWLトークンで支払うことができます。(1OWL=1USD相当)
(処理を楽にするために、一度設定すれば、DutchXに繋がったウォレットにOWLがあれば、自動的にOWLを手数料として支払うことができるようです。)
例えば、「トークンA」を売るオークションがあり、受付けはETHとする『A/ETH』というペアリングのオークションが始まったとします。
売る側の手数料はトークンAで支払われますが、その手数料は次の同じトークンペア『A/ETH』のオークション時に、売り出されるAに上乗せされる形でオークションの売りに出されます。
つまり次のオークションの参加者へと還元されるような形になり、プラットフォームの使用を継続的にするようなインセンティブ設計となっています。
もし手数料がOWLで支払われた場合は、そのOWLはバーンされます。流動性や、取引高はユーザに委ねられるような、よりDAO的なアプローチになっています。
価格・時価を提供する分散型オラクルになりうる
これは個人的な考察ですが、フェアな価格に近づいていく方式、かつ価格操作ができないため、大衆の意見が無意識に反映された最終価格でオークションがクローズすることになると考えます。従って、Dappsや他のDEXから参照されるオラクルになる可能性が高いと言えます。(ここでいうオラクルとはブロックチェーンやスマートコントラクトに、外からの情報を持ってくる役割のことを指しています)。
中央集権的アプローチだとオラクルを信頼しなければならず、不正が行われる可能性があるため「分散型オラクル」というのは喫緊の課題ですが、価格提供というオラクルで言えば、DutchXがその役割を担う可能性は大きいです。
課題
オークションが終了するまで待つ必要があり、すぐに交換・引き出しができるわけではない点です。しかしそもそも第1目標を、「フェアなプライス・より良いレート」においているためそこは問題ありません。むしろその利点でどれだけ利用者が増えるかが大事になっています。
Gnosis まとめ
・オーダーを出してからだんだん下がっていく。
・フェアなプライスになりやすい。
・フロントランニングから守れる。
・フェアなプライスを作れれば、時価を提供する分散型オラクルになれる。
・WETHが必要
AirSwap
こちらも例にもれずICOを行ったプロジェクトでありトークンはASTというティッカーシンボルです。
取引所というよりは、交換相手を見つけるプラットフォームであり、「分散型P2P交換」を目指しています。イメージは、EthereumのトークンのShapeShitに近いと言えます。
交換自体はスマートコントラクトを使うので、ユーザは直接アセットを預ける必要はないというのは同じです。ここでは仕組みと課題などを書いていきます。
仕組み
「Indexerプロトコル」によるPeerの発見
AirSwapには、オーダーブック(売り板や買い板のこと)がありません。ではどのようにトークンの交換相手を見つけるでしょうか。ここで登場するがIndexerというプロトコルです。
0xがオフチェーンで注文をマッチングさせるのに対して、AirSwapでは同じくオフチェーン上で、注文ではなく、Peer(注文を出す前の取引相手)をマッチングさせるようなイメージです。実際はマッチングというよりは表示するのみです。
Indexerはその名の通り、マーケットを作る人(Maker)のアドレスを表示することで、マーケットで取引を実行する人(Taker)が、取引相手(Maker)を見つける手助けをします。
価格決定の際に参照される「Oracleプロトコル」
相手が見つかってP2Pの交換をする際に、価格の妥当性を判断する上で参照されるのがAirswapが提供するOracleプロトコルです。Oracleプロトコルは外部からマーケット価格を取得し、MakerやTakerはそれらを使って価格決定することができます。
具体的な交換までの流れ
下の図をもとに具体的に解説をしていきます。この図は、WhitePaperの図を繋げて私が描いてます。
1.まずAirswapのプラットフォーム上で、あるMakerが、「トークンAを売ってトークンBを買いたい」とIndexerに対して意思表示をします。
2.一方あるTakerは、「トークンBを売って、トークンAを買いたい」とします。Takerは、そんな相手がいないかをIndexerに問い合わせます。
3.Indexerは、条件に合うMakerたちのアドレスを表示してくれます。この例で書いたMaker以外にも条件に合うMakerすべてのアドレスも表示します。
4.ここでTakerは、リストの中からMakerを決め、P2Pの交渉が始まります。Takerは「2トークンBを売って、1トークンAを買いたい」と、実際の価格を交えたメッセージを送ります。
5.MakerはそれでOKならそのままその旨をTakerに返します。またMakerはその価格の判断をOracleプロトコルを参照し、提案レートをTakerに返します。Oracleを参照しなければならないわけではなく、あくまで参考なので、独自の価格決定メカニズムを持つMakerは独自の提案レートをTakerに返します。
5'. ここでレートを受け取ったTakerは、必要であれば、Makerと同じようにOracleを参照し、本当にその価格で良いのかを考えることができます。もし納得いかなければ、indexerのリストから別のアドレスを見つけ、(4)に戻り、別のMakerと交渉をします。
6.Makerの提案に、Takerが納得すれば、そこで初めてブロックチェーン上のスマートコントラクトに情報を送ります。Makerも、提案通りに情報がスマートコントラクトに送られることを確認してOKをすれば、エスクローなしに(アトミックスワップで)取引が実行されます。
ちなみに、Makerは、indexerに対して、トークンAとトークンBを交換したいとだけを伝え、量や価格を伝えることはありません。そこの議論はプライベートにマッチングしたPeer同士で交渉を行うため、プライベートです。
またIndexerが表示したリストから、どのようにして人を決めるかという部分ですが、API(getQuote)を使ってリスト上のMakerが提案するレートをすべて調べて、一番有利なものを選択する、ということも可能です。
流動性
2018年3月に常時MakerとなるLiquidity Partners(3つの機関)との連携を発表していますが、AirSwapでは会員権の制度になっているため、手数料が入ってくるわけではありません。0xのリレイヤーのようにインセンティブ設計がされているわけでもない中、これらのパートナーが常にMakerとなる動機がわかりませんでした。
そこでAirSwapの人に聞いたところ、今回のパートナーは流動性を提供することにより、スプレッドで利益をあげられるから、とのことです。
つまり、手数料がない分、有利なレートで交換することが流動性を与える動機になっているといえるでしょう。
ASTトークンの意味
このプラットフォームを使うために、ASTを持っている必要があります。会員券のような役割となり、よくいうUtilityトークンの例です。決められた量のASTをロックすることでAirSwapプラットフォームが使用でき、ロックなのでトークンは消費されません。(現在100ASTを7日間をロックすることが条件)。
100ASTを7日間ロックする毎に、Indexerに10の取引意思を表明することが可能になります。
オーダーブックのないP2P交換の優位性
他と比べた良い点についてですが、まずオフチェーンなので、使う側のコストが低くすみ、EthereumのGasのみで済みます。
EtherDeltaなどのオンチェーンDEXはキャンセルやオーダーにもGasがかかります。0xはオフチェーンのマッチングのため、最後の結果だけにEthereumのGasがかかり、他のブロックチェーン利用コストはかかりませんが、マッチングを助けるリレイヤーにはZRXという手数料が必要になります。
一方Airswapは会員制度なので、ASTホルダーであれば手数料はかかりません。実質EthereumのGasだけです。もちろんイニシャルコストとしてAST所持というコストは発生します。
またオーダーブックという概念が存在しないということは、大きな金額を交換しても市場価格に大きな変化を与えることはありませんし、見つけた交換相手と事前に交渉できるため、大きな金額の交換に向いています。
さらに、取引相手が決まった上で交換できるということは、トランザクション情報を悪用する「フロントランニング問題」を防ぐことができるといえます。
課題
現状課題としては、以下が考えられます。
・Indexer やOracleを信頼しないといけない
・流動性を増やすためにパートナーを増やす必要がある
現状IndexerとOracleが実質AirSwapだけというのが課題ではあります。つまりユーザが増えてそれに伴ったオフチェーン処理が増えたときに、Indexerが本当に多くのメッセージをさばけるか、という懸念や、価格表示をするOracleプロトコルが本当に適正な値を表示していると信頼しないといけないという課題もあります。(しかしOracleの値を絶対に参照するという設計になっていない分、分散型オラクルにする必要性はそこまでないかもしれません。)
また流動性について、Makerが多くならなくては流動性を担保できません。上に書いたような常時Makerとなってくれるパートナーを増やしていくことが大切です。急いでいないが大きな金額を良いレートで交換してくれる相手を探すために使うというシーンが想定されますが、そもそもMakerが市場にいなければ、交換相手が見つからないからです。
AirSwapまとめ
・大きな金額のやり取りに向いている
・フロントランニングを防ぐ
・WETHが必要
KyberNetwork
・こちらも2018年2月にベータ版のパイロット走行を開始し、実際にトラストレスな交換がすでにできるプロジェクトです。現在は、ETHとERC20トークンの一部のみですが、0xやAirswap、GnosisのようにWETHは必要ありません。
・オンチェーンで流動性の高いインスタントトレードを目指していて、将来的にはERC20以外も扱えるクロスチェーンの取引もロードマップへいれています。
・クロスチェーンについては、2018年3月現在、Zcash-Relayもしくは、PolkadotやCosmosなどの利用を想定しているようですが、明確には決まっていません。
・また取引の場所を提供することに加えて、支払いのAPIも開発していく予定となっています。例えば、ETH以外の通貨・トークンで支払いを受付け、ETHで受け取る、もしくは自分の好きなトークンで受け取るということを可能にするAPIです。
トークン交換の仕組み
これまでの説明と同様にトークン交換の仕組みをみていきましょう。KyberNetworkはオーダーブックがありません。その代わりにKyberNetworkのReserveというところにトークンが用意されていることによって常に流動性がある状態を作ろうとしています。
Reserveはいくつも存在する予定であり、それがより良いレートを生み出すことになります。このReserveは Managerと呼ばれる主体が管理し、レートを決めるため、ReserveごとにManagerがいることになります。
後述するBancorでは数式により、交換レートが自動的に決まりますが、KyberNetworkではmanagerと呼ばれる主体が価格決定をします。
このReserveの中で一番よいレートのものを選んできて、ユーザに提示します。それでOKなら交換が実行されます。この仕組みの良さとしては、常に流動性が確保される状態が作られる(努力がされる)ということです。
KNCトークン
ネイティブトークンはKNCです。流動性を作るReserveは、取引が成立するごとにKybernetorkに対して、手数料としてKNCを払うことになります。その量は、トレードした金額の少額の割合と同等のKNCになりますが、明確な割合は明らかになっていません。そしてその手数料のうち一定割合が、取引を手助けしてくれたウォレットやWebサイトに渡ることになります。
つまりReserveにとって、取引を誘導してくれるサードパーティに、アフィリエイトを払うような形になります。
そして残りはバーンされます。よって、取引量が増えることが、KNCの価格をあげる要因になります。
具体例を見てみましょう。ユーザが、10ETHを交換したとします。手数料はまだ明確になっていませんが、0.01%とします。
したがって、Reserveは、0.001ETHと同じ価値のKNCトークンを、KyberNetworkプラットフォームに対して払います。例えば1KNC=0.1ETHならば、0.01KNCが支払われます。
それを受け取ったプラットフォームは、いくらかをパートナーに渡して、残りをバーンするので、ここもまだ正確に決まっていませんが、5%であれば、0.0005KNCがウォレットやサイトに払われ、残りの0.0095KNCがバーンされ消費されます。
スプレッドの中にアフィリエイトとバーン分が含まれる
気づいた方もいらっしゃるかもしれませんが、Kyber上で取引を行うユーザからしてみれば、MakerであるReserveが儲けられるようなスプレッド分と、Reserveに取引を誘導してくれたWalletやWebサイトへのKNC分の両方を、見えない形で手数料として払うことになります。
一見、手数料無料に見えるはずが、ここにはスプレッド分が含まれており、さらにそのスプレッドは、アフィリエイト分が含まれているのです。(webサイトやwalletへ払うアフィリエイト分を差し引いても利益が出る金額のスプレッドになってるため)
この割合が明らかになっていない以上、是か非かを問えませんが、昨今のCEXの構造を見ていると、Kyberの構造を理解してトレードをする人は少ないとも思います。
課題
リザーブが多く運営されることが競争となり、ユーザにとって有利な価格が提示されることになりますが、それでスプレッドの儲けを得られるようにならなくなった場合、Reserve運者たちは撤退をし結果としてユーザに悪いレートを強いたり、流動性が低くなるという懸念があります。
また、マイナーのみフロントランニングできる状況になっており、現状は特に対策がなされているわけではありません。今後出来高が増えるにつれ、対応が必要になってくるかもしれません。
KyberNetworkまとめ
・常に交換できる状態を目指す
・ユーザに手数料はかからない
・Reserveのmanagerがレートを決定する
Bancor
次はBancor Protocolについてです。こちらは界隈でも有名なMachinoさんが素晴らしい解説記事を書いてくださっているため、ご理解している方も多いと思いますが、書いていきます。
Bancorはプロトコルです。Bancorプロトコルに則って作られたトークンは、スマートトークンと呼ばれ、必ず流動性があることが特徴です。つまりマイナーなトークンでも常に交換することができます。前述したKyberNetworkが、ReserveごとにそれぞれのManagerがレートを決めるのに対して、こちらは数式により自動的にレートが決まるようになっています。
現在はEthereum上のトークンとなっていますが、様々なブロックチェーンで使えることを目指すとあります。言及はされていませんが、Kyberと同じようにPolkadotやCosmosなどのクロスチェーン技術を用いるのだと思います。
それでは詳細に見ていきましょう。
仕組み
Bancorプロトコルで作られたトークン(スマートトークンと呼びます)はそれぞれが独自に準備金を持ちます。準備金はコネクタートークンと呼びます。
スマートトークンを買うときは、代わりにコネクタートークンを送り、
スマートトークンを売るときには、代わりにコネクタートークンを受け取ります。
しかし、売るごとに常に決まった量の対価を返してしまえば、準備金が先に枯渇してしまい、いずれ交換ができなくなってしまう可能性がでてきてしまいます。
そこでBancorプロトコルでは、スマートトークンと準備金であるコネクタートークンの割合が常に一定になるように、都度計算され、動的に算出された対価が返ってくるという仕組みになっています。
具体例を出します。BNTトークンだとETHがコネクタートークンなので、ETHの準備金があります。BNTを買いたいなら、コネクターであるETHを送り、その対価としてBNTが発行されそれを受け取ります。そして送ったETHは、準備金として保持されます。
売るときはBNTを送り、代わりにコネクタートークンが返ってきます。この比率は一定なので、送ったBNTは消費(バーン)される形になります。
Connector Weight
スマートトークンと、その準備金(コネクタートークンの蓄え)の割合のことをConnector Weightと呼びます。(CWと略します)。0〜100%のレンジで、スマートトークン作成者が設定します。
例えばCWが20%であれば、常にスマートトークンに対して準備金が20%ある状態を Bancor プロトコルが調整します。これを高くするとあまり価格が変動しませんし、これを低くすると、多く価格が変動することになります。
ネットワーク効果
スマートトークンが増えるとトークン同士の交換種類が増えていきます。
例えば、
・AトークンのコネクタートークンがBだとします
・CトークンのコネクタートークンもBだとします
このとき、直接は繋がっていないAトークンとCトークンを瞬時に交換することができます。理由は、AトークンをBトークンと交換し、BトークンをCトークンと交換することができるので、結果としてA⇔Cというパスが生まれ瞬時に交換することができます。
また上の例はコネクタートークンが1種類の場合でしたが、2,3種類とコネクタートークンを設定することもできます。そうすることでさらに流動性がましていき、DEXとして機能をしていきます。
価格決定
Bancorでは価格を設定する人はいません。すべて数式により決まります。
あるスマートトークンAの価格を表すと、以下のように決まります。
ここで、CWが定数となるため、設定するCWによって大きく価格が変わってきます。以下の図は、Price = 1で、総発行量 = 1000で始まるトークンの価格の推移です。
CWの値によって、価格がどのように変わるかを表しています。
もちろん最初の価格と総発行量によって多少かわりはしますが、だいたい推移は同じような具合です。これを見ても準備金の比率設定が大きく価格に影響を与えることがわかります。
実行的な価格設定
しかし、実際は買ったり売ったりすると、必ず上下するため、その瞬間瞬間の時価を計算する必要があります。よって実行的には、以下のような式で、売買レートが決まり、トークン交換がされます。
(繰り返しになりますが、スマートトークンAを買うには、準備金に設定されているコネクタートークンを送ります。)
(繰り返しになりますが、スマートトークンAを売ると、準備金に設定されているコネクタートークンを受け取ります。)
BNTトークン
Bancorプロトコルやネットワークを利用するのにBNTが必要ということはありません。現在BNTはBancorの使用例として作られたはじめのトークンにすぎません。
BNTのコネクタートークンはETHで、CW = 10%なので、BNT の時価総額 の 10% の価値のETH が、常に BNT のコントラクトアドレスに保持されます。
利用ケースがないのは、あくまで現状の話なので、今後Bancor上のスマートトークンはBNTを介するとディスカウントされるなどのメリットが出れば良いと思います。
優位性
Bancorプロトコルの良い点は、何と言っても常に交換可能性が保証されている点です。スマートトークンであれば流動性が100%「Availability」を持つといえます。
買い手や売り手がほとんどいないようなマイナーなトークンだとしても、準備金はいつも保持されているので、いつも交換ができるということです。
課題
課題は以下のようなことがあげられます。
・Connector Weight(CW)の値をいくつに設定すべきか
・スマートトークン発行者が最適なWeightを設定しなければならない
・フロントランニングが起こりうる
先に説明したとおり、Weightの設定によって、価格が大きく変動したり、反対に売買に価格が反応しなかったりと、未知数なことが多いです。どの程度の割合が良く、そしてそれは誰にとって一番良いのか、検証されていく必要があります。
また、各スマートトークンの価格計算ロジックは、誰でも見ることができ、immutable(コントラクトの性質上すぐに変えられない)ので、フロントランニングが起こる可能性もあります。
Bancorまとめ
・トークンごとに準備金があり、常に交換可能
・交換レートは数式により動的に計算される
・スマートトークン作成者が準備金の割合(交換レート)を決める
Republic Protocol
Dark Pool(ダークプール)を提供するプロトコルです。ダークWebなどの地下経済なことを想像される方もいるかもしれませんが、そういった用途ではなく、既存金融(株式市場)でも使われるものです。そのダークプールを暗号通貨市場に導入しようという試みです。
そもそもダークプールとは
ダークプールとは、名前から推測できるように、「見えない(流動性の)プール」のことです。既存金融でも使われている言葉で、売り買いのオーダーを、取引所を通さず、証券会社内のみにあるオーダー同士をぶつけて交換する取引です。大きな金額のときに使われるので、普通ファンドやプロの投資家が利用するものです。
なぜこんなことが必要かといえば、大口オーダーが取引所で公になると、不利な取引を強いられるからです。
例えば、Aという株を大量に買うという大口オーダーが出たとします。反対にAを売りたい人は、毎回同じ証券会社がAをすぐに買ってくることに気が付き始めます。つまりこの大口オーダーの存在を把握します。
すると、どうせ買ってくれるならと、有利なレート(大口オーダー側にとっては不利なレート)で取引がされてしまうのです。
また、大口の「売り」注文のケースでいうと、それが市場に見える形になったとき、市場参加者たちは「たくさん売られるなら必ず下がる」という心理になり、売り逃げ始めます。
それがさらに価格を下げ、結局大口の売りは、想定していたより低い価格でしか売れない、というやはり不利な交換になってしまうのです。
こういった理由で取引所外取引は大口に必要とされていて、そのDark Poolのクリプト版を作ろうとしているのが、Republic Protocolというプロジェクトです。
仕組み
想定ユーザは、上で書いている通り大口のトークンホルダーです。もはやVCやヘッジファンドが暗号通貨を買うようになってきているので、そこら辺が想定されるユーザです。
このDark Poolで取引したいユーザはRENを手数料として使用します。そしてそのネットワーク上のノードは、Shamir's Secret Sharing(シャミアの秘密分散法)というアルゴリズムを用いることで、「一部の情報だけ」でオーダーをマッチングさせることができます。
そしてマッチしてくれたノードに対して手数料のRENトークンが報酬として渡ります。こうすることでDark Poolを形成します。(その予定です。) このノードは、仕事をする前にRENトークンを預ける必要があり、もし不正を働いた場合は、それを失う、というペナルティがあります。そうした設計により、不正を未然に防ぐ予定となっています。
あくまで予定ですが、色々とオーダーパラメータを設定できるらしく、例えば、「1ETH = 0.10~0.12BTCのレートで1000ETH売りたいが、12時間で80%くらいそれで取引できるオーダーがマッチしたら実行する」みたいなこともできるようです。(情報は秘匿化されたまま)
RENトークン
上で書いたことの繰り返しになりますが、RENトークンが、インセンティブのためのトークンとして導入されています。0x ProtocolがZRXを必要するのと同じように、Republic Protocolは、ユーザが使用するのに手数料としてRENトークンを必要とします。そしてその手数料はオーダーをマッチしてくれたマイナーに渡ります。こうすることで継続的にマイナーは仕事をし、その仕事をするからユーザもダークプールを使う、という構造です。
この仕組みだと、ユーザは、手数料を大きくすることで、オーダーの優先付を行うことが可能です。(EthereumのトランザクションのGasを高く設定するようなイメージです)。
Republic Terminal
チームはプロトコルのみならず、Republic Terminal 分散型アプリ(Dapps)も開発をしており、そこでオーダー注文、キャンセル、修正などが行える予定です。これはプロトコルを使った一例なので、サードパーティがこういったアプリを作ることが可能です。
課題
上で紹介してきたプロジェクトと違い、こちらはまだプロダクトがありません。DEXにおいてはネットワーク効果が大切なので、後発でユーザを増やせるか、そして以下に流動性を高めることができるかが課題です。
これに対し、ダークプール取引は米国株式市場の約15%を占めるので、暗号通貨においても同等の割合の出来高が期待できる、というのがチームの主張です。
Republic Protocolまとめ
・Dark Poolによりオーダーが市場に把握されない
・RENの供託により、不正ができない仕組み、およびノードにインセンティブを与える
・BTC, ETH, ERC20トークンなどクロスチェーンでの取引も視野に
個人的考察とまとめ
様々なプロジェクトが生まれていますが、DEXにおけるネットワーク効果の影響は大きく、ユーザが多いほど、流動性が増し、ユーザにとって有利な取引ができます。それがまたユーザを呼ぶため、先手で進んでいるプロジェクトが優位に立つ側面はあります。その意味では大きく広がり、他のアプリや開発者を巻き込んでいるのは0xのプロトコルであり、様々な交換の仕組みの下に0xが使われ流動性を大きくし続けると予想しています。
さらにアセットを持つリスクがなく、手数料を稼げればいいため、マイナーなトークンを扱うリレーヤーも出てくるため、汎用的に(人が意識しない形で)0xがプロトコルとして使われていくのだと考えます。
しかし、中央集権型の取引所の覇権が、Poloniex→Bittrex→Binanceとわずか2年で変わってきた様子を鑑みると、ユーザを取り巻く規制やインフラの整備によって、大きく変わっていく可能性もあります。
さらに今回、様々な特徴を説明しましたが、結局はこれらの独自要素を伸ばし、住み分けをして発展していく、もしくは連携をしていく、というのが今の私の見解です。
例えば、「Gnosis DutchXで決まったフェアなプライスをもとにKyberNetworkのManagerは価格を設定し、それをもとにトレーダーは0xリレーヤー上でオーダー作る」などというように、Winner Takes All (権利独占・勝者は1人)でなく、シーンごとに使われるDEX技術を選んでいく、もしくはユーザは意識しないでそれらが選ばれていく、のだと思います。
そして今回ご紹介したDEXのうち幾つかは、単なる取引ではなく、分散型アプリ(Dapps)や決済への実装を視野にいれています。そして将来的にみれば、そちらのほうがより需要があることは、ここ最近のDappsを開発しているプロジェクト群を見ていると明らかです。
そのためにトークンを抽象化し、「意識しないような形」にすることがDEXの役割になります。
例えば、「暗号通貨のレンディングを行うDappsにおいて、好きな通貨で貸せる、好きな通貨で利子を受け取れる」。例えば「分散予測プラットフォームで、色んなトークンが瞬時に交換され、市場が生まれる、そしてそれが集合知になる」などです。
そういったユースケースの実現には、交換以外に解決しないといけない課題が多くありますが、交換(DEX)もその1つという視点で見ると、機能や課題が客観的に把握できるかもしれません。
最後にまとめとして表を作成します。
参考文献
[1]フロントランニング, http://hackingdistributed.com/2017/08/28/submarine-sends/
[2]0x Whitepaper,https://0xproject.com/pdfs/0x_white_paper.pdf
[3]0x Github,https://github.com/0xProject
[4]0x Blog ,https://blog.0xproject.com/front-running-griefing-and-the-perils-of-virtual-settlement-part-2-921b00109e21
[5]Gnosis WhitePaper, https://gnosis.pm/resources/default/pdf/gnosis-whitepaper-DEC2017.pdf
[6]Gnosis Blogs, https://blog.gnosis.pm/introducing-the-gnosis-dutch-exchange-53bd3d51f9b2
[7]Gnosis Blogs,https://blog.gnosis.pm/the-mechanism-design-of-the-gnosis-dutch-exchange-4299a045d523
[8]Gnosis Blogs,https://blog.gnosis.pm/on-all-things-tokens-1fd977184649
[9]Gnosi Blogs, https://blog.gnosis.pm/the-fee-model-7419285bf03f
[10]AirSwap Whitepaper, https://www.airswap.io/
[11]AirSwap blog, https://blog.airswap.io/airswap-and-novogratz-partner-to-provide-liquidity-on-decentralized-exchanges-d16518b440dd
[12]KyberNetwork Whitepaper,https://kr.kyber.network/assets/KyberNetworkWhitepaper.pdf
[13]Bancor Whitepaper, https://about.bancor.network/static/bancor_protocol_whitepaper_en.pdf
[14]Republic Protocol Whitepaper, https://releases.republicprotocol.com/whitepaper/1.0.0/whitepaper_1.0.0.pdf