讀懂starkNet零知識遞歸證明「STARK」

在持續的優化之下,遞歸證明將會提供更高吞吐量、更低GAS費、更低延遲性,並為L3 和應用遞歸帶來新的機會

原文作者:StarkWare 核心工程主管Gidi Kaempfer

TL;DR

  • 遞歸證明已在主網上線,通過單一證明就可擴展到StarkEx或StarkNet
  • STARK將會顯著提高網絡容量、降低網絡延遲和交易成本
  • 為L3 和其他應用奠定基礎

擴大規模!

由Cairo 提供支持的遞歸證明現已正式投入運營(譯者註:Cairo 是StarkWare推出的用於生成通用計算的STARK 證明的生產級平台,同時也是用STARK於計算的編程語言)。這標誌著STARK 對L2 擴展能力的重大提升,它能通過單一證明實現以太坊的交易筆數數倍的增長。

目前,STARK的擴展是通過將幾萬甚至幾十萬筆交易”rolling up(匯總) “到一個證明中來實現的,這個證明會最終被寫入以太坊L1,通過遞歸,類似這樣的證明都可以被”rolling up “到一個單一的證明中去。

這種方法現在已經用於眾多基於Cairo的構建的應用程序中,比如:運行在StarkEx(StarkWare的SaaS擴展引擎)和StarkNet(無許可rollup)上的應用程序。 。

STARK的發展歷程

自2020年3月在Mainnet上完成第一次STARK證明以來,下述事件共同發展塑造了STARKs的發展。

基於STARK的擴展性

2020年6月,首個基於StarkEx的擴展解決方案部署在以太坊主網上。 StarkEx擁有一個支持在鏈下執行計算並生成STARK-proof的驗證器,以及一個在鏈上來驗證此證明的驗證器,由於第一次部署的完全由StarkWare的工程師“手動”完成,因此也極大地限制了StarkEx的運行速度,最終我們意識到,我需要一種編程語言來支持一般計算的證明,於是Cairo誕生了。

Cairo

2020年夏天,Cairo第一次出現在以太坊主網之上。 Cairo是CPU Algebraic Intermediate Representation的縮寫(中央處理器代數中介碼(AIR)),並包含單個AIR 來驗證這個“CPU” 的指令集。 Cairo為更複雜的商業邏輯、更多樣化計算語句打開了大門,並以一種更快、更安全的方式進行編碼驗證。 Cairo程序可以證明單個應用程序執行的邏輯,而且一個Cairo程序也可以是多個此類應用程序的串聯——即SHARP。

SHARP

SHARP是一個共享驗證程序,它可以從幾個獨立的應用程序中提取相關交易數據,並在一個STARK-proof軟件中進行驗證。不同應用程序可以合併它們的交易批次,以更快地填滿了stark -proof池,這樣會提高交易的速度。所以下一個前沿領域是:遞歸證明,它不僅適用某些寫死的編碼邏輯,而且也是針對一般性的計算。

要了解遞歸證明的全部好處,我們首先要了解SHARP 是如何執行(非遞歸)證明的。下圖描繪了一個典型的非遞歸流程:

一個典型的非遞歸證明流程

在這裡,狀態說明(statements)會隨著時間匯總,當達到容量(或時間)閾值時,將生成一個大的組合狀態說明(也稱為Train),只有在收到所有單獨的狀態說明後,才會驗證這個組合狀態說明,而這個證明需要很長的時間來進行驗證(是單獨證明每個狀態說明所需時間的總和)。

驗證非常大的狀態說明最終會受到可用計算資源(如內存)的限制。在遞歸之前,這實際上是STARK證明中限制可擴展性的阻礙。

什麼是遞歸證明

使用STARK證明,證明一個狀態所花費的時間與執行該狀態所花費的時間大致呈線性關係。如果執行一個狀態(statements)需要花費T時間,那麼驗證證明大約需要log(T)時間,這被稱為“對數壓縮”。換句話說,使用STARKs,你花在驗證狀態上的時間要比計算執行狀態的時間少得多。

Cairo支持通用的計算狀態,這些狀態可以由STARK驗證,也可以由相應的STARK驗證器驗證。這就是執行遞歸的優勢所在:我們可以用同樣的方式編寫一個Cairo程序來證明數千個交易的正確性,我們也可以編寫一個Cairo程序來驗證多個STARK證明。我們可以生成一個證明來證明多個“上游”證明的有效性,這就是我們所說的遞歸證明。

由於對數壓縮和大致線性的關係,STARK的驗證需要相對較短的時間(預計在不久的將來只需要幾分鐘)。在實現遞歸時,SHARP可以在狀態數據到達時就對其進行證明,它們的證明可以在各種模式中一次又一次地合併成為遞歸證明,直到在某個時間節點上,將產生的最終遞歸證明提交給L1鏈上驗證者。下圖描述了一個典型這樣的流程:

一個典型的遞歸證明流程一個典型的遞歸證明流程

在這個例子中,四個狀態聲明被發送到SHARP(可能來自四個不同的來源),這些狀態聲明都是平行證明的,然後,每對證明都由遞歸驗證器(一個驗證STARK 證明的Cairo 程序)進行驗證,並為此生成下一個證明,而這個證明(Proof12或Proof34)說明了前兩個證明已被證實。接下來,通過遞歸驗證器語句再次合併兩個證明,最終生成了一個證明了四個原始狀態的證明–Proof123。然後,該證明在主鏈上提交,並由Solidity 驗證者智能合約進行驗證。

遞歸證明的好處

降低鏈上成本

