“Microsoft (微軟)宣佈推出一種高效且通用的零知識證明技術方案 Spartan,該方案能在更短時間內以更高效的方式實現簡潔非互動的零知識證明(zkSNARK),是首個無需做可信設定的 zkSNARK 方案。”
本文介紹了Spartan,這是用於rank-1約束滿足性(R-1CS)的零知識簡潔非互動式知識引數(zkSNARKs)家族中的一位新成員,R-1CS是一種可歸納算術電路可滿足性的NP完備語言。Spartan包含了一項獨特功能,它為NP提供了第一個沒有受信任設定(即透明的)的zkSNARK,驗證證明時會產生亞線性成本,無需NP語句結構的一致性。此外,Spartan還為zkSNARK提供了一種時間最佳證明者。
為了實現這些結果,我們引入了新的技術,這些技術與總和檢查(sum-check)協議(一種開創性的互動式證明協議)進行結合:(
(1)計算commitment,一種用於建立對計算描述的簡潔commitment的原語;該技術對於驗證者在投資一次的公共計算以預處理給定的NP語句之後獲得亞線性成本至關重要;
(2)SPARK,一種將所有現有的可提取多項式commitment方案轉換為有效處理稀疏多線性多項式的密碼編譯器。該技術對於實現時間最優證明者至關重要。
(3)將R-1CS的壓縮編碼為低次多項式。最終結果是NP的公共代幣簡潔的互動式知識引數(可以看作是總和檢查協議的簡潔變體);我們使用現有技術將其轉換為zkSNARK。
透過將SPARK應用於不同的commitment方案,我們獲得四個zkSNARK,其中驗證者的成本和證明大小取決於基礎commitment方案(從O(log ^ 2n)到O(√n))(n表示NP語句的大小) 。這些方案中的三種不需要可信的設定,而一種方案則需要通用且可更新的一次性可信設定。
透過約8,000行Rust語言程式碼,我們將Spartan作為一個庫來實現。我們使用該庫在隨機預言模型中構建一種透明的zkSNARK,其中安全性在離散對數假設下成立。我們透過實驗對其進行評估,並將其與最新的zkSNARKs進行比較,以將R1CS例項的大小限制為大約2 ^ {20}。在沒有受信任設定的方案中,Spartan可以提供最快的證明者,依據基準線的加速比為大約36-152倍,產生的證明短於1.2–416倍,並且以3.6–1326倍的速度提升產生最少的驗證時間。與具有受信任設定的最新zkSNARK相比,Spartan的證明者對於任意R1CS例項的速度快2倍,對於資料並行工作負載的速度快16倍。