区块链分叉如何解决_什么是分叉区块链又该如何分叉
區塊鏈為何及如何分裂?Zrk顯卡之家
分叉(fork),或是分叉的威脅,似乎是加密貨幣領域的公認特征。但分叉是什么?為什么分叉會有這么大的影響?硬分叉與軟分叉的差異在哪?Zrk顯卡之家
Zrk顯卡之家
“分叉”從編程術語來講,是一個開源代碼的修改。通常,分叉代碼與原始代碼類似,但經過重要的修改,兩個“叉”(prongs)和平共存。有時,分叉被用來測試過程,但在加密貨幣里,它通常被用來實行基本面的更改,或使用與原有資產相似的(但不相等的)特征來創造新資產。Zrk顯卡之家
并非所有分叉的發生都是刻意的。使用廣泛分散的開源代碼庫(open-source codebase),一旦當不是所有節點都能復制相同信息時,分叉有可能意外地產生。然而,通常這些分叉都能被識別并解決,主要的加密貨幣分叉都源于對植入哪些特性所產生的意見分歧。Zrk顯卡之家
記住一點,這些分叉有著“共享的歷史”。每個鏈(舊的或新的)上在分叉之前的交易記錄都是完全相同的。Zrk顯卡之家
硬分叉Zrk顯卡之家
編程分叉主要有兩種類型:硬分叉與軟分叉。Zrk顯卡之家
硬分叉是對舊版本的無效協議進行更改。假如舊版本持續運行,它們最終將使用與新版本不同的協議與數據。這會導致嚴重的混淆與可能的錯誤。Zrk顯卡之家
在比特幣里,需要硬分叉來更改像是區塊大小、解決加密難題的難度、新增額外信息之限制等定義參數。任何對這些規則的更改,都可能造成區塊被新協議接受但被舊版本拒絕,并可能導致嚴重問題──甚至有可能造成資金的損失。Zrk顯卡之家
舉例來說,假如區塊的大小限制由 1 MB 增加到 4 MB,一個 2 MB 大小的區塊將能被運行新版本的節點所接受,但會被運行舊版本的節點所拒絕。Zrk顯卡之家
也就是說,2 MB 大小的區塊通過某一更新后節點的驗證并新增到區塊鏈中。假若下一個區塊是需要被運行舊版協議的節點所驗證的呢?該節點會試圖新增這個區塊,但它會偵測到最新的這個區塊并沒有通過驗證。因此,它將忽視該區塊,并將新驗證結果附加到前面一區塊。突然間,你有了兩個區塊鏈,其中一條同時含有舊與新版本協議的區塊,另一條僅包含舊版本協議的區塊。哪條鏈的增長較快取決于哪些節點可以獲得下一區塊的驗證,并且最終可能還會有額外的分裂。兩條(或更多的)鏈是可以無限平行增長的。Zrk顯卡之家
這是一個硬分叉,它可能是混亂的,也可能充滿著風險,因為在新區塊中花費的比特幣可能會再次花費在舊區塊里(因為運行舊版本協議的商戶、錢包與用戶無法偵測到無效的新代碼支出)。Zrk顯卡之家
唯一的解決方法是放棄其中一個分支轉而支持某一分支,這涉及一些礦工的損失(交易本身是不會丟失的,它們只會被重新分配)。或者,所有節點都需要在同時切換到較新的版本,而這在分散的、廣泛傳播的系統內是不容易達到的。Zrk顯卡之家
或者,比特幣會分裂,這已經發生了。(哈啰,比特幣現金)Zrk顯卡之家
軟分叉Zrk顯卡之家
軟分叉仍然可以與舊版本一同運行。Zrk顯卡之家
舉例來說,假如以限縮規則的方法更改協議,實現表層修改或添加不影響結構的功能,則舊版本的區塊將能接受新版本區塊。但反過來則行不通:新的、較為嚴格的版本將拒絕舊版本的區塊。Zrk顯卡之家
在區塊鏈中,理想狀態下,礦工發現它們的區塊被拒絕,就會自行升級。隨著越來越多礦工完成升級動作后,擁有主要新區塊協議的鏈會變得越來越長,會更加孤立舊版本的區塊,這又能讓更多礦工進行升級動作,并且系統會自動糾正。由于舊的和更新后的節點都接受新區塊,因此新版本的區塊協議最終將獲勝。Zrk顯卡之家
舉例來說,當社區決定將區塊大小從現有的 1 MB 限制縮限到 0.5 MB。運行新版本區塊協議的節點將拒絕 1 MB 大小的區塊,并且會建構在前一個區塊上(如果它是使用新版本的代碼進行挖礦),可能會導致暫時的分叉。Zrk顯卡之家
這是一個軟分叉,并且已經發生過好多次。最初,比特幣并沒有區塊小的限制,是通過軟分叉將 1 MB 的大小限制引入的,因為新規則比舊規則更為“嚴格”。而可以在不改變結構的情況下強化代碼的 pay - to - script - hash 功能,也是通過軟分叉成功增加的。這類型的修正通常僅需要大部分的礦工進行升級,便可以讓該分叉變得更可行,也降低了破壞性。Zrk顯卡之家
軟分叉并不會帶來困擾硬分叉的雙花風險(double-spend risk),因為運行舊節點的商家與用戶將能同時讀取新舊版本的區塊協議。Zrk顯卡之家
總結
以上是生活随笔為你收集整理的区块链分叉如何解决_什么是分叉区块链又该如何分叉的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gridview 在已有数据的基础上添加
- 下一篇: 银行贷款利率是年化利率吗