這是白話區塊鏈的第1301期原創

作者| 宇星出品|白話區塊鏈(ID:hellobtc)

在關於區塊鏈的很多文章中,經常會看見區塊鏈在某個區塊高度發生分叉。

那究竟什麼是區塊高度,為什麼在某個區塊高度會發生分叉呢?今天大白就和大家來聊聊區塊高度的那些事兒。

01 區塊鏈與記賬本

區塊高度顧名思義就是區塊的高度,準確地說是連接在區塊鏈上的塊數。因此想要明白什麼是區塊高度,我們得首先搞明白什麼是區塊鏈。如果說區塊鍊是記賬本的話,那麼一個區塊就像是記賬本的每一頁一樣。

在記賬本的一頁頁紙中,清清楚楚地記錄著每一筆賬。而且為了交易不被篡改和保證公開透明性,區塊鏈記賬的方式是大家一起記賬。

區塊高度與記賬本頁碼

既然區塊鍊是個記賬小本本,那麼每一頁(區塊)可以記錄的賬是有限的,所以為了區分和查找一筆交易到底記錄在哪一個區塊中,我們很容易會想到給這個本子標明頁碼。

所以,如果說區塊鍊是一個記賬的小本本的話,則區塊高度就像是這個記賬本的頁碼一樣。

那麼大白的思考題來啦,在只有一條最長鏈的區塊鏈的情況下,假設當前記賬本這一頁的頁碼是3 ,那麼這個區塊是這條區塊鏈的第多少個區塊呢?答案:第4 個區塊。

有的小伙伴會疑問為什麼不是第3 個區塊呢?原因是區塊鏈的還有一個區塊高度為0 的區塊,也就是創世區塊。

它的頁碼為0,因此到頁碼為3 的區塊時,是代表著它的前面有3個區塊,也叫做區塊的祖先數量。而它自己是這條鏈的第4 個區塊。

出塊和記賬本頁碼生成

在搞明白什麼是區塊高度之後,大白再繼續和大家說說區塊高度是怎麼形成的。在挖礦機制的區塊鏈中,區塊鏈這個記賬小本本的頁碼是礦工競爭得到的。

比如當前的區塊高度是3,當幸運的礦工解決計算難題後,就會得到頁碼為4 的那頁記賬本(即區塊高度為4 的區塊)的記賬權利,並會獲得一定的獎勵。

此時這個區塊就會記錄著被這個礦工打包並且已經確認過的交易。當這一個區塊已經形成後,礦工們又會在區塊高度為4 的區塊上繼續競爭得到區塊高度為5 的區塊。

分叉和記賬本頁碼重複

大白前面談到,礦工通過解決計算難題去得到下一個區塊的記賬權利,那麼問題來了,假如當前的區塊高度是2,當兩個幸運的礦工同時解決了計算難題,那麼就都會獲得區塊高度為3 的區塊的記賬權。

這就相當於說,礦工小白拿著頁碼為3 的一頁紙,礦工小黑也拿著頁碼為3 的一頁紙,雖然小白和小黑的紙的頁碼是一樣,但是兩張記賬紙記錄的內容卻不是完全一樣的。

可是按規則來說,小白和小黑的這兩頁紙都是沒有問題的,那麼到底選哪一張記賬紙呢?

這個時候,一些礦工會選擇小白的這頁紙訂在記賬本的後面,繼續去“尋求”頁碼為4 的那頁記賬紙,而有的礦工會選擇小黑的那頁紙訂在記賬本上再繼續去“尋求”頁碼為4 的那頁記賬紙。

這樣就相當於在頁碼為2 的那頁紙的地方,分成了兩個記賬本。在區塊鏈中,把這種行為叫做分叉。

可是在區塊鏈中有一個“最長鏈原則”,礦工們會選擇最長的那條鏈作為主鏈繼續挖礦。比如在繼小白那條鏈之後,小紅先挖到區塊高度為4 的區塊,那麼小黑那條鏈將會被捨棄,礦工們都會選擇在小白這條鏈上繼續挖礦。

前面大白談到是用區塊高度去標識某一筆交易到底屬於哪個區塊。可是現在就出現了兩個區塊高度一樣的區塊,那怎麼去標識呢?

實際上在區塊鏈中,採用的是區塊哈希去唯一標識一個區塊,而不是區塊高度。因為即使區塊高度一樣,區塊裡面記錄的內容也並非完全一樣的,這樣一來區塊的哈希(由區塊內容求得)就一定不是一樣的,所以可以用區塊的哈希去唯一標識一個區塊。

總結而言,區塊鏈就像是一個記賬本,而區塊就像是這個記賬本里面的一頁頁記賬紙,區塊高度就是記賬紙的頁碼,當同時出現兩個相同頁碼時就會發生分叉。

你知道什麼是區塊高度,以及如何標識兩個區塊高度一樣的區塊了嗎?歡迎在留言區分享你的觀點。