zk-SNARK(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge)とは、ある当事者が秘密そのものを明かすことなく、その秘密を知っていることを他の当事者に証明できる暗号証明プロトコルのことです。分散型台帳ソリューションに追加することで、プライバシーとスケーラビリティを強化することができます。Zcashはzk-SNARKを最初に適用し、送信者、受信者、および金額が非公開になるシールド取引を作成する技術を使用しました。しかし、SNARKの中には信頼されたセットアップセレモニーに依存するものもあり、これは潜在的なセキュリティの脆弱性として批判されています。さらに、量子コンピュータが脅威となり始めたら、暗号技術におけるより大きな問題に対処する必要があると支持者は主張していますが、一部のSNARKは量子耐性があるとは考えられていません。
SNARKとSTARKにはそれぞれ明確な利点があり、どちらを選ぶかは特定のユースケースの要件によるものとなっています。SNARKは、その効率性とスピードで知られていますが、信頼されたセットアップセレモニーに起因する潜在的なセキュリティ上の脆弱性があります。一方、STARKは、信頼されたセットアップセレモニーを不要にすることでセキュリティを強化しますが、検証に時間がかかり、効率が悪いと考えられています。また、STARKはハッシュ関数に依存しているため、ほとんどのSNARKとは異なり、量子耐性があります。信頼されたセットアップセレモニーに関連するセキュリティ上の欠点があるにもかかわらず、SNARKはその初期の開発により、より広く採用されてきました。
zk-SNARKとzk-Rollupはどちらも、暗号資産(仮想通貨)で使われているゼロ知識証明技術です。イーサリアム(Ethereum)でよく使われるスケーリングソリューションであるzk-Rollupは、メインブロックチェーンから外れた大規模な取引群を束ねて検証し、それらを1つの取引にまとめます。オプティミスティックロールアップ(Optimistic rollups)やzk-ロールアップ(zk-Rollups)など様々なタイプがあり、後者はzk-SNARKやzk-STARKのようなゼロ知識証明技術を使用して取引を即座に検証し、暗号的有効性証明を作成します。
zk-SNARKを適用するには、証明が必要な情報を数式に変換する必要があります。送信者は、送受信の入力値と出力値が一致し、取引の完全性のためにデジタル署名にリンクされたプライベート支出鍵を持っていることを示す証明を構築します。Zcashのようなzk-SNARKを使用した仮想通貨は、そのプライバシー機能により人気を博しています。しかし、プライバシー通貨に投資する前に、潜在的な規制上の課題やボラティリティを考慮する必要があります。