“波卡知識圖譜”是我們針對波卡從零到一的入門級文章,我們嘗試從波卡最基礎的部分講起,為大家提供全方位了解波卡的內容,當然這是一項巨大的工程,也充滿了挑戰,然而我們希望通過這樣的努力讓大家能夠正確認知波卡,也讓不了解波卡的人方便快速掌握波卡相關知識,今天是該欄目的第8期,了解一下波卡跨鏈的原理究竟是怎樣的。
我們之前提到,由於Substrate框架的誕生,開發者可以高效、安全地完成一條鏈從無到有的過程,這為區塊鏈的生態帶來了一次革新的同時,也為區塊鏈帶來了更多的可能。
近幾年新興公鏈層出不窮,各自發展出特有的生態,另一方面,基於Substrate的技術,各種各樣的波卡平行鏈項目也開始蓬勃發展,各家公鏈各顯神通,生態欣欣向榮好不熱鬧。然而這份熱鬧之下,隨之而來的就是鏈與鏈之間的信息孤島問題了。而跨鏈作為波卡最擅長的解決方案,正逐漸成為當下的熱門話題,那麼跨鏈背後的原理究竟是什麼呢?
波卡中的三大角色
首先我們需要搞清楚在波卡的架構中的三個非常重要的角色,分別是驗證者,提名者,整理者。
1
驗證者(Validator)
驗證者是要維護波卡網絡的安全共識和穩定的一類人,需要運行波卡的全節點,質押DOT,負責打包波卡網絡中的新區塊,為網絡提供服務之後,會獲得一些獎勵。這些驗證者是被那些持有DOT的提名者投票選舉出來的,獲得投票票數最多的節點就可以充當驗證者。
2
提名者(Nominator)
DOT的持有者可以選擇成為提名者,他們會質押自己的DOT來為節點投票,可以通過提名一個或多個驗證者來獲得DOT的獎勵。不過提名者需要仔細挑選驗證者——如果驗證者行為不當,他們將被懲罰,提名者也會失去DOT。
提名者在投票後會獲得投票獎勵,而獎勵的多少取決於驗證者所獲得的節點獎勵,以及驗證人所收取的佣金,佣金是驗證者在獎勵分配給提名者之前獲得的驗證者獎勵的百分比。作為提名者,可能認為最低的佣金是最好的。然而,這並不總是正確的。
因為驗證者必須能夠在盈虧平衡點運行,以便可持續地繼續運行。依靠佣金來支付服務器成本的獨立驗證器有助於保持網絡去中心化。反之,提名者也不必擔心驗證者設定的佣金比例過高,因為這樣會導致提名者將會投票給其他的驗證者。
3
整理者(Collator)
整理者通過從用戶那裡收集平行鏈交易,並為中繼鏈驗證者生成狀態轉換證明來維護平行鏈。換句話說,整理者通過將平行鏈上的交易整合為平行鏈的一個候選區塊,並基於這些區塊為驗證者生成狀態轉換證明來維護平行鏈。在他們向中繼鏈驗證者提出的候選區塊得到驗證之前,整理者不能繼續在平行鏈上構建區塊。
整理者既為中繼鏈維護一個全節點,也為其特定的平行鏈維護一個全節點,這意味著他們保留了所有必要的信息,以便能夠像礦工在當前的PoW區塊鏈上所做的那樣(收集交易並創建到區塊中),創作新的區塊並執行交易。在正常情況下,他們會整理和執行交易以創建一個未密封的區塊,並將其與狀態轉換證明一起提供給一個或多個負責提出平行鏈區塊的驗證者。
另外,整理者也將負責審查,防止驗證者作惡,如果被抓到現行,作惡的驗證者將會失去他們所質押的DOT以示懲罰。
請注意,最初設計中有四個角色驗證者,提名者,收集者和釣魚者,之後收集者和釣魚者的功能被整合到一起,現在被統一稱為整理者。其實之前的收集者的英文也是Collator,但是由於其作用還有整理交易的部分,所以筆者覺得以整理者來命名會更合適一些。
波卡中的XCMP是怎麼運轉的
跨鏈其實並不是把A公鏈上的資產轉到B公鏈上的資產。而是說A公鏈的某些信息可以傳遞到B公鏈上,並在B公鏈上執行某個行為,反之B公鏈也可以傳遞信息到A公鏈上,並使得A公鏈上發生某些行為,而這就是互操性,也就是跨鏈。所以,跨鏈的關鍵點在於安全、且去中心化的在不同的鏈之間傳遞消息,而這就是波卡的跨鏈消息傳遞XCMP的重要作用了。
XCMP作為波卡跨鏈系統重要的組成部分,解決了不同鏈之間的數據通信的難題,保證了信息處理的一致性。簡單來說,跨鏈信息傳遞XCMP是兩條不同鏈之間的橋,保證信息可以被有序、及時、公平的傳遞和處理,在信息被另一方接收到並執行了相關操作之後,由中繼鏈幫助驗證執行的結果,同時對驗證結果提供共識的安全保障。
打個比方,假如張三在平行鏈A上有10個AToken,李四在平行鏈B上有30個BToken,那麼,李四需要在平行鏈A上創建一個地址,而張三則需要在平行鏈B上創建一個地址。之後,張三會將10個AToken轉到李四在平行鏈A上的地址上,並且生成一個狀態轉換證明,在這個證明上是要求李四在平行鏈B上把30個BToken轉移給張三在平行鏈B上的地址。
平行鏈A上的整理者準備將這個信息聯通目的地與時間戳一併傳到平行鏈B上,不過這些信息會先放置在平行鏈A的輸出隊列中,傳遞之前需要經過平行鏈A的驗證者確認這筆交易後,就會經過中繼鏈將該信息從平行鏈A的輸出隊列放置到平行鏈B的輸入隊列中。
當平行鏈B的驗證者收到該信息後,通過平行鏈B的整理者會執行信息中的要求,也就是通過執行智能合約並按預期完成資產轉移,將李四在平行鏈B上把30個BToken轉移給張三在平行鏈B上的地址。
整理者隨後會將此區塊交給驗證者,驗證者將驗證此消息是否已處理。如果消息已經被處理了,並且區塊的所有其他方面都是有效的,則驗證者會將平行鏈B的這個區塊包含到中繼鏈中,由此完成了整個過程。
有人會說這種交換資產通過交易所不就可以做到不同鏈之間的資產互換了嗎?其實這裡面有明顯的區別,交易所則是中心化的,而波卡跨鏈的整個過程是全部由區塊鍊和智能合約執行,是以去中心化的方式做到鏈間通訊。
請注意,XCMP目前正在開發中,細節可能會發生變化,具體情況以最終實際推出的版本為準。
後記
隨著區塊鏈行業的發展,未來一定會出現多種區塊鏈並存,並且不同的區塊鏈有不同的功能和特點以滿足不同的需求。而一條滿足所有需求的區塊鏈,達到“一勞永逸”的想法是不切實際的。因此鏈與鏈之間的互操性變得尤為重要。這樣的未來正在臨近,波卡作為不同於一般只做單向跨鏈的項目,其目標是成為能鏈接所有區塊鏈的區塊鍊網絡,將會是區塊鏈未來發展中舉足輕重的角色。