0xプロトコルの概要をざっくり説明する

こんにちは、[Staked](https://staked.co.jp/)の渡辺創太です。今回は0xプロトコルの概要をざっくり説明します。

# モチベーション
0xプロトコルについて簡潔に概要を説明すること。0xは今まで読んできたホワイトペーパーの中で最も良かったものの1つなのでその価値を伝えること。間違い、ご意見あれば[Twitter経由](https://twitter.com/WatanabeSota?lang=en)でご連絡ください。

# 0xの目指すもの
**Vision** 
すべての価値がパブリックブロックチェーンでトークン化された世界を創造する。
>A world in which all forms of value are tokenized on public blockchains. 

**Mission** 
すべての価値が自由に行き来するトークン化された世界を創る。
>Create a tokenized world where all value can flow freely.

**Core value**  
正しいことをしよう。一貫した姿勢を貫こう。長期的インパクトにこだわろう。
>DO THE RIGHT THING
>CONSISTENTLY SHIP
>FOCUS ON LONG-TERM IMPACT

# 0xプロトコルの概要
0xはイーサリアムのスマートコントラクトで作成された、DEXを
構築するためのプロトコル。非中央集権性を担保した上で異なるトークン間の流動性の向上を目指している。決済以外の処理をオフチェーン上で行うことによって、高速な処理と低手数料を実現している。（Off-chain order relay On-chain settlement）0xは単なるDEXではなく、プラットフォームであり、ゲーム、アート、未来予測、ローンなどのアプリケーションが0x上で作られている。

# いくつかの特徴
* 0xは分散化され、トランストレスである。故にハッキングを受けることがない
* 0xは公共のインフラであり、使用料がかからない。営利目的のアプリケーションをその上に構築することはできる
* 0x v1ではERC20トークンのみであったがv2ではERC721のトークンもサポートした。今後はERCトークンのマーケットの拡大から証券やエクイティー、債権、デリバティブ、法定通貨、ゲームのアイテムなど様々なアセットを取引可能にする予定
* オーダーが同じフォーマットで共有され需要と供給がマッチングしたユーザー同士でp2pでマッチングされる
* DAppsが運営されるのをインテグレーションを通してもっと簡単にする
* オープン・スタンダード、プロトコル上にアプリケーションを作り、カスタマイズすることができる
* 自動的に新しいトークンをサポートする


# ZRXトークンの役割
ZRXトークンは2つの用途で使用される。1つ目はCordination問題（ゲーム理論の問題）を解決し、流動性を担保するネットワークエフェクトを加速させ、アーリーアダプターがマスアダプションによってフィードバックループが得られるようにすること。2つ目は0xのアップデート時に分散化されたガバナンスモデルを使用するためである。

**具体的な用途**

* MakerとTakerがリレイヤーに対してZRXトークンによって手数料を払う
* 0xプロトコルのアップデートに関し、ZRXが分散ガバナンスを支えるトークンとしての役割を持つ。ZRXホルダーによって0xプロトコルのアップデートが安全でありネットワークを破壊する可能性を最小限にする

# 0xプロトコルのリレイヤー
>“Off chain order relay and On chain settlement”

0xは買いと売りのマッチングをオフチェーンで行っている。
取引内容をマッチングさせるため、リレイヤーという取引所のようなものがある。（1つではない）0xプロトコル上でリレイヤー同士がオフチェーンでメッセージを送り注文をマッチングさせることによってオンチェーンでの取引を行う。

リレイヤーは取引の手数料を徴収することをインセンティブに運営を行い、0x上のリレイヤーはそれぞれ手数料の%を決めることができる。

現状、リレイヤーは手数料0でマッチングをさせているが、手数料の%を自由に決めることができることで0xプロトコル上に一種の市場環境を作り出している。

# すでにデプロイされたコントラクト
開発するときは、指定のネットワークに対するコントラクトを呼び出す。

**Mainnet**
AssetProxyOwner: `0x17992e4ffb22730138e4b62aaa6367fa9d3699a6`
ERC20Proxy: `0x2240dab907db71e64d3e0dba4800c83b5c502d4e`
ERC721Proxy: `0x208e41fb445f1bb1b6780d58356e81405f3e6127`
Exchange: `0x4f833a24e1f95d70f028921e27040ca56e09ab0b`
Forwarder: `0x7afc2d5107af94c462a194d2c21b5bdd238709d6`
OrderValidator: `0x9463e518dea6810309563c81d5266c1b1d149138`
WETH9 (i.e new EtherToken): `0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2`
ZRXToken: `0xe41d2489571d322189246dafa5ebde1f4699f498`

**Kovan**
AssetProxyOwner: `0x2c824d2882baa668e0d5202b1e7f2922278703f8`
ERC20Proxy: `0xf1ec01d6236d3cd881a0bf0130ea25fe4234003e`
ERC721Proxy: `0x2a9127c745688a165106c11cd4d647d2220af821`
Exchange: `0x35dd2932454449b14cee11a94d3674a936d5d7b2`
Forwarder: `0xd85e2fa7e7e252b27b01bf0d65c946959d2f45b8`
OrderValidator: `0xb389da3d204b412df2f75c6afb3d0a7ce0bc283d`
WETH9 (i.e new EtherToken): `0xd0a1e359811322d97991e03f863a0c30c2cf029c`
ZRXToken: `0x2002d3812f58e35f0ea1ffbf80a75a38c32175fa`

**Ropsten**
AssetProxyOwner: `0xf5fa5b5fed2727a0e44ac67f6772e97977aa358b`
ERC20Proxy: `0xb1408f4c245a23c31b98d2c626777d4c0d766caa`
ERC721Proxy: `0xe654aac058bfbf9f83fcaee7793311dd82f6ddb4`
Exchange: `0x4530c0483a1633c7a1c97d2c53721caff2caaaaf`
Forwarder: `0x3983e204b12b3c02fb0638caf2cd406a62e0ead3`
OrderValidator: `0x90431a90516ab49af23a0530e04e8c7836e7122f`
WETH9 (i.e new EtherToken): `0xc778417e063141139fce010982780140aa0cd5ab`
ZRXToken: `0xff67881f8d12f372d91baae9752eb3631ff0ed00`

#参考
[0x blog](https://blog.0xproject.com/)