聽 Gavin Wood 親自解讀波卡新設計“平行執行緒”

買賣虛擬貨幣

本文是 7 月 22 日 Gavin Wood 在波卡中國行上發表的演講的下篇,主要內容是介紹波卡新設計平行執行緒(Parathreads)。上篇內容點選這裡 >>波卡的 5 個里程碑和 Kusama 網路。

接下來我要介紹的是 Polkadot 接下來幾個月會推進發展的事情。其中一個就是過去幾周在社羣裡面提出的關於平行鏈發展的顧慮和問題。

現狀:平行鏈預備金金額較大

我們的願景是希望很多團隊來建設平行鏈,希望這些平行鏈可以發展良好。其中一個比較大的顧慮就是,搭建一個平行鏈需要在網路中提交較大金額的預備金。雖然這個預備金最終可以被退回,但這畢竟也是一個比較大的金額。

當然我們也有一些幫助團隊來籌集這部分資金的方式,比如透過中繼鏈上釋出眾籌的活動的功能;以及 DOT 代幣借貸,在平行鏈不活躍之後全額償還的機制。在這個基礎上,我們還是希望可以設計出一套針對希望搭建平行鏈的開發者的,更加靈活,即用即付的收費模式。

新設計:共享稀缺資源的 “平行執行緒”

因此,我在過去幾天結合了網際網路領域的一些收費方式,做了一些思考和研究。本質上,Polkadot 網路中的平行鏈是稀缺資源。而 Polkadot 的中繼鏈在短的時間內,每一個區塊鏈產出的區塊內,只能處理 100 條左右平行鏈的資料。目前的假設是,這 100 條平行鏈是同樣的那 100 條。然而,原則上來說,中繼鏈可以在每一個產出的區塊中,處理任意 100 條平行鏈上傳來的驗證資訊,並不需要是固定的 100 條平行鏈。

在網際網路和計算網路的領域有幾個稀缺資源的類比,其中一個是記憶體資源 (Memory),另一個是硬體執行緒   (Hardware Threads)。

一般的手機和電腦,都有 2-8 個核 CPU,允許做多執行緒併發資訊處理。然而計算機作業系統有更多的任務執行緒,比如這臺蘋果作業系統,就大約 390 個不同的操作任務線性,同時並行獨立執行。一般來說,這 390 多個不同的操作任務執行緒,並不會佔用太多的計算資源,它們在被呼叫操作之後會被喚醒。單個執行緒都會認為它們是獨立在 CPU 上執行,然而事實上,這些執行緒在共享 CPU 的計算資源。一般來說,當每一個單位不需要實時佔用大量稀缺資源的時候,系統設定會讓這些程序共享稀缺資源,允許某些單位在短的時間內使用這些資源。

透過分析和類比這個共享體系,我想到了為何不在平行鏈這塊,也採用這樣的共享收費機制。換句話說,平行鏈的插槽(Slots)可以被其他平行鏈共享。因此我們把這個被共享了插槽的稱為平行執行緒(Parathreads)。

平行執行緒是一個新的抽象,他的意義是如果你的專案並不需要所有平行鏈的功能和吞吐量,不需要像平行鏈那樣,透過所有的驗證者節點,把所有的區塊資料,交易等都打包進入區塊。如果你的專案只是需要處理一部分你需要處理的交易,並在你需要的時候將它們打包進區塊中,就適合使用平行執行緒。

平行執行緒跟平行鏈使用的是同樣的 API 模型、同樣的底層程式碼和計算模型。平行執行緒跟平行鏈一樣有跨鏈互通的功能,整個網路對待平行執行緒跟對待平行鏈是一樣的地位。它永久擁有自己的插槽,這跟計算機軟體認為它們時刻擁有 CPU 資源是一樣的道理。平行執行緒和平行鏈也可以按需互相轉換。

平行執行緒和平行鏈在付費模型上的區別

之後平行執行緒和平行鏈最主要的區別是在經濟體系和付費模型上面。平行鏈需要透過拍賣質押的方式來獲取一個插槽的位置,一共大約 100 個左右插槽位置。有了這個插槽位置之後,他們可以確保每一個 Polkadot 網路的產出區塊裡面都可以有他們平行鏈上產出的區塊資料,並可以跨鏈傳播轉換到其他各個平行鏈當中。獲得這個平行鏈名額需要透過質押 DOT 代幣拍賣的方式獲取,當參與拍賣插槽的團隊比較多的時候,此質押代幣的數量可能會比較大。

