ZKプログラミング言語の探求

初級編12/24/2023, 3:04:47 PM
この記事では、異なるZKプログラミング言語の適用範囲とそれぞれの利点、欠点について紹介しています。

ゼロ知識証明(ZKP)は、計算の正確性を検証する一方で、入力データのプライバシーを保護することができる強力な暗号ツールです。ドメイン固有言語(DSL)は、この重要なインフラストラクチャの一部として重要な役割を果たし、ZKP回路の開発および検証プロセスを簡素化します。DSLは、抽象的な概念と証明システムで必要とされる正確な回路表現との重要な橋渡しとして機能します。

プルーフシステムが直面する主要な課題の1つは、抽象的な高レベルの概念を実践的な回路に変換することです。ただし、DSLの登場により、これらの抽象的な概念をより具体的で実装可能な方法で構造化することが容易になり、それによりこの課題に対処しています。

過去10年間、DSLの量と多様性が著しく増加していることを目撃してきました。この分野の活気は、Noir、Leo、Zincなどのさまざまな回路言語の開発に表れています。Circomのような汎用オプションが必要か、Cairoのような特定プラットフォーム向けのカスタマイズされたソリューションが必要かにかかわらず、ZKP回路を記述するために多数の言語とフレームワークから選択できます。

この記事では、開発者が積極的に利用している主要なZKプログラミング言語を探求し、各言語の最良の機能を分析します。

StarkWareによるCairo

Cairoは、STARKプルーフをサポートする一般的な計算プログラムのためのコア言語です。これは、StarkNetおよびStarkExの成功に重要な役割を果たしており、Ethereumメインネット上のアプリケーションのスケーラビリティを推進しています。特筆すべきは、Cairoが、dYdX、Sorare、Immutable Xを含むさまざまなアプリケーションのサポートに重要な役割を果たしていることです。名前の「Cairo」は、「CPU Algebraic Intermediate Representation」の略語から派生しています。ゼロ知識プルーフの世界では、C、C++、Solidityのような低レベルプログラミング言語に精通した開発者がより簡単に始めることができるように、アセンブリ言語に類似した機能を果たしています。

Rustに触発され、Cairoはセキュリティとユーザーフレンドリーな開発に焦点を当てたStarknetスマートコントラクトを開発者に提供します。CairoはZK回路の作成を簡略化する強力な構文を誇り、ユーザーはCairoプログラム内で様々なタスクを実行できます。さらに、Cairoの大きな利点の1つはスケーラビリティであり、新機能や機能の柔軟な統合を可能にします。

ZKシステムでは、効率性とスケーラビリティが重要な要素であり、Cairoはその両方を重視することでこれらの要件を満たしています。この言語は、制約の削減やループの除去などの最適化戦略を統合しており、ZK回路に一般的に関連する計算負荷を軽減します。回路設計の最適化により、より高速な検証生成と検証が可能となり、高スループットと最小のレイテンシーが必要なアプリケーションにとって理想的な選択肢となっています。

カイロの拡大と発展は顕著であり、過去2年間にフルタイムの開発者の数が著しく増加しています。この急増は、カイロの適応性を強調しており、その使用はブロックチェーンに限定されるのではなく、計算検証を必要とするあらゆるコンテキストで重要です。したがって、カイロを採用する開発者のさらなる著しい成長が予想されます。

2023年9月28日、Starknetはプログラミング言語の重要なアップグレード、Cairo v2.3.0をリリースしました。このバージョンでは、新しい機能、ストレージオプション、およびイベント管理を導入することで、契約のモジュール化が進み、スマートコントラクトの可能性が向上しました。これらのコンポーネントの統合により、契約の機能を拡張する柔軟な方法が提供され、サードパーティのモジュールが契約の機能を強化することが可能になりました。

Zinc by ZkSync

Zincは、zkSyncプラットフォームでスマートコントラクトやSNARK回路を作成するために特別に設計されたプログラミング言語です。Rustの構文を採用し、Solidityの要素を統合し、独自の機能を提供しています。

Zincの独自性は、使いやすさにあります。First-Order Constraint System(R1CS)のすべての複雑な詳細に入る必要なしに、安全なコードを記述できます。Zincは、不変性を重視し、それに固有の機能的特性を与えています。これは、不変のデータと関数の評価を優先し、副作用を減らし、よりクリーンでエラーの少ないスマートコントラクトコードの記述を容易にします。

