0x Roadmap 2019 (part 2): スケーラビリティに関する R&D (邦訳)

DEXとスケーラビリティ

0x Japan Community
0x Japan
16 min readMay 27, 2019

--

0x Roadmap 2019: Scalability R&D を訳しました。0x に限らずEthereumやブロックチェーン一般に言えることも多数書いてありますので、ぜひお読みください。

0x Community Japan Meetup #2 を開催します!

ちなみに0x Japan では、今週5月30日(木)に HashHub 様で 0x Community Japan Meetup #2 を開催します。

今回のミートアップでは、 0x チームからこの記事の原文を書いた Remco Bloeman が San Francisco より来日し、 StarkDEX について紹介してくれることになりました!

また、 0x がスポンサーとしてサポートしてくれることになったため、簡単な食事と飲み物を無料でご提供します。是非お気軽にお越しください。

イベントの開催概要、参加登録は HashHub 様の connpass ページからお願いします。

https://hashhub.connpass.com/event/132814/

0x Roadmap 2019 (part 2): Scalability R&D

これは 0x として私の最初の投稿ですので、自分自身を紹介してみます:私の名前は Recmo です、時々ハンドルネームとして recmo を使っています。私が興味を持っているのは、 P2P プロトコル、暗号学、コンパイラ、形式検証などです。分散 Web の界隈にいるのは私にとっては自然なことです。私は2017年に最初のバージョンの 0x コントラクトのセキュリティ監査を務め、1年以上経った後フルタイムで 0x に加わりました。私は自身の 0x での役割を「0xを最高のテクノロジ上で動作させること」と考えています。これは、 0x プロトコル自体を開発することに加えて、私達のプロトコルの基盤となる技術スタックに貢献することも意味します。この思いで、私は EIP を書き、コアとなる Ethereum ツールのさまざまな部分を改善する手助けをします。これらの会話が行われるEthereum Magicians のようなミートアップで、私を見つけることができると思います。

ここ1年ほど、私は DApp のスケーリングに関する開発を追っていて、 0x の一般的な戦略について考えてきました。私たちは Devcon 4の後にこの戦略を積極的に開発し始めました。そして今、私たちのアイデアの概要のいくつかを説明する良い機会です。ちなみにこの内容の多くは、 EthCC Paris での私の最後の講演でも共有しました。このときは、テクノロジの詳細について詳しく説明しました。

ブロックチェーンのスケーリング

ブロックチェーン技術はいろいろな意味で、まだ始まったばかりで、スケーリングに関しては特にそうだと言えます。 Ethereum 上で少し人気なプロジェクトがあれば、 Ethereum のブロックを埋めてトランザクション手数料を急上昇させてしまいます。ユーザーは結局手数料を多くを払うか、長い時間待つことになります。

これは、ただユーザーにとって悪いだけでなく、本当に面白いアプリケーションを恐れさせ、その参入を阻んでしまいます。

たとえば、一年前に Maersk と IBM は、サプライチェーン・チェーンをプライベート “blockchain” としてローンチしました。

たとえ望んだとしても、 Ethereum ブロックチェーンは彼らのトランザクション量を扱うことができないでしょう。プライベートブロックチェーンを選ぶことを余儀なくされました。予測市場、ゲーム、支払いネットワークなど、他の多くの興味深いユースケースでもスケーリングが必要です。

理想的には、これらのプロジェクトはオープンプラットフォーム(つまり Ethereum など)を選択できるはずです。これを実現するためには、パブリックブロックチェーンがスケーラブルであることを証明する必要があります。

だから我々はスケーリングの問題を解決する必要があります。これは新しいことではありません。しかし同時に、 セキュリティ、公開性、信頼性、分散化も求めている場合 、スケーリングを解決することは非常に困難です 。(スケーリングを解決したと主張するプロジェクトを見た場合、おそらくこれらの少なくとも1つに重大な欠点があるでしょう。)

