- 區(qū)塊鏈應用開發(fā)指南:業(yè)務場景剖析與實戰(zhàn)
- 熊麗兵 董一凡等
- 2811字
- 2022-07-28 20:18:08
3.3.2 ZK Sync的承諾:免信任、保密、快速
下面從技術角度,讓我們來看看ZK Sync的架構、設計原則以及協(xié)議的良好特性。
1.安全性:扎根于ZK Rollup
ZK Sync是基于ZK Rollup的概念搭建的。
簡而言之,ZK Rollup是一種二層(Layer 2)擴展方案,所有的資金都存儲在主鏈上的智能合約內,計算和存儲則在鏈下執(zhí)行。每創(chuàng)建一個新的Rollup區(qū)塊,就會生成一個狀態(tài)轉換的零知識證明(SNARK),并提交給主鏈上的合約進行驗證。這個SNARK包含了對Rollup區(qū)塊中所有交易有效性的證明。此外,每個區(qū)塊的公開數據更新,都會作為便宜的calldata發(fā)布到主鏈上。
該架構提供了以下保證:
(1)Rollup驗證者永遠不能破壞狀態(tài)或竊取資金(注意,這里不同于側鏈)。
(2)即使驗證者不配合,用戶也可以追回Rollup上的資金,因為Rollup具備數據可用性(注意,這里不同于Plasma)。
(3)得益于有效性證明,無論是最終用戶,還是可信的第三方,都不需要通過在線監(jiān)視Rollup區(qū)塊來防止詐騙(注意,這里不同于使用錯誤性證明的系統(tǒng),例如支付通道或optimistic rollup)。
綜上所述,ZK Rollup嚴格繼承了底層鏈的安全保障。正是有了這種安全保障,再加上豐富的以太坊社區(qū)和現有的基礎設施,以太坊才決定專注于二層解決方案,而不是試圖搭建自己的底層鏈。感興趣的讀者可以去繼續(xù)了解ZK Rollup和Optimistic Rollup之間的區(qū)別,會更有收獲。
Matter Labs在過去的一年以來都在研究ZK Rollup技術。自首個原型發(fā)布以來,團隊已經全部重寫了架構和ZK的電路。最新的版本融合了從社區(qū)獲得的反饋,并實現了各種可用性和性能改進。
簡單概括一下,ZK Rollup實現的安全性體現在如下幾點:
- 完全的免信任性
- 具備與底層鏈(以太坊)同樣的安全保障
- 第一次確認之后,就具有由以太坊背書的確定性
2.可用性:實時交易
盡管大家樂觀相信,但是仍然還需要證明的是:ZK證明技術的最新發(fā)展成果將縮短證明時間,將ZK Rollup區(qū)塊的出塊時間控制在一分鐘之內。一旦區(qū)塊證明被提交到主鏈,并在Rollup智能合約中驗證通過,這個區(qū)塊內的所有交易都會得到最終確定,并且受到Layer-1抵御鏈重組的能力保護。
盡管如此,就零售和線上支付領域而言,以太坊上15秒的區(qū)塊延遲也有些不可接受,如何才能夠做得更好呢?
所以,大家打算在ZK Sync中引入即時交易收據(instant tx receipts)。
簡單來說,那些選擇參加ZK Sync區(qū)塊生產的驗證者,必須向主網上的ZK Sync智能合約提交一筆可觀的安全保證金。由驗證者達成的共識會為用戶提供亞秒級確認,確保其交易包含在下一個ZK Sync區(qū)塊內,并由絕大多數(2/3以上)的共識參與方簽署(按權益加權)。
如果一個新的ZK Sync區(qū)塊被創(chuàng)建出來并提交到主鏈上,它是無法被撤回的。但是,如果這個區(qū)塊不包含已承諾的交易,則簽署過原始收據和新區(qū)塊的驗證者,其安全保證金會被罰沒。這部分驗證者所質押的保證金必定超過總金額的1/3以上。也就是說,懲罰會覆蓋1/3乃至以上的安全保證金,而且只有惡意驗證者會遭受懲罰。
被罰沒的金額中有一部分會用來補償交易接收者,剩下的會被銷毀。
罰沒機制既可由用戶自己觸發(fā),也可由任意簽署過原始交易收據的誠實共識參與方觸發(fā)。后者天生就有觸發(fā)罰沒機制的動機:如果他們參加下一輪區(qū)塊生產,可能也會遭到懲罰。因此,共識參與者中只要有一個是誠實的就足以檢測欺詐。
再細說一遍:ZK Sync設計了一種零確認的交易模式,也就是讓一筆交易附帶一個即時交易數據,該收據會指向一個尚未發(fā)布到鏈上的ZK Sync區(qū)塊。
在區(qū)塊證明發(fā)布到主鏈之前,只有短短幾分鐘的時間可以對ZK Sync上的零確認交易發(fā)起雙花攻擊。此外,惡意驗證者要想誘使用戶相信自己的交易已成為零確認交易,得做好1/6的安全準備金被罰沒的打算。
從買賣雙方的角度來看,零確認交易是:
(1)即時的;
(2)存在逆轉的可能性,不過只在短短的幾分鐘之內;
(3)只有在同時而非逐個對上千個賣方發(fā)起攻擊的情況下才可逆。
相比信用卡支付,ZK Sync在用戶體驗和安全性上有很大提升!
現在讓我們站在不同參與者的角度來看:
- 出售實物商品的線上商店會立即向用戶確認訂單,但是不會遭受攻擊,因為賣家會等到完全確認之后再發(fā)貨。
- 實體店在交易量較少之時是幾乎不可能遭受攻擊的。即使你是以即時收據的形式來出售一臺Macbook,也要有數千名協(xié)調一致的攻擊者在不同的地點發(fā)起攻擊,還要依靠大多數驗證者串謀才能成功。
說得再深入一些。為了量化風險,我們可以將保證金提供的經濟保證與PoW區(qū)塊鏈提供的結算保證進行比較。舉例來說,經過35個交易確認之后,Coinbase才會接收一筆以太坊資金存款。如果是通過亞馬遜云服務租用GPU來發(fā)起51%攻擊的話,要持續(xù)攻擊10分鐘才能撤回這個交易,成本大約在6萬美元。假設安全保證金高達數百萬美元,撤回一個即時ZK Sync收據所需的成本會高得多。因此,這些即時收據的經濟確定性相比以太坊有過之而無不及。
要注意的是,即時交易數據不會受到ETH區(qū)塊重組的影響,因為這些收據的有效性與以太坊無關。此外,以太坊的結算保證與ZK Sync的結算保證是結合在一起的。
3.總結:實時交易
- 亞秒級交易確認的經濟確定性堪比以太坊。
- 幾分鐘之后就具有由以太坊背書的確定性。
3.3.2.1 活性:抗審查性和抗DoS攻擊
擴展方案必然具備的一個屬性是,大多數用戶都無法參與所有交易的驗證。因此,所有二層擴展方案都需要專門設置一個角色(Plasma和Rollup上的驗證者、Lightning hub,等等)。這類角色對于安全性和性能的要求較高,帶來了中心化和審查的風險。
為了解決這一問題,ZK Sync在設計上引入了兩種不同的角色:驗證者和守護者。
1.驗證者(Validitor)
驗證者負責將交易打包到區(qū)塊內,并為這些區(qū)塊生成零知識證明。他們要參與共識機制,必須繳納一筆安全保證金,才能創(chuàng)建即時交易收據。驗證者節(jié)點必須在網絡帶寬良好的安全環(huán)境中運行。或者,他們也有可能按自己心意在不安全的云平臺上生成零知識證明。
驗證者將獲得交易費作為獎勵,是用被交易代幣來支付的(為終端用戶提供最大程度的便利)。
為了快速達成ZK Sync共識,驗證者的人數是有限制的(根據我們的分析,30~100人比較合適)。但是別忘了,ZK Rollup驗證者是完全免信任的。在ZK Sync上,惡意驗證者既不能破壞系統(tǒng)的安全性,也不能欺騙誠實的驗證者觸發(fā)罰沒機制。因此,不同于optimistic rollup,系統(tǒng)的守護者(Guardian)可以頻繁更換一小部分驗證者。與此同時,只要有2/3的提名驗證者是誠實且可進行操作的,就能確保滿足活性要求(liveness)。
2.守護者(Guardian)
大部分通過質押代幣份額來提名驗證者的ZK Sync持幣者會成為守護者。守護者的目的是監(jiān)控點對點交易流量,探測審查行為,并確保不會提名那些有審查行為的驗證者。為了保護自己的質押物不被罰沒,守護者必須確保ZK Sync可以抵御DoS攻擊,不會實施審查。
雖然投票密鑰通常來說都是在線保存的,但是這不會給ZK Sync上的守護者帶來罰沒或盜竊的風險(所有權密鑰是冷存儲的)。守護者就可以選擇只監(jiān)控一小部分流量。因此,守護者節(jié)點可以運行在普通的手提電腦或云服務器上,也就是說,不需要提供專門的驗證者服務。
守護者會獲得驗證者的費用作為獎勵,是以ZK Sync原生代幣的形式發(fā)放的。其收益和押金會被鎖定較長一段時間,以此促進ZK Sync代幣的長期升值。
3.總結:活性
- 兩種角色:驗證者和守護者都受到交易費的激勵。
- 由驗證者運行共識機制并生成證明。
- 由運行在普通硬件上的守護者防止審查。
- 同步:秩序如何從混沌中涌現
- Python數據挖掘:入門、進階與實用案例分析
- Test-Driven Development with Mockito
- 計算機信息技術基礎實驗與習題
- Effective Amazon Machine Learning
- 數據驅動:從方法到實踐
- Hadoop大數據實戰(zhàn)權威指南(第2版)
- Lego Mindstorms EV3 Essentials
- 區(qū)域云計算和大數據產業(yè)發(fā)展:浙江樣板
- AndEngine for Android Game Development Cookbook
- 大數據測試技術:數據采集、分析與測試實踐(在線實驗+在線自測)
- SQL Server 2012數據庫技術及應用(第4版)
- 一本書講透數據治理:戰(zhàn)略、方法、工具與實踐
- 計算機應用實務(第3版)
- Reactive Programming in Kotlin