さらに、Zincには潜在的なオーバーフローを防ぐための安全な数学的演算が含まれており、すべての操作の安全性を確保しています。無限ループや再帰の不在などの制限があるにもかかわらず、Zincはコンソールログのトラッキングを通じてデバッグプロセスを簡素化しています。これらのログにより、テストネットワークやメインネットワーク上でのトランザクションの問題を追跡および解決しやすくなり、それによってデバッグ体験が向上します。

Noir By Aztec

Noirは、Aztecによって開発され、RustをベースにしたオープンソースのDSLで、深い暗号知識を必要とせずにZK回路とZKプログラムの作成を簡素化することを目的としています。どんな証明システムにも対応したZKアプリケーションの記述に最もアクセスしやすい言語の1つと考えられています。Noirはセキュリティ、簡素さ、パフォーマンスに焦点を当て、Rustに類似した高レベルの構文を提供します。暗号セキュリティを抽象化し、高性能を維持しながら、暗号プリミティブの使用を簡素化しています。

Noirは、ZKPが提供するプライバシー保護機能を活用できるアプリケーションの範囲を拡大する上で、重要な利点を持っており、これによりプライバシーと検証効率が向上します。これは、Abstract Circuit Intermediate Representation(Acer)と呼ばれる中間表現にコンパイルされ、さらにR1CSにコンパイルすることができます。バックエンドの証明システムを言語自体から分離することで、NoirはAztec Brettenberg、Turbo Plonkなどのさまざまな証明システムをサポートできます。また、将来的にはGroth16やHalo2などの統合も可能です。

言語には、SHA-256(固定サイズの出力を生成する暗号ハッシュ関数)やPedersen-Merkleチェック(PedersenコミットメントとMerkleツリーを使用してデータの整合性と一貫性を確認するための暗号検証技術)など、効率的な機能が備わった標準ライブラリが含まれています。Rustに似たNoirの設計は、関数、サブモジュール、ユーザー定義型(structs)、条件文、ループ、グローバル定数などのアプリケーション開発者にとって馴染みのある機能を網羅しています。さらに、一般化およびファーストクラス関数の開発が進められており、Noirの表現力をさらに高めるための取り組みが行われています。

Noirはまだ進化中であり、潜在的な制限やバグがあることに注意することが重要です。ただし、開発チームはその継続的な改善と最適化に取り組んでいます。

o1js by 0(1) Labs

o1js、以前はSnarkyJSとして知られていましたが、SNARKプログラミング言語を使用してスマートコントラクトを作成するために0(1) Labsが開発したTypeScriptライブラリです。Node.jsやブラウザ互換性などの確立された技術を十分に活用し、開発者にとって簡単にアクセスして利便性を確保しています。

o1jsは、JavaScriptおよびTypeScriptライブラリやツールとシームレスに統合されており、開発者に堅牢なエコシステムと幅広いコミュニティサポートを提供しています。この統合により、開発プロセスが簡素化され、新しい開発環境の導入に伴う学習曲線が低減されます。さらに、広く使用されているコードエディタであるVisual Studio Code(VS Code)を完全にサポートしており、コード補完、構文のハイライト、デバッグなどの機能をフルに活用でき、開発体験を向上させることができます。

基本的に、o1jsは、ZKプルーフを作成するために必要な主要ツールを提供する多機能ZKフレームワークです。基本的な算術、ハッシュ、署名、ブール演算、比較などのさまざまな組み込み証明可能操作をカバーする多様なZKプログラムをサポートしています。o1jsフレームワークを使用すると、Minaプロトコル上でzkAppsを構築することができ、これらのスマートコントラクトはクライアント側でプライベート入力を使用して実行されます。

2023年9月初頭、0(1) LabsチームがSnarkyJSからo1jsへの移行を発表し、パフォーマンスの向上にコミットしていることを強調しました。特に注目すべきは、ライブラリの読み込み時間を3〜4倍短縮したことで、o1jsのインポートに必要な時間を指します。このプロセスはメインスレッドをブロックする可能性があります。Webアプリケーションでは、読み込み時間がJavaScriptの実行タイミングや全体のページレンダリングにとって重要です。さらに、チームはMina zkApp CLIを更新してユーザーインターフェース構築体験を向上させ、信頼性と明瞭さを高めるためにArchive Node APIのさらなる改善を発表しました。

Leo by Aleo

