零知識證明是一種在不透露陳述本身的情況下證明陳述有效性的方法。 “證明者”是試圖證明某個主張的一方,而“驗證者”則負責驗證該主張。
零知識證明首次出現於 1985 年的一篇論文“交互式證明繫統的知識覆雜性
”它提供了當今廣泛使用的零知識證明的定義:
零知識協議是一種方法,通過該方法,一方(證明者)可以曏另一方(驗證者)證明某件事是真實的,除了該特定陳述是真實的事實之外,無需透露任何信息。
多年來,零知識證明已經得到改進,現在已用於多個現實世界的應用程序中。
零知識證明代錶了應用密碼學的突破,因爲它們承諾提高個人信息的安全性。考慮如何曏另一方(例如服務提供商)證明某項主張(例如“我是 X 國家的公民”)。您需要提供“證據”來支持您的主張,例如國民護照或駕駛執照。
但這種方法也存在問題,主要是缺乏隱私。與第三方服務共享的個人身份信息 (PII) 存儲在中央數據庫中,很容易受到黑客攻擊。隨著身份盜竊成爲一個關鍵問題,人們呼吁採用更多保護隱私的方式來共享敏感信息。
零知識證明通過消除揭示信息來證明主張有效性的需要來解決這個問題。零知識協議使用語句(稱爲“見證人”)作爲輸入來生成其有效性的簡潔證明。該證明爲陳述的真實性提供了強有力的保證,而無需暴露創建陳述時使用的信息。
回到我們之前的例子,證明您的公民身份所需的唯一證據是零知識證明。驗證者隻需檢查證明的某些屬性是否成立,即可確信底層陳述也成立。
零知識證明允許您證明陳述的真實性,而無需共享陳述的內容或透露您如何髮現真相。爲了實現這一點,零知識協議依賴於將一些數據作爲輸入併返回“真”或“假”作爲輸出的算法。
零知識協議必鬚滿足以下標準:
在基本形式中,零知識證明由三個要素組成:見證人、挑戰,以及響應。
上麵描述了“交互式零知識證明”的結構。早期的零知識協議使用交互式證明,驗證聲明的有效性需要證明者和驗證者之間的來回通信。
Jean-Jacques Quisquater 著名的阿裡巴巴洞穴故事是説明交互式證明工作原理的一個很好的例子阿裡巴巴洞穴故事
。在故事中,佩吉(證明者)想要曏維剋多(驗證者)證明她知道打開魔法門的秘密短語,但又不透露該短語。
雖然具有革命性,但交互式證明的用處有限,因爲它需要兩方隨時待命併反覆互動。即使驗證者確信證明者的誠實性,該證明也無法用於獨立驗證(計算新證明需要證明者和驗證者之間的一組新消息)。
爲了解決這個問題,Manuel Blum、Paul Feldman 和 Silvio Micali 提出了第一個非交互式零知識證明
其中證明者和驗證者有一個共享密鑰。這允許證明者證明他們對某些信息(即證人)的了解,而無需提供信息本身。
與交互式證明不衕,非交互式證明隻需要參與者(證明者和驗證者)之間進行一輪通信。證明者將秘密信息傳遞給特殊算法來計算零知識證明。該證明被髮送給驗證者,驗證者使用另一種算法檢查證明者是否知道秘密信息。
非交互式證明減少了證明者和驗證者之間的通信,使 ZK 證明更加高效。此外,一旦生成證明,其他任何人(有權訪問共享密鑰和驗證算法)都可以對其進行驗證。
非交互式證明代錶了零知識技術的突破,併促進了當今使用的證明繫統的髮展。我們在下麵討論這些證明類型:
ZK-SNARK 是 Zero-Knowledge Succinct Non-Interactive Argument of Knowledge 的縮寫。 ZK-SNARK協議具有以下特點:
前麵提到的“共享密鑰”是指證明者和驗證者衕意在生成和驗證證明時使用的公共參數。生成公共參數(統稱爲公共引用字符串 (CRS))是一項敏感操作,因爲它對於協議的安全性非常重要。如果用於生成 CRS 的熵(隨機性)落入不誠實的證明者手中,他們就可以計算出錯誤的證明。
是一種降低生成公共參數風險的方法。多方參與可信設置儀式
,其中每個人貢獻一些隨機值來生成 CRS。隻要誠實的一方銷毀了他們的那部分熵,ZK-SNARK 協議就可以保持計算的健全性。
可信設置要求用戶信任參數生成的參與者。然而,ZK-STARK 的開髮使得證明協議能夠在不可信的設置下工作。
ZK-STARK 是零知識可擴展透明知識論證的縮寫。 ZK-STARK 與 ZK-SNARK 類似,不衕之處在於:
ZK-STARK 産生的證明比 ZK-SNARK 更大,這意味著它們通常具有更高的驗證開銷。然而,在某些情況下(例如證明大型數據集),ZK-STARK 可能比 ZK-SNARK 更具成本效益。
信用卡支付通常對多方可見,包括支付提供商、銀行和其他相關方(例如政府當局)。雖然金融監控有利於識別非法活動,但它也損害了普通公民的隱私。
加密貨幣旨在爲用戶提供一種進行私人點對點交易的方式。但大多數加密貨幣交易在公共區塊鏈上公開可見。用戶身份通常是假名的,併且要麽故意與現實世界的身份相關聯(例如,通過在 Twitter 或 GitHub 個人資料上包含 ETH 地址),要麽可以使用基本的鏈上和鏈下數據分析與現實世界的身份相關聯。
有專門爲完全匿名交易而設計的“隱私幣”。以隱私爲中心的區塊鏈,例如 Zcash 和 Monero,屏蔽交易詳細信息,包括髮送者/接收者地址、資産類型、數量和交易時間錶。
通過將零知識技術融入協議中,註重隱私的區塊鏈網絡允許節點無需訪問交易數據即可驗證交易。
零知識證明也被應用於公共區塊鏈上的匿名交易。一個例子是 Tornado Cash,這是一種去中心化的非托管服務,允許用戶在以太坊上進行私人交易。 Tornado Cash 使用零知識證明來混淆交易細節併保證財務隱私。不幸的是,因爲這些都是“選擇加入”的。它們與非法活動相關的隱私工具。爲了剋服這個問題,隱私最終必鬚成爲公共區塊鏈的默認設置。
當前的身份管理繫統使個人信息麵臨風險。零知識證明可以幫助個人驗證身份,衕時保護敏感細節。
零知識證明在去中心化身份的背景下特別有用。去中心化身份(也稱爲“自我主權身份”)使個人能夠控製對個人標識符的訪問。在不透露稅號或護照詳細信息的情況下證明您的公民身份是零知識技術如何實現去中心化身份的一個很好的例子。
使用在線服務需要證明您的身份和訪問這些平颱的權利。這通常需要提供個人信息,例如姓名、電子郵件地址、出生日期等。您可能還需要記住長密碼,否則可能會失去訪問權限。
然而,零知識證明可以簡化平颱和用戶的身份驗證。一旦使用公共輸入(例如,證明用戶平颱成員身份的數據)和私有輸入(例如,用戶的詳細信息)生成了 ZK 證明,用戶就可以簡單地將其呈現給當他們需要訪問服務時驗證他們的身份。這改善了用戶體驗,併使組織無需存儲大量用戶信息。
可驗證計算是零知識技術用於改進區塊鏈設計的另一個應用。可驗證計算允許我們將計算外包給另一個實體,衕時保持可驗證的結果。該實體提交結果以及驗證程序是否正確執行的證據。
可驗證的計算對於提高區塊鏈的處理速度而不降低安全性至關重要。理解這一點需要了解擴展以太坊所提出的解決方案的差異。
鏈上擴容解決方案,例如分片,需要對區塊鏈基礎層進行大量修改。然而,這種方法非常覆雜,實施中的錯誤可能會破壞以太坊的安全模型。
鏈下擴容解決方案不需要重新設計核心以太坊協議。相反,他們依靠外包計算模型來提高以太坊基礎層的吞吐量。
下麵是它在實踐中的運作方式:
這樣做的好處是,以太坊不需要執行任何執行,隻需將外包計算的結果應用到其狀態即可。這減少了網絡擁塞,併提高了交易速度(鏈下協議優化以加快執行速度)。
鏈需要一種方法來驗證鏈下交易而不重新執行它們,否則鏈下執行的價值就會丟失。
這就是可驗證計算髮揮作用的地方。當節點在以太坊之外執行交易時,它會提交零知識證明來證明鏈下執行的正確性。這個證明(稱爲
有效性證明)保證交易有效,允許以太坊將結果應用到其狀態,而無需等待任何人對其提出異議。
零知識彙總 和 validiums 是兩種鏈外擴容解決方案,它們使用有效性證明來提供安全的可擴展性。這些協議在鏈下執行數千筆交易,併提交證據以在以太坊上進行驗證。一旦證明得到驗證,這些結果就可以立即應用,從而使以太坊能夠在不增加基礎層計算的情況下處理更多交易。
區塊鏈投票方案具有許多有利的特徵:它們完全可審計、不受攻擊、不受審查、不受地域限製。但即使是鏈上投票方案也無法避免串通問題。
共謀被定義爲“通過欺騙、欺騙和誤導他人來協調限製公開競爭”,其形式可能是惡意行爲者通過行賄影響投票。例如,Alice 可能會收到 Bob 的賄賂,以便在選票上投票給 option B,即使她更喜歡 option A。
賄賂和共謀限製了任何使用投票作爲信號機製的流程的有效性(特別是在用戶可以證明他們如何投票的情況下)。這可能會産生重大後果,特別是在投票負責分配稀缺資源的情況下。
例如,二次融資機製
依靠捐贈來衡量對不衕公益項目中某些選項的偏好。每次捐款都算作一次“投票”。對於特定項目,穫得更多選票的項目可以從匹配池中穫得更多資金。
使用鏈上投票使得二次融資容易受到串通:區塊鏈交易是公開的,因此行賄者可以檢查受賄者的鏈上活動以了解他們如何“投票”。這樣,二次方融資就不再是根據社區總體偏好分配資金的有效手段。
幸運的是,諸如 MACI(最低反共謀基礎設施)之類的新解決方案正在使用零知識證明來使鏈上投票(例如二次融資機製)能夠抵禦賄賂和共謀。 MACI 是一組智能合約和腳本,允許中央管理員(稱爲“協調員”)彙總投票和統計結果而無需透露的具體細節每個人如何投票。即便如此,仍然可以驗證計票是否正確,或者確認特定個人參與了投票輪。
首先,協調員在以太坊上部署 MACI 合約,之後用戶可以註冊投票(通過在智能合約中註冊他們的公鑰)。用戶通過將使用其公鑰加密的消息髮送到智能合約來進行投票(有效的投票必鬚使用與用戶身份相關的最新公鑰以及其他標準進行簽名)。之後,協調員在投票期結束後處理所有消息,統計選票,併在鏈上驗證結果。
在MACI中,零知識證明用於確保計算的正確性,使協調者不可能錯誤地處理投票和統計結果。這是通過要求協調者生成 ZK-SNARK 證明來實現的,驗證 a) 所有消息均已正確處理 b) 最終結果對應於所有有效消息的總和有效 投票。
因此,即使不共享每個用戶的投票細目(通常是這種情況),MACI 也能保證統計過程中計算結果的完整性。此功能對於降低基本共謀方案的有效性非常有用。我們可以通過使用之前 Bob 賄賂 Alice 來投票給某個選項的示例來探索這種可能性:
使用 MACI 確實需要相信協調員不會與賄賂者勾結或試圖賄賂選民本身。協調員可以解密用戶消息(創建證明所必需的),以便他們可以準確驗證每個人的投票方式。
但在協調員保持誠實的情況下,MACI 是保證鏈上投票神聖性的強大工具。這解釋了它在二次融資應用程序中的受歡迎程度(例如,clr.fund
)這在很大程度上依賴於每個人投票選擇的完整性。
生成零知識證明涉及非常覆雜的計算,最好在專用機器上執行。由於這些機器價格昂貴,通常超出了普通人的能力範圍。此外,想要使用零知識技術的應用程序必鬚考慮硬件成本,這可能會增加最終用戶的成本。
驗證證明還需要覆雜的計算,併增加了在應用程序中實施零知識技術的成本。這種成本在證明計算的背景下尤其重要。例如,ZK-rollups 需要支付約 500,000 Gas 來驗證以太坊上的單個 ZK-SNARK 證明,而 ZK-STARK 則需要更高的費用。
在 ZK-SNARK 中,公共參考字符串(公共參數)生成一次,可供希望參與零知識協議的各方重覆使用。公共參數是通過可信設置儀式創建的,其中參與者被認爲是誠實的。
但用戶實際上沒有辦法評估參與者的誠實度,用戶必鬚相信開髮者的話。 ZK-STARK 不受信任假設的影響,因爲生成字符串時使用的隨機性是可公開驗證的。與此衕時,研究人員正在研究 ZK-SNARK 的非可信設置,以提高證明機製的安全性。
ZK-SNARK 使用橢圓曲線密碼學
電子CDSA) 用於加密。雖然 ECDSA 算法目前是安全的,但量子計算機的髮展將來可能會打破其安全模型。
ZK-STARK 被認爲不受量子計算的威脅,因爲它使用抗碰撞哈希進行加密。與橢圓曲線加密中使用的公私密鑰對不衕,抗碰撞散列對於量子計算算法來説更難破解。
零知識證明是一種在不透露陳述本身的情況下證明陳述有效性的方法。 “證明者”是試圖證明某個主張的一方,而“驗證者”則負責驗證該主張。
零知識證明首次出現於 1985 年的一篇論文“交互式證明繫統的知識覆雜性
”它提供了當今廣泛使用的零知識證明的定義:
零知識協議是一種方法,通過該方法,一方(證明者)可以曏另一方(驗證者)證明某件事是真實的,除了該特定陳述是真實的事實之外,無需透露任何信息。
多年來,零知識證明已經得到改進,現在已用於多個現實世界的應用程序中。
零知識證明代錶了應用密碼學的突破,因爲它們承諾提高個人信息的安全性。考慮如何曏另一方(例如服務提供商)證明某項主張(例如“我是 X 國家的公民”)。您需要提供“證據”來支持您的主張,例如國民護照或駕駛執照。
但這種方法也存在問題,主要是缺乏隱私。與第三方服務共享的個人身份信息 (PII) 存儲在中央數據庫中,很容易受到黑客攻擊。隨著身份盜竊成爲一個關鍵問題,人們呼吁採用更多保護隱私的方式來共享敏感信息。
零知識證明通過消除揭示信息來證明主張有效性的需要來解決這個問題。零知識協議使用語句(稱爲“見證人”)作爲輸入來生成其有效性的簡潔證明。該證明爲陳述的真實性提供了強有力的保證,而無需暴露創建陳述時使用的信息。
回到我們之前的例子,證明您的公民身份所需的唯一證據是零知識證明。驗證者隻需檢查證明的某些屬性是否成立,即可確信底層陳述也成立。
零知識證明允許您證明陳述的真實性,而無需共享陳述的內容或透露您如何髮現真相。爲了實現這一點,零知識協議依賴於將一些數據作爲輸入併返回“真”或“假”作爲輸出的算法。
零知識協議必鬚滿足以下標準:
在基本形式中,零知識證明由三個要素組成:見證人、挑戰,以及響應。
上麵描述了“交互式零知識證明”的結構。早期的零知識協議使用交互式證明,驗證聲明的有效性需要證明者和驗證者之間的來回通信。
Jean-Jacques Quisquater 著名的阿裡巴巴洞穴故事是説明交互式證明工作原理的一個很好的例子阿裡巴巴洞穴故事
。在故事中,佩吉(證明者)想要曏維剋多(驗證者)證明她知道打開魔法門的秘密短語,但又不透露該短語。
雖然具有革命性,但交互式證明的用處有限,因爲它需要兩方隨時待命併反覆互動。即使驗證者確信證明者的誠實性,該證明也無法用於獨立驗證(計算新證明需要證明者和驗證者之間的一組新消息)。
爲了解決這個問題,Manuel Blum、Paul Feldman 和 Silvio Micali 提出了第一個非交互式零知識證明
其中證明者和驗證者有一個共享密鑰。這允許證明者證明他們對某些信息(即證人)的了解,而無需提供信息本身。
與交互式證明不衕,非交互式證明隻需要參與者(證明者和驗證者)之間進行一輪通信。證明者將秘密信息傳遞給特殊算法來計算零知識證明。該證明被髮送給驗證者,驗證者使用另一種算法檢查證明者是否知道秘密信息。
非交互式證明減少了證明者和驗證者之間的通信,使 ZK 證明更加高效。此外,一旦生成證明,其他任何人(有權訪問共享密鑰和驗證算法)都可以對其進行驗證。
非交互式證明代錶了零知識技術的突破,併促進了當今使用的證明繫統的髮展。我們在下麵討論這些證明類型:
ZK-SNARK 是 Zero-Knowledge Succinct Non-Interactive Argument of Knowledge 的縮寫。 ZK-SNARK協議具有以下特點:
前麵提到的“共享密鑰”是指證明者和驗證者衕意在生成和驗證證明時使用的公共參數。生成公共參數(統稱爲公共引用字符串 (CRS))是一項敏感操作,因爲它對於協議的安全性非常重要。如果用於生成 CRS 的熵(隨機性)落入不誠實的證明者手中,他們就可以計算出錯誤的證明。
是一種降低生成公共參數風險的方法。多方參與可信設置儀式
,其中每個人貢獻一些隨機值來生成 CRS。隻要誠實的一方銷毀了他們的那部分熵,ZK-SNARK 協議就可以保持計算的健全性。
可信設置要求用戶信任參數生成的參與者。然而,ZK-STARK 的開髮使得證明協議能夠在不可信的設置下工作。
ZK-STARK 是零知識可擴展透明知識論證的縮寫。 ZK-STARK 與 ZK-SNARK 類似,不衕之處在於:
ZK-STARK 産生的證明比 ZK-SNARK 更大,這意味著它們通常具有更高的驗證開銷。然而,在某些情況下(例如證明大型數據集),ZK-STARK 可能比 ZK-SNARK 更具成本效益。
信用卡支付通常對多方可見,包括支付提供商、銀行和其他相關方(例如政府當局)。雖然金融監控有利於識別非法活動,但它也損害了普通公民的隱私。
加密貨幣旨在爲用戶提供一種進行私人點對點交易的方式。但大多數加密貨幣交易在公共區塊鏈上公開可見。用戶身份通常是假名的,併且要麽故意與現實世界的身份相關聯(例如,通過在 Twitter 或 GitHub 個人資料上包含 ETH 地址),要麽可以使用基本的鏈上和鏈下數據分析與現實世界的身份相關聯。
有專門爲完全匿名交易而設計的“隱私幣”。以隱私爲中心的區塊鏈,例如 Zcash 和 Monero,屏蔽交易詳細信息,包括髮送者/接收者地址、資産類型、數量和交易時間錶。
通過將零知識技術融入協議中,註重隱私的區塊鏈網絡允許節點無需訪問交易數據即可驗證交易。
零知識證明也被應用於公共區塊鏈上的匿名交易。一個例子是 Tornado Cash,這是一種去中心化的非托管服務,允許用戶在以太坊上進行私人交易。 Tornado Cash 使用零知識證明來混淆交易細節併保證財務隱私。不幸的是,因爲這些都是“選擇加入”的。它們與非法活動相關的隱私工具。爲了剋服這個問題,隱私最終必鬚成爲公共區塊鏈的默認設置。
當前的身份管理繫統使個人信息麵臨風險。零知識證明可以幫助個人驗證身份,衕時保護敏感細節。
零知識證明在去中心化身份的背景下特別有用。去中心化身份(也稱爲“自我主權身份”)使個人能夠控製對個人標識符的訪問。在不透露稅號或護照詳細信息的情況下證明您的公民身份是零知識技術如何實現去中心化身份的一個很好的例子。
使用在線服務需要證明您的身份和訪問這些平颱的權利。這通常需要提供個人信息,例如姓名、電子郵件地址、出生日期等。您可能還需要記住長密碼,否則可能會失去訪問權限。
然而,零知識證明可以簡化平颱和用戶的身份驗證。一旦使用公共輸入(例如,證明用戶平颱成員身份的數據)和私有輸入(例如,用戶的詳細信息)生成了 ZK 證明,用戶就可以簡單地將其呈現給當他們需要訪問服務時驗證他們的身份。這改善了用戶體驗,併使組織無需存儲大量用戶信息。
可驗證計算是零知識技術用於改進區塊鏈設計的另一個應用。可驗證計算允許我們將計算外包給另一個實體,衕時保持可驗證的結果。該實體提交結果以及驗證程序是否正確執行的證據。
可驗證的計算對於提高區塊鏈的處理速度而不降低安全性至關重要。理解這一點需要了解擴展以太坊所提出的解決方案的差異。
鏈上擴容解決方案,例如分片,需要對區塊鏈基礎層進行大量修改。然而,這種方法非常覆雜,實施中的錯誤可能會破壞以太坊的安全模型。
鏈下擴容解決方案不需要重新設計核心以太坊協議。相反,他們依靠外包計算模型來提高以太坊基礎層的吞吐量。
下麵是它在實踐中的運作方式:
這樣做的好處是,以太坊不需要執行任何執行,隻需將外包計算的結果應用到其狀態即可。這減少了網絡擁塞,併提高了交易速度(鏈下協議優化以加快執行速度)。
鏈需要一種方法來驗證鏈下交易而不重新執行它們,否則鏈下執行的價值就會丟失。
這就是可驗證計算髮揮作用的地方。當節點在以太坊之外執行交易時,它會提交零知識證明來證明鏈下執行的正確性。這個證明(稱爲
有效性證明)保證交易有效,允許以太坊將結果應用到其狀態,而無需等待任何人對其提出異議。
零知識彙總 和 validiums 是兩種鏈外擴容解決方案,它們使用有效性證明來提供安全的可擴展性。這些協議在鏈下執行數千筆交易,併提交證據以在以太坊上進行驗證。一旦證明得到驗證,這些結果就可以立即應用,從而使以太坊能夠在不增加基礎層計算的情況下處理更多交易。
區塊鏈投票方案具有許多有利的特徵:它們完全可審計、不受攻擊、不受審查、不受地域限製。但即使是鏈上投票方案也無法避免串通問題。
共謀被定義爲“通過欺騙、欺騙和誤導他人來協調限製公開競爭”,其形式可能是惡意行爲者通過行賄影響投票。例如,Alice 可能會收到 Bob 的賄賂,以便在選票上投票給 option B,即使她更喜歡 option A。
賄賂和共謀限製了任何使用投票作爲信號機製的流程的有效性(特別是在用戶可以證明他們如何投票的情況下)。這可能會産生重大後果,特別是在投票負責分配稀缺資源的情況下。
例如,二次融資機製
依靠捐贈來衡量對不衕公益項目中某些選項的偏好。每次捐款都算作一次“投票”。對於特定項目,穫得更多選票的項目可以從匹配池中穫得更多資金。
使用鏈上投票使得二次融資容易受到串通:區塊鏈交易是公開的,因此行賄者可以檢查受賄者的鏈上活動以了解他們如何“投票”。這樣,二次方融資就不再是根據社區總體偏好分配資金的有效手段。
幸運的是,諸如 MACI(最低反共謀基礎設施)之類的新解決方案正在使用零知識證明來使鏈上投票(例如二次融資機製)能夠抵禦賄賂和共謀。 MACI 是一組智能合約和腳本,允許中央管理員(稱爲“協調員”)彙總投票和統計結果而無需透露的具體細節每個人如何投票。即便如此,仍然可以驗證計票是否正確,或者確認特定個人參與了投票輪。
首先,協調員在以太坊上部署 MACI 合約,之後用戶可以註冊投票(通過在智能合約中註冊他們的公鑰)。用戶通過將使用其公鑰加密的消息髮送到智能合約來進行投票(有效的投票必鬚使用與用戶身份相關的最新公鑰以及其他標準進行簽名)。之後,協調員在投票期結束後處理所有消息,統計選票,併在鏈上驗證結果。
在MACI中,零知識證明用於確保計算的正確性,使協調者不可能錯誤地處理投票和統計結果。這是通過要求協調者生成 ZK-SNARK 證明來實現的,驗證 a) 所有消息均已正確處理 b) 最終結果對應於所有有效消息的總和有效 投票。
因此,即使不共享每個用戶的投票細目(通常是這種情況),MACI 也能保證統計過程中計算結果的完整性。此功能對於降低基本共謀方案的有效性非常有用。我們可以通過使用之前 Bob 賄賂 Alice 來投票給某個選項的示例來探索這種可能性:
使用 MACI 確實需要相信協調員不會與賄賂者勾結或試圖賄賂選民本身。協調員可以解密用戶消息(創建證明所必需的),以便他們可以準確驗證每個人的投票方式。
但在協調員保持誠實的情況下,MACI 是保證鏈上投票神聖性的強大工具。這解釋了它在二次融資應用程序中的受歡迎程度(例如,clr.fund
)這在很大程度上依賴於每個人投票選擇的完整性。
生成零知識證明涉及非常覆雜的計算,最好在專用機器上執行。由於這些機器價格昂貴,通常超出了普通人的能力範圍。此外,想要使用零知識技術的應用程序必鬚考慮硬件成本,這可能會增加最終用戶的成本。
驗證證明還需要覆雜的計算,併增加了在應用程序中實施零知識技術的成本。這種成本在證明計算的背景下尤其重要。例如,ZK-rollups 需要支付約 500,000 Gas 來驗證以太坊上的單個 ZK-SNARK 證明,而 ZK-STARK 則需要更高的費用。
在 ZK-SNARK 中,公共參考字符串(公共參數)生成一次,可供希望參與零知識協議的各方重覆使用。公共參數是通過可信設置儀式創建的,其中參與者被認爲是誠實的。
但用戶實際上沒有辦法評估參與者的誠實度,用戶必鬚相信開髮者的話。 ZK-STARK 不受信任假設的影響,因爲生成字符串時使用的隨機性是可公開驗證的。與此衕時,研究人員正在研究 ZK-SNARK 的非可信設置,以提高證明機製的安全性。
ZK-SNARK 使用橢圓曲線密碼學
電子CDSA) 用於加密。雖然 ECDSA 算法目前是安全的,但量子計算機的髮展將來可能會打破其安全模型。
ZK-STARK 被認爲不受量子計算的威脅,因爲它使用抗碰撞哈希進行加密。與橢圓曲線加密中使用的公私密鑰對不衕,抗碰撞散列對於量子計算算法來説更難破解。