LAVA PoC2+協議升級硬分叉方案

買賣虛擬貨幣
為了順利引入新的PoC2+標準,需要將全節點在共識層面上進行適當改造,也即所謂的分叉。本文為Lava核心開發者團隊提出的分叉方案介紹。分叉一般有兩種形態,一種是硬分叉,另一種是軟分叉。該方案基於區塊鏈的去中心化和社羣自治精神,提出了一種由礦工投票啟用的硬分叉方案,既有別於傳統的硬分叉,也有別於比特幣經常採用的MASF(礦工啟用軟分叉)。什麼是硬分叉?如果軟體/硬體的規則發生改變,並且這種規則改變無法向前相容。在區塊鏈中,使用舊版本的節點和使用新版本的節點各成體系、無法互相辨認,稱為硬分叉。現實中的例子:·蘋果公司在iPhone 5上使用了Lightning介面,以替代此前的30針Dock介面。iPhone 5以前的手機無法使用新的介面,iPhone 5以後的新手機也無法使用舊的介面。什麼是軟分叉?
軟分叉一般都是向前相容的(Forward Compatibility),也可以說是未來相容。通俗解釋就是:舊版本的軟體/硬體,可以使用新版本的軟體/硬體產生的資料。在區塊鏈上可以理解為舊節點可以驗證並接受新節點出的塊。現實中的例子:·立體聲FM廣播是向前相容,它既可以被單聲道的老式收音機播放,但沒有立體聲效果;也可以被新式的立體聲收音機播放,具有立體聲效果。軟分叉在特殊情況下也可以是向後相容(Backward Compatibility),也即新版本的軟體/硬體,可以使用舊版本軟體/硬體產生的資料。在區塊鏈上可以理解為,新節點也可以驗證並接受老節點出的塊。現實中的例子:·Intel的x86指令集CPU是向後相容的,新款CPU依然可以執行老款CPU的軟體,這是由於Intel希望保證老版本CPU有的指令集在新版本中也得以保留。這種只增加不刪除的策略,保證了我們換CPU時無需更換相配套的軟體。
分叉涉及的技術層面針對Lava PoC2+ 的分叉方案中,在共識層面需要改動以下幾處:1. 區塊頭中需要新增一個LAVA挖礦者地址的欄位。這種區塊頭中附帶地址用以驗證的方式,burst已經使用,其地址即為區塊頭中的PID。因此LAVA中將以前的PID替換為LAVA專屬地址的方法也是該思路的延續。2. 挖礦相關的一系列介面,包括:Miner請求資訊,Miner提交資訊後的驗證,以及全節點的鑄塊時校驗等。3.全節點同步其他區塊時的驗證過程。4. 全節點重啟後讀盤時的區塊驗證過程。
5. 繫結關聯式資料庫升級。詳細分叉方案的分析1. 向前相容的軟分叉首先排除該方案。雖然該方案是區塊鏈軟分叉首選,但是由於需要修改區塊頭中的欄位,因此就無法滿足舊節點能夠接收新節點出的區塊這一大前提。2. 向後相容的軟分叉該方案的實際效果如下圖1。根據向後相容的大前提,由於新節點可以接收並驗證老節點出的區塊,而舊節點卻無法接收新節點出的區塊。因此最後新節點逐漸超過舊節點算力達到51%時,兩條鏈分叉。

這雖然保證了分叉的效果,但是也存在相應的問題(如圖2),在最初始的網路中,由於舊節點算力佔優(51%~100%),而新節點出塊始終無法被舊節點接收,因此會存在很大程度上新節點算力的浪費。假設某時刻新節點挖出另一條鏈與老鏈分叉,在一段時間後老鏈的算力和長度會逐漸超過新鏈,新節點的向後相容性又使得新鏈被舊鏈覆蓋,整條新鏈的算力全都浪費。

3. 傳統硬分叉

傳統硬分叉方式實際效果如下圖3。傳統硬分叉是指直接透過更新軟體來進行分叉,更新後的軟體和原有版本的軟體無法互認,因此形成兩條獨立的區塊鏈。傳統的硬分叉若沒有得到生態中參與者的同意,容易造成生態的分裂,應當謹慎考慮。

4. 一種由算力啟用的鏈上硬分叉方案

Lava提出了一種由礦工投票啟用的硬分叉方案。這種方案的實際效果如圖4。

該方案將硬分叉分為兩個階段:

第一階段:分叉前的礦工投票啟用和鎖定;
第二階段:鎖定期結束後啟用分叉。

該方案的好處是:

第一,解決了上述向後相容軟分叉方案中,在分叉起始時新節點可能存在的算力浪費的問題。

第二,傳統硬分叉由於兩條區塊鏈互相隔離、自成體系,可能導致生態的分裂。這是因為如果有部分生態參與者不同意分叉,但又強行被另一部分參與者意見裹挾而不得不服從,就容易引起不滿和爭議。硬分叉後,甚至可能存在兩條鏈獨立發展,例如以太坊(ETH)和以太坊經典(ETC)的案例。

算力啟用硬分叉的第一部分:投票與鎖定

礦工選擇更新全節點軟體版本來鑄造區塊,新的全節點依舊會保持舊的共識規則,也即PoC2標準,與未更新軟體的舊節點互認。

新的全節點軟體版本僅在區塊頭的版本中變更了版本號,用以表示出塊者的投票意見(更新本身即是投票,無需作出額外動作)。一段時間後,全節點會自動統計“投票”階段中新節點出塊的量,當數量達到一定閾值,即可開啟下一個階段——鎖定。

鎖定階段中,新舊節點依舊使用POC2的共識規則進行鑄塊,當鎖定階段結束,即進入硬分叉的第二部分,正式啟用硬分叉。

鎖定階段的意義是提供共識切換前的過渡時間,以便使用者可以逐漸將硬碟中的檔案從POC2格式遷移至POC2.x(即給出時間以進行“重新P盤”),用以在即將來臨的新鏈上繼續挖礦。

算力啟用硬分叉第二部分:正式啟用分叉

進入啟用階段後,硬分叉正式生效,舊鏈和新鏈共存。舊鏈依舊沿用POC2共識,而新鏈,也即新節點將使用POC2.x共識進行鑄造,驗證,同步等過程。這也意味著,從此刻開始,新節點必須使用LAVA專屬的P盤格式,否則將無法出塊。

免責聲明:

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

推荐阅读

;