Aleoブロックチェーンは、プライバシー保護に重点を置いたスマートコントラクト分野で際立っています。その中心には、Rustに触発された静的型付け言語であるLeoプログラミング言語があります。プライベートアプリケーションの開発を専門とするLeoは、安全で機密性の高い分散エコシステムを構築することを目指すクリエイターをサポートしています。Leoを本当に際立たせるのは、普遍的なゼロ知識アプリケーションの包括的なツールキットを導入する先駆的な役割です。このツールキットには、テストフレームワーク、パッケージレジストリ、インポートパーサー、リモートコンパイラ、定理ジェネレータが含まれています。

Leoのコンセプトは、Howard Wu率いる開発チームによって生み出され、開発者がプライバシーとセキュリティを重視しながら分散型アプリケーションを構築することを可能にするシステムを描いています。Rustの原則から引用しつつも、Leoの設計にはJavaScriptに類似した要素も取り入れられており、開発プロセス中に親しみやすさと容易さをもたらしています。さらに、Leoは統合テストプラットフォーム、パッケージレジストリ、インポートコンバーターを提供することで、開発を加速し効率化することを目指しています。この統合により、開発者はインフラの問題に悩まされることなく、アプリケーションのコアロジックに集中することができます。

Leoの注目すべき特徴は、プログラムを低レベルのR1CS証明形式に変換するコンパイラです。Leoコンパイラの独自性は、厳密な形式検証プロセスにあります。この検証は重要であり、脆弱性は初期プログラミングから監査およびコンパイルまでの複数の段階で発生する可能性があります。プログラマーの意図にコンパイラが一致することを確認するために厳密な数学的チェックを実施することにより、Leoは、特にL2コンテキスト、ZK-rollups、またはLeoプラットフォーム上のプライベートプログラムにおいて未検出のエラーや潜在的な脆弱性のリスクを最小限に抑えることを目指しています。

Circom by iden3

Circomは、ZK回路の開発のために綿密に作成されたドメイン固有言語(DSL)であり、Jordi Baylinaとiden3チームによる共同作業です。Rustで書かれたCircomコンパイラは、主にCircom言語を使用して開発された回路をコンパイルするために機能します。特筆すべきは、CircomがDark ForestやTornado Cashなどの現実世界での優れたZKアプリケーションの選択肢として台頭していることです。その人気は、最適化されたWASMプルーフを介した高速ブラウザプルーフタイム、rapidsnarkを介した効率的なサーバーサイドプルーフ、および効果的なオンチェーン検証を含む印象的なパフォーマンスに起因しています。

ただし、Circomの機能は主にZK回路の開発に焦点を当てていることを認識することが重要です。これにより、より広範な計算タスクにはあまり適していない可能性があります。より多様な機能を求める開発者は、Circomの能力がやや限定されていると感じるかもしれません。そのような場合、開発者はより包括的な開発要件を満たすために他のプログラミング言語やフレームワークを統合する必要があるかもしれません。


画像ソース:Circom

Circomの互換性は、主にsnarkjsやlibsnarkなどの広く使用されているゼロ知識証明(ZKP)システムに焦点を当てています。この互換性により、これらの一般的に使用されるシステムとのシームレスな統合が保証されますが、Circom 回路はこれらの依存関係に関連する特定の機能と制限を継承することも意味します。代替の ZKP システムを好む、または必要とする開発者は、互換性の問題に直面したり、Circom が生成した回路を好みのシステムに適合させ、統合するために余分な労力を費やす必要があるかもしれません。

Lurk by Lurk Lab

Lurkは、SchemeとCommon Lispの影響を受けた静的スコープのLisp方言であり、独自の特徴として、zk-SNARKsを使用してプログラムの実行の正確性を直接証明することができるため、コンパクトで効率的な検証が可能です。Lurkの主な用途は次のとおりです:

検証可能な計算:Lurkは、ゼロ知識条件下でその式の正当性を証明し、計算結果への信頼を高めます。

ゼロ知識:ユーザーは公開入力を超えた特定の情報を明らかにせずに知識を証明できるため、プライバシーが保護されます。

コンテンツアドレス可能データ:各Lurkプログラムには、IPFSおよびIPLDと互換性のあるユニークなコンテンツ識別子(CID)が備わっています。

チューリング完全性:Lurkは任意の計算文の作成と証明をサポートしています。

高階関数: Lurk 関数は、他の関数を受け入れて返すことができるため、表現力豊かな関数型プログラミングが容易になります。

