當前位置:首頁 » 區塊鏈知識 » 區塊鏈的分支或分叉

區塊鏈的分支或分叉

發布時間: 2023-05-03 06:26:43

1. 區塊鏈為什麼有分叉分叉會發生什麼情況

    區塊鏈的分叉(fork)的形成原因可能有多種。

    當兩個結點幾乎在同一個時間挖到了礦並同時發布區塊,此時就出現臨時性的的分叉(state fork),

    本質上是對比特幣這個區塊鏈當前的狀態產生了意見分歧,

    當人為的發起分叉攻擊(forking attack),也就是故意造成這類分叉(deliberate fork)還有一類分叉是,當比特幣的協議發生了改變的時候,軟體需要升級。而在分布式系統中不能保證所有節點同時升級軟體,假設存在部分節點未升級,會導致協議分叉(protocol fork)。對協議修改的內容的不同,又可以將分叉分為硬分叉(hard fork)和軟分叉(soft fork);

    比特幣協議增加新協議,擴展新功能,未升級軟體的舊節點會不認可這些修改,會認為這些特性是非法的。這也就是對比特幣協議內容產生分歧,從而導致的分叉叫 硬分叉 。此時,就出現了新節點永遠沿著新節點產生的鏈挖礦,舊節點永遠沿著舊節點鏈挖礦,由於新節點算力足夠強,所以形成兩條永遠都在延伸且平行的鏈。只要這部分舊節點永遠不更新,則舊鏈將一直延續,可見這種分叉是持久性的。

出現hard fork後,便變成了兩條平行的鏈,也就造成了社區分裂。社區中有一部分人,會認為下面的鏈才是根正苗紅,各個鏈上的貨幣獨立。以太坊歷史上的一件大事就是硬分叉事件。以太坊稱為ETH,但目前看到的ETH已經不是最初的ETH了,以太坊在歷史上發生過硬分叉,另一個鏈稱為ETC。實際上,ETC才是以太坊設計原本的協議,而ETH是黑客攻擊ETH上一個智能合約THE DAO後,進行回滾的協議鏈(將黑客攻擊偷取的以太幣採用硬分叉方式回滾回到另一智能合約,然後退還給真正擁有者)。

    分叉之初,由於兩個鏈分叉造成了互相影響,產生了很多麻煩。比如:在ETH鏈上有一筆轉賬B->C,有人便在ETC鏈上回放,將ETC鏈上的貨幣頁轉給了C(C收到兩筆錢)。後來,對兩條鏈各添加了一個chainID,將兩個鏈區分開,才使得這兩條鏈真正分開。

如果對BTC協議添加限制,使得原本合法交易在新交易中不合法,便會形成軟分叉。

當大多數節點已經更新完畢之後,舊節點認可新節點挖出的區塊,因此發布自己挖出的區塊,但新節點不認可舊結點挖出的區塊,便沿著上一個新節點發布的區塊繼續挖礦,當新節點擁有大部分算力的時候,新鏈會越來越長,從而舊節點挖出並發布的區塊一直被拋棄,無法獲得出塊獎勵,最終倒逼舊節點升級軟體,實現所有節點認可新協議並進行升級。可見,只要系統中擁有半數以上算力節點更新軟體,此類分叉不會出現永久性分叉。比特幣腳本中的P2SH就是通過軟分叉方法加進去的。

 

    這一部分我並沒有查到太多的資料,但是在絕大多數共識協議之中我們都假設需要過半算力;

    在理論上,如果掌握了50%以上的算力,就擁有了獲得記賬權的絕對優勢,可以更快地生成區塊,也擁有了篡改區塊鏈數據的權利。因此,當具有過半的算力,也就是51%都是誠實可靠的,能保證整一個區塊鏈在合法有序的進行運行。

    但是為什麼選擇過半的算力,而不是過半的用戶?比特幣系統,任何人都可以加入,且創建賬戶及其簡單,只需要本地產生公私鑰對即可。只有轉賬(交易)時候,比特幣系統才能知道該賬戶的存在。這樣,黑客可以使用計算機專門生成大量公私鑰對,當其產生大量公私鑰對超過系統中一半數目,就可以獲得支配地位(女巫攻擊)。因此,比特幣系統中很巧妙的使用算力作為投票的依據。

2. 什麼是比特幣中的硬分叉和軟分叉他們各自有什麼特點

