Cryptography

ZKSnarks 可以在乙太坊生態系統上實現嗎?

  • January 12, 2019

由於 Zcash 似乎已經完成了它的 ZKSnarks 實現(或幾乎至少)。

摩根大通 Quorum 的版本已經出現,其中包括 ZKsnarks 實現,請參見:https ://www.coindesk.com/jpmorgan-integrates-zcash-privacy-tech-enterprise-blockchain/

我們都知道,Snarks 的驗證時間獨立於電路(不是門的數量,這是真的)但無論如何,節點的驗證將比現在快得多,因為計算不會不再執行。

zkSNARKs 的可能性令人印象深刻,您可以驗證計算的正確性而無需執行它們,您甚至不會知道執行了什麼——只是它被正確地完成了。

正如乙太坊部落格上所說(可能具有較低的“數學/理論水平”

我知道LibSnark.cpp實現和其他實現,但我不是說將所有這些都放在 SmartContract 上,我說的是採用Snarks 結構的整個區塊鏈機制,以便處理完整的加密塊和交易,以及使用 ZkSnarks 驗證實現的節點驗證過程。

是否有可能在協議級別實施這些 SNARKS 來驗證整個乙太坊區塊鏈?如果不是,為什麼?

謝謝。

免責聲明:我不是密碼學家,也不是數學家,也不是低級軟體工程師。如果以下提供的任何資訊不正確,請糾正我。

**非常簡短的回答:**是 的

**簡短的回答:**可能,但今天非常困難。

**更長的答案:**乙太坊的主要挑戰是,由於您擁有可程式區塊鏈,因此您實際上需要將虛擬機(例如 EVM)實現為算術電路,這在今天是可能的,但絕非易事。擁有專門用於特定功能(例如轉移資產)的電路要簡單得多,這就是為什麼 Coda 協議以非可程式區塊鏈開始的原因。

考慮到這一點,現在的問題變成了我們需要什麼來使用遞歸 S(T|N)ARKs 來證明整個乙太坊鏈的有效性?

您需要建構一個實現隨機存取機 (RAM) 的電路,即可以訪問記憶體寄存器的 CPU。幸運的是,在一篇名為《馮·諾依曼架構的簡潔非互動式零知識》的論文中提出了這樣的設計。Mike Hearn 在 2016 年發表了一篇精彩的中篇文章,在更高的層次上描述了這個小型 zk-snark von Neumann 機器是什麼。總的來說,這仍然是一個非常複雜的電路,執行程式碼非常昂貴。然而,由於 SNARK 證明是可並行化的(例如,參見 DIZK),在機器之間以及在 GPU 或 SNARK ASIC 等硬體組件內(不知道任何存在於然而)。

一旦我們有了一個可以執行任意計算的電路,我們就需要編譯成這個虛擬機程式碼的語言。到那時,我認為我們可以簡潔地驗證整個乙太坊區塊鏈歷史,允許“瀏覽器內的完整節點”。

由於這需要很長時間才能實現,並且需要對基礎協議進行大量返工,因此創建這樣的驗證系統作為 L2 服務將很有趣。基本上,你可以付錢給人們證明一個給定的鏈自創世以來是有效的,這對於輕量級客戶來說是非常有價值的。這不需要硬分叉,並且可以證明是完全過渡到基於 SNARK 的鏈的有價值的實驗。

這裡的問題不是可行性,這已經得到充分證明,而是巨大的計算成本(就 EVM 指令而言,不是絕對的)。

Vitalik Buterin 正在敦促社區採用該技術。如果將一些原始函式添加到乙太坊所謂的“預編譯合約集”中,這可能會有所幫助,您可以在其中找到橢圓微積分、基本雜湊函式等。

目前,要停留在 EVM 和乙太坊規定的計算限制中並不容易(我說的是 gas 限制等等)。

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