我要介紹的是 Polkadot 接下來幾個月會推進發(fā)展的事情。其中一個就是過去幾周在社區(qū)里面提出的關(guān)于平行鏈發(fā)展的顧慮和問題。
現(xiàn)狀:平行鏈預備金金額較大
我們的愿景是希望很多團隊來建設(shè)平行鏈,希望這些平行鏈可以發(fā)展良好。其中一個比較大的顧慮就是,搭建一個平行鏈需要在網(wǎng)絡中提交較大金額的預備金。雖然這個預備金最終可以被退回,但這畢竟也是一個比較大的金額。
當然我們也有一些幫助團隊來籌集這部分資金的方式,比如通過中繼鏈上發(fā)布眾籌的活動的功能;以及 DOT 代幣借貸,在平行鏈不活躍之后全額償還的機制。在這個基礎(chǔ)上,我們還是希望可以設(shè)計出一套針對希望搭建平行鏈的開發(fā)者的,更加靈活,即用即付的收費模式。
新設(shè)計:共享稀缺資源的 “平行線程”
因此,我在過去幾天結(jié)合了互聯(lián)網(wǎng)領(lǐng)域的一些收費方式,做了一些思考和研究。本質(zhì)上,Polkadot 網(wǎng)絡中的平行鏈是稀缺資源。而 Polkadot 的中繼鏈在短的時間內(nèi),每一個區(qū)塊鏈產(chǎn)出的區(qū)塊內(nèi),只能處理 100 條左右平行鏈的數(shù)據(jù)。目前的假設(shè)是,這 100 條平行鏈是同樣的那 100 條。然而,原則上來說,中繼鏈可以在每一個產(chǎn)出的區(qū)塊中,處理任意 100 條平行鏈上傳來的驗證信息,并不需要是固定的 100 條平行鏈。
在互聯(lián)網(wǎng)和計算網(wǎng)絡的領(lǐng)域有幾個稀缺資源的類比,其中一個是內(nèi)存資源 (Memory),另一個是硬件線程 (Hardware Threads)。
一般的手機和電腦,都有 2-8 個核 CPU,允許做多線程并發(fā)信息處理。然而計算機操作系統(tǒng)有更多的任務線程,比如這臺蘋果操作系統(tǒng),就大約 390 個不同的操作任務線性,同時并行獨立運行。一般來說,這 390 多個不同的操作任務線程,并不會占用太多的計算資源,它們在被呼叫操作之后會被喚醒。單個線程都會認為它們是獨立在 CPU 上運行,然而事實上,這些線程在共享 CPU 的計算資源。一般來說,當每一個單位不需要實時占用大量稀缺資源的時候,系統(tǒng)設(shè)置會讓這些進程共享稀缺資源,允許某些單位在短的時間內(nèi)使用這些資源。
通過分析和類比這個共享體系,我想到了為何不在平行鏈這塊,也采用這樣的共享收費機制。換句話說,平行鏈的插槽(Slots)可以被其他平行鏈共享。因此我們把這個被共享了插槽的稱為平行線程(Parathreads)。
平行線程是一個新的抽象,他的意義是如果你的項目并不需要所有平行鏈的功能和吞吐量,不需要像平行鏈那樣,通過所有的驗證者節(jié)點,把所有的區(qū)塊數(shù)據(jù),交易等都打包進入?yún)^(qū)塊。如果你的項目只是需要處理一部分你需要處理的交易,并在你需要的時候?qū)⑺鼈兇虬M區(qū)塊中,就適合使用平行線程。
平行線程跟平行鏈使用的是同樣的 API 模型、同樣的底層代碼和計算模型。平行線程跟平行鏈一樣有跨鏈互通的功能,整個網(wǎng)絡對待平行線程跟對待平行鏈是一樣的地位。它永久擁有自己的插槽,這跟計算機軟件認為它們時刻擁有 CPU 資源是一樣的道理。平行線程和平行鏈也可以按需互相轉(zhuǎn)換。
平行線程和平行鏈在付費模型上的區(qū)別
之后平行線程和平行鏈最主要的區(qū)別是在經(jīng)濟體系和付費模型上面。平行鏈需要通過拍賣質(zhì)押的方式來獲取一個插槽的位置,一共大約 100 個左右插槽位置。有了這個插槽位置之后,他們可以確保每一個 Polkadot 網(wǎng)絡的產(chǎn)出區(qū)塊里面都可以有他們平行鏈上產(chǎn)出的區(qū)塊數(shù)據(jù),并可以跨鏈傳播轉(zhuǎn)換到其他各個平行鏈當中。獲得這個平行鏈名額需要通過質(zhì)押 DOT 代幣拍賣的方式獲取,當參與拍賣插槽的團隊比較多的時候,此質(zhì)押代幣的數(shù)量可能會比較大。
然而,平行線程并不需要做這個拍賣。它只需要支付儲備金 10-100 個 DOT 即可,相比獲取一個平行鏈要便宜很多,比一個智能合約要貴一些。平行線程僅會在他們的交易被 Polkadot 網(wǎng)絡處理的時候,才會需要支付費用。當平行線程網(wǎng)絡靜止的時候,他們并不需要支付費用,僅僅是一開始的儲備金。當平行線程有比較多的交易需要處理,插入到 Polkadot 區(qū)塊鏈的時候,他們用 DOT 代幣做支付費用。平行線程也可以獲得優(yōu)化處理,當其他也有很多平行線程需要處理交易,產(chǎn)生區(qū)塊插入到 Polkadot 網(wǎng)絡時,平行線程可以被協(xié)調(diào),切換到相對網(wǎng)絡不那么繁忙的時間段,從而來降低網(wǎng)絡費用。
中繼鏈容量的分配
這一頁就是 Polkadot 中繼鏈的結(jié)構(gòu)介紹。大概會有 100 個平行鏈的插槽。
這其中一部分會是特別預留的插槽,這些插槽會被用來確保 Polkadot 網(wǎng)絡運行健康良好。會有一些系統(tǒng)級別的平行鏈,比如治理層邏輯的平行鏈,staking 邏輯平行鏈,以及網(wǎng)絡內(nèi)部進行 DOT 代幣賬戶轉(zhuǎn)賬邏輯的平行鏈,這些是比較重要的平行鏈,跟中繼鏈同時發(fā)起建立。另外的預留插槽會給用來讓中繼鏈可以后續(xù)做深度擴張的嵌套中繼鏈,和那些連接不同共識機制獨立的區(qū)塊鏈網(wǎng)絡進入 Polkadot 網(wǎng)絡的轉(zhuǎn)接橋 hub 的平行鏈。
另外一部分插槽我們稱之為租用插槽,這些是永久存在于波卡網(wǎng)絡的成員。這些成員會永遠產(chǎn)出區(qū)塊,并讓這些區(qū)塊得以驗證進入到 Polkadot 區(qū)塊鏈網(wǎng)絡中。他們擁有持續(xù)的網(wǎng)絡吞吐量資源,有全額的網(wǎng)絡功能。
最后剩下的這些插槽會被預留給這些平行線程項目。每一個區(qū)塊都會在所有的平行線程中做拍賣,誰最需要這些插槽,就可以在這些平行線程中通過拍賣方式競拍然后獲取這個平行鏈的插槽。
平行線程運作方式舉例
接下來我們看一看這個平行線程具體是怎么運作的。
這個 PPT 當中有兩個特定的區(qū)塊,Block42 和 Block43。同時我們有一堆收集者,這些收集者會從那些需要在這個區(qū)塊中寫入交易的平行線程中收集區(qū)塊。
收集者通過同樣的數(shù)據(jù)發(fā)出指令來分別哪些區(qū)塊是來自同一個平行線程的。然后中繼鏈從中選出 3 個收集者收到的最高競拍,把這三個區(qū)塊寫入中繼鏈中,并向這三個平行線程收費。
這個平行線程的收費和出塊驗證機制,跟平行鏈出塊和驗證接入到中繼鏈當中的機制是一樣的。
平行線程的經(jīng)濟模型
讓我們來看一下平行線程的經(jīng)濟模型,它包含 2 個不同的收費部分。
其中一個部分是交易手續(xù)費,也就是根據(jù)需要處理的數(shù)據(jù)量和區(qū)塊個數(shù)來計算的交易手續(xù)費。
另一個部分是來自平行線程的贊助。這部分的收費模型是圖中左下的收費曲線,X 軸代表距離上一個被平行線程創(chuàng)建、驗證并最終接入到區(qū)塊鏈中的區(qū)塊有多少的時間。起初因為有一個緩沖休眠期,所以需要的額外費用是 0,但 X 軸的時間超過一定數(shù)量之后,平行線程需要支付指數(shù)級增長的費用,來確保他們需要創(chuàng)建的交易區(qū)塊肯定可以在不那么大的延遲下被處理,驗證進入到區(qū)塊鏈網(wǎng)絡中。
例如這個圖中,我假設(shè)平行線程已經(jīng)休眠了 12 個區(qū)塊,然后需要重新出塊的話,需要支付 60 個平行線程特定的 TOK 代幣,而如果已經(jīng)休眠了 24 個區(qū)塊的話,則需要支付可能 60 億個平行線程特定 TOK 代幣才可喚醒。
然后我們把這兩部分的費用加到一起,然后告知收集者,如果某個收集者可以將這個來自平行線程的區(qū)塊收集并獲得驗證,則這個收集者可以獲得 100 個 TOK 代幣 —— 40 個來自交易手續(xù)費,60 個來自贊助或者叫額外的 top up 費用。
在這個 PPT 中,Dave 作為一個收集者,他意識到 100 個 TOK 代幣作為收集獎勵的價值大于 5 個 DOT 代幣的價值。因為他作為收集者,會獲得這 100 個 TOK 代幣,并給出 5 個 DOT 給中繼鏈,來確保他可以收集下一個區(qū)塊的交易數(shù)據(jù),并可以將區(qū)塊進入到中繼鏈中。
這 5 個 DOT 里的 1 個 DOT 會被分配給中繼鏈的區(qū)塊發(fā)布者(他們會選擇最高獎勵的平行線程,因而有經(jīng)濟動力來確保這個區(qū)塊可以寫入中繼鏈),另 4 個 DOT 會被分配給用于整個網(wǎng)絡治理,滿足全網(wǎng)絡成員利益的財務管理(Treasury)賬戶。
如果 100 個 TOK 價值是 6 個 DOT 代幣的話,Dave 作為收集者整個過程下來花費了 5 個 DOT 讓這個平行線程的區(qū)塊得以獲得驗證,并最終寫入到了中繼鏈,自己最終獲得 1 個 DOT 的獎勵。
平行線程讓鏈的轉(zhuǎn)移更平滑
另一個需要分析的比較重要的內(nèi)容就是鏈的轉(zhuǎn)移。
每一個平行鏈都有 2 年的有效期,6 個月之后他們就可以開啟不斷更新 2 年有效期的拍賣。但是有一定的概率,某些平行鏈參與的插槽拍賣不斷的失敗,他們離 2 年的有效期截止不斷接近,他們最終會被踢出平行鏈的陣營。有一個顧慮來自于某一些平行鏈被其他的平行鏈惡意競爭,最終被惡意擠出平行鏈陣容的情況。
這種情況的經(jīng)常發(fā)生對于整個 Polkadot 網(wǎng)絡也是不利的。盡管這是一個相對極端的情況,發(fā)生的可能性幾率不大。因為如果真的這樣的情況發(fā)生,平行鏈可能被其他的惡意踢出,那么很可能在發(fā)生之前整個 Polkadot 網(wǎng)絡的治理機制就會介入,來做協(xié)調(diào)治理。
在這邊我們假設(shè)這是一個潛在會發(fā)生的問題,平行線程就會在這種情況下提供一個中間的臺階。當平行鏈將要接近生命周期截止時,他們一般會直接變成一個轉(zhuǎn)接橋鏈,或者更壞的情況直接變成一個完全獨立的鏈。而現(xiàn)在,他們就可以變成一個平行線程,仍然可以被使用、接收和發(fā)出信息、提供服務,哪怕并不能像平行鏈那樣每個區(qū)塊都可以接入跨鏈網(wǎng)絡。
因為之前是從平行鏈轉(zhuǎn)過來的,大概率他們鏈上會有一些使用場景和有效應用,大概率他們鏈上的交易和數(shù)據(jù)會可以被有效驗證接入到中繼鏈上,盡管可能不能像平行鏈一樣每個區(qū)塊都接入。通過這樣的機制,對于這些無法續(xù)簽的平行鏈來說,也是一個比較體面的降權(quán)機制。同時,如果這樣的鏈會有收益和場景保持,未來仍然也可以繼續(xù)競拍插槽,最終回到平行鏈的陣營。
平行線程到平行鏈的切換并不是很重的轉(zhuǎn)換過程,而是一個比較輕的操作,僅需要一個區(qū)塊和一些簡單的技術(shù)邏輯就可以完成。當然平行線程也可以變成轉(zhuǎn)接橋鏈和安全鏈,當有經(jīng)濟激勵的情況下,也會有可能讓驗證者去驗證他們的區(qū)塊。
總結(jié):平行線程的地位和作用
總結(jié)來說,平行線程是一個介于平行鏈和轉(zhuǎn)接橋鏈之間的中間層級的地位。
平行線程擁有跟平行鏈一樣級別的來自中繼鏈的共享安全性和互通性,并確保快到期的平行鏈還可以一直保持在線。它讓每個開發(fā)團隊都可以以降低的成本接入?yún)^(qū)塊,小的平行線程可以不用跟大的鏈去競爭,并確保每個平行線程都可以通過支付一定的 DOT 代幣來支付交易費和通脹成本來享受到共享安全性。