在許多關於區塊鏈的文章中,常常會看見區塊鏈在某個區塊高度發生分叉。
那究竟什麼是區塊高度,為什麼在某個區塊高度會發生分叉呢?今天大白就跟大家來聊聊區塊高度的那些事。
01. 區塊鏈與記帳本
區塊高度顧名思義就是區塊的高度,準確地說是連接在區塊鏈上的區塊數。因此想要明白什麼是區塊高度,我們得先搞清楚什麼是區塊鏈。 如果說區塊鏈是記帳本的話,那麼一個區塊就像是記帳本的每一頁一樣。
在記帳本的一頁頁紙中,清楚地記錄每一筆帳。而且為了交易不被竄改、保證公開透明性,區塊鏈記帳的方式就是大家一起記帳。
02. 區塊高度與記帳本頁碼
既然區塊鍊是個記帳小本本,那麼每一頁(區塊)可以記錄的賬是有限的,所以為了區分和尋找一筆交易到底記錄在哪一個區塊中,我們很容易會想到給這個本子標明頁碼。所以,如果說區塊鏈是一個記帳的小本本的話,則區塊高度就像是這個記帳本的頁碼一樣。
那麼大白的思考題來啦,在只有一條最長鏈的區塊鏈的情況下,假設當前記帳本這一頁的頁碼是3 ,那麼這個區塊是這條區塊鏈的第多少個區塊呢?答案:第 4 個區塊。
有的小夥伴會疑問為什麼不是第 3 個區塊呢? 原因是區塊鏈的還有一個區塊高度為 0 的區塊,也就是創世區塊。 它的頁碼為 0,因此到頁碼為 3 的區塊時,是代表著它的前面有3個區塊,也叫做區塊的祖先數量。而它自己就是這條鏈的第 4 個區塊。
03.出塊與記帳本頁碼產生
在搞清楚什麼是區塊高度之後,大白再繼續跟大家說說區塊高度是怎麼形成的。在挖掘機制的區塊鏈中,區塊鏈這個記帳小本本的頁碼是礦工競爭得到的。例如目前的區塊高度是3,當幸運的礦工解決計算難題後,就會得到頁碼為4 的那頁記帳本(即區塊高度為4 的區塊)的記帳權利,並會獲得一定的獎勵。
此時這個區塊就會記錄著被這個礦工打包並且已經確認過的交易。當這一區塊已經形成後,礦工們又會在區塊高度為 4 的區塊上繼續競爭得到區塊高度為 5 的區塊。
04. 分叉與記帳本頁碼重複
大白前面談到,礦工透過解決計算難題去得到下一個區塊的記帳權利,那麼問題來了,假如當前的區塊高度是2,當兩個幸運的礦工同時解決了計算難題,那麼就都會獲得區塊高度為3 的區塊的記帳權。
這就相當於說,礦工小白拿著頁碼為3 的一頁紙,礦工小黑也拿著頁碼為3 的一頁紙,雖然小白和小黑的紙的頁碼是一樣,但是兩張記帳紙記錄的內容卻不是完全一樣的。
可是照規則來說,小白和小黑的這兩頁紙都是沒有問題的,那麼到底選哪一張記帳紙呢?這時候,一些礦工會選擇小白的這頁紙訂在記帳本的後面,繼續去「尋求」頁碼為4 的那頁記帳紙,而有的礦工會選擇小黑的那頁紙訂在記帳本上再繼續去「尋求」頁碼為4 的那頁記帳紙。
這樣就相當於在頁碼為 2 的那頁紙的地方,分成了兩個記帳本。在區塊鏈中,把這種行為叫做分叉。 可是在區塊鏈中有一個“最長鏈原則”,礦工們會選擇最長的那條鏈作為主鏈繼續挖掘。例如繼小白那條鏈之後,小紅先挖到區塊高度為4 的區塊,那麼小黑那條鏈將會被捨棄,礦工們都會選擇在小白這條鏈上繼續挖掘。
前面大白談到是用區塊高度去識別某一筆交易到底屬於哪個區塊 。 可是現在就出現了兩個區塊高度一樣的區塊,那要怎麼去識別呢?
實際上在區塊鏈中,採用的是區塊哈希去唯一標識一個區塊,而不是區塊高度。因為即使區塊高度一樣,區塊裡面記錄的內容也並非完全一樣的,這樣一來區塊的哈希(由區塊內容求得)就一定不是一樣的,所以可以用區塊的哈希去唯一標識一個區塊。
總結而言,區塊鏈就像是記帳本,而區塊就像是這個記帳本裡面的一頁頁記帳紙,區塊高度就是記帳紙的頁碼,當同時出現兩個相同頁碼時就會發生分叉。
你知道什麼是區塊高度以及如何標識兩個區塊高度一樣的區塊了嗎?歡迎在留言區分享你的觀點。
以上是什麼是區塊高度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!