簡單來說,因為兼容性的不同,因此就產生了硬分叉和軟分叉,軟分叉是暫時的,而硬分叉則是永久的。

區塊鏈發生永久性分歧,在新的共識規則發布之後,一些沒有及時升級的節點則沒有辦法驗證已經升級的節點所產生的區塊。這個時候硬分叉就會發生。對於硬分叉,行業內的定義是這樣的,硬分叉是指比特幣的區塊格式或者交易格式(也就是大家所熟知的「共識」)發生改變時,沒有升級的節點會拒絕驗證已經完成升級的節點所生產出的區塊。而已經升級的節點則可以驗證未升級節點所產生的區塊。然後大家各自延續自己認為正確的鏈。因此就分成了兩條鏈:新鏈和舊鏈。

軟分叉具有如下的特點:

1, 具有很好的兼容性,之前的舊版本部分功能可用,可以不用升級。

2,在區塊鏈的層面沒有分叉的鏈,只是組成的鏈的區塊有新舊區塊之分;

3,在相當長的時間里,可以允許不進行升級,繼續使用原有的版本生成舊的區塊,並與新區快並存。

3. 區塊鏈入門的教程


可是,簡單易懂的入門文章卻很少。區塊鏈到底是什麼,有何特別之處,很少有解釋。
下面,我就來嘗試,寫一篇最好懂的區塊鏈教程。畢竟它也不是很難的東西,核心概念非常簡單,幾句話就能說清楚。我希望讀完本文,你不僅可以理解區塊鏈,還會明白什麼是挖礦、為什麼挖礦越來越難等問題。
需要說明的是,我並非這方面的專家。雖然很早就關注,但是仔細地了解區塊鏈,還是從今年初開始。文中的錯誤和不準確的地方,歡迎大家指正。
一、區塊鏈的本質
區塊鏈是什麼?一句話,它是一種特殊的分布式資料庫。
首先,區塊鏈的主要作用是儲存信息。任何需要保存的信息,都可以寫入區塊鏈,也可以從裡面讀取,所以它是資料庫。
其次,任何人都可以架設伺服器,加入區塊鏈網路,成為一個節點。區塊鏈的世界裡面,沒有中心節點,每個節點都是平等的,都保存著整個資料庫。你可以向任何一個節點,寫入/讀取數據,因為所有節點最後都會同步,保證區塊鏈一致。
二、區塊鏈的最大特點
分布式資料庫並非新發明,市場上早有此類產品。但是,區塊鏈有一個革命性特點。
區塊鏈沒有管理員,它是徹底無中心的。其他的資料庫都有管理員,但是區塊鏈沒有。如果有人想對區塊鏈添加審核,也實現不了,因為它的設計目標就是防止出現居於中心地位的管理當局。
正是因為嫌敗無法管理,區塊鏈才能做到無法被控制。否則一旦大公司大集團控制了管理權,他們就會控制整個平台,其他使用者就都必須聽命於他們了。
但是,沒有了管理員,人人都可以往裡面寫入數據,怎麼才能保證數據是可信的呢?被壞人改了怎麼辦?請接著往下讀,這就是區塊鏈奇妙的地方。
三、區塊
區塊鏈由一個個區塊(block)組成。區塊很像資料庫的記錄,每次寫入數據,就是創建一個區塊。
每個區塊包含兩個部分。
區塊頭(Head):記錄當前區塊的特徵值
區塊體(Body):實際數據
區塊頭包含了當前區塊的多項特徵值。
生成時間
實際數據(即區塊體)的哈希
上一個區塊的哈希
...
這里,你需要理解什麼叫哈希(hash),這是理解區塊鏈必需的。
所謂哈希就是計算機可以對任意內容,計算出一個長度相同的特徵值。區塊鏈的 哈希長度是256位,這就是說,不管原始內容是什麼,最後都會計算出一個256位的二進制數字。而且可以保證,只要原始內容不同,對應的哈希一定是不同的。
舉例來說,字元串123的哈希是(十六進制),轉成二進制就是256位,而且只有123能得到這個哈希。(理論上,其他字元串也有可能得到這個哈希,但是概率極低,可以近似認為不可能發生。)
因此,就有兩個重要的推論。
推論1:每個區塊的哈希都是不一樣的,可以通過哈希標識區塊。
推論2:如果區塊的內容變了,它的哈希一定會改變。
四、 Hash 的不可修改性
區塊與哈希是一一對應的,每個區塊的哈希都是針對區塊頭(Head)計算的。也就是說,把區塊頭的各項特徵值,按照順序連接在一起,組成一個很長的字元串,再對這個字元串計算哈希。
Hash = SHA256( 區塊頭 )
上面就是區塊哈希的計算公式,SHA256是區塊鏈的哈希演算法。注意,這個公式裡面只包含區塊頭,不包含區塊體,也就是說,哈希由區塊頭唯一決定,
前面說過,區塊頭包含很多內容,其中有當前區塊體的哈希,還有上一個區塊的哈希。這意味著,如果當前區塊體的內容變了,或者上一個區塊的哈希變了,一定會引起當前區塊的哈希改彎首變。
這一點對區塊鏈有重大意義。如果有人修改了一個區塊,該區塊的哈希就變了。為了讓後面的區塊還能連到它(因為下一個區塊包含上一個區塊的哈希),該人必須依次修改後面所有的區塊,否則被改掉的區塊就脫離區塊鏈了。由於後面要提到的原因,哈希的計算很耗時,短時間內修改多個區塊幾乎不可能發生,除非有人掌握了全網51%以上的計算能力。
正是通過這種聯動機制,區塊鏈保證了自身的可靠性,數據一旦寫入,就無法被篡改。這就像歷史一樣,發生了就是發生了,從此再無法改變。
每個區塊都連著上一個區塊,這也是區塊鏈這個名字的由來。
五、采礦
由於必須保證節點之間的同步,所以新區塊的添加速度芹鬧顫不能太快。試想一下,你剛剛同步了一個區塊,准備基於它生成下一個區塊,但這時別的節點又有新區塊生成,你不得不放棄做了一半的計算,再次去同步。因為每個區塊的後面,只能跟著一個區塊,你永遠只能在最新區塊的後面,生成下一個區塊。所以,你別無選擇,一聽到信號,就必須立刻同步。
所以,區塊鏈的發明者中本聰(這是假名,真實身份至今未知)故意讓添加新區塊,變得很困難。他的設計是,平均每10分鍾,全網才能生成一個新區塊,一小時也就六個。
這種產出速度不是通過命令達成的,而是故意設置了海量的計算。也就是說,只有通過極其大量的計算,才能得到當前區塊的有效哈希,從而把新區塊添加到區塊鏈。由於計算量太大,所以快不起來。
這個過程就叫做采礦(mining),因為計算有效哈希的難度,好比在全世界的沙子裡面,找到一粒符合條件的沙子。計算哈希的機器就叫做礦機,操作礦機的人就叫做礦工。
六、難度系數
讀到這里,你可能會有一個疑問,人們都說采礦很難,可是采礦不就是用計算機算出一個哈希嗎,這正是計算機的強項啊,怎麼會變得很難,遲遲算不出來呢?
原來不是任意一個哈希都可以,只有滿足條件的哈希才會被區塊鏈接受。這個條件特別苛刻,使得絕大部分哈希都不滿足要求,必須重算。
原來,區塊頭包含一個難度系數(difficulty),這個值決定了計算哈希的難度。舉例來說,第100000個區塊的難度系數是 14484.16236122。
區塊鏈協議規定,使用一個常量除以難度系數,可以得到目標值(target)。顯然,難度系數越大,目標值就越小。
哈希的有效性跟目標值密切相關,只有小於目標值的哈希才是有效的,否則哈希無效,必須重算。由於目標值非常小,哈希小於該值的機會極其渺茫,可能計算10億次,才算中一次。這就是采礦如此之慢的根本原因。
前面說過,當前區塊的哈希由區塊頭唯一決定。如果要對同一個區塊反復計算哈希,就意味著,區塊頭必須不停地變化,否則不可能算出不一樣的哈希。區塊頭裡面所有的特徵值都是固定的,為了讓區塊頭產生變化,中本聰故意增加了一個隨機項,叫做 Nonce。
Nonce 是一個隨機值,礦工的作用其實就是猜出 Nonce 的值,使得區塊頭的哈希可以小於目標值,從而能夠寫入區塊鏈。Nonce 是非常難猜的,目前只能通過窮舉法一個個試錯。根據協議,Nonce 是一個32位的二進制值,即最大可以到21.47億。第 100000 個區塊的 Nonce 值是274148111,可以理解成,礦工從0開始,一直計算了 2.74 億次,才得到了一個有效的 Nonce 值,使得算出的哈希能夠滿足條件。
運氣好的話,也許一會就找到了 Nonce。運氣不好的話,可能算完了21.47億次,都沒有發現 Nonce,即當前區塊體不可能算出滿足條件的哈希。這時,協議允許礦工改變區塊體,開始新的計算。
七、難度系數的動態調節
正如上一節所說,采礦具有隨機性,沒法保證正好十分鍾產出一個區塊,有時一分鍾就算出來了,有時幾個小時可能也沒結果。總體來看,隨著硬體設備的提升,以及礦機的數量增長,計算速度一定會越來越快。
為了將產出速率恆定在十分鍾,中本聰還設計了難度系數的動態調節機制。他規定,難度系數每兩周(2016個區塊)調整一次。如果這兩周裡面,區塊的平均生成速度是9分鍾,就意味著比法定速度快了10%,因此接下來的難度系數就要調高10%;如果平均生成速度是11分鍾,就意味著比法定速度慢了10%,因此接下來的難度系數就要調低10%。
難度系數越調越高(目標值越來越小),導致了采礦越來越難。
八、區塊鏈的分叉
即使區塊鏈是可靠的,現在還有一個問題沒有解決:如果兩個人同時向區塊鏈寫入數據,也就是說,同時有兩個區塊加入,因為它們都連著前一個區塊,就形成了分叉。這時應該採納哪一個區塊呢?
現在的規則是,新節點總是採用最長的那條區塊鏈。如果區塊鏈有分叉,將看哪個分支在分叉點後面,先達到6個新區塊(稱為六次確認)。按照10分鍾一個區塊計算,一小時就可以確認。
由於新區塊的生成速度由計算能力決定,所以這條規則就是說,擁有大多數計算能力的那條分支,就是正宗的區塊鏈。
九、總結
區塊鏈作為無人管理的分布式資料庫,從2009年開始已經運行了8年,沒有出現大的問題。這證明它是可行的。
但是,為了保證數據的可靠性,區塊鏈也有自己的代價。一是效率,數據寫入區塊鏈,最少要等待十分鍾,所有節點都同步數據,則需要更多的時間;二是能耗,區塊的生成需要礦工進行無數無意義的計算,這是非常耗費能源的。
因此,區塊鏈的適用場景,其實非常有限。
不存在所有成員都信任的管理當局
寫入的數據不要求實時使用
挖礦的收益能夠彌補本身的成本
如果無法滿足上述的條件,那麼傳統的資料庫是更好的解決方案。
目前,區塊鏈最大的應用場景(可能也是唯一的應用場景),就是以比特幣為代表的加密貨幣。