然而,平行執行緒並不需要做這個拍賣。它只需要支付儲備金 10-100 個 DOT 即可,相比獲取一個平行鏈要便宜很多,比一個智慧合約要貴一些。平行執行緒僅會在他們的交易被 Polkadot 網路處理的時候,才會需要支付費用。當平行執行緒網路靜止的時候,他們並不需要支付費用,僅僅是一開始的儲備金。當平行執行緒有比較多的交易需要處理,插入到 Polkadot 區塊鏈的時候,他們用 DOT 代幣做支付費用。平行執行緒也可以獲得最佳化處理,當其他也有很多平行執行緒需要處理交易,產生區塊插入到 Polkadot 網路時,平行執行緒可以被協調,切換到相對網路不那麼繁忙的時間段,從而來降低網路費用。

中繼鏈容量的分配

這一頁就是 Polkadot 中繼鏈的結構介紹。大概會有 100 個平行鏈的插槽。

這其中一部分會是特別預留的插槽,這些插槽會被用來確保 Polkadot 網路執行健康良好。會有一些系統級別的平行鏈,比如治理層邏輯的平行鏈,staking 邏輯平行鏈,以及網路內部進行 DOT 代幣賬戶轉賬邏輯的平行鏈,這些是比較重要的平行鏈,跟中繼鏈同時發起建立。另外的預留插槽會給用來讓中繼鏈可以後續做深度擴張的巢狀中繼鏈,和那些連線不同共識機制獨立的區塊鏈網路進入 Polkadot 網路的轉接橋 hub 的平行鏈。

另外一部分插槽我們稱之為租用插槽,這些是永久存在於波卡網路的成員。這些成員會永遠產出區塊,並讓這些區塊得以驗證進入到 Polkadot 區塊鏈網路中。他們擁有持續的網路吞吐量資源,有全額的網路功能。

最後剩下的這些插槽會被預留給這些平行執行緒專案。每一個區塊都會在所有的平行執行緒中做拍賣,誰最需要這些插槽,就可以在這些平行執行緒中透過拍賣方式競拍然後獲取這個平行鏈的插槽。

平行執行緒運作方式舉例

接下來我們看一看這個平行執行緒具體是怎麼運作的。

這個 PPT 當中有兩個特定的區塊,Block42 和 Block43。同時我們有一堆收集者,這些收集者會從那些需要在這個區塊中寫入交易的平行執行緒中收集區塊。

收集者透過同樣的資料發出指令來分別哪些區塊是來自同一個平行執行緒的。然後中繼鏈從中選出 3 個收集者收到的最高競拍,把這三個區塊寫入中繼鏈中,並向這三個平行執行緒收費。

這個平行執行緒的收費和出塊驗證機制,跟平行鏈出塊和驗證接入到中繼鏈當中的機制是一樣的。

平行執行緒的經濟模型

讓我們來看一下平行執行緒的經濟模型,它包含 2 個不同的收費部分。

其中一個部分是交易手續費,也就是根據需要處理的資料量和區塊個數來計算的交易手續費。

另一個部分是來自平行執行緒的贊助。這部分的收費模型是圖中左下的收費曲線,X 軸代表距離上一個被平行執行緒建立、驗證並最終接入到區塊鏈中的區塊有多少的時間。起初因為有一個緩衝休眠期,所以需要的額外費用是 0,但 X 軸的時間超過一定數量之後,平行執行緒需要支付指數級增長的費用,來確保他們需要建立的交易區塊肯定可以在不那麼大的延遲下被處理,驗證進入到區塊鏈網路中。

例如這個圖中,我假設平行執行緒已經休眠了 12 個區塊,然後需要重新出塊的話,需要支付 60 個平行執行緒特定的 TOK 代幣,而如果已經休眠了 24 個區塊的話,則需要支付可能 60 億個平行執行緒特定 TOK 代幣才可喚醒。