プライベートデータを使用した計算:Lurkは、プライバシーリークなしで証明可能に正しい出力を確実に処理することを可能にします。

一般的な回路を構築する際、Lurk は広く Lisp の「cons」メモリ割り当て子を使用し、これにより式を結合し、ハッシングを通じて参照を生成します。鍵は、2 つの式が実際に同じ参照にハッシュされることを証明することにあります。この検証により、Lurk はスナーク回路内で計算を実行できるようになります。

Lurkの機能は豊富で、無限の再帰、ループ、条件付き制御フロー、Groth16、SnarkPack+、Novaなどの複数のバックエンド証明システムのサポートが含まれています。この柔軟性により、検証可能な計算、プライベートデータの取り扱い、snark回路内でのチューリング完全プログラムの実行など、さまざまなアプリケーションの可能性が広がります。

結論

ZKアプリケーションの多様性が高まるにつれて、ZK領域のDSLに対する展望も広がっています。DSLの成功の鍵は、活気のあるコミュニティの確立と豊富なライブラリを通じて開発者の経験を豊かにすることにあります。既存のライブラリとの互換性を重視するDSLは、より広範な開発者コミュニティの知識とリソースを十分に活用することができます。このアプローチは、よりスムーズな統合を支援し、開発を加速し、ZKアプリケーションの実装においてより大きな柔軟性を提供します。このような協力の取り組みは、DSLを中心により強固なエコシステムを育成する上で重要であり、開発者に具体的な利点を提供し、ZKテクノロジーの採用と効果をさらに促進する役割を果たしています。

免責事項:

  1. この記事は[から転載されていますpanewslab]. All copyrights belong to the original author [ScalingX]. If there are objections to this reprint, please contact the Gate Learn team, and they will handle it promptly.
  2. 責任の免責事項:この記事で表現されている意見や見解は、著者個人のものであり、投資アドバイスを構成するものではありません。
  3. この記事の翻訳は、Gate Learnチームによって行われます。特に記載されていない限り、翻訳された記事のコピー、配布、または盗用は禁止されています。

ZKプログラミング言語の探求

初級編12/24/2023, 3:04:47 PM
この記事では、異なるZKプログラミング言語の適用範囲とそれぞれの利点、欠点について紹介しています。

ゼロ知識証明(ZKP)は、計算の正確性を検証する一方で、入力データのプライバシーを保護することができる強力な暗号ツールです。ドメイン固有言語(DSL)は、この重要なインフラストラクチャの一部として重要な役割を果たし、ZKP回路の開発および検証プロセスを簡素化します。DSLは、抽象的な概念と証明システムで必要とされる正確な回路表現との重要な橋渡しとして機能します。

プルーフシステムが直面する主要な課題の1つは、抽象的な高レベルの概念を実践的な回路に変換することです。ただし、DSLの登場により、これらの抽象的な概念をより具体的で実装可能な方法で構造化することが容易になり、それによりこの課題に対処しています。

過去10年間、DSLの量と多様性が著しく増加していることを目撃してきました。この分野の活気は、Noir、Leo、Zincなどのさまざまな回路言語の開発に表れています。Circomのような汎用オプションが必要か、Cairoのような特定プラットフォーム向けのカスタマイズされたソリューションが必要かにかかわらず、ZKP回路を記述するために多数の言語とフレームワークから選択できます。

この記事では、開発者が積極的に利用している主要なZKプログラミング言語を探求し、各言語の最良の機能を分析します。

StarkWareによるCairo

Cairoは、STARKプルーフをサポートする一般的な計算プログラムのためのコア言語です。これは、StarkNetおよびStarkExの成功に重要な役割を果たしており、Ethereumメインネット上のアプリケーションのスケーラビリティを推進しています。特筆すべきは、Cairoが、dYdX、Sorare、Immutable Xを含むさまざまなアプリケーションのサポートに重要な役割を果たしていることです。名前の「Cairo」は、「CPU Algebraic Intermediate Representation」の略語から派生しています。ゼロ知識プルーフの世界では、C、C++、Solidityのような低レベルプログラミング言語に精通した開発者がより簡単に始めることができるように、アセンブリ言語に類似した機能を果たしています。

