Zksnark

“Pinocchio zk-SNARK”是 zk-SNARK 的一種特定類型嗎?

  • May 16, 2020

Pinocchio zk-SNARK”是“zk-SNARK **”**的特定類型嗎?如果是,有什麼區別?

Pinocchio 是 SNARK(簡潔的非互動式知識論證)的早期實現之一,無需機率可檢查證明 (PCP) 的幫助。2010 年,Groth 在通用參考字元串 (CRS) 模型中建構了一個非互動式零知識 (NIZK) 參數。有趣的是,他的論點沒有使用 PCP。2011 年,Lipmaa 將 CRS 的大小減小到準線性,但證明者的計算仍然是二次的。Rosario Gennaro、Craig Gentry、Bryan Parno 和 Mariana Raykova (GGPR) 發明了 NP 複雜性類的新表徵,稱為二次跨度規劃 (QSP)。這有助於建構 NP 語句的簡潔論證,這些論證可以快速建構和驗證,比機率可檢查證明 (PCP) 好得多。

在匹諾曹中,客戶創建一個公共評估密鑰來描述她的計算;此設置與評估計算一次成正比。然後,worker 評估特定輸入的計算並使用評估密鑰生成正確性證明。無論執行的計算或輸入和輸出的大小如何,證明的大小都是恆定的。任何人都可以使用公共驗證密鑰來檢查證明。Pinocchio 通過改進 GGPR 的二次算術程序實現了強大的漸近效率。

Pinocchio 最初被認為是一種高效的公共可​​驗證計算 (PVC) 方案。然而,它以比基本協議微不足道的成本推廣到零知識證明。因此,Pinocchio 工具鏈成為 SNARK 架構的參考。Pinocchio 將一個高級 C 程序一直帶到一組分佈式執行檔,這些執行檔以經過驗證的方式執行該程序。它通過二次算術程序支持算術電路和通過二次跨度程序的布爾電路。

是的,Pinocchio 是一個實用的 zk-SNARK,它允許證明者執行加密驗證計算,而驗證工作可能比執行計算本身要少。最近的一項提議展示瞭如何使 Pinocchio 自適應(或“雜湊和證明”),即,啟用與計算無關的承諾相關的證明。這使得可以在產生承諾後選擇計算,並以靈活的方式在不同的計算之間共享數據。不幸的是,這個提議不是零知識。特別是,它不能與 Trinocchio 結合使用,在該系統中,Pinocchio 被外包給三個由於多方計算 (MPC) 而不會學習輸入的工人。

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