本文作者
周蓉,江哲
來自趣鏈科技數據網格實驗室BitXHub團隊,主要負責區塊鏈賬本互操作技術相關研究工作。
導讀:本文是Polkadot系列文第三篇。
說到Polkadot,估計大家聽到它的最大的優點就是它給平行鏈提供的共享安全性,共享安全性保障了不因區塊鏈網絡分片而降低安全性。那么共享安全性到底是如何實現的呢?
本文主要從Polkadot為平行鏈提供的的有效性和可用性兩個保障幫你深度理解共享安全性。
文末福利:Polkadot系列文全覽
回顧
首先還是先來回顧一下前文提及過的Polkadot四種角色:
驗證人
它是中繼鏈全節點,中繼鏈會在驗證人池中通過隨機分組把驗證人指定給不同的平行鏈。驗證人會接受來自收集人打包的區塊并進行有效性驗證,然后結合共識算法對收集人提交的區塊進行確認。
收集人
它是平行鏈的全節點,負責收集和執行平行鏈的交易并產生候選區塊,將區塊和證明提交給驗證人,并通過收集交易獲得手續費。收集人類似于PoW共識區塊鏈當中的礦工。
提名人
Polkadot中數字貨幣DOT的持有人,它會選擇自己所信任的驗證人進行DOT質押,然后分享驗證人的收益。
PancakeSwap將在Polygon zkEVM區塊鏈上上線:6月29日消息,據開發者“Chef Cocoa”透露,去中心化交易所 (DEX) PancakeSwap 將在 Polygon zkEVM 網絡上上線。
這將是繼 BNB Chain、以太坊和 Aptos 之后PancakeSwap 上線的第四個區塊鏈。[2023/6/29 22:08:52]
釣魚人
它也是平行鏈全節點,監控驗證人的非法行為,若驗證人作惡,釣魚者可以向其他驗證人舉報并獲得相應報。
有效性驗證
有效性驗證指的是區塊鏈系統對賬本狀態變更的合法性校驗,實現全網的共識。
一條普通的區塊鏈,比如以太坊,每出一個區塊,區塊會廣播到全網的以太坊節點,這些節點會對區塊中的交易進行驗證和執行,確保最后生成的狀態根等信息和區塊頭中的信息一致。在Polkadot中,對平行鏈的區塊共識需要進行以下三個級別的有效性驗證:
第一級有效性驗證由平行鏈的驗證人實現,可以防止收集人作惡。
每隔一段時間,中繼鏈會通過隨機分組把驗證人池中的驗證人指定給不同的平行鏈,每個平行鏈會分配到多個驗證人。
平行鏈區塊上的收集人收集交易,產生區塊B以后,將區塊B、有效性證明和一些相關數據發送給當前平行鏈的驗證人。這些平行鏈的驗證人收到區塊和數據后,驗證區塊,如果區塊無效,忽略該塊;如果區塊有效,則將收到的內容分成多個部分,構造一棵默克爾樹,然后將每一份內容、默克爾證明以及區塊信息組合,進行簽名并分發給其他驗證人驗證。
谷歌云正在與Polygon Labs合作以加速Polygon生態發展:金色財經報道,Polygon Labs在2023 共識大會期間發表的一份聲明中表示,谷歌云正在與 Polygon Labs 合作,幫助開發人員更輕松地在基于以太坊的第 2 層區塊鏈上構建、發布和發展他們的 Web3 產品和去中心化應用程序 (dapps)。根據新的合作伙伴關系,谷歌云將把其區塊鏈節點引擎,這家科技巨頭的完全托管節點托管服務,引入 Polygon 生態系統,這將幫助開發人員專注于構建協議,同時保留對節點部署位置的完全控制。
Polygon 總裁 Ryan Wyatt 在聲明中說,今天與 Google Cloud 的合作旨在提高交易處理量,從而支持游戲、供應鏈管理和 DeFi 中的用例,他補充說,這將為更多企業通過Polygon采用區塊鏈技術鋪平道路。[2023/4/28 14:31:40]
第二級有效性驗證由釣魚人保證,可以防止平行鏈驗證人作惡以及平行鏈驗證人和收集人聯合作惡。
釣魚人一般都是平行鏈的全節點。它首先需要在中繼鏈上放置押金,然后持續從收集人節點收集區塊,并驗證有效性。如果區塊中包含了無效交易,釣魚人將提交報告。如果事實證明它的判斷是正確的,它將獲得豐厚的獎勵,但如果它判斷錯誤,它將失去自己的押金。
第三級有效性檢查是非平行鏈驗證人執行的。
Poly Network白帽黑客發公開信公布私鑰:8月23日消息,PolyNetwork攻擊事件黑客在今日下午通過鏈上轉賬留言,交出了3/4的多簽錢包秘鑰,并表示這是好的結局。該黑客自稱為Poly Network的首席安全顧問,表示:我的行動是深思熟慮后的決定,我想讓這件事情變得完美而永恒,包括今天公布的最后的私鑰。然而,有一點是美中不足的:在整個談判過程中,我唯一的請求,也是沒有立刻退款的唯一動機,就是為了解鎖被凍結的USDT。在我看來,這次美好的歷史事件被USDT凍結一事所玷污。如果我們利用非中心化的方式處理這部分被凍結的USDT,本可以成為一個利用智能合約在匿名對手間建立信任關系的完美案例。但這只是我個人的一廂情愿,由于交涉雙方的溝通并不同步,這個愿望可能永遠不會發生。可以說,把USDT作為原罪而扣留它其實是很公平的。
據此前報道,因為質疑Poly Network驗證人權限過大,白帽黑客并未與Poly Network團隊達成一致,未能移交私鑰。[2021/8/23 22:31:43]
這些驗證人選擇過程是非公開的,且驗證人數量由釣魚人給出的無效報告和收集人給出的不可用報告的數量確定。如果檢測到無效的平行鏈區塊,則為其簽名的驗證人將會受到懲罰,它的押金將會部分或全部扣除。
上面三個級別的有效性驗證中,釣魚人的有效性驗證比較好理解,因為它本身就是平行鏈的全節點,擁有平行鏈的所有狀態數據,只需將收到的區塊交易重新執行一遍,便可以得到新的狀態數據和狀態根來驗證區塊的有效性。
Polygon上算法穩定幣項目SafeDollar疑似遭到黑客攻擊:6月28日消息,Polygon上算法穩定幣項目SafeDollar疑似遭到黑客攻擊,一份未經證實的合約似乎抽走了25萬美元的USDC和USDT。目前,SDO交易已暫時中止。區塊鏈安全團隊SharkTeam正在對事件進行進一步分析。[2021/6/28 0:11:17]
可是驗證人是中繼鏈的全節點,它如何做到能夠驗證平行鏈的區塊呢,難道它維護所有平行鏈的狀態數據?這顯然是不可能的。
下面就重點介紹一下
Polkadot驗證人到底是如何驗證平行鏈的區塊的
平行鏈接入Polkadot時,需要向中繼鏈注冊一段webassembly代碼,叫做STVF,驗證人將用STVF對平行鏈有效性進行驗證。
假設某個平行鏈PC上個已經確認的區塊是B
0,當前待出的區塊是B
1,上個區塊經由中繼鏈確認后,在中繼鏈上區塊R
0
B上記錄了B
0的相關信息,如該平行鏈執行完B
0以后的狀態根R
0。之后平行鏈收集人C打包了區塊B
1,得到該區塊的向其他平行鏈的跨鏈消息M,并生成有效性證明π以及一些元數據(PC.id,H(B
Polymath公司的首席執行官認為 比特幣將會成為完備的支付網絡:Polymath公司的首席執行官特雷弗·柯沃科(Trevor Koverko)認為,比特幣將會成為一種完備的支付網絡。“目前,比特幣被用作一種投機性資產和價值儲存手段。但是,隨著Lightning Network等解決方案的出現,比特幣的使用范圍將會隨著其價格一路大幅上升。真正的問題在于,未來將是比特幣的‘主鏈條’有勇氣采用這些升級,還是‘比特幣現金’(Bitcoin Cash)等其他的鏈條?”柯沃科說道。[2017/12/30]
0),H(R
0
B),R
in,R
out,...)。這里的R
in是區塊B
1執行之前的平行鏈的狀態根,R
out是執行以后的狀態根,H(B
0)表示平行鏈區塊B
0的哈希,H(R
0
B)表示中繼鏈區塊R
0
B的哈希。
生成有效性證明的過程實質就是執行區塊中的交易,將執行過程中讀寫的狀態數據記錄下來,并結合區塊執行前后的兩個狀態根生成證明。
如果使用*xz表示組成默克爾根x中的葉子z的SPV證明,那么區塊B有效性證明數據就可以如下表示:
π
B?=U{*R
inx|Breadsx}?∪?{*R
outx|Bwritesx}
舉個例子,假設平行鏈提交的區塊B中包含兩筆交易:
1.????A給B轉賬50
2.????C給D轉賬10
執行過程中需要讀寫A、B、C、D四個賬戶的狀態。假設區塊執行之前該平行鏈中這四個賬戶的余額都是100,那么有效性證明包含的便是下面兩張圖中標有顏色的這些數據,其中黃色部分是哈希值。
可以看到,不管平行鏈本身的狀態數據有多少,由于區塊的有效性證明數據都是由該區塊的交易涉及的狀態讀寫集的SPV組成,因此它的大小是有限的。
之后收集人C將區塊B
1、交易的有效性證明π、該平行鏈的出隊列中的消息集合M以及元數據一起發給其中一個驗證人,驗證人再將這些信息分發給這條平行鏈的其他驗證人。每個驗證人加載該平行鏈的STVF對收到的平行鏈區塊進行有效性驗證。
STVF的核心也是執行平行鏈區塊中的交易,過程中需要讀取證明數據中的讀集合,同時會產生寫集合,并最后生成的寫集合和證明數據中的內容進行比對;此外還可以通過收到的元數據中的信息進行一些其他的驗證,如根據H(R
0
B)查找到該區塊中保存的B
0的狀態根R
0,將R
0和收到的R
in進行比較。若這些信息都符合,則該區塊通過驗證。
最初收到平行鏈區塊的那個驗證人將生成一個CandidateReceipt,里面會記錄該平行鏈區塊B
1相關的信息,如平行鏈PC的id、收集人C的id、區塊B
1的哈希、區塊B
1執行前后的狀態根等,簽名并廣播給中繼鏈所有節點。當這個CandidateReceipt最終被中繼鏈出塊確認以后,平行鏈PC的區塊B也被最終確認了。
這種有效性驗證方法可以保證平行鏈單個區塊的狀態轉換是有效。如果平行鏈從第一個區塊開始,都由中繼鏈進行有效性驗證并確認區塊,那么可以保證平行鏈整條鏈的有效性。
可用性保障
可用性保障指的是區塊鏈系統在部分節點作惡的情況下,依然可以對業務系統提供可用服務保障。
在Polkadot中,假設這么一種場景:平行鏈收集人打包了區塊B并提交給了驗證人,驗證人收到了該區塊,通過了有效性驗證,并且區塊最終被中繼鏈確認了。
但是該收集人節點作惡,沒有把區塊廣播給平行鏈的其他節點,那么該平行鏈的其他節點無法得到該區塊,無法更新本地的狀態數據,該平行鏈也就無法出塊了。
為了防止這種情況發生,通過驗證以后,驗證人會將平行鏈區塊PC和有效性證明通過糾刪碼技術分成n個片段,并將這些片段廣播給全網的所有驗證人,每個驗證人獲得一個片段并會保存一段時間。
之后只需要得到n/3的片段,便可以恢復出原始數據。這種情況下,即使收集人節點作惡,平行鏈其他節點依然可以從中繼鏈的驗證人中獲得上個區塊的糾刪碼片段并恢復出區塊。
總結
通過上面對Polkadot有效性和可用性的介紹可以看到,中繼鏈提供了種種措施來保障平行鏈的安全:隨機分配的平行鏈驗證人進行區塊的驗證、釣魚人的監督、非平行鏈驗證人的再次驗證、中繼鏈對平行鏈區塊數據的備份……。
這種設計方式在保障整個區塊鏈系統橫向擴容分片的過程中不會降低某單一分片的安全性。對平行鏈來說,它享受了中繼鏈提供的安全性,僅需安心關注自己的區塊鏈業務即可,極大便利了區塊鏈業務的開發,降低了單一平行鏈對安全的額外投入。
參考文獻:
?????AvailabilityandValidity,
https://research.web3.foundation/en/latest/polkadot/Availability_and_Validity.html
???ThePathofaParachainBlock,
https://polkadot.network/the-path-of-a-parachain-block/
??J.Burdges,A.Cevallos,P.Czaban,R.Habermeier,S.Hosseini,F.Lama,H.K.Alper,X.Luo,F.Shirazi,A.Stewart,andG.Wood.Overviewofpolkadotanditsdesignconsiderations.arXivpreprintarXiv:2005.13456,2020.
Cairo是第一個用于生成通用計算的STARK證明的生產級平臺,具有圖靈完備,高效等特點。我們開發的所有內容都是用Cairo編寫的,從提交Reddit的競標開始,到我們即將部署的各個項目:Dev.
1900/1/1 0:00:00文?|Nancy?編輯|畢彤彤出品|PANews輪番來襲的熱點,正書寫著加密市場一輪又一輪的財富故事。DeFi狂奔的腳步還在繼續,跨鏈又成為投資者競相爭搶的香餑餑.
1900/1/1 0:00:00北京時間9月14日消息,DeFi借貸協議bZx再次遭到攻擊,而這次攻擊共造成了大約800萬美元的損失,據bZx聯合創始人KyleKistner最初提到稱:“這似乎是一次預言機操縱攻擊.
1900/1/1 0:00:00作者|哈希派分析團隊 金色財經合約行情分析 | 主流幣價格反復,DeFi板塊普漲:據火幣BTC永續合約行情顯示,截至今日18:00(GMT+8),BTC價格暫報11587美元(+0.95%).
1900/1/1 0:00:00養老基金、財富管理公司和家族理財室等機構投資者認為,加密貨幣領域將繼續擴張,他們計劃購買更多。 來自加密貨幣保險公司Evertas的一項研究顯示,超過25%的被調查機構投資者正計劃增加他們的數字.
1900/1/1 0:00:00據Decrypt9月11日報道,Twitter和CashApp公司的首席執行官JackDorsey認為比特幣是“互聯網的原生貨幣”,他在接受路透采訪時表示.
1900/1/1 0:00:00