Skip to content

Ethereumの高速化とガス代の削減を目指すスケーリングソリューションの一つであるrollupに注目が集まっています。RollupにはOptimistic rollupとZK rollupというふたつの手法があり、さまざまな実装が提案されています。Optimistic Rollupについては本ブログではArbitrumとOptimismを紹介しました。本記事ではZK rollupの一実装であるzkSyncについて解説します。

 

Matter LabsとzkSync

zkSyncは、ドイツの首都ベルリンに拠点を置くMatter Labsが開発するEthereumのレイヤー2スケーリングソリューションです。

zkSync — Rely on math, not validators

Matter Labsの創業は2019年7月で、同年3月にEthereum Foundationから助成を受け、9月にはPlaceholderなど5社から2百万ドル(2021年7月本記事執筆時のレートで約2億2千万円)、2021年3月にはUnion Square Venturesなどから金額非公開の出資を受けました。

Matter Labsは創業から1年も経たない2020年6月にzkSync v1.0のメインネットを公開しました。

Introducing zkSync: the missing link to mass adoption of Ethereum | by Matter Labs | Medium

Matter Labsは、自由を尊重し、ブロックチェーンと数学に情熱を持って取り組むエンジニアのチームであるとし、zkSyncをはじめすべての開発をオープンソースで行っています。Matter Labsは目標として、同社のテクノロジーで多くの人がパブリックブロックチェーンを使うようになり、現在進行中の金融革命を加速させることを掲げています。

ZK rollupには、Optimistic rollupのfraud proofのような異議申し立てのプロセスがなく、トランザクションの処理がより迅速に行われるとされています。また、zkSyncでは、レイヤー2にロックできる資金の量に制限はなく、プライバシーを守るためのコストも低く抑えられるとのこと。

画像: zkSyncとOptimistic rollupの比較(zkSyncのウェブサイトより)

Matter Labsは、zkSyncはその他のZK rollupの実装に対しても、オープンソースでEVMとの互換性があり、ガス代を抑えられるなど、優位性があるとしています。

画像: zkSyncとその他のZK rollupの比較(zkSyncのウェブサイトより)

 

ゼロ知識証明

zkSyncのしくみの前に、ZK rollupとzkSyncの「ZK」(Zero Knowledge、ゼロ知識)が表すゼロ知識証明の概要を把握しておきましょう。

ゼロ知識証明とは、秘密にしておきたい知識を知っていることを、その知識自体は明かさずに証明する手法です。ゼロ知識証明では知識を持っていることを証明したいproofer(P)と、それを検証するverifier(V)の二者が登場します。こう書くと難しく聞こえますが、具体例を見てみるとわかりやすいです。

ゼロ知識証明の有名な例として、Wikipediaのゼロ知識証明のページでも紹介されている「洞窟の問題」があります。洞窟には入り口AとBがあり、洞窟の奥にある魔法の扉を開ける合言葉が秘密にしておきたい知識です。洞窟の問題ではまずPが洞窟に入り、Vが出てくる入り口を指定します。

  1. PがAから洞窟に入って、VがAを出口として指定した場合:
    Pは秘密の合言葉を使わずAから出てこられる。
  2. PがAから洞窟に入って、VがBを出口として指定した場合:
    Pは秘密の合言葉を使ってBから出てくる。
  3. PがBから洞窟に入って、VがAを出口として指定した場合:
    Pは秘密の合言葉を使ってAから出てくる。
  4. PがBから洞窟に入って、VがBを出口として指定した場合:
    Pは秘密の合言葉を使わずBから出てこられる。

画像: 洞窟の問題の上記(c)のケース(Wikipediaのゼロ知識証明のページの画像に筆者追記)

この洞窟の挑戦の試行回数を増やすことで、偶然(a)や(d)のようなケースばかり発生する確率は減り、Pは合言葉をVに明かさずとも、Pが合言葉を知っていることを証明できます。

このほかにもさまざまなゼロ知識証明の例があり、仮想通貨やブロックチェーン領域で広く使われている公開鍵暗号もゼロ知識証明の応用例といえます。

 

zkSyncの仕組み

zkSyncをはじめとするZK rollupでは、Ethereumネットワーク上のスマートコントラクトが資金を管理し、レイヤー2での状態遷移を把握します。レイヤー2では計算処理が行われます。

zkSyncではバリデータと呼ばれるノードがトランザクションをブロックにまとめるといった作業を行います。Ethereumメインネット上のスマートコントラクトに担保をステークすることでバリデータには誰もがなれます。

zkSyncに参加するバリデータたちは、ユーザーから送られてきたトランザクションをブロックにまとめ合意形成を行い、新しい状態のルートハッシュと、「新しい状態はトランザクションを実行して得られる状態遷移の結果である」という状態遷移に関するゼロ知識証明(SNARK、Succinct Non-Interactive Argument of Knowledge)をEthereumネットワーク上のスマートコントラクトに送ります。SNARKはトランザクションと状態遷移についての「有効性の証明」(validity proof)で、Ethereumネットワーク上のスマートコントラクトによって検証され、状態が更新されます。個々のトランザクションの全データを送らなくても、スマートコントラクトで状態遷移の検証ができ、この点がゼロ知識と言われる所以です。SNARKの検証は、個別のトランザクションを検証するよりもはるかに安価に行えるといいます。