Rustに触発され、Cairoはセキュリティとユーザーフレンドリーな開発に焦点を当てたStarknetスマートコントラクトを開発者に提供します。CairoはZK回路の作成を簡略化する強力な構文を誇り、ユーザーはCairoプログラム内で様々なタスクを実行できます。さらに、Cairoの大きな利点の1つはスケーラビリティであり、新機能や機能の柔軟な統合を可能にします。

ZKシステムでは、効率性とスケーラビリティが重要な要素であり、Cairoはその両方を重視することでこれらの要件を満たしています。この言語は、制約の削減やループの除去などの最適化戦略を統合しており、ZK回路に一般的に関連する計算負荷を軽減します。回路設計の最適化により、より高速な検証生成と検証が可能となり、高スループットと最小のレイテンシーが必要なアプリケーションにとって理想的な選択肢となっています。

カイロの拡大と発展は顕著であり、過去2年間にフルタイムの開発者の数が著しく増加しています。この急増は、カイロの適応性を強調しており、その使用はブロックチェーンに限定されるのではなく、計算検証を必要とするあらゆるコンテキストで重要です。したがって、カイロを採用する開発者のさらなる著しい成長が予想されます。

2023年9月28日、Starknetはプログラミング言語の重要なアップグレード、Cairo v2.3.0をリリースしました。このバージョンでは、新しい機能、ストレージオプション、およびイベント管理を導入することで、契約のモジュール化が進み、スマートコントラクトの可能性が向上しました。これらのコンポーネントの統合により、契約の機能を拡張する柔軟な方法が提供され、サードパーティのモジュールが契約の機能を強化することが可能になりました。

Zinc by ZkSync

Zincは、zkSyncプラットフォームでスマートコントラクトやSNARK回路を作成するために特別に設計されたプログラミング言語です。Rustの構文を採用し、Solidityの要素を統合し、独自の機能を提供しています。

Zincの独自性は、使いやすさにあります。First-Order Constraint System(R1CS)のすべての複雑な詳細に入る必要なしに、安全なコードを記述できます。Zincは、不変性を重視し、それに固有の機能的特性を与えています。これは、不変のデータと関数の評価を優先し、副作用を減らし、よりクリーンでエラーの少ないスマートコントラクトコードの記述を容易にします。

さらに、Zincには潜在的なオーバーフローを防ぐための安全な数学的演算が含まれており、すべての操作の安全性を確保しています。無限ループや再帰の不在などの制限があるにもかかわらず、Zincはコンソールログのトラッキングを通じてデバッグプロセスを簡素化しています。これらのログにより、テストネットワークやメインネットワーク上でのトランザクションの問題を追跡および解決しやすくなり、それによってデバッグ体験が向上します。

Noir By Aztec

Noirは、Aztecによって開発され、RustをベースにしたオープンソースのDSLで、深い暗号知識を必要とせずにZK回路とZKプログラムの作成を簡素化することを目的としています。どんな証明システムにも対応したZKアプリケーションの記述に最もアクセスしやすい言語の1つと考えられています。Noirはセキュリティ、簡素さ、パフォーマンスに焦点を当て、Rustに類似した高レベルの構文を提供します。暗号セキュリティを抽象化し、高性能を維持しながら、暗号プリミティブの使用を簡素化しています。

Noirは、ZKPが提供するプライバシー保護機能を活用できるアプリケーションの範囲を拡大する上で、重要な利点を持っており、これによりプライバシーと検証効率が向上します。これは、Abstract Circuit Intermediate Representation(Acer)と呼ばれる中間表現にコンパイルされ、さらにR1CSにコンパイルすることができます。バックエンドの証明システムを言語自体から分離することで、NoirはAztec Brettenberg、Turbo Plonkなどのさまざまな証明システムをサポートできます。また、将来的にはGroth16やHalo2などの統合も可能です。

言語には、SHA-256(固定サイズの出力を生成する暗号ハッシュ関数)やPedersen-Merkleチェック(PedersenコミットメントとMerkleツリーを使用してデータの整合性と一貫性を確認するための暗号検証技術)など、効率的な機能が備わった標準ライブラリが含まれています。Rustに似たNoirの設計は、関数、サブモジュール、ユーザー定義型(structs)、条件文、ループ、グローバル定数などのアプリケーション開発者にとって馴染みのある機能を網羅しています。さらに、一般化およびファーストクラス関数の開発が進められており、Noirの表現力をさらに高めるための取り組みが行われています。