然後我們把這兩部分的費用加到一起,然後告知收集者,如果某個收集者可以將這個來自平行執行緒的區塊收集並獲得驗證,則這個收集者可以獲得 100 個 TOK 代幣 —— 40 個來自交易手續費,60 個來自贊助或者叫額外的 top up 費用。

在這個 PPT 中,Dave 作為一個收集者,他意識到 100 個 TOK 代幣作為收集獎勵的價值大於 5 個 DOT 代幣的價值。因為他作為收集者,會獲得這 100 個 TOK 代幣,並給出 5 個 DOT 給中繼鏈,來確保他可以收集下一個區塊的交易資料,並可以將區塊進入到中繼鏈中。

這 5 個 DOT 裡的 1 個 DOT 會被分配給中繼鏈的區塊釋出者(他們會選擇最高獎勵的平行執行緒,因而有經濟動力來確保這個區塊可以寫入中繼鏈),另 4 個 DOT 會被分配給用於整個網路治理,滿足全網路成員利益的財務管理(Treasury)賬戶。

如果 100 個 TOK 價值是 6 個 DOT 代幣的話,Dave 作為收集者整個過程下來花費了 5 個 DOT 讓這個平行執行緒的區塊得以獲得驗證,並最終寫入到了中繼鏈,自己最終獲得 1 個 DOT 的獎勵。 

平行執行緒讓鏈的轉移更平滑

另一個需要分析的比較重要的內容就是鏈的轉移。

每一個平行鏈都有 2 年的有效期,6 個月之後他們就可以開啟不斷更新 2 年有效期的拍賣。但是有一定的概率,某些平行鏈參與的插槽拍賣不斷的失敗,他們離 2 年的有效期截止不斷接近,他們最終會被踢出平行鏈的陣營。有一個顧慮來自於某一些平行鏈被其他的平行鏈惡意競爭,最終被惡意擠出平行鏈陣容的情況。

這種情況的經常發生對於整個 Polkadot 網路也是不利的。儘管這是一個相對極端的情況,發生的可能性機率不大。因為如果真的這樣的情況發生,平行鏈可能被其他的惡意踢出,那麼很可能在發生之前整個 Polkadot 網路的治理機制就會介入,來做協調治理。

在這邊我們假設這是一個潛在會發生的問題,平行執行緒就會在這種情況下提供一箇中間的臺階。當平行鏈將要接近生命週期截止時,他們一般會直接變成一個轉接橋鏈,或者更壞的情況直接變成一個完全獨立的鏈。而現在,他們就可以變成一個平行執行緒,仍然可以被使用、接收和發出資訊、提供服務,哪怕並不能像平行鏈那樣每個區塊都可以接入跨鏈網路。

因為之前是從平行鏈轉過來的,大概率他們鏈上會有一些使用場景和有效應用,大概率他們鏈上的交易和資料會可以被有效驗證接入到中繼鏈上,儘管可能不能像平行鏈一樣每個區塊都接入。透過這樣的機制,對於這些無法續簽的平行鏈來說,也是一個比較體面的降權機制。同時,如果這樣的鏈會有收益和場景保持,未來仍然也可以繼續競拍插槽,最終回到平行鏈的陣營。

平行執行緒到平行鏈的切換並不是很重的轉換過程,而是一個比較輕的操作,僅需要一個區塊和一些簡單的技術邏輯就可以完成。當然平行執行緒也可以變成轉接橋鏈和安全鏈,當有經濟激勵的情況下,也會有可能讓驗證者去驗證他們的區塊。

總結:平行執行緒的地位和作用

總結來說,平行執行緒是一個介於平行鏈和轉接橋鏈之間的中間層級的地位。

平行執行緒擁有跟平行鏈一樣級別的來自中繼鏈的共享安全性和互通性,並確保快到期的平行鏈還可以一直保持線上。它讓每個開發團隊都可以以降低的成本接入區塊,小的平行執行緒可以不用跟大的鏈去競爭,並確保每個平行執行緒都可以透過支付一定的 DOT 代幣來支付交易費和通脹成本來享受到共享安全性。

翻譯:PolkaWorld 超級探員 Charlie Hu
校對/編輯:KIKO

免責聲明:

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

推荐阅读

;