幸いなことに、コミュニティはこの問題に取り組むとても良い考えと姿勢を持っており、大きな進歩が遂げられています。ここ数年で、スケーリングに対する二重戦略が開発され、いわゆるレイヤ1レイヤ2と呼ばれています。

レイヤー1とレイヤー2

レイヤー1の解決策は、ブロックチェーンにもっと多くの作業を処理させることです。現時点では、すべてのノードがすべてのトランザクションを検証します。つまり、ネットワークは、最も遅いノードと同じ数のトランザクションしか処理できません。参加者に本当に速いコンピュータを要求することもできますが、それはもうオープンなネットワークとはいえないでしょう。より効率的にすることもできますが、一定の成果までしか得られることはできません。

代わりに、このレイヤー1での戦略はすべてのトランザクションを検証することをすべてのノードに要求することをやめ、その代わりにノード間で作業を分割することです。これは簡単に思えますが、トラストレスかつ分散化した状態で作業を分けることは困難です。

レイヤ2の解決策は、ブロックチェーンが行う処理を少なくすることです。すべてのトランザクションがブロックチェーンで処理される必要はありません。いくらか巧妙に考えれば、トランザクションをオフチェーンで完了することができます。ペイメントチャネルがこの良い例です。私とあなたの間で支払いを行う間、私たちはクレジットラインを開いたままにしておき、支払いが完了するか問題が起こった場合にのみ、レイヤー1にエスカレーションするという処理を行うことが可能です。

つまり、レイヤ2はトランザクションが頻繁に発生する場所で、レイヤ1はすべてが正しく行われることを保証するために常に存在する場所です。レイヤ1は、必要がない限りは関与しません。たとえ話ですが、レイヤー2の紛争を解決するための裁判所のように機能します。

レイヤー2のトレードオフ

レイヤ2ソリューションには多くのトレードオフがあります。データがどこに格納されているか、また、レイヤ2の実行がブロックチェーンにどのように通知するかに関連したものです。詳細は後ほど説明しますが、私がこれまで従ってきた2つの原則を説明します。

原則1 :暗号学的な保証。システムの保証は、単に破るためのコストが高いというだけでは十分でなく、破ることが不可能であるべきです。

原則2 :指数関数的なスケール。全てのレイヤー2のスケールのための方策は、レイヤー1よりも指数関数的に多くのトランザクションを捌くことができるべきです。

分散型取引所(DEX)のスケーリング

現時点では、 DEX ではスケーリングが大きな問題になることはありません。 DEX はすべての Ethereum トランザクションの大部分を占めますが、それを拡張する余地はまだ十分にあります。私の予測では、 スケーリングが問題にならずに、現在の約5倍の使用量まで上げることができると考えています。

DEX はまだ非常に初期の段階です。通常の中央集権型の取引所を置き換えることを考えると、 DEX の利用は今の100倍程の増加になります。トークン化された証券では、従来の証券取引所の負荷をサポートするためにさらに2桁大きな規模になります。さらに一般の人々に普及した場合の2つ(支払い、および”あらゆるもののトークン化”)を追加すると以下のようになります。

長期的に見て、取引量の大部分が、予測市場やゲームアイテムのように、現在市場を持たないトークン化された資産から来ることを期待しています。

トークン化された世界(Tokenized World)では、これらすべてに分散型のマーケットプレイスが必要です。つまり、普通の人は、さまざまなトークン間でゲームをプレイしたり、小額の支払いをしたりするために頻繁に自動取引を行うことになります。

この将来、 DEX はペイメントネットワークでも現在よりもはるかに高い負荷を処理する必要があります。

明らかに、私たちは計画が必要です。そしてそれは良いことです。そしてそれはおそらく魔術的なエイリアンの数学と関わることになります。

ゼロ知識証明

