超高速取引（HFT）大手バーチュの元パートナーであるMichael Ovedと、元GoogleエンジニアであるDon Mositesは、イーサリアム・トークンのためのP2Pトレーディングプロトコル「Swap」を発表した。

Swapはイーサリアム・ブロックチェーンとP2Pのオフチェーン技術を組み合わせ、分散型取引所（DEX）を構築するためのプロトコルだ。注文とオーダーブックの管理、取引の執行を完全なP2P環境下で行うことで、イーサリアム・エコシステムの強化を目指し考案された。

Swapの内部構造は、すべてをブロックチェーンで管理するのでなく、外部のP2Pサービスとイーサリアムのスマートコントラクトを組み合わせたハイブリッドだ。注文やオーダーブックはインデクサー（Indexer）と呼ばれるオフチェーンのP2Pサービスで管理され、取引のマッチングが発生すると、スマートコントラクトが執行されることでトークンのスワップが発生する仕組みだ。

著者によれば、ブロックチェーンだけで分散型取引所を構築しなかったのは、それがスケールするシステムにはならないためだ。ブロックチェーンだけでトレーディングシステムを実現しようとすれば、注文、キャンセル、約定のたびに状態を変更し続けなければならない。さらに、オーダーブックに対して行われる注文がすべてブロックチェーンを通して行われた場合、所有者や、価格、数量などがネットワークに公開されてしまう。この特性により、たとえばマイナーが注文が含まれる取引を恣意的に無視することで注文を遅らせ、そこから利益を得ることもできるだろう。すなわち、中央型の取引システムと比較すると、あまりにもコストが嵩み、低速で、脆弱なプラットフォームになってしまうということだ。

仕組みを掻い摘んで読み解いてみよう。インデクサーにはオーダーブックを作るMakerの配列（注文情報や、Makerのアドレスが含まれる）が格納されており、Takerはこれに対して注文をマッチングさせることで、取引が成約することになる。つまり、Takerはインデクサーを呼び出してオーダーブックを取得し、取引の相手方となる注文に対して署名を含めて発注すれば、スマートコントラクトを通じてトークンの移転が実行されるわけだ。

10 GNTで5 REPと交換（Take）したい場合：fill([makerAddress], 5, REP, [takerAddress], 10, GNT, [期限], [signature])

SwapはRPCを通じたAPIを通じて注文を行うことができる。一例は、コントラクトアドレスで表現されたトークンを、アドレスの代わりにティッカーシンボルを指定することで呼び出し、注文を作成することに用いられる。たとえばREPとGNTを交換したい場合、”order.request(“taker", buy, 10, REP, GNT)”のように指定すれば、所有しているGNTを用いて10REPを成行で購入することが可能だ。ここでは、シンボルを指定したオーダーブックの照会やキャンセル、アドレスに紐ついた注文のリストなども用意されている。

Swapプロトコルが実装されることで、ブロックチェーンベースのアトミックスワップが、イーサリアム上で実現することになるだろう。Oved、Mositesの両氏は、ブロックチェーンのスループット限界を踏まえてすら、オフチェーンを組み合わせた分散型取引所が中央型のシステムと競合できるとし、イーサリアム・ネットワークと共にSwapを成長させていきたいとホワイトペーパーの最後に述べた。

swap.tech