原文標題:《引介 | 兩全其美的 zk rollup 預共識機制》
作者:Leona Hioki
本文概述了一種預共識機制,可以實現即時終局性并減少驗證 gas 成本,同時不影響 zkRollup 的即時資金退出,
背景和動機
在承諾間隔足夠短(如 10 分鐘)的情況下,zkRollup 可以實現即時終局性,在這個方案中,聚合者的信任風險會隨間隔時間增長而增加,實現終局性的成本(如果是 Groth16 算法,每個承諾的驗證 gas 成本超過 20 萬 gas)會隨間隔時間延長而降低。
首先說明 zkRollup 的配對驗證成本超過 20 萬 gas (價值 100 至 500 美元)。也就是說,在 zkRollup 的每個承諾間隔期內,聚合者都需要花費這么多 gas 來驗證并敲定承諾,
我們不能忽略這一成本,因為 zkRollup 的承諾間隔很短。我們需要承諾來實現即時退出的終局性。只要承諾間隔很短,且惡意聚合者回滾交易的積極性不高,我們就可以實現即時終局性(經濟終局性,零確認交易),
盡管我們可以使用遞歸零知識證明和高效的證明計算系統來聚合多個交易,我們也很難改變承諾間隔。如果我們盲目延長承諾間隔,就會影響安全性,
然后,我們需要思考如何在 zkRollup 中實現安全的即時終局性和較長的驗證間隔。
方法
聚合者的運行成本源自合約上零知識證明驗證的 gas 成本高且承諾間隔短。
因此,我們可以在不影響安全性和可用性的情況下延長驗證間隔,
第一步:跳過零知識證明配對驗證
首先,我們最容易想到的解決方案就是跳過配對計算,并引入針對承諾的簡單欺詐證明。
聚合者向合約提交證明或驗證 zkRollup 承諾所需的任何東西,但這時不執行配對計算,也就不需要支付 20 萬 gas。一段時間過后,這個承諾就會得到驗證;這個承諾中的每個狀態將成為下一個承諾的公共輸入,聚合者需要鎖定一些以太幣來激勵驗證者,一旦驗證者發現欺詐行為,聚合者就會受到懲罰,
承諾就是公共輸入、零知識證明數據、上一個狀態根、下一個狀態根、交易哈希和聚合者地址這幾項的哈希值。
原像由鏈上事件提供,承諾保存在合約存儲內,
這種方法具有很大的優勢,
每個人都可以成為瞭望塔,等同于 Optimistic Rollup 中的「驗證者」,無需運行全節點或進行任何特殊的起步設置,
數據可得性問題不會發生,因為驗證或執行欺詐證明所需的一切數據都在鏈上發出的事件中,執行欺詐證明時,我們不需要 Layer 2 交易數據及交易結果,因為這些數據全都包含在了零知識證明的公共輸入和證明中,
如果惡意聚合者提交了惡意默克爾根,并放棄了所有交易數據和默克爾樹數據,我們不需要運行全節點來進行欺詐證明,我們只需檢查零知識證明數據,并執行配對驗證函數,即可發現這類惡意行為。
但是,上述方法存在安全性問題,
如果 Layer 1 上發生 51% 攻擊,將惡意默克爾根合法化,我們很難阻止,
由于 51% 攻擊的執行成本隨底層區塊鏈的出塊時間增加而增加,我們需要足夠長的驗證期限,才能有效提高 51% 攻擊的難度。理想的驗證期限是 7 天,因為 ORU 的退出期限也是 7 天,這可以根據挖礦成本和實際的攻擊獎勵計算得到。
在這種情況下,我們沒有理由舍 ORU 而取上述方案,
第二步:無需零知識證明驗證的預共識承諾,通過遞歸零知識證明配對實現終局性
我們可以通過以下方式解決上述安全性問題。
我們將這個沒有經過零知識證明驗證的承諾視為預共識。預共識會通過零知識證明驗證限制終局性,
(consensus commit ) => (pre-consensus commit ) => (pre-consensus commit ) => …. => (pre-consensus commit ) => (consensus commit )
所有預共識承諾都會通過配對來限制共識。因此,Layer 2 用戶可以享受安全的即時交易終局性。我們需要使用帶有遞歸零知識證明的所有預共識承諾來驗證共識承諾。這里有兩個電路:預共識電路和遞歸電路,預共識電路包含采用 zkRollup 方案的 dApp 的邏輯。遞歸電路只需要從 Layer 1 中獲取預共識數據作為公共輸入。
遞歸零知識證明可以用來對一段時間內的預共識進行水平合并:與此同時,它也可以用來將大量交易垂直聚合到預共識承諾中,
如果說任何虛假的預共識承諾都會影響帶有配對的共識驗證,我們總是可以通過零知識證明配對其進行欺詐證明,一旦證明成功,聚合者就會使用零知識證明驗證者函數將該承諾刪除,然后重新開始進行交易聚合并創建預共識承諾。
如果急的話,資產持有者可以花 20 萬 gas 通過預共識來達成共識,然后就可以立即退出。(當然,他們也可以等待聚合者來達成共識。)正如「第一步」中提到的那樣,他們不需要任何特殊設置,即可實現共識終局性,因為所有輸入都已聚合,而且可以通過鏈上事件搜索到。無論驗證多少預共識承諾證明,遞歸驗證的 gas 成本都不會增加,因為這些證明將被哈希到條目哈希中。
51% 攻擊者無法敲定惡意默克爾根,因為每個根最終都會通過由 zk 電路實現的合約代碼邏輯在鏈上進行驗證。
總結
這種帶有欺詐證明的預共識協議及相關數據可訪問性可以讓 zkRollup 擁有較長的承諾間隔(如 6 小時),這種方法可以大量節省驗證計算所需的 gas 成本,