zkSyncをはじめとするZK rollupでは、証明が添付された状態でEthereumネットワークに対して情報が送信されるため、Optimistic Rollupのように異議申し立てのやりとりを行うfraud proofのプロセスがありません。このため、一般的にZK rollupの方がバリデータでなく数学的な証明に依拠するため安全性が高く、トランザクションが確定するまでの時間が短いとされています。zkSyncでトランザクションが確定するまでの時間は約10分とされていますが、現時点では、ブロックを満たすだけのトランザクションがたまるまで待つ必要があり、将来的にスループットが高くなることでこの問題は解決されるといいます。

実際にzkSyncのエクスプローラを見てみると、ブロック19592では最初のトランザクションのタイムスタンプが「2021-07-13 03:32:20 UTC」、最後のトランザクションのスタンプが「2021-07-13 04:10:22 UTC」で、ブロックが満たされるまでに40分弱かかっていることがわかります。さらにブロックが生成されてからスマートコントラクトでの検証が終わるまでにも数時間かかります。前出のブロック19592ではブロックが受け付けられたのが「2021-07-13 04:55:11 UTC」、検証されたのが「2021-07-13 06:12:52 UTC」なので、80分弱検証にかかっています。ただしVerified Atの列にカーソルを合わせて表示される日時は、異なるブロックでも数時間置きに同じ日時で検証が完了しているため、バッチで処理されている可能性があります。

画像: zkSyncで生成・検証されるブロック(zkSyncのエクスプローラより)

こうして見てみると、トランザクションを送信してからブロックにとりこまれ、証明が作成され、検証が終わり、実際にトランザクションが確定するまでの時間は短いとはいえません。ただし、zkSyncのドキュメントでは「バリデーターが必ず次のブロックにトランザクションを含める」という想定のもと、「Instant confirmations」(即時確認)も可能であるとしています。将来的にはバリデーターが担保を積み、悪意のあるバリデーターはユーザーや合意形成の参加者によって申告でスラッシュされる仕組みが導入され、即時確認が保証されるようになるようです。

処理速度とともに気になるガス代については、ユーザーはzkSyncのガス代をETHではなく利用するトークンで支払います。たとえばDAIを送金するのであればDAIでガス代を支払います。ユーザーが支払ったガス代は、レイヤー2での状態遷移ストレージの費用とSNARKの生成手数料、レイヤー1への書き込み手数料に当てられます。

zkSyncについてより詳しくは、開発者向けのドキュメントが公開されています。

Introduction to zkSync for Developers | zkSync: secure, scalable crypto payments

 

zkSyncのエコシステム

zkSyncのウェブサイトではzkSyncに対応しているサービスが公開されています。

画像: zkSyncに対応しているサービスの一覧(zkSyncのウェブサイトより)

2020年10月にCurve Financeが最初の分散型アプリケーションとしてスマートコントラクトが実行できるテストネットで公開されました。Matter Labsがターゲットとしてあげている金融分野の仮想通貨取引所やCurve FinanceをはじめとするDeFiサービスに加え、オープンソースアプリケーションのサービスとコミュニティの構築を支援するGitcoinもzkSyncに対応しています。プロジェクトを支援したい人はzkSync経由でプロジェクトに資金を送金できます。

zkSyncに対応したDeFiサービスで仮想通貨を増やして、気になるオープンソースプロジェクトを支援できるようになれば、仮想通貨の楽しみの幅が広がりそうです。

 

zkSyncの今後

ZK rollupを採用した環境で自由にスマートコントラクトを実行するのは難しいとされてきましたが、Matter LabsはzkSyncだけでなく、ゼロ知識証明ベースのスマートコントラクトを安全かつ簡単にプログラミングできるようにするためのフレームワークZincやZinc VMの開発にも取り組んでいます。2020年1月にZincのアルファ版が、2021年2月にv0.2.3が公開されました。

2021年内にはメインネットでもスマートコントラクトが使えるようになり、ZincとSolidityの両方がリリース時からサポートされる予定です。

このほか、Matter Labsはロードマップで将来的な計画として、トークンのリスティングを許可制でなくすこと、さまざまなウォレットや取引所でのzkSync対応、PoSでの合意形成、ガバナンストークンのローンチなどをあげています。

Roadmap | zkSync: secure, scalable crypto payments

 

おわりに

本記事では、ベルリンのスタートアップMatter Labsが実装を進めるZK rollup、zkSyncについて解説しました。今後メインネットでもスマートコントラクトが使えるようになり、開発しやすい環境が整う中で、数学と暗号学に基づいて安全なrollupを実装するzkSyncがその他のスケーリング技術に対して優位性を発揮し、利用が広がるか注目したいです。

 

 

エンジニアの経験と情報学分野での経験を活かして、現在はドイツにてフリーランスで翻訳・技術解説に取り組む。2009年下期IPA未踏プログラム参加。2016年、本メディアでの調査の仕事をきっかけにブロックチェーンや仮想通貨、その先のトークンエコノミーに興味を持つ。

EthereumL2zkRollupzksync

ブロックチェーンを学び、新しいことをサービスを作りたい人が集まるコミュニティーを運営しています。
・これから実現したいサービスやプロダクトにブロックチェーンを使いたい
・ブロックチェーンが自分の課題を解決する糸口としたい
・ブロックチェーンの技術を学んでプロダクト開発をしたい

興味のある方は詳細をご覧ください!

Back To Top
Search