![見出し画像](https://assets.st-note.com/production/uploads/images/100825624/rectangle_large_type_2_44f2159bd1f7726f375e947a3649b0ea.png?width=1200)
ZKP:安全で効率的なクロスチェーンブリッジの構築
背景
2009年にビットコインが誕生して以来、ブロックチェーン技術は大きな発展を遂げました。ビットコインとイーサリアムが市場を支配し続けている一方で、独自の機能やアプリケーションを持つさまざまなブロックチェーンネットワークが出現しています。ブロックチェーンはさまざまなアーキテクチャで構築されているため、互いに相互作用することができません。ブロックチェーンエコシステム、特にDeFiが成長し続ける中、異なるブロックチェーン間のギャップを埋めることが重要な問題になっています。
クロスチェーンブリッジはまさにその問題に対するソリューションとして登場しました。これらのアプリケーションは、異なる資産を複数のブロックチェーン間で移動させることを可能にします。場合によってはクロスチェーンブリッジは情報の相互運用性さえも現実のものにします。それは川の両岸に架かる橋のように、あるチェーンから別のチェーンへ資産をシームレスに移動させ、ユーザーは異なるブロックチェーンネットワークのユニークな機能を活用できるようになります。さらに、アプリケーションの異なるチェーン間でデータや情報を転送することができます。そのメリットとは裏腹にクロスチェーンブリッジは、特にセキュリティの面で課題も抱えています。例えば、2021年にはPoly Networkがハッキングされ、6億ドル相当以上の暗号資産が失われました。2022年には、Axie InfinityのクロスチェーンブリッジであるRonin Networkから、ほぼ同量の暗号資産が盗まれています。これらの事例は、クロスチェーンブリッジがユーザーの資産やデータを保護するためにより包括的なセキュリティ対策が必要であることを示す証拠です。
近年、ゼロ知識証明(ZKP)の応用が大きく進展しています。ZKPはユーザーのデータプライバシーを保護し、Rollupスケーリングソリューションの有効性を証明する強力な暗号化ツールです。さらにクロスチェーンブリッジの設計においても、重要かつユニークな役割を果たします。これらの簡潔な証明により、ターゲットチェーンはソースチェーンの状態遷移を効率的に検証することができ、ターゲットチェーンとソースチェーンに無関係な第三者のリスクを軽減し、クロスチェーンブリッジの安全性を向上させます。本日は一般的なクロスチェーンブリッジの種類と、ZKP技術を用いたクロスチェーンブリッジをいくつか取り上げ、ZKP技術がクロスチェーンブリッジにどのように適用されているかを説明していきます。
クロスチェーンブリッジの種類
暗号資産研究者の0xjimはかつて、その設計や仕組みによってクロスチェーンブリッジを4つのカテゴリーに分けたことがあります。すなわち「Team Human」「Team Economics」「Team Security」「Team Game Theory」です。特にTeam Humanのチェーンはより中央集権的です。例えばRonin Networkは、公に知られたエンティティによって運営される9つのフルノードで構成されています。彼らはマルチシグネチャーの検証によって取引の正当性を証明し、ある閾値を超えるとその取引は検証されたとみなされます。通常であれば、これらの検証者が悪さをすることはありませんが、このような中央集権的なアプローチでは攻撃されて最大の抜け穴となる可能性があり、秘密鍵が適切に管理されないと悲惨なことになりかねません。
次に、Celer、Axelar、ThorchainなどのTeam Economicsです。これらはマルチシグに似ていますが、トークノミクスです。悪事を防ぐためにTeam Economicsのチェーンでは、ノード(検証者)のトークンステークを要求します。違反があった場合、バリデーターのステーク金は削減されます。つまり財務的な観点から、正しい気持ちで取引の正当性を検証する必要があります。
3つ目のタイプはTeam Securityと呼ばれるもので、TEEやMPCを活用してクロスチェーンの転送をより安全にするチェーンを対象としています。例えば、全ノードがIntel SGXのようなTEEで暗号化されたオフチェーンライトクライアント検証を行い、秘密鍵管理のプライバシーと完全性を維持するような場合です。
最後にLayerZero、Nomad、SynapseをカバーするTeam Game Theoryがあります。これらのプロトコルは、ブリッジングを2つの別々の仕事に分け、2つの仕事の実行者間の協調を阻害するものです。LayerZeroの場合、オラクルはブロックヘッダーを渡し、中継者はトランザクション証明を渡します。この2つを合わせて、オンチェーンライトクライアントの職務を遂行します。
4種類のブリッジはすべてオフチェーン認証と多要素認証に依存しています。特に最初の3つは基本的に、2つのパブリックチェーン間で情報を伝達する証人として、自身のPoSチェーン/ネットワークを使用します。より速く、より安く、よりスケーラブルなこのアプローチにより、これらのブリッジはより多くのチェーンに接続することが容易になりますが、その代償としてユーザーや流動性プロバイダーは、外部の検証者の資金やデータを完全に信頼しなければなりません。言い換えれば、利用者は、ソースチェーンやターゲットチェーンではなく、ブリッジのセキュリティに依存することになるのです。
ゼロ知識証明(ZKP)
近年クロスチェーンブリッジの事故が頻発し、大きな経済的損失が発生しています。これはクロスチェーンブリッジに追加の信頼前提がもたらす脆弱性を浮き彫りにしています。クロスチェーンブリッジの最も安全な設計は、最小限の信頼、すなわち、ブリッジはいかなる第三者も信頼せずに、接続された2つのチェーンのセキュリティ属性のみを継承することです。オンチェーン検証は、クロスチェーンブリッジの信頼を最小化する効果的な方法です。具体的にはターゲットチェーンはソースチェーンのコンセンサスを検証し、指定された取引がソースチェーンに含まれるかどうかを確認します。例えばターゲットチェーンのバリデーターは、ソースチェーンのライトクライアントを実行して、提出されたMerkleルートを確認し、そのトランザクションがソースチェーンのバリデーターから有効な署名を得ていることを検証することができます。しかし、オンチェーンでの検証にはかなりのコストがかかるためこの方法はなかなか採用されません。ターゲットチェーンのバリデーターは、異なるソースチェーンに対してライトクライアントを実行することは困難であり、ターゲットチェーンによっては、ソースチェーンが採用する署名スキームをサポートしない場合があります。例えば、Ethereum PoSコンセンサスのバリデータはBLS署名を使用しており、EVMはこれらの署名で使用されるBLS12-381曲線のプリコンパイルを持っていないため、このようなライトクライアントのSolidity実装は法外に高価となっています。
最近のZKPシステムの進歩は検証可能な計算をより簡潔なものにしました。さらに、ZKPはzk-SNARKがzkEVMプロジェクトのスケーリングを促進するように、クロスチェーンブリッジの設計においてユニークで重要な役割を果たします。検証可能な計算はチェーン状態の妥当性証明を生成することもでき、これらの妥当性証明は効率と低コストでライトクライアントのコンセンサスを検証し、信頼最小限の相互運用を可能にします。実際、クロスチェーンブリッジは、ZKPのゼロ知識特性ではなくその簡潔性を利用しています。この意味で、クロスチェーンブリッジにとってZKPはロールアップ・スケーリング・ソリューションの有効性証明に似ています。
Succinct Labs
Succinct LabsとGnosisはSNARKベースのクロスチェーンブリッジを共同発表し、EthereumとGnosis Chainなど任意の2つのEthereum PoSチェーン間の信頼最小限の相互運用を可能にしました。これは、簡潔なZKPを介してソースチェーンの状態の有効性の証明を生成するSolidityスマートコントラクトの形でライトクライアントをチェーン上に配置することによって達成されます。このアプローチにより効率的なライトクライアントの検証が可能になり、EthereumとGnosis Chain間のクロスチェーン通信が促進され、それによって信頼を最小化した相互運用が可能になります。ライトクライアントは、追加の信頼前提を必要とせずにGnosis上のEthereumブロックヘッダを追跡します。その逆もまた同様です。一方、27時間ごとにランダムに選ばれた512人のイーサリアムバリデーターからなる同期委員会が、イーサリアムの状態が有効かどうかを確認します。3分の2以上のバリデーターがブロックヘッダに署名すると、イーサリアムの状態が有効であるとみなされます。このようにこのスキームは本質的にPoSブリッジです。
Succinct LabsはCircomプログラミング言語とGroth16証明システムを使用したライトクライアントを介してzk-SNARKを生成し、オンチェーン検証のコストを削減します。ライトクライアントは、集約されたBLS署名を検証する代わりに1つのGroth16 zkSNARKを検証します。それとは別に、ライトクライアントは同期委員会のバリデーターを追跡する必要があります。同期委員会が新しいバリデーターを再選択するたびに、現在のバリデーターは次の委員会の公開鍵のSSZハッシュを含むブロックヘッダに署名します。SSZハッシュはSHA-256を使用しているため、SNARKに適しておらず多数の制約を計算する必要があります。この問題を解決するために、Succinct Labsは次のバリデーターセットのSSZハッシュをSNARKに適したPoseidonコミットにマッピングする回路を作成し、これをチェーン上に保存してBLS署名検証SNARKの入力として使用し、検証中の署名が本当に同期委員会のバリデーターのものかどうかを確認します。
この技術はまだ開発段階にあり、テストネット上のトークン・ブリッジはイーサリアムとGnnosis間のデモンストレーションのために開始されましたが、実際の資産を保護するために使用されたことはまだありません。さらに、この技術のセキュリティレベルはまだイーサリアムのコンセンサスには達していないことに留意する必要があります。
![](https://assets.st-note.com/img/1679393973393-tWSs7FJwCm.png?width=1200)
Electron Labs
Electron LabsはZKライトクライアントを通じてブロックチェーン間の通信を保護するクロスチェーンプロトコルです。IBCプロトコルとzk-SNARK技術を使用して、EthereumとCosmosエコシステム(および他のEVMチェーン)を接続することを目的としています。Electron Labsに似たプロジェクトにはPolymerとGeregeがあります。
通常、Cosmos IBCは、クロスチェーン取引を検証するためにソースチェーンとターゲットチェーンにスマートコントラクトの形でライトクライアントを配備します。同様にIBCをEthereumに接続するには、開発者はEthereum上でTendermintライトクライアントをSolidityスマートコントラクトとして実行する必要があります。しかし、Solidityで数百のEd25519署名を検証する必要があり、Ed25519のプリコンパイルがEthereum上で利用できないため、非常にガス代がかかる作業であることが判明しました。そのためElectron LabsはEd25519署名をEthereum上で直接検証するのではなく、署名の有効性のZKPをチェーン外で構築し、その証明をチェーン上で検証するという別の解決策を採用しています。
イーサリアム側のオンチェーンライトクライアントモジュールには、Ed25519署名の検証器の代わりにZK-Proof検証が搭載されます。中継者はライトクライアントの完全なヘッダーを提出するのではなく、同じように有効性の証明だけを提出することになります。Electron Labsでは、Ed25519署名のバッチに対してzk-SNARK証明を生成するCircomベースのライブラリを構築し、Ethereum上でこれらの署名を検証することをより安価に実現しています。
PositronはElectronの最初のブリッジで、GoerliテストネットとNEARテストネットの間で稼動しました。このブリッジはZKPとオンチェーンライトクライアントの実装を実証するために使用されています。公開テストでは、RPCノードの速度制限によりPositronのトランザクション処理に遅延が生じ、数百のトランザクションが数時間にわたってバックログされました。この問題はその後解決されました。
zkBridge
zkBridgeはトラストレス、パーミッションレス、拡張可能、普遍的、かつ効率的なクロスチェーンブリッジです。どのノードも自由にネットワークに参加し、ブロックヘッダを中継し、証明を生成し、報酬を請求することができます。具体的には、zkBridgeはブロックヘッダ中継ネットワークとアップデータコントラクトから構成されています。ブロックヘッダ中継ネットワークでは、中継者がソースチェーンからブロックヘッダを取得し、ブロックヘッダの有効性の証明を作成し、証明とともにターゲットチェーンに設定されたアップデータコントラクトに送信します。アップデータコントラクトでは、関連する証明書が検証に合格するとソースチェーンの対応するブロックヘッダが保存されます。さらに、アップデータコントラクトはライトクライアントの状態も維持します。新しいブロックヘッダが追加されるとソースチェーン上の他のライトクライアントと同様にライトクライアント状態を更新します。またアプリケーションに対して関数を公開し、これを通じてターゲットチェーン上のアプリケーションは、ソースチェーン上の所定の高さのブロックヘッダを取得できます。ブロックヘッダ情報を取得した後、アプリケーションはより多くの検証を行い独自の機能を構築することができます。
高速な証明生成とオンチェーンでの証明検証コストの低減のため、zkBridgeは2層の再帰的証明システムを使用しています。deVirgoは分散sumcheckと分散多項式コミットメントを組み合わせて最適な並列性を実現し、分散マシン上で実行すると証明生成を桁違いに高速化することができます。第2層では、zkBridgeはGroth16を用いてdeVirgoが以前に生成した証明が、対応するブロックヘッダを確かに証明することを証明します。
![](https://assets.st-note.com/img/1679394004981-y7vywTovyw.png?width=1200)
=nil; Foundation
ZK技術開発に焦点を当てデータベース管理システムと応用暗号の研究開発を支援・促進することを目的に、2018年4月に「=nil;Foundation」が設立されました。ブロックチェーンやプロトコルに完全な技術ソリューションを提供しニーズに合わせてZKPを生成できるように努めています。このプロジェクトを支える投資家には、トップ機関投資家のPolychainやトレンドのZKプロトコルであるStarkWareやMina Protocolが含まれます。
最近、=nil;Foundationは、zkVMを介さずC++やRustで書かれた既存のEVM実装コードをコンパイルできるzkLLVMという主流言語回路コンパイラを発表しました。zkLLVMを使えば、開発者はzkRollup、zkBridge、zkOracleなどのアプリケーションを低コストで迅速に構築することができます。また、SNARK/STARKS証明の生成には大きな計算能力が必要なため、=nil; Foundationは、チームの作業を簡略化して特定の種類の計算を第三者に委託できるように、ZK Proof Marketを設立し、Proof Requesterが任意の定義済み回路に対する証明要求を公開できるようにして、オープン入札による競争市場を提供しています。最後にProof MarketのProof Generatorsは注文を実行し、新しく生成されたプルーフを返します。
以前は、Mina-EthereumとSolana-Ethereumの間でzkBridgeを作成しました。zkLLVMを使えば、開発者はC++やRustといった主流のプログラミング言語で書かれたコードを直接回路にコンパイルし、必要な状態証明や合意証明を生成し、zkBridgeをセットアップできました。例えばMina ProtocolとEthereumは、zkLLVMを使用してMinaの補助的な状態証明回路とEVM内検証器を生成し、EVM上でMinaの状態を低コストで検証できるようにしています。
![](https://assets.st-note.com/img/1679394078507-ysGEaoRAUf.png?width=1200)
まとめ
今日、我々はZKP技術を使ってクロスチェーンブリッジを構築するいくつかのプロジェクトを経験しました。これらのプロジェクトはすべて、ZKPを使って有効性証明を生成し効率的かつ低コストでライトクライアントの合意検証を実現し、それによって信用コストを最小化する相互運用性を実現する方法を模索しています。まだ発展途上であり特定のチェーンに限定されることが多いものの、これらのプロジェクトはブロックチェーンが抱える相互運用性の問題に対する革新的な解決策を提供しています。ZKP技術の進歩に伴い、ブロックチェーン業界ではより多くのクロスチェーンソリューションが登場し、健全なセキュリティ性能を持つようになると考えています。
参考資料
ブリッジについて話すとき、私が話すこと
https://medium.com/coinmonks/what-i-talk-about-when-i-talk-about-bridges-429c16015774
EthereumとGnosisチェーンの橋渡しをするProof-of-Consensus
https://blog.succinct.xyz/post/2022/10/29/gnosis-bridge/
ZK-Snarksを使用してIBCをEthereumにもたらす
https://ethresear.ch/t/bringing-ibc-to-ethereum-using-zk-snarks/13634
zkBridge:信頼できるクロスチェーンブリッジの実用化に向けて
https://rdi.berkeley.edu/zkp/zkBridge/zkBridge.html
=nil; zkLLVM 回路コンパイラ
https://blog.nil.foundation/2023/02/02/circuit-compiler.html
この記事が気に入ったらサポートをしてみませんか?