4. 【區塊鏈知識】當我們遇到分叉問題時,該怎麼辦

遇到分叉問題,該聽誰的?

假想這樣一個場景,在區塊鏈中,一定會遇到這樣的情況,區塊甲和區塊乙同時把一條信息記錄下來,並且做好編碼和時間戳。

他們兩個區塊同時發布信息,說這個編碼為4495662的信息是我記賬的,它的報酬應該歸我!

然後,大家就有的認為報酬應該歸區塊甲,有的則認為歸區塊乙,而報酬只有一份,只能給一個區塊。這下好了,出現不同意見了,該怎麼辦?

更嚴重的是,有的區塊會認為這件事是區塊甲做的,也記下來,順著編碼繼續往後記賬;另外一些區塊則認為這件事是區塊乙做的,跟著在區塊乙後邊繼續記賬。

這樣事情就大條了!原本嚴謹的唯一的一條信息鏈,到區塊甲和區塊乙這里,硬生生給分開了,它們各自後邊分別跟著常常的鏈條。

這種情況持續下去,就導致每個人都無法辨別自己掌握的信息鏈,是否正確了!

為了解決這個問題,區塊鏈技術又出台了一個新的規則:每條記錄都要頂格寫,同時要保證中心離田字格上邊緣要保持0.897  57毫米的位置上。

