polkadot 網路,中繼鏈、平行鏈和轉接橋
xcmp 方案,鏈間互操作的基礎
cumulus 框架,輕鬆建立相容波卡的平行鏈
平行鏈插槽,共享安全的“敲門磚”
polkadot網路
polkadot 網路是一種異構多鏈網路,由中繼鏈、平行鏈和到其他網路的轉接橋組成。
中繼鏈負責在平行鏈之間達成共識和輸送交易,平行鏈則是獨立的區塊鏈,並具有自己的狀態轉換,可以收集和處理交易,同時共享中繼鏈的安全性。轉接橋允許 polkadot 網路與其它非直接支援的區塊鏈網路相互操作。
那麼 polkadot 網路如何實現如何實現不同鏈之間資訊的傳遞呢?
xcmp 方案
polkadot 的跨鏈訊息傳遞(cross-chain message passing, xcmp)方案是 polkadot 協議的一個子集,主要用來定義除共享中繼鏈安全之外,在無其他信任假設的情況下,訊息如何在平行鏈之間傳遞。主要包括:
訊息佇列機制,基於 gossip 協議傳播訊息。
訊息可用性,基於糾刪碼技術。
訊息輸入和輸出驗證。
簡言之,xcmp 方案利用基於 merkle 樹的簡單佇列機制確保跨鏈交易的正確性,並由中繼鏈上的驗證人負責把平行鏈出口佇列中的交易轉移到目標鏈的入口佇列中。
xcmp 方案是非常底層的基礎協議,直接使用 xcmp 實現跨鏈依然頗為繁重,因為它只負責訊息傳送,但沒有定義接受方如何響應。polkadot 提出了共享安全區(shared protected runtime execution enclaves, spree)解決方案。spree 允許在每個平行鏈上開闢一塊與平行鏈獨立的安全區,在該區域中執行公認安全的程式碼,確保其不受平行鏈干擾,從而解決接收方不可信的問題。
cumulus 框架
cumulus 的目標是對 substrate 進行擴充套件,使任何 substrate runtime 都能輕鬆地成為相容 polkadot 的平行鏈。而 substrate 的目標則是簡化建立新區塊鏈的過程,但並不直接提供 polkadot 相容性支援。兩者是目前僅有的波卡平行鏈開發套件(parachain development kit, pdk)。
cumulus 包含的元件如下:
consensus 元件,內建一個 polkadot 節點的 substrate 共識引擎,供客戶端選擇最終確定鏈。
runtime 元件,substrate runtime 的包裝器,可以使其被 polkadot 驗證節點驗證,並提供證明生成子程式。
collator 元件,用於平行鏈 polkadot 收集節點的工具。
平行鏈插槽
為什麼要限制平行鏈的數目?這是由於 polkadot 網路中的資源有限,網路需要消耗資源來保證平行鏈保持安全和可用。同時,polkadot 初期有一些關鍵的可擴充套件性限制,尤其是網路中訊息佇列的開銷,這些自然會導致對平行鏈數目的限制。
平行鏈插槽的公平分配:創世期上線的平行鏈插槽是由 web3 基金會透過兩種方式來決定的:
贊助一些公益性質的基礎設施鏈,包括轉接橋鏈和智慧合約鏈。
鏈下類蠟燭式拍賣(candle auction),抵押 dot,租賃插槽。
插槽數量增長方式:目前預計在 polkadot 網路執行的一兩年內,平行鏈插槽將從初期的5個逐步增加至 50 ~ 200 個。
參考文獻:
xcmp@polkadot wiki, https://wiki.polkadot.network/docs/en/learn-crosschain
polkadot issue #597, https://github.com/paritytech/polkadot/issues/597
cumulus@polkadot wiki, https://wiki.polkadot.network/docs/en/build-cumulus
parachain slots auction@polkadotwiki,
https://wiki.polkadot.network/docs/en/learn-auction
cosmos ibc, https://github.com/cosmos/ics/tree/master/translation/zh-cn/ibc