和風網標誌

硬分叉、軟分叉、預設和強制

日期:

區塊鏈領域的重要論點之一是硬分叉還是軟分叉是首選的協議升級機制。兩者之間的基本區別在於,軟分叉通過以下方式改變了協議的規則: 嚴格減少 有效的交易集,因此遵循舊規則的節點仍將進入新鏈(前提是大多數礦工/驗證者實現分叉),而硬分叉允許以前無效的交易和區塊變得有效,因此客戶端必須升級他們的客戶端才能留在硬分叉鏈上。硬分叉也有兩種子類型: 嚴格擴展 硬分叉,嚴格擴展有效交易集,因此舊規則實際上是相對於新規則的軟分叉,並且 雙邊 硬分叉,兩個規則集雙向不相容。

這是一個維恩圖來說明分叉類型:

通常提到的兩者的好處如下。
  • 硬分叉使開發人員在進行協議升級時具有更大的靈活性,因為他們不必小心確保新規則“適合”舊規則
  • 軟分叉對用戶來說更方便,因為用戶不需要升級就可以留在鏈上
  • 軟分叉不太可能導致鏈分裂
  • 軟分叉實際上只需要礦工/驗證者的同意(即使用戶仍然使用舊規則,如果創建鏈的節點使用新規則,那麼無論如何只有在新規則下有效的東西才會進入鏈);硬分叉需要 選擇參加 徵得用戶同意

除此之外,對硬分叉經常提出的一個主要批評是硬分叉具有「強制性」。這裡所指的強制不是肉體上的強制,而是強制。相反,它是 透過網路效應進行強制。也就是說,如果網路將規則從 A 更改為 B,那麼即使您個人喜歡 A,如果大多數其他用戶喜歡 B 並切換到 B,那麼您必須切換到 B,儘管您個人不贊成更改才能繼續運行和其他人一樣的網路。

硬分叉的支持者經常被嘲笑為試圖對網路進行“敵意接管”,並“強迫”用戶跟隨他們。此外,鏈分裂的風險通常被用來形容硬分叉「不安全」。


我個人認為,這些批評是錯的,而且很多時候是完全倒退的。這種觀點並不是特定於以太坊、比特幣或任何其他區塊鏈;它源自於這些系統的一般屬性,並且適用於其中任何一個。此外,以下論點僅適用於有爭議的變更,其中至少一個選區的大部分(礦工/驗證者和使用者)不贊成這些變更;如果更改是無爭議的,那麼無論分叉的格式是什麼,通常都可以安全地完成。

首先,我們來討論一下強制問題。硬分叉和軟分叉都以一些用戶可能不喜歡的方式改變了協議; 任何 如果協議更改的支援率低於 100%,則會發生這種情況。此外,幾乎不可避免的是,至少 一些 在任何情況下,持異議者中的大多數人都更重視堅持更大群體的網路效應,而不是他們自己對協議規則的偏好。因此,從網路效應的意義上來說,這兩種分叉類型都是強制性的。

然而,硬分叉和軟分叉有一個本質上的區別: 硬分叉是可選擇加入的,而軟分叉則不允許用戶“選擇”。為了讓用戶加入硬分叉鏈,他們必須親自安裝實現分叉規則的軟體包,而那些不同意規則更改甚至比他們重視網路效應更強烈的用戶理論上可以簡單地留在硬分叉鏈上。老連鎖店-實際上,這樣的活動 已經發生了.

無論是嚴格擴展硬分叉還是雙邊硬分叉,都是如此。然而,在軟分叉的情況下, 如果分叉成功,則未分叉的鏈不存在。 因此, 軟分叉顯然在製度上傾向於強製而不是分裂,而硬分叉則具有相反的偏見。我自己的道德觀點使我傾向於分裂而不是強制,儘管其他人可能有所不同(最常見的論點是網絡效應確實非常重要,並且至關重要的是“一枚硬幣統治一切「,儘管也存在更溫和的版本)。

如果我必須猜測為什麼,儘管有這些爭論,軟分叉經常被標榜為比硬分叉“更具強制性”,我會說這是因為感覺硬分叉“強迫”用戶安裝軟體更新,而使用軟分叉,用戶根本「不必」做任何事。然而,這種直覺是錯誤的:重要的不是個人使用者是否必須執行點擊「下載」按鈕的簡單官僚步驟,而是使用者是否 被迫接受協議規則的更改 他們寧願不接受。如上所述,按照這個指標,兩種分叉最終都是強制性的,而且硬分叉在保護用戶自由方面表現得更好。

現在,讓我們來看看備受爭議的分叉,特別是礦工/驗證者偏好和用戶偏好衝突的分叉。這裡分為三種情況:(i)雙邊硬分叉,(ii)嚴格擴展硬分叉,以及(iii)所謂的「用戶激活的軟分叉」(UASF)。第四類是礦工活化軟分叉的情況 未經用戶同意;我們稍後會討論這個。

首先,雙邊硬分叉。在最好的情況下,情況很簡單。這兩種貨幣在市場上進行交易,交易者決定兩者的相對價值。從ETC/ETH案例中,我們有壓倒性的證據表明,礦工們極有可能簡單地根據價格比率將算力分配給代幣,以實現利潤最大化,而不管他們自己的意識形態觀點如何。

