樹鏈VS側鏈:到底在爭論什麼?

買賣虛擬貨幣

樹鏈VS側鏈:到底在爭論什麼?如果在過去幾個月裡你一直關注著比特幣社羣的動態,你應該已經聽說過“側鏈”和“樹鏈”的概念,甚至獲悉過一些爭論,爭論的焦點是其中哪個方案應該增加到比特幣協議裡。但你可能還不瞭解它們,不知道為什麼要加到比特幣系統裡,也不知道它們的工作原理。

我們為什麼討論這個話題:

發展“側鏈”和“樹鏈”技術的最大動力來自於比特幣目前擴充套件性不良。隨著交易總數不斷增加,獨立礦工所需的頻寬和儲存空間將會膨脹到難以為繼的水平。我們急需一些方法分拆塊鏈,以減少獨立礦工的負荷。

除此之外,如果在避免直接使用競爭幣(以及交易所交易的資金成本)的同時,還能整合一些競爭幣優良的功能(比如快速確認)肯定是個好事。而且,完成這些任務,並不需要把競爭幣的功能定義到比特幣核心的區塊鏈裡。

側鏈:

側鏈方案中提出了一種互動協議:允許開發者把新的側塊鏈和比特幣主塊鏈“連結”起來,讓幣可以在主塊鏈和各類側塊鏈之間來回移動。這些側塊鏈可以和比特幣屬性完全不同,比如包括ZeroCoin式的完全匿名,或者狗狗幣(Dogecoin)式的快速交易驗證。使用者可以把幣從一個塊鏈移到另一個塊鏈來獲得所需的屬性,比特幣的價值和總量將不受任何影響。

想象一個情形:使用者可以用側鏈建立那些由比特幣“背書”的競爭幣。你可以把比特幣“掛起”——即從你的錢包裡輸出一些比特幣換成定量的競爭幣,未來如果有人可以證明其銷燬了等量的該種競爭幣,就可以獲得當時你“掛起”的比特幣。

乍一看,這似乎是個不錯的主意,不過它有著一些嚴重的缺陷。如果把比特幣分散到很多側鏈中,每個側鏈的雜湊率只是整個網路的一小部分。這樣問題很大,因為在側鏈方案中攻擊者只需要破壞最薄弱的側鏈,就可以破壞整個網路。

一旦他們在某個側鏈完成51%攻擊,他們就可以建立一個(假的)最長側鏈,用偽造的側鏈幣在原比特幣塊鏈中換成比特幣。問題的本質在於,側鏈們不共享同一個公共塊歷史。這意味著,從一個側鏈到另一個側鏈轉移幣的過程中,大部分側鏈方案僅僅依賴所謂的“SPV證明”(譯者注:簡化交易驗證,一種輕量錢包使用的驗證機制),它只檢查所涉及的幣是否來自已知的最長鏈(而並不追溯幣的歷史來源至創世區塊。

這種SPV證明執行在輕錢包內部,安全標準遠低於比特幣網路。而在側鏈方案中,一個51%攻擊者不僅可以雙花一筆交易,甚至可以憑空製造側鏈幣。)

解決這個問題的一個辦法是合併挖礦,以確保所有側鏈同時以相同雜湊率開採。合併挖礦的情形下,所有側鏈使用相同的雜湊演算法,這樣可以在同一時刻為兩個側鏈生成工作量證明。

礦工只需要一次雜湊運算就有相同概率完成兩個工作量證明。這看上去好像巧妙地化解側鏈的缺陷,遺憾的是它沒有那麼簡單。合併挖礦要求礦工執行所有側鏈的完整節點,這就會造成中心化挖礦的趨勢,這是我們不願意看到的。此外,如果任意側鏈受到51%攻擊,風險依舊存在。

綜合上述限制條件和風險都留下了許多核心開發者質疑的側鏈提案,雖然他們的工作解決上述問題仍在繼續。

綜合上述限制和風險,很多比特幣核心開發者質疑側鏈提案的可行性。當然開發者們解決這些問題的工作還在繼續。

樹鏈:

樹鏈的方案與側鏈類似,但儘可能解決了後者的一些問題。提出樹鏈方案的人是Peter Todd(比特幣核心開發者),它大概是這樣子:

試想一下,我們有一個樹狀區塊而不是鏈狀區塊。比特幣區塊鏈的主鏈還是大家熟知的樣子,但主鏈並不儲存實際交易資料,而是在每個塊裡儲存兩個雜湊值。這是兩個新塊的雜湊值,我們將其表示為“左鏈”和“右鏈”——把這兩個鏈看做主鏈的“孩子”。它們中再儲存自己孩子的雜湊值,以此類推。延伸到一定深度後,我們達到了“葉子”節點——這些節點就是實際儲存資料的區塊。

