0x を動かしてみた (その1)
0x を動かしてみた (その1)
背景
DEXについての調査をしていく中で、ここ数ヶ月間で出来高が伸びているDEXがあり、その多くが0xプロトコルを使っていることがわかってきました。(※ここ数ヶ月間では基本的に仮想通貨の取引全体の出来高は下降傾向です。) そこで0xプロトコルとは、どのような規格でどんな機能があるか調査してみました。
0x (ゼロエックス) とは
0x は、Ethereum 上で異なる Token 同士を取引する分散型取引所(DEX)のオープンプロトコルです。 最終的な取引結果だけをブロックチェーン上で処理し、それ以外の取引の注文やマッチングなどはオフチェーンで処理することで DEXの課題としてよく挙げられているスケーラビリティ問題の解決、低い取引手数料の実現を目指しています。 Version2.0 において、ERC20 Token および ERC721 Token が取引可能となっています。ETH を ERC20 仕様で扱うため WETH(Wrapped ETH)に変換して取引を行います。 0x プロトコルを使用して DEX の機能を提供する Relayer によって Token の取引が仲介されます。
Relayer (リレイヤー) とは
Relayer は、取引注文の受付、署名チェック、オーダーブックの管理やマッチングなど DEX の機能を提供する事業主体です。0x プロトコルに基づいて構築され、最終的な決済以外はすべてオフチェーンで実行されます。 取引の Maker や Taker に対して取引手数料を徴収することが可能ですが、現在は無料で提供している Relayer が多いようです。 Open Order Book 形式、Matching Model 形式の2種類の Relayer が存在し、Matching Model 形式の Relayer は、単一のオーダーブックの中でのみ取引を行いますが、Open Order Book 形式は、オーダーブックを他の Relayer と共有し、取引の流動性を高めることが可能です。
0x の Relayer
・下記の Relayer は、0x プロトコルにより構築されています
- Amadeus
- Bamboo Relay
- DDEX
- Dextroid
- ERC dEX
- Ethfinex
- IDT Exchange
- Instex
- LedgerDex
- MobiDex
- OpenRelay
- Paradex
- Radar Relay
- Shark Relay
- Star Bit
- The Ocean
- Token Jar
- Tokenlon
- Weswap
Token 取引の流れ
・DEX における Token の取引は、注文を作成する Maker、注文に応じる Taker、注文を仲介する Relayer により行われます
- Maker は DEX コントラクトが Token A にアクセスすることを承認。
- Relayer は取引手数料と受け取りアドレスを Maker に提示。
- Maker は保有する Token A を Token B と交換するための注文を作成し、希望レート、有効期限、取引手数料および Relayer の希望する受け取りアドレスをセットし、Maker の秘密鍵で署名。
- Maker は署名された注文を Relayer に送信。
- Relayer は注文を受け取り、注文が有効で、必要な手数料が提供されていることを確認。注文が有効な場合はオーダーブックに書き込み、無効な場合は注文を拒否。
- Taker は Maker の注文が更新されたオーダーブックを受け取り、希望する注文を選定。
- Taker は DEX コントラクトが Token B にアクセスすることを承認。
- Taker は Maker が署名したオーダーを DEX コントラクトに送信。
- DEX コントラクトは Maker の署名、注文期限、注文がまだ未成立であることを確認し、指定レートで Token A と Token B の決済を実行。
次回
0x Project の 0x-starter-project を利用してローカル環境で DEX を動かし、実際に ERC20 Token を交換してみます