即使有些礦工聲稱對某一方有意識形態偏好,也極有可能有足夠多的礦工願意利用價格比和算力比之間的任何不匹配進行套利,並使兩者保持一致。如果一個礦工卡特爾試圖組成一個不在一條鏈上挖礦的聯盟,那麼就會有巨大的背叛動機。

這裡有兩種邊緣情況。第一個可能是,由於難度調整演算法效率低下,幣價下跌,挖礦價值下降,但難度並沒有下降來彌補,導致挖礦非常無利可圖,沒有礦工願意以同樣的價格挖礦。損失繼續推動鏈條前進,直到其難度恢復平衡。以太坊的情況並非如此,但很可能 比特幣就是這樣。因此,少數鏈很可能永遠不會落地,因此它將會消亡。請注意,規範性問題 這是否是一件好事 取決於您對強制與分裂的看法;正如你可以從我上面寫的內容中想像到的那樣,我個人認為這種對少數鏈不利的難度調整演算法是不好的。

第二個邊緣情況是,如果差異很大,大鏈可以 51% 攻擊較小的鏈。即使在 ETH/ETC 以 10:1 的比例分割的情況下,這種情況也沒有發生;所以這當然不是給定的。然而,如果主鏈上的礦工更喜歡強製而不是允許分裂並按照這些價值觀行事,那麼這種情況總是有可能發生的。

接下來我們來看看嚴格擴展硬分叉。在 SEHF 中,非分叉鏈具有在分叉規則下有效的屬性,因此如果分叉的價格低於非分叉鏈,則其算力將低於非分叉鏈,並且因此非分叉鏈最終將被接受為最長鏈 透過原始客戶端和分叉客戶端規則 – 所以分叉鏈「將會被消滅“。

有一種觀點認為,對於這種分叉成功存在著強烈的內在偏見,因為分叉鏈被消滅的可能性將被納入價格中,從而推低價格,使得該鏈更有可能被淘汰。毀滅…對我來說,這個論點似乎很有說服力,所以這是一個很好的理由 任何 有爭議的雙邊硬分叉而不是嚴格擴展。

Bitcoin Unlimited 開發人員建議透過以下方式處理此問題 手動進行雙邊硬分叉 發生之後,但更好的選擇是內建雙邊性;例如,在比特幣的情況下,可以添加一條規則來禁止某些未使用的操作碼,然後在非分叉鏈上進行包含該操作碼的交易,這樣在分叉規則下,非分叉鏈將從此被禁止。視為永久無效。在以太坊的例子中,由於狀態計算如何運作的各種細節,幾乎所有硬分叉幾乎都是自動雙邊的。其他鏈根據其架構可能具有不同的屬性。

上面提到的最後一種分叉是用戶啟動的軟分叉。在UASF中,使用者開啟軟分叉規則,無需費心與礦工取得共識;預計礦工們只是出於經濟利益而順從。如果許多用戶不同意 UASF,那麼就會出現代幣分裂,這將導致與嚴格擴展硬分叉相同的場景,除了——這是這個概念中真正聰明和狡猾的部分—— 同樣的「毀滅風險」壓力在嚴格擴展的硬分叉中強烈反對分叉鏈,而在 UASF 中強烈支持分叉鏈。即使 UASF 是選擇性加入的,它也會利用經濟不對稱來偏向成功(儘管這種偏向不是絕對的;如果 UASF 明顯不受歡迎,那麼它就不會成功,只會導致鏈分裂)。

然而,UASF 是一種危險的遊戲。例如,假設一個專案的開發人員想要製作一個 UASF 補丁,將先前接受所有交易的未使用操作碼轉換為僅接受符合某些很酷的新功能規則的交易的操作碼,儘管該操作碼是在政治或技術上有爭議且礦工不喜歡。礦工們有個聰明又狡猾的反擊方式: 他們可以單方面實施礦工激活的軟分叉,使所有使用軟分叉創建的功能的交易總是失敗.

現在,我們有三個規則集:

  1. 操作碼 X 始終有效的原始規則。
  2. 只有當交易的其餘部分符合新規則時,操作碼 X 才有效的規則
  3. 操作碼 X 始終無效的規則。

請注意,(2)是相對於(1)的軟分叉,(3)是相對於(2)的軟分叉。現在,有強大的經濟壓力支持(3),因此軟分叉未能實現其目標。

結論是這樣的。軟分叉是一種危險的遊戲,如果有爭議且礦工開始反擊,它們就會變得更加危險。嚴格擴展硬分叉也是一種危險的遊戲。礦工啟動的軟分叉是強制性的;用戶啟動的軟分叉的強制性較低,但由於經濟壓力仍然具有相當的強制性,而且它們也有其危險。如果你真的想做出有爭議的改變,並且認為這樣做的高社會成本是值得的,那麼只需進行一次乾淨的雙邊硬分叉,花一些時間添加一些適當的重播保護,然後讓市場來解決。

資源: https://vitalik.eth.limo/general/2017/03/14/forks_and_markets.html

現貨圖片

最新情報

現貨圖片