1分鐘了解“區塊鏈分叉”的本質
《1分鐘了解區塊鏈的本質》,介紹了什么是區塊鏈,區塊鏈是一個沒有管理員,每個節點都擁有全部數據,高可用的分布式存儲系統。
《1分鐘了解挖礦的本質》,介紹了什么是挖礦,挖礦是在***區塊鏈的數據上,生成一個符合條件的區塊,鏈入區塊鏈的過程。
有不少朋友問,全球每個區塊鏈節點都包含全部數據,都在***的區塊鏈數據上挖符合條件的區塊,如何兩個節點同時挖到新區塊,出現數據不一致,該怎么辦呢?
今天,花1分鐘和大家介紹什么是區塊鏈分叉,來解答上面的問題。
假設當前***的區塊鏈有三個區塊:
假設中國有一個節點,美國有一個節點,同時挖到了礦(即找到了符合哈希預期的區塊,挖礦的過程詳見《1分鐘了解挖礦的本質》),這兩個節點都會把自己挖到的礦,鏈到自己本地的區塊鏈上,這就出現了區塊鏈分叉。
同時,這兩個節點會將“我挖到礦啦”同步全球其他節點,以便于其他節點同步完***的數據后,在***的區塊鏈上繼續挖礦,此時:
- 離中國節點較近的點,可能先同步到“中國鏈”,并在此鏈的基礎上繼續挖,鏈條會持續增長
- 離美國節點較近的點,可能先同步到“美國鏈”,并在此鏈的基礎上繼續挖,鏈條也會持續增長
- 節點收到兩個沖突的區塊鏈同步,會判斷此時哪條鏈的長度更長,會以長度更長的區塊鏈為準
畫外音:長度更長的區塊鏈消耗的計算力更多,不能讓大部分礦工“白干啦”。
如此迭代,最終全球區塊鏈終究會達成一致,以最長的區塊鏈為準。
畫外音:如果不遵守規則,成為“少數派”的節點挖到的新礦將不會被“多數派”承認,就等于“白干啦”,在區塊鏈系統里,“遵守規則”是所有節點的***策略。
除非,有人掌握了全球51%的計算力(額,這不是相當于中心化了嗎),才能為所欲為。承載比特幣應用的區塊鏈,一般認為一個區塊后面再鏈了6個區塊后,就不肯能被“顛覆”了,故稱為“六次確認”。
畫外音:額,挖到一個新區塊別高興太早,等后面鏈了6個其他區塊的時候,再慶祝吧。承載比特幣應用的區塊鏈,平均10分鐘生成一個區塊,“六次確認”大概需要經歷1個小時。如何保證平均十分生成一個區塊,詳見《1分鐘了解區塊如何勻速生成》。
關于區塊鏈分叉,“軟分叉”和“硬分叉”這兩個概念是不能不提的。
什么是軟分叉?
答:區塊鏈系統升級后,在所有節點升級到***的版本之前,由于程序版本的差異可能會產生分叉,只要升級到***的版本,分叉就會消除,這就是“軟分叉”,軟分叉是臨時的。
畫外音:原文是說
A temporary fork in the block chain which commonly occurs when miners using non-upgraded nodes violate a new consensus rule their nodes don’t know about. |
什么是硬分叉?
答:有些人頭硬,不按照規則來,拉了一個分支,以“道德”或者“法律”的名義,號召大家認可自己的鏈,形成分叉,這就是“硬分叉”,硬分叉是***的。
區塊鏈領域最有名的硬分叉,是“以太坊”分叉,事情大概是這樣的:
- 黑客盜取了大概6kw美元的合約幣
- 以太坊開發團隊修改源碼,強行把第1920000個區塊的資金轉移到另一個地址,“奪回”黑客控制的合約幣
- 大部分礦工認同這個修改,一部分礦工不認同這個修改,于是形成了兩條鏈,新鏈是以太坊(ETH),原鏈是以太經典(ETC)
- 大家繼續在自己認可的鏈路上繼續挖礦
畫外音:
- 區塊頭里能記錄版本信息,所以理論上任何人都可以改程序,升級版本自己玩,只是沒有人陪你玩罷了,沒人陪你玩,你挖到的礦大家不認可,就只是浪費電。還是那句話,區塊鏈的世界里,遵守規則才能讓礦工的利益***化。
- 硬分叉,其實違背了區塊鏈“不能修改”的技術本質,采用了人為手段“強制回滾”,樓主認為,這違背了區塊鏈去中心化的技術本質。
講了四篇區塊鏈,后續開始講比特幣:
- 為什么大家瘋狂的挖礦,有什么價值
- 比特幣的本質是啥
- 區塊能勻速生成,比特幣為啥總量有限
- 比特幣交易的過程是怎么樣的
- …
【本文為51CTO專欄作者“58沈劍”原創稿件,轉載請聯系原作者】