blockchainjapan’s blog

旬のブロックチェーンを記事を厳選して提供!

ZK-Rollups on Bitcoin:イーサリアムより遥かにスケーラブルに


ZK-Rollups on Bitcoinイーサリアムより遥かにスケーラブルに

sCrypt

編集・翻訳:Takeshi@Think Globally, Act Locally


ZKロールアップは、イーサリアムにおけるL2スケーリングソリューションの聖杯として考えられています。

「私個人の見解としては、短期的には、汎用のEVM計算ではOptimisticロールアップが、単純な決済、交換、その他のアプリケーション固有のユースケースではZKロールアップが勝利する可能性が高く、中長期的にはZK-SNARK技術の向上によって、全てのユースケースでZKロールアップが勝利すると考えています。」 — Vitalik

私たちは、史上初のZKロールアップ(ZKR)のビットコインでの実装を可能にしました。さらに、ZKRがイーサリアムよりもビットコインでより機能する理由についても示します。

イーサリアムにおけるZKRの仕組み

このソリューションの核心は、ZKRがZK-SNARK証明のsuccintnessを活用することにあります:ある計算が正しく行われたことを検証するのは、それを再実行するより遥かに効率的です。チェーン上の全てのトランザクションを処理する代わりに、あるコントラクトの複数のトランザクションは、マイナーの代わりに、最初にコーディネーター(シーケンサー/リレイヤー)に送られます。コーディネータはこれを1つのトランザクションに「ロール」「バンドル」します。このトランザクションには、これらのバッチされたトランザクションを忠実に処理し、コントラクトを状態1から状態2に変化させるという証明が含まれていて、マイナーに送信されます。

ZK Rollup

トランザクション処理は全てオフチェーンに委託されるため、ブロックチェーンは一定間隔でより多くの取引を処理することができ、その結果スケールすることが可能になります。

zkSNARK証明はオフチェーンの状態遷移の正しさを保証し、コーディネータが無効な状態遷移をコミットすることを不可能にします。これによって、ZKRは、PlasmaやOptimisticなどの他の多くのL2ソリューションとは異なり、L1のセキュリティを犠牲にすることなくスケーリングを可能にするので、魅力的なL2スケーラビリティソリューションとなるのです。

ZKRトーク

ZKRの使い方を示すために、トークンを例に挙げて説明します。

イーサリアムのロールアップ

インチェーン上にロールアップコントラクトがあり、state rootを追跡しています。この「state root(状態ルート)」は、マークルツリーの根っこです。そしてツリーの各葉が、所有者の公開鍵またはアドレスと、残高などのプロパティからなるアカウントを意味するものとなります。

アカウントはマークルツリーを形成

次の例では、2つの入金が1つのトランザクションにまとめられます。

状態遷移

ビットコインにおけるZKR

私たちはビットコインにロールアップコントラクトを実装しました。これは、トランザクションバッチ処理後に、現在の状態のルートが正しい新しいルートに更新されることを保証します。

追跡する状態は、8行目のアカウントツリーのルートだけです。有効性証明は14行目で検証され、既存のzk-SNARKライブラリを使用します。ルートは17行目で更新され、5行目の検証キーは、zk-SNARKのセットアップフェーズで得られたものとなります。

ZKR証明の生成

トランザクション処理ロジックをzk-SNARKフレンドリーな方法でエンコードする必要があります。人気言語の1つにCircomがあります。記事の都合上、Circomの詳細は取り上げませんので公式サイトを参照してください。

1つのトランザクションの処理には以下が含まれます:

  1. 送信者のアカウントがツリー内にあることをmerkle proofで確認
  2. 送信者の署名を確認
  3. 送信者の残高を更新し、中間マークルルートを検証
  4. 受信機の残高を更新
  5. マークルルートを更新

次ような既存のrollup Circomのコードを再利用することができます:

 
rollup.circom

こちらで上記コードの詳細について説明しています。

複数のトランザクション

ロールアップの利点は、複数のトランザクションを一緒にバッチ処理ことによって体現されます。この場合、上記のコードの上にループを追加するだけで可能です。生成される証明は、バッチ内の全てのトランザクションが有効である場合にのみ有効となります。

 
複数のトランザクションプロセス

まとめ

ZKRは、データの可用性を高めるために、トランザクションデータをL1チェーン上に保存します。L1のストレージコストは、ZKRのスケーラビリティに上限をもたらします。その結果として、ZKRはイーサリアムよりもビットコインの方で遥かにうまく機能します。前者のストレージコストは後者のそれよりも桁違いに安いからです。

さらに、zk-SNARKはユニバーサルなので、ロールアップ・スマートコントラクトがビットコイン上に展開されると、他のブロックチェーン上で設計された既存のZKRツール(CircomやZoKrates)の多くがビットコインで直接再利用できるようになります。つまり、ZKRは今日、ビットコイン上のアプリケーションをスケールさせるために使用することができるのです。

参照

[1] https://blog.matter-labs.io/optimistic-vs-zk-rollup-deep-dive-ea141e71e075

[2] https://www.preethikasireddy.com/post/a-normies-guide-to-rollups

[3] https://github.com/barryWhiteHat/roll_up_token

[4] https://blog.matter-labs.io/optimistic-vs-zk-rollup-deep-dive-ea141e71e075

CoinmonksのTelegram ChannelYoutube Channelに参加して、暗号取引や投資について学びましょう。