zk-SNARKs 的乙太坊便利化
關於利用 zk-SNARKs 為乙太坊區塊鏈帶來隱私功能的討論很多。我的問題是,乙太坊目前如何促進 zk-SNARKs 的驗證,此外,在這個方向上計劃了哪些進一步的步驟?
我知道第一個 Metropolis 硬分叉 Byzantinum以預編譯合約的形式包含了一些更改(參見 EIP 198、EIP 212 (197) 和 EIP 213 (196) 並與ELI5:Byzantium Changes進行比較),這些更改允許zk-SNARK 驗證中使用的操作,例如橢圓曲線加法和配對。我還知道 ZoKrates,一個獨立的程序,它能夠將一個程序(從似乎是一組有限的程序)編譯成另一個程序,它可以生成非互動式零知識證明和智能合約進行鏈上驗證。不幸的是,我找不到任何關於它的文件。
我想知道除了這些 EIP 之外是否還有其他東西,以及對 zk-SNARK 驗證的支持是否會保持在那個水平?就個人而言,我懷疑由於乙太坊智能合約可以進行任意計算,因此用於執行 zk-SNARKs 的二次算術程序 (QAP) 通常會因應用程序的不同而有很大差異,因此無法提供更高級別的支持。
據我所知,ZoKrates + Byzantium 預編譯是目前可用的最通用的解決方案。最近他們還在 ZoKrates 中增加了對 sha256 的支持,極大地提高了適用性。
有關 ZoKrates 的教程和文件,請參閱https://zokrates.github.io/introduction.html
有關更高級的範例,請參閱ZKdai,它基本上與 ZoKrates 重新組合了 ZCash 功能。
除此之外,還有其他針對特殊情況的解決方案,例如ING 製造的Aztec或ZK 範圍證明。
ZK-SNARKS 的公開挑戰仍然是:
- 受信任的設置(有毒廢物)
- 鏈上證明驗證成本(~1,5M gas / 驗證)
- 鏈下證明創建(RAM 消耗可以輕鬆達到幾 GB / 證明)
以下是有關此問題的最新現代更新:
- 伊斯坦布爾https://eips.ethereum.org/EIPS/eip-1679讓與 zkSNARKS 相關的一切變得更便宜
- EY 實施了批量證明https://github.com/EYBlockchain/nightfall,其中多個 ZKP 可以在鏈上驗證
cost(N) << N * cost(1)
。- EY 起草了一個標準https://eips.ethereum.org/EIPS/eip-1922來辨識鏈上 ZKP 驗證者合約並與之互動