交易資料將隨機分佈到整個樹的最底層,分配基於交易編號。礦工隨意挑選底鏈,在葉子節點上挖礦。由幾個礦工負責一個葉子。在底鏈上,獎勵和難度都成指數降低,使礦工可以快速確認交易(在這些底鏈上)不斷獲取小獎勵。平滑回報率可以鼓勵礦工獨立挖礦,就不用去礦池了。

這些鍊形成一整顆樹,每個鏈體積都很小。礦工在子鏈和父節點上共同挖礦可以實現一些令人激動的屬性。礦工挖礦所在的鏈包括葉子節點、父節點、祖父節點,這意味著礦工可以只儲存樹的一部分(只是其工作的葉子節點所在的分支)仍然可以挖到根結點,並有機會在任意層級挖出礦獲得獎勵。

這仍可以確保與鏈狀結構相同的安全性:在每個葉子節點上完成的採礦工作,有利於整個樹幹的穩定性。雖然最遠葉子節點打包的交易安全性(由於減少了難度)比層級較高的節點差一些,但隨著樹的生長,它的安全性會很快提高,就像現在的比特幣交易一樣安全。

這個方案不但保留了區塊鏈作為整體的安全性,同時具備很多優點。首先,獨立礦工不需要儲存整個塊鏈:他們只需要儲存他們正在挖礦的葉子節點到根結點之間的資料。這使得整個樹安全地分發給眾多礦工。

第二,這意味著錢包軟體不需要儲存整個樹,就可以確保安全:錢包只需要儲存與其錢包相關的樹路徑,就有足夠的交易證明保證錢的真實性(包含所有交易資訊的簽名證明)。這意味著輕錢包仍然可行,而且比SPV證明安全的多。

我們甚至可以根據應用需要改變樹的深度,這讓比特幣擁有無限的擴充套件性:永遠不會因為交易過多、資料過大導致單一礦工無法處理——只需要拆分成很多葉子節點就可以了。

這個方案在某種程度上比側鏈靈活性差一些,因為它不允許塊鏈做根本性的修改:它不可能單獨對某個葉子節點實施ZeroCoin式的匿名性。但是交易速度可以變快,而且不會影響網路整體的安全性。

彼得·託德(Peter Todd)的方案完全拓展了比特幣的使用範疇。礦工不再需要驗證交易資料:礦工只需要看交易是否附加了礦工費,不用考慮交易內容,因為使用者可以自己做驗證的工作。使用者只需透過樹路徑儲存相關的交易證明資料,然後在需要進行交易的時候廣播這些證明就可以了。

這樣,比特幣塊樹就可以變成一個競爭幣平臺:使用者只需付比特幣作為交易費,交易本身可以是任何資產。你可以在比特幣區樹鏈上傳送ZeroCoin或其他智慧資產,同時受益於比特幣的安全性。

同時,使用比特幣的使用者會直接忽略掉樹鏈中包含的山寨幣資訊,反之亦然。我們可以用磁帶錄音機打比方,錄音機錄下了房間裡同時出現的不同語言對話。錄音機不管內容,它只是錄下很多喋喋不休的聲音。聽的人可以從錄音中分辨出英語,其他人也許聽同一盤磁帶可以聽出普通話。一盤磁帶同時服務了兩個人,但磁帶本身不需要理解它錄了什麼內容。

樹鏈是全新的概念,而且尚未在開發者社羣達成一致:有些開發者對如何處理“孤塊”產生顧慮,因為孤塊將在底層節點中頻繁出現,假如你的交易打包在某個孤塊下層的葉子節點,那你該如何追溯交易歷史?你怎麼確保交易打包在新塊裡呢?關於這些問題還有大量的工作要做,必須確保這個新結構不會引入不公平的獎勵機制或者出乎意料的問題。

最後,在傳統比特幣(既優雅又簡潔)系統上增加複雜度,這件事本身就足以讓任何謹慎的開發者停下來好好想想了。將比特幣切換到樹鏈結構將是非常重大系統轉變,這一方案在宣告可行前,一定要進行認真謹慎的討論和驗證工作。

儘管如此,樹鏈有很多屬性非常令人興奮,而且看上去樹鏈很可能讓比特幣的未來有很大不同。順便說點政治話題,這種密集的技術性討論也提醒我們,試圖監管比特幣是多麼愚蠢的想法:沒有人知道幾年後比特幣到底是什麼樣子,包括核心開發者。而且即便比特幣社羣接受了善意、寬鬆的監管,就比特幣目前這種轉變的趨勢而言,這些監管也很可能突然變成一紙空文。

免責聲明:

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

推荐阅读

;