自2016 年Gavin Wood 首次構思Polkadot 去中心化區塊鏈平台以來,研究人員和開發人員一直在致力於改進、更新和完善Polkadot。我們剛剛發表的《Polkadot 概述及其設計注意事項》在原白皮書的基礎上進行了擴展,對波卡協議進行了更新和最全面的綜述。
波卡最早出現在2016 年,當時Gavin Wood 發表了白皮書,概述了其背後的技術願景和基本的原理。
他指出,儘管區塊鏈技術是有前景的,但存在一些問題,導致它在現實世界中還沒有重要的落地。 Polkadot 旨在解決這些問題,並創建一個可擴展(可隨需求增長)的區塊鏈架構,在一個強大的共享安全系統中,具有不同功能的不同區塊鏈可以共存並相互通信,為下一代互聯網奠定基礎。
新的《Polkadot 概述及其設計注意事項》論文在白皮書的基礎上,對Polkadot 及其設計考慮進行了擴展,對Polkadot 的設計組件和子程序進行了全面的更新。我們在這裡簡單分享一些。
一句話總結
Polkadot 是一個可擴展的異構多鏈區塊鏈。這意味著它由一個協作的去中心化區塊鍊網絡組成,這個網絡叫做中繼鏈,它與並行運行的分片鏈即平行鏈交互。這些平行鏈可以看作是中繼鏈的客戶端,中繼鏈的目的是保護和協調平行鏈。
治理
Polkadot 有一個複雜的治理系統,所有DOT( Polkadot 的原生代幣)持有者都有發言權。議案可由DOT 持有人或理事會提出。兩者都需要通過一次質押權重(stake-weighted)的全民公投來達成一致。
所有DOT 持有人都可以登記參加理事會。理事會由23 名成員組成,定期一個月。它的作用只是代表DOT 利益相關者,提交重要提案,在特殊情況下,取消毫無爭議的危險或惡意提案。
與公開提案相比,理事會提案的好處是要求在全民投票中通過的讚成票數量更少。理事會的提議需要得到理事會絕大多數成員的支持,沒有否決權。危險或惡意的提案只有在全體一致表決後才能取消。
技術委員會(由在Polkadot 中實現或指定項目的團隊組成)的存在,其唯一目的是檢測代碼中的錯誤等問題,并快速跟踪鏈的緊急升級或更改。成員可由理事會以多數票增加或取消。
財政部(Treasury )資金的使用最終由所有DOT 持有者通過全民公投來控制。財政部籌集資金的方式是通過轉移一些驗證人獎勵(來自通脹增發的部分),一小部分交易費用和slash 懲罰(由惡意或不稱職的驗證人支付的罰款)。這些資金用於系統和更廣泛的生態系統(市場營銷、社區活動和合作)的順利運行。
NPoS 機制
提名權益證明(NPoS)是對權益證明(PoS)的一種改編,在這種情況下,所有的代幣持有人都可以支持大量但有限的驗證人(在genesis 中預計為數百個) 。選定的驗證人負責運行中繼鏈。
這允許大量的stake 去支持驗證人,遠遠高於任何單個用戶的持有量。由於提名人與他們支持的驗證人共享可能的slash 懲罰和經濟回報,所以提名人被被激勵去選擇具有良好業績和安全實踐記錄的驗證人。
使用比例代表制(proportional representation),所有提名人中的一些少數人都可以按照他們的stake 比例選出一些驗證人,不存在少數人被低估的情況。
因此,NPoS 不僅比工作證明(PoW)效率高得多,而且比沒有質押委託、且只有少數擁有大量代幣的人才能做驗證人的PoS 方案更安全、更去中心化。
有關Polkadot 中NPoS 的更詳細描述,另請參閱學術論文《提名權益證明中的驗證人選舉》 https://arxiv.org/abs/2004.12990 和Medium 的文章《NPoS 機制如何在Polkadot 中運行》。
區塊生產和共識
使用NPoS 選擇出來的驗證人負責通過混合共識接收、驗證和重新發布中繼鏈上的塊,該共識協議將最終性工具(GRANDPA)從塊生產機制(BABE)中分離出來。
這種組合允許1) BABE 的概率最終性,因為它的鏈選擇規則,在一定時間後,區塊將以接近1 的概率完成,2) GRANDPA 的可證明和確定的最終性,在這裡最終的塊永遠保持最終性。
組合這些機制可以避免在不知不覺中跟隨錯誤的分叉(概率最終性的風險),並允許塊的快速最終,因為較慢的最終性機制可以單獨最終塊,而不會導致較慢的交易處理或暫停。
有效性和可用性
簡言之,平行鏈收集人生成一個有效性證明(PoV)塊並將其發送給平行鏈驗證人,後者將其區塊頭簽名為有效。具有足夠簽名的區塊頭被添加到中繼鏈塊中。
創建平行鏈區塊後,平行鏈blob(PoV 塊和一組傳出消息)需要一段時間才能使用,以確保非對抗性驗證人(即好的驗證人)可以檢查其有效性。為了使驗證人能夠共同保證可用性,會使用一個擦除編碼系統。這將PoV 塊分發給所有驗證人。
Polkadot 有三級有效性檢查。
首先,當平行鏈驗證人驗證PoV 塊時,它們簽名並將平行鏈blob 的擦除代碼分發給每個驗證人。
第二,作為釣魚人的節點(可能主要是充當收集人)將報告無效。
第三,一些隨機分配的驗證人檢查有效性。如果出現了大問題,也沒有向他們提供該塊,他們可以使用在第一級中分佈的足夠數量的擦除代碼片段(即第一點中提到的分發)來重建PoV 塊。
如果驗證人看到其他驗證人給出的無效報告,則可以通過分佈式擦除代碼片段重建blob。如果存在一定數量的失效報告和驗證人在中繼鏈塊中沒有平行鏈塊頭的擦除代碼段的報告,則中繼鏈塊將不會最終確定。
如果在中繼鏈上發現任何無效的平行鏈塊,則其驗證人將被slash 懲罰。將一個無效塊放入Polkadot 的預期成本是高於支持單個平行鏈的stake 數量,這會起到了威懾作用。
如果中繼鏈塊所指的所有平行鏈塊都有足夠的有效性報告,並且沒有任何挑戰,那麼中繼鏈塊就可以由GRANDPA 最終確定。
跨鏈消息傳遞
跨鏈消息傳遞(XCMP)可以讓消息以安全、無信任的方式、快速、有序地在不同的平行鏈之間傳遞。 XCMP 的主要目標之一是為在平行鏈之間傳遞的消息提供一致的歷史記錄。
這包括兩部分:
一致的歷史記錄:平行鏈塊輸出隊列上的元數據包含在中繼鏈上,稍後由另一個接收的平行鏈進行消息驗證。可靠傳遞:與此元數據對應的消息正文需要從發件人分發到收件人。
使用基於Merkle 樹的簡單排隊機制來解析消息的順序,以確保准確度。