幸いなことに、エイリアンの数学はちょうど上陸したばかりです。その名前は「ゼロ知識証明」(Zero knowledge proof) または ZKP と略すこともできます。ゼロ知識証明により、”誰か”があるデータに対して計算を行い、データを明らかにすることなく、その”誰か”が計算を正しく行ったことを証明することができます。たとえば、アカウントは、その経費が何であるかを表示せずに、すべての経費を正しく集計したことを証明できます。

それは約20年前から知られている技術ですが、暗号学の発明でしばしば見られるように、実用的に使用するのが難しい初期バージョンでした。ここ数年、Ben-Sasson と他の多くの人達による努力のおかげで、 ZKP 技術は zkSNARKS の形で実用的になりました。

ZCash は zkSNARKS テクノロジを早期導入したプロジェクトであり、それプライバシーの保護のために使用します。これは、元帳の取引が計算されている間、残高を通知しないことによって可能になります。最近の ZCash の脆弱性が示しているように、 ZKP 技術はまだ若い技術です。プライバシーを重視するプロジェクトでは、脆弱性が悪用されたかどうかを確認することは不可能であるため、これは特にセンシティブになります。

(私の意見では、スケーリングは ZKP にとってより良い最初のアプリケーションです。何か問題が発生した場合は、すぐにこれを検知し、修正措置を講じることができます。)

一方、 Ben-Sasson らは、 zkSTARK と呼ばれる新しい ZKP テクノロジを開発しました。彼らは Starkware(スタークウェア)と呼ばれる世界クラスのチームとしてこの技術の研究と開発を続けています。以前の ZKP と比較して、それはより良いセキュリティを持ち、証明を作り出すのがより簡単です。素晴らしい発明がそうであるように、この技術も素晴らしく単純です。

Devcon 4では、 Starkware チームと会い、このテクノロジを使用して DEX のスケーリング問題を解決する方法について説明しました。それ以来、私たちは生産的で素晴らしい会話を多くしてきました。基本的な考え方は以下の通りです。

スケーリング用 ZKP

0x トランザクションの決済(settlement)は計算です。

どういうことかというと、メーカーとテイカーの署名を検証し、十分な残高があることを確認し、金額を引き、引いた分を他方の残高に追加します。私達は各決済取引に対してこれを行います。

これをスマートコントラクトで実施する代わりに、他の場所で行い、それが正しく行われたという”証拠”を送ることができます。 ZKP は計算が正しく行われることを保証するので、完全にセキュアといえます。

スマートコントラクト側では多くのトランザクションではなく、1つの証明を検証するだけでよいため、これもはるかに効率的です。実際、トランザクション自体をコントラクトに送信する必要がないため、指数的にスケールします。

しかし、トレーダーの残高を更新する必要があります。ここが複雑になるところです。残高を Ethereum で維持している場合でも、取引ごとに残高を更新する必要があります。しかしこれでは指数関数的にはスケールしません。大きくスケールする唯一の方法は、ユーザーの残高をオフチェーンで保持し、それを更新していくようにすることです。(ユーザーは、入金と出金の取引を使用して、資金をチェーン内とチェーン外の間で移動できます。このプロセスの詳細な説明は後でフォローされるでしょう。)

このシステムでは、レイヤ1は証明を検証するためにのみ必要とされ、すべての取引はレイヤ2で行われます。これは、レイヤ1がプロトコルのセキュリティを保証しながら、スケーリングを可能であることを意味します。

0x と Starkware の間で行われた調査によると、プロトコルを変更することなく、今日の Ethereum で STARKs 証明を検証できることがわかりました。私達は現在 testnet で性能を実証するためのコンセプト実証(PoC)に取り組んでいます。乞うご期待!

0x スタックを進化させる

ZKP は DEX のユースケースに非常に適している強力な新しいツールですが、どのようにそれらは 0x ロードマップに適合するでしょうか?これはまったく違う技術なのでしょうか

現時点では、さまざまなリレーヤー、マーケットメーカー、および 0x Instant 間で流動性を結び付けるための Standard Relayer API があります。これは機能していますが、少し古い手法です。各エンドポイントは正しく実装され、各接続は手動でセットアップされなければなりません。

