理解弱區塊——BCH新即時確認協議飯前開胃菜

買賣虛擬貨幣
昨天,2019年8月30日,BCH開發者awemany釋出了一篇白皮書——《Storm——Using weak proof-of-work for instant confirmations on Bitcoin Cash》(《風暴——使用弱工作量證明實現比特幣現金交易即時確認》)

為理解《風暴》,我重讀了弱區塊白皮書。

先來理解下比特幣挖礦工作量證明。

一個挖礦的過程是計算一個隨機數,誰先算出這個符合條件的數,這個條件叫“目標值”,就成功挖到一個區塊,就可以拿到區塊獎勵和交易手續費了。考慮到交易安全性,比特幣系統設定全網平均10分鐘就會有人算對一次,如果這個平均時間比10分鐘快,那系統就會加大計算的難度,反之就減少。
為了衡量挖礦出塊時間,系統定義了一個叫“難度”的值。“難度值”和“目標值”是可以透過計算公式相互計算的。

為了給出弱區塊的定義,我們先將比特幣透過POW挖出符合“目標值”的區塊叫“強區塊”。請記住“目標值”和“強區塊”這兩個概念。

對應的,我們定義一個“弱目標值”,即定義一種PoW計算難度更低的“低難度值”,對應的也就可以計算出一個低目標值,就叫“弱目標值”。比如“低難度值”只有前面的“難度值”的四分之一,也可以是十分之一,這就看系統的多方衡量考慮。當礦工計算的隨機數符合了這個“低難度值”的條件下計算出來的“弱目標值”時,這個礦工就挖到了一個叫“弱區塊”的區塊。

這種“弱區塊”的出塊速度就要比“強區塊”快很多,比如快4倍,或10倍,依據系統設定的“低難度值”是原“難度值”的多少而定。

弱區塊和強區塊類似,也包含類似的資料結構,也有前雜湊值、隨機數、根雜湊值、coinbase資訊,和大量的交易交易。這種弱區塊書寫成“Δ-區塊”。

由弱區塊組成的鏈就稱為子鏈,這是依附在強區塊鏈上的。當有礦工挖到一個強區塊時,子鏈就關閉了。然後系統再開啟一個子鏈,等著依附到下一個強區塊上。

當有礦工挖到強區塊後,依附在上面的子鏈就會被打包進強區塊。關閉子鏈後,這個強區塊的具體資料結構應該和現有的區塊資料結構完全一樣。

有了弱區塊和子鏈後,廣播強區塊的過程就可以被最佳化。在強區塊被挖出之前,Δ-區塊已經在礦工層面達成共識了,所有礦工已經同步了弱區塊。當一個礦工挖出強區塊後,再向全網廣播強區塊時,就只需要廣播該強區塊的所有Δ-區塊雜湊值,整個強區塊的資料結構就不需要廣播了。這可以大大降低區塊廣播過程的資料量,降低強區塊被孤立的風險。

弱區塊沒有區塊獎勵,只有強區塊才有。但弱區塊有交易手續費,所以礦工也可以透過挖弱區塊獲得收益。

挖到強區塊的礦工,是無法拿到弱區塊裡的交易手續費的。每一個弱區塊被挖出來後,該礦工會在弱區塊裡構建一筆“弱coinbase交易tx”,將該弱區塊裡的所有礦工費收集在這筆“tx”裡。但這筆tx在強區塊被挖出前是無效的,只有等到強區塊被挖出後,子鏈被關閉時,由強區塊礦工來分配所有的交易手續費。

這多考驗礦工人性,如果沒有硬分叉,我很難相信弱區塊能夠形成協議共識。雖然Bitcoin unlimited的開發者始終認為弱區塊是不需要硬分叉來部署。不過,這只是理論上不需要,工程上最好是設計成硬分叉。

比特幣牽涉到的利益關係極其複雜,對比特幣協議的進化需要多種領域的知識,包括經濟學、電腦科學、數學 ,甚至現在還牽扯進來了各種政治類智慧。

免責聲明:

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

推荐阅读

;