Noirはまだ進化中であり、潜在的な制限やバグがあることに注意することが重要です。ただし、開発チームはその継続的な改善と最適化に取り組んでいます。

o1js by 0(1) Labs

o1js、以前はSnarkyJSとして知られていましたが、SNARKプログラミング言語を使用してスマートコントラクトを作成するために0(1) Labsが開発したTypeScriptライブラリです。Node.jsやブラウザ互換性などの確立された技術を十分に活用し、開発者にとって簡単にアクセスして利便性を確保しています。

o1jsは、JavaScriptおよびTypeScriptライブラリやツールとシームレスに統合されており、開発者に堅牢なエコシステムと幅広いコミュニティサポートを提供しています。この統合により、開発プロセスが簡素化され、新しい開発環境の導入に伴う学習曲線が低減されます。さらに、広く使用されているコードエディタであるVisual Studio Code(VS Code)を完全にサポートしており、コード補完、構文のハイライト、デバッグなどの機能をフルに活用でき、開発体験を向上させることができます。

基本的に、o1jsは、ZKプルーフを作成するために必要な主要ツールを提供する多機能ZKフレームワークです。基本的な算術、ハッシュ、署名、ブール演算、比較などのさまざまな組み込み証明可能操作をカバーする多様なZKプログラムをサポートしています。o1jsフレームワークを使用すると、Minaプロトコル上でzkAppsを構築することができ、これらのスマートコントラクトはクライアント側でプライベート入力を使用して実行されます。

2023年9月初頭、0(1) LabsチームがSnarkyJSからo1jsへの移行を発表し、パフォーマンスの向上にコミットしていることを強調しました。特に注目すべきは、ライブラリの読み込み時間を3〜4倍短縮したことで、o1jsのインポートに必要な時間を指します。このプロセスはメインスレッドをブロックする可能性があります。Webアプリケーションでは、読み込み時間がJavaScriptの実行タイミングや全体のページレンダリングにとって重要です。さらに、チームはMina zkApp CLIを更新してユーザーインターフェース構築体験を向上させ、信頼性と明瞭さを高めるためにArchive Node APIのさらなる改善を発表しました。

Leo by Aleo

Aleoブロックチェーンは、プライバシー保護に重点を置いたスマートコントラクト分野で際立っています。その中心には、Rustに触発された静的型付け言語であるLeoプログラミング言語があります。プライベートアプリケーションの開発を専門とするLeoは、安全で機密性の高い分散エコシステムを構築することを目指すクリエイターをサポートしています。Leoを本当に際立たせるのは、普遍的なゼロ知識アプリケーションの包括的なツールキットを導入する先駆的な役割です。このツールキットには、テストフレームワーク、パッケージレジストリ、インポートパーサー、リモートコンパイラ、定理ジェネレータが含まれています。

Leoのコンセプトは、Howard Wu率いる開発チームによって生み出され、開発者がプライバシーとセキュリティを重視しながら分散型アプリケーションを構築することを可能にするシステムを描いています。Rustの原則から引用しつつも、Leoの設計にはJavaScriptに類似した要素も取り入れられており、開発プロセス中に親しみやすさと容易さをもたらしています。さらに、Leoは統合テストプラットフォーム、パッケージレジストリ、インポートコンバーターを提供することで、開発を加速し効率化することを目指しています。この統合により、開発者はインフラの問題に悩まされることなく、アプリケーションのコアロジックに集中することができます。

Leoの注目すべき特徴は、プログラムを低レベルのR1CS証明形式に変換するコンパイラです。Leoコンパイラの独自性は、厳密な形式検証プロセスにあります。この検証は重要であり、脆弱性は初期プログラミングから監査およびコンパイルまでの複数の段階で発生する可能性があります。プログラマーの意図にコンパイラが一致することを確認するために厳密な数学的チェックを実施することにより、Leoは、特にL2コンテキスト、ZK-rollups、またはLeoプラットフォーム上のプライベートプログラムにおいて未検出のエラーや潜在的な脆弱性のリスクを最小限に抑えることを目指しています。

Circom by iden3

Circomは、ZK回路の開発のために綿密に作成されたドメイン固有言語(DSL)であり、Jordi Baylinaとiden3チームによる共同作業です。Rustで書かれたCircomコンパイラは、主にCircom言語を使用して開発された回路をコンパイルするために機能します。特筆すべきは、CircomがDark ForestやTornado Cashなどの現実世界での優れたZKアプリケーションの選択肢として台頭していることです。その人気は、最適化されたWASMプルーフを介した高速ブラウザプルーフタイム、rapidsnarkを介した効率的なサーバーサイドプルーフ、および効果的なオンチェーン検証を含む印象的なパフォーマンスに起因しています。

