波卡的跨鏈是如何實現的?

買賣虛擬貨幣

波卡知識圖譜”是我們針對波卡從零到一的入門級文章,我們嘗試從波卡最基礎的部分講起,為大家提供全方位瞭解波卡的內容,當然這是一項巨大的工程,也充滿了挑戰,然而我們希望透過這樣的努力讓大家能夠正確認知波卡,也讓不瞭解波卡的人方便快速掌握波卡相關知識,今天是該欄目的第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目前正在開發中,細節可能會發生變化,具體情況以最終實際推出的版本為準。

後記

隨著區塊鏈行業的發展,未來一定會出現多種區塊鏈並存,並且不同的區塊鏈有不同的功能和特點以滿足不同的需求。而一條滿足所有需求的區塊鏈,達到“一勞永逸”的想法是不切實際的。因此鏈與鏈之間的互操性變得尤為重要。這樣的未來正在臨近,波卡作為不同於一般只做單向跨鏈的專案,其目標是成為能連結所有區塊鏈的區塊鏈網路,將會是區塊鏈未來發展中舉足輕重的角色。

歡迎學習 Substrate:

https://substrate.dev/

關注 Substrate 進展:

https://github.com/paritytech/substrate

關注 Polkadot 進展:

https://github.com/paritytech/polkadot

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读