為了符合要求,每個人都得拿著尺子去量好位置,然後才能開始記錄。這樣記錄每條信息時,增加了難度,延長了操作時間。

只要一個人做好了記錄,大喊一聲,我記錄好了!

其他人就停筆不再記錄這條信息,反而開始記錄這條信息是某某記錄的接著那個編碼繼續往下記錄。

遇到分叉問題,就是這樣解決的。

5. 區塊鏈中硬分叉和軟分叉的區別是什麼

硬分叉是由於區塊鏈不可接受的永久性分歧造成的,軟分叉則是區塊鏈的可接受分歧造成的。硬分叉的出現意味著出現一條無法接受新共識機制的區塊鏈,這條區塊鏈相當於系統的舊版本,而接受了新共識機制的則是新版本,兩者雖然不版本不同,但是還是相互聯系。而軟分叉造成的區塊節點是可以和新共識機制兼容的,不會另外形成一條區塊鏈。硬分叉和軟分叉是幣圈中比較常見的事情。區塊鏈除了炒幣,其實可以應用的地方還有很多,包括醫療、保險、教育、食品等。我認識一家專門做區塊鏈開發的公司,煊凌科技。他們在行業內的評價還不錯。

6. 區塊鏈分叉後是分別獨立的嗎

區塊鏈分叉分為兩類:一類是硬分叉,一類是軟分叉。兩者最大的區別在於是否兼容舊版本協議,硬分叉是完全不兼容,而軟分叉是可以兼容的。所以硬分叉後是分別獨立的,而軟分叉不是。

