Privacy

zk-SNARKs 的乙太坊便利化

  • December 8, 2019

關於利用 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 製造的AztecZK 範圍證明。

ZK-SNARKS 的公開挑戰仍然是:

  • 受信任的設置(有毒廢物)
  • 鏈上證明驗證成本(~1,5M gas / 驗證)
  • 鏈下證明創建(RAM 消耗可以輕鬆達到幾 GB / 證明)

以下是有關此問題的最新現代更新:

引用自:https://ethereum.stackexchange.com/questions/45927