當我們實現了將多個證明”壓縮”為一個,這意味著每個交易的鏈上驗證成本降低(每個聲明可包含多筆交易)。

使用遞歸證明,可以消除限制證明的計算資源障礙(例如內存),讓每個有限規模的狀態聲明都可以被單獨證明。因此,當使用遞歸時,遞歸的組合狀態可以不受限,讓每筆交易的成本減少幾個數量級。

在實踐過程中,減少的成本還取決於你可接受的延遲(以及交易到達的速度)。此外,由於每個證明通常還伴隨著一些輸出,如鍊上數據,因此,與單個證明一起寫入鏈上的數據量是有限的。儘管如此,將成本降低一個數量級完全是可以實現的。

降低交易延遲

遞歸證明模式減少了證明大量狀態數據的延遲,這主要是以下兩個因素的結果:

  • 傳入的狀態數據可以並行證明處理(而不是等著去證明一個非常大的組合狀態)。
  • 無需等到組合狀態數據池中的最後一條的到達,即可開始證明,這意味著加入組合狀態池的最後一條數據的延遲大致是證明最後一條狀態所需的時間加上證明最終的遞歸驗證時間之和。

目前,我們正在積極地開發和優化證明遞歸驗證的延遲。我們希望在幾個月內能達到幾分鐘這個量級。因此,一個高效的SHARP可以提供從幾分鐘到幾個小時的不等延遲,這主要取決於每筆交易與鏈上成本的權衡,這也表明SHARP的延遲得到了很大意義的改善。

促進L3發展

Cairo中的遞歸驗證器也向StarkNet的提交證明提供了應用可能,因為該聲明可以被嵌入到StarkNet智能合約中,這就允許在公共的StarkNet(一個L2網絡)上實現L3的部署

遞歸模式非常適用於L3的證明的聚合,即通過L2上的一個證明來驗證即可,因此這也實現了某種意義上的以太坊性能超擴展。

其他好處

應用型遞歸(Applicative Recursion)

遞歸證明為希望進一步想要降低成本和提升性能的平台與應用程序提供了更多契機。

每個STARK都證明了應用於某種輸入聲明的正確性,這種輸入被稱為”公共輸入”(Cairo中被稱為”程序輸出”)。從概念上講,STARK遞歸將兩個輸入的證明壓縮為一個,雖然證明的數量減少了,但源頭的數量是保持不變,而這些輸入通常被用於應用程序或者L1上的狀態更新(如,更新一個狀態根或執行鏈上的提款)。

如果允許遞歸聲明是應用感知的,即識別應用程序本身的一些語義,那它既可以將兩個證明壓縮為一個,也可以將兩個輸入合併為一個,結果語句可以根據應用程序的語義驗證輸入組合的有效性,因此命名為應用遞歸(Applicative Recursion),這能大幅降低鏈上驗證器的複雜性。

應用遞歸示例應用遞歸示例

首先,聲明1證明了從A到B的狀態更新,聲明2證明了從B到C的進一步更新。聲明1和聲明2的證明可以合併成第三個聲明,它直接證明了從A到C的狀態更新。通過類似的邏輯,人們可以顯著地減少狀態更新的成本。

應用性遞歸的另一個重要例子是壓縮多個證明的匯總數據。例如,對於想StarkNet 這樣的Validity Rollup,L2 上的每個存儲更新也作為L1 上的傳輸數據包含在內,以確保數據可用性。其實,我們沒有必要在同一個存儲元素發送多個更新,因為數據可用性只需要那些經過了驗證交易的最終值。這種優化已經在單個StarkNet區塊內實現。通過為每個區塊生成證明,應用遞歸可以跨多個L2 的區塊匯總壓縮此數據,這可以顯著降低成本,使L2上的塊間隔更短,還不犧牲L1可擴展性。

值得注意的是,應用性遞歸可以與前面描述非應用性遞歸相結合,這兩個優化是彼此獨立的。

降低鏈上驗證者復雜度

STARK驗證器的複雜性取決於它被設計來驗證的語句種類。特別是對於Cairo語句,驗證器的複雜度取決於Cairo語言中允許的特定元素,更具體地說,取決於支持的內建程序(如果我們用CPU來比喻Cairo,那麼內建程序就相當於CPU中的微電路)。

Cairo語言不斷發展,提供越來越多有用的內置程序,而遞歸驗證器只需要使用這些內置插件的一部分,通過在遞歸驗證器中支持的完整語言,遞歸SHARP可以成功地支持Cairo中的任何語句。

L1 solididity驗證器只需要驗證遞歸證明,而不需要最新的內置代碼,換句話說,我們把不斷升級的複雜語句的驗證被下放到L2,只是讓L1驗證器來驗證更簡單、更穩定的狀態數據。

減少計算足跡

在沒有遞歸之前,將多個狀態數據匯總到一個證明中的計算能力受限於可用計算實體的計算能力。

有了遞歸,就不再需要證明這種極其龐大的組合證明,因此,可以使用更小、更便宜和更多的計算實體(儘管可能比大型單體證明者需要更多的計算實體)。這使得可以在更多的物理和虛擬環境中部署驗證器成為可能。

總結

通用計算的遞歸證明現在正在服務多個生產系統,包括StarkNet。

在持續的優化之下,遞歸證明將會提供更高吞吐量、更低GAS費、更低延遲性,並為L3 和應用遞歸帶來新的機會。目前,遞歸驗證器還在進一步優化中,隨著時間的推移將會提供更好的性能和成本效益。

展開全文打開碳鏈價值APP 查看更多精彩資訊

Total
0
Shares
Related Posts