ただし、Circomの機能は主にZK回路の開発に焦点を当てていることを認識することが重要です。これにより、より広範な計算タスクにはあまり適していない可能性があります。より多様な機能を求める開発者は、Circomの能力がやや限定されていると感じるかもしれません。そのような場合、開発者はより包括的な開発要件を満たすために他のプログラミング言語やフレームワークを統合する必要があるかもしれません。


画像ソース:Circom

Circomの互換性は、主にsnarkjsやlibsnarkなどの広く使用されているゼロ知識証明(ZKP)システムに焦点を当てています。この互換性により、これらの一般的に使用されるシステムとのシームレスな統合が保証されますが、Circom 回路はこれらの依存関係に関連する特定の機能と制限を継承することも意味します。代替の ZKP システムを好む、または必要とする開発者は、互換性の問題に直面したり、Circom が生成した回路を好みのシステムに適合させ、統合するために余分な労力を費やす必要があるかもしれません。

Lurk by Lurk Lab

Lurkは、SchemeとCommon Lispの影響を受けた静的スコープのLisp方言であり、独自の特徴として、zk-SNARKsを使用してプログラムの実行の正確性を直接証明することができるため、コンパクトで効率的な検証が可能です。Lurkの主な用途は次のとおりです:

検証可能な計算:Lurkは、ゼロ知識条件下でその式の正当性を証明し、計算結果への信頼を高めます。

ゼロ知識:ユーザーは公開入力を超えた特定の情報を明らかにせずに知識を証明できるため、プライバシーが保護されます。

コンテンツアドレス可能データ:各Lurkプログラムには、IPFSおよびIPLDと互換性のあるユニークなコンテンツ識別子(CID)が備わっています。

チューリング完全性:Lurkは任意の計算文の作成と証明をサポートしています。

高階関数: Lurk 関数は、他の関数を受け入れて返すことができるため、表現力豊かな関数型プログラミングが容易になります。

プライベートデータを使用した計算:Lurkは、プライバシーリークなしで証明可能に正しい出力を確実に処理することを可能にします。

一般的な回路を構築する際、Lurk は広く Lisp の「cons」メモリ割り当て子を使用し、これにより式を結合し、ハッシングを通じて参照を生成します。鍵は、2 つの式が実際に同じ参照にハッシュされることを証明することにあります。この検証により、Lurk はスナーク回路内で計算を実行できるようになります。

Lurkの機能は豊富で、無限の再帰、ループ、条件付き制御フロー、Groth16、SnarkPack+、Novaなどの複数のバックエンド証明システムのサポートが含まれています。この柔軟性により、検証可能な計算、プライベートデータの取り扱い、snark回路内でのチューリング完全プログラムの実行など、さまざまなアプリケーションの可能性が広がります。

結論

ZKアプリケーションの多様性が高まるにつれて、ZK領域のDSLに対する展望も広がっています。DSLの成功の鍵は、活気のあるコミュニティの確立と豊富なライブラリを通じて開発者の経験を豊かにすることにあります。既存のライブラリとの互換性を重視するDSLは、より広範な開発者コミュニティの知識とリソースを十分に活用することができます。このアプローチは、よりスムーズな統合を支援し、開発を加速し、ZKアプリケーションの実装においてより大きな柔軟性を提供します。このような協力の取り組みは、DSLを中心により強固なエコシステムを育成する上で重要であり、開発者に具体的な利点を提供し、ZKテクノロジーの採用と効果をさらに促進する役割を果たしています。

免責事項:

  1. この記事は[から転載されていますpanewslab]. All copyrights belong to the original author [ScalingX]. If there are objections to this reprint, please contact the Gate Learn team, and they will handle it promptly.
  2. 責任の免責事項:この記事で表現されている意見や見解は、著者個人のものであり、投資アドバイスを構成するものではありません。
  3. この記事の翻訳は、Gate Learnチームによって行われます。特に記載されていない限り、翻訳された記事のコピー、配布、または盗用は禁止されています。
今すぐ始める
登録して、
$100
のボーナスを獲得しよう!
It seems that you are attempting to access our services from a Restricted Location where Gate is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Thailand, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.