私たちは、これらすべての接続を自動化する P2P ネットワークトランスポート層に取り組んでおり、エコシステム全体の注文フローを大幅に増加させています。

さらに追加のボーナスとして、ノードをインストールする必要なしに分散型流動性ネットワークに参加できるように、全てをブラウザで動作させています!近いうちにこの P2P レイヤに関する詳細情報を共有する予定です。

ネットワーク化された流動性が向上したら、次のステップは取引を調整することです。取引執行コーディネーター (TEC)は、リレーヤーが選択できる小さなサービスです。これらのコーディネーターは、フロントランから保護したり、革新的な市場メカニズムを可能にしたり、ソフトキャンセルを可能にしたりと、さまざまなメリットをもたらします。制限のない流動性共有を可能にしながら、上記のことが可能となります。

取引が決済される準備ができたら、それらは大きなバッチに集められ処理されます。これらすべての最終結果は、すべてが正しく行われたことを示す小さな証明です。この証明は検証のためにオンチェーンのコントラクトに提出されます。

この構造はブロックチェーンによく似ています。注文を分配する P2P ネットワーク(mempool)があり、トランザクションをファイナライズ(マイニング)させ、それらをバッチ(ブロック)にするメカニズムがあるという点で、です。結局のところ、それはまだすべて Ethereum コントラクトに関連しています。これを 0x サイドチェーンと呼ぶことができるでしょう。

さらに先を見据えて

0x プロトコルは現在、Ethereum dapp 開発者が使用および拡張できる基本要素として機能するように設計されています。現在、すべての Ethereum 資産および分散アプリケーションは単一のグローバルステート内に存在すると想定しています。

レイヤー1のスケーリングでアセットとデータを異なるシャードに分割する場合、ユーザーは(1)シャード固有のユースケースのためにローカルシャードで同期トレードを直接実行する、もしくは(2)異なるシャード/チェーン固有の資産間の同期取引を可能にするようなスケーラブルなサイドチェーンにアセットを移動します。

現在の設計から離れるのではなく、私たちは 0x パイプラインをさまざまなシャードおよびステートフルブロックチェーンに複製し、クロスチェーンガバナンスを使用して同期更新をプッシュすることを望んでいます。0x パイプラインの各レプリカ、通称「Embassy(大使館)」は、ローカルシャード固有の取引活動をサポートします。システムの拡張性により、ほとんどのユースケースをサポートできるはずです。

非常にスケーラブルな ZKP ベースのサイドチェーンはこれらの大使館のそれぞれにプラグインすることで、シームレスに同じシャードの中で他の人々と資産を同期的に取引することができたり、マーケットをつなぐグローバルネットワークで同期的に取引することを可能にするでしょう。

Ethereum で ZKP を使えるようにするため、ご協力ください!

0x コアチームは、Ethereum ツールを改良し、開発者中心のオープンソースツールを出荷することによって、 ZKP を主流にすることにコミットしています。現在、 Ethereum ブロックチェーンのレイヤ2スケーリングソリューションのサポートをさらに向上させるために、いくつかの EIP および提案に取り組んでいます。 ZKP をより使いやすくすることに興味がある Ethereum 開発者であれば、以下の提案を見てください。

最後に Discord について

0x の公式チャットは Discord 上にあり、一般的な議論をするための #general チャネルや質問を投稿する #question チャネル、トークンに関する議論のための #zrx-token-discussion など様々なチャネルがあります。主な使用言語は英語ですが、日本コミュニティのための #🇯🇵-日本 チャネルもあり、ここでは日本語で議論することができます。

今回のミートアップでは、プレゼンテーションやパネルディスカッションで Discord の #🇯🇵-日本 チャネル を活用することを考えています。是非下のリンクから、チャネルに参加してみてください。

Discord はこちら: https://link.0x.org/Discord

--

--