擴容方案 III
Optimistic Rollups (OR)
採用欺詐證明(fraud proofs),也就是先樂觀相信大家提交的batch是正確的,但提交過來的資訊,會讓其他人有一個Dispute Time Frame(DTF)的機會去挑戰。
在DTF的期間內,如果其他節點(sequencer)覺得提交的batch有問題,可以提出fault proof到L1,L1上的Validators會做出最終裁決(Dispute Assertions, DA),當然,會搭配賞善罰惡的機制:如果詐欺證明被採納,提出fault proof的人會獲得獎勵,同時沒收原先提出具有詐欺性質batch者的押金。另外,這種欺詐需要回溯時,只需要對樹狀結構中,有問題的部分重新計算即可,不需要全部重算。
DTF的時間越長則越安全,但相對的,用戶也要等更久才能確認資訊沒問題,這對很多有時效性需求的金融服務是硬傷。
綜合來看,Optimistic Rollup相對於zk Rollup,它優點有:能兼容智能合約(能兼容EVM)、計算資源需求低;但缺點有:理論安全性略低、資料壓縮上比較差、用戶資金退出需要等待長(DTF)。
當今採用Optimistic Rollup的L2主要有兩個:Optimism與Arbitrum。
兩者主要的差異在於,出現爭執的情況時,Optimism是按照上面的做法,會直接由L1進行一輪的裁決。但這種直接裁決的工作量是很大的,所以在Arbitrum中,它會先讓提出batch的人,與那位不同意的人(disputer)吵上一架,縮小範圍到兩人真正有爭執的那一步,才提交給L1的裁判。裁判只需要針對這個爭議來進行裁決就行,Arbitrum的方式普遍被認為是更高效的。
吵架來縮小爭議範圍的方法是:當B不同意A的時候,A會把自己的認為對的東西拆成100份,而B必須指出它認為錯誤的那一份,並提供B自己覺得對的版本(A肯定是不同意的);接著,B的那個版本也是要再拆成100份,讓A來指認出它不同意的。一來一回,能使資料縮小10000倍,這過程會持續,直到找到兩人真正有爭議的那一部分。
另外,雖然兩者都是EVM兼容,但Arbitrum是用自己的Arbitrum Virtual Machine (AVM)
zk Rollup (ZKR)
採用有效性證明(validity proof),核心概念是,除非能可以提供正確的證明,不然我會先預設你是錯的。zk Rollup中使用的有效性證明,就是零知識證明(Zero-knowledge Proof, ZKP)。
零知識證明是一種方法,通過它,一方(prover)可以向另一方(verifier)證明某訊息的真實性,但不揭露信息本身。最常見的舉例是,當去超市買酒的時候,店員想檢查的是年紀,如果有ZKP,我們可以提供這個Proof,而不需要拿出身分證,因為他還會透露例如姓名、性別、戶籍地等多餘的資訊。詳細的數學證明有點難,我也還沒搞懂。
ZKP除了能保護隱私性之外,也能等價於對數據進行了壓縮。可以這樣去理解:把原先10筆簽名數據去做成一個ZKP,只要拿著這一個ZKP,就能證明這10筆數據的有效性。在實際的情況下,batch可以包含數百筆的交易紀錄,整包去生成一個ZKP,再把這個ZKP提交到L1上面。
zk Rollup相對於Optimistic Rollup,優點是效能更高(TPS)、用戶退出資金的時間短(沒有挑戰期)、天然有隱私保護;缺點是計算資源要求高,以及目前還不支援EVM。
還不能支援EVM是致命傷。當其他DApp想要搬遷到使用zk Rollup的生態時,需要用一種很垃圾的程式語言(R1CS)去寫智能合約,而那東西超難寫的。當然,目前有很多團隊朝著做出zkEVM在努力,更多細節可以參考這一篇與這一篇。
當今實踐zk Rollup兩大天王是zkSync與StarkNet。前者使用SNARKs的ZKP,後者使用STARKs的ZKP。SNARKs與STARKs都是一種實踐ZKP的方法,差異在於,前者在最一開始,需要有個互信認證的過程,也就是一小群人,彼此要先是互信的,才能確保接下來不作惡。相對的,STARKs不需要,是種更先進的做法。
zkSync雖然使用比較老舊的ZKP(SNARKs),但生態相對比較成熟,並在發佈V2後宣稱完成了99%的EVM兼容;另一方面,StarkNet雖用了更新更強的ZKP(STARKs),但目前不支援EVM,而是需要使用Cairo這種程式語言來寫智能合約(EVM上是用Solidity)。
比較
還有其他兩種相對不成熟的縫合怪,最後直接來簡單橫向對比一下:
Plasma = 欺詐證明+鏈下裁決
Optimistic Rollup=欺詐證明+鏈上裁決
ZK-Rollup=有效性證明+鏈上裁決
Validium =有效性證明+鏈下裁決
Volition =有效性證明+鏈上或鏈下裁決(隨需求而定)
p.s. 鏈上裁決指的就是最終話語權給L1,所以安全性好,但要拿效率來作為交換。
結語
Rollups方面的擴容技術推陳出新,很讓人期待。即使現狀是ZKP不成熟,能真正實作的開法者不多,但長遠來説,起碼在我看來,ZKP一定是個更好的選擇,我們可以樂觀的相信科技的進步。但也別忘了,上面所說的L2擴容,與Sharding(分片)是可以同時存在的,在一個分片上面,是可以再疊ZKR或OR上去擴容,這也是以太坊的最終目標。
先談到這,最近還是有更新潮的L2擴容在誕生,之後有機會再來說。Be Happy & Stay Tuned,回頭見!
喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!