7. 分叉數和節點數有啥區別

分叉數和隱梁棚節點數是區塊鏈中的兩個不同的概念。

分叉數是指在區塊鏈中存在的分支數量。當區塊鏈中出現分支時,分叉數就會增加。例如,如果有兩個分支,分叉數為2。分叉數越高,表示區塊鏈中存在更多的不同版本,這可能會導致區塊鏈的不穩定性和安全風險。

節點數是指連接到區塊鏈網路的節點數量。每個節點都是區塊鏈網路中的一部分,並且可以渣灶驗證和廣播交易和區塊。節點數越多,表示區塊鏈網路越強大和穩定。

因此,分叉灶則數和節點數是兩個不同的指標,但它們都可以影響區塊鏈的穩定性和安全性。

8. 區塊鏈的分叉是什麼意思

區塊鏈的分叉是區塊鏈網路中獨有的一種版本升級枝睜方式,來解決用戶的一些使用問題,區塊鏈升級比較特別,升級時由參與的礦工共同來決定,還會產生更多的版本,分叉出來的兩條鏈相當於是一個老的版本激滾,逐漸向新猛鉛歲鏈過度,最終完成升級,只剩新鏈。

9. 區塊鏈中通常說的分叉是什麼

分叉是通過在網路的不同部分同時創建兩個區塊來創建一個正在進行的區塊鏈替代版本。這會創建兩個平行的區塊鏈,其中一個是獲勝區塊鏈。

10. 區塊鏈分叉是什麼

區塊鏈分叉是什麼?分叉會導致我的比特幣一分為二嗎?
在中心化系統中升級軟體十分簡單,在應用商店點擊「升級」即可。但是在區塊鏈等去中心化系統中,「升級」並不是那麼簡單,甚至可能一言不合造成區塊鏈分叉。
簡單說,分叉是指區塊鏈在進行「升級」時發生了意見分歧,從而導致區塊鏈分叉。因為沒有中心化機構,比特幣等數字資產每次代碼升級都需要獲得比特幣社區的一致認可,如果比特幣社區無法達成一致,區塊鏈很可能形成分叉。
以比特幣為例,2017年7月,為了解決比特幣區塊鏈擁堵問題,一些比特幣愛好者提出了bitcoin cash分叉方案,導致比特幣區塊鏈一分為二。
根據分叉後的區塊鏈是否能兼容舊區塊鏈,分叉又分為「硬分叉」和「軟分叉」。

熱點內容
eth公司最新信息 發布:2025-06-25 05:07:57 瀏覽:68
區塊鏈的幾大技術 發布:2025-06-25 04:40:53 瀏覽:106
區塊鏈不可篡改和業務修改矛盾 發布:2025-06-25 04:40:11 瀏覽:135
電信合約套餐怎麼回事 發布:2025-06-25 04:01:37 瀏覽:316
比特幣100倍合約多少爆倉 發布:2025-06-25 04:01:32 瀏覽:860
eth什麼時候大都會測試 發布:2025-06-25 03:33:47 瀏覽:446
以太坊有代理返利機制嗎 發布:2025-06-25 03:33:04 瀏覽:374
btc礦場排行 發布:2025-06-25 03:28:02 瀏覽:124
區塊鏈首碼礦機項目 發布:2025-06-25 03:27:16 瀏覽:404
微信與數字貨幣 發布:2025-06-25 03:25:54 瀏覽:867