區(qū)塊高度和記賬本之間有什么關(guān)聯(lián)
在關(guān)于區(qū)塊鏈的很多文章中,經(jīng)常會(huì)看見(jiàn)區(qū)塊鏈在某個(gè)區(qū)塊高度發(fā)生分叉,那究竟什么是區(qū)塊高度,為什么在某個(gè)區(qū)塊高度會(huì)發(fā)生分叉呢?今天大白就和大家來(lái)聊聊區(qū)塊高度的那些事兒。
1. 區(qū)塊鏈與記賬本
區(qū)塊高度顧名思義就是區(qū)塊的高度,準(zhǔn)確地說(shuō)是連接在區(qū)塊鏈上的塊數(shù)。因此想要明白什么是區(qū)塊高度,我們得首先搞明白什么是區(qū)塊鏈。如果說(shuō)區(qū)塊鏈?zhǔn)怯涃~本的話,那么一個(gè)區(qū)塊就像是記賬本的每一頁(yè)一樣。
在記賬本的一頁(yè)頁(yè)紙中,清清楚楚地記錄著每一筆賬。而且為了交易不被篡改和保證公開(kāi)透明性,區(qū)塊鏈記賬的方式是大家一起記賬。
2. 區(qū)塊高度與記賬本頁(yè)碼
既然區(qū)塊鏈?zhǔn)莻€(gè)記賬小本本,那么每一頁(yè)(區(qū)塊)可以記錄的賬是有限的,所以為了區(qū)分和查找一筆交易到底記錄在哪一個(gè)區(qū)塊中,我們很容易會(huì)想到給這個(gè)本子標(biāo)明頁(yè)碼。所以,如果說(shuō)區(qū)塊鏈?zhǔn)且粋€(gè)記賬的小本本的話,則區(qū)塊高度就像是這個(gè)記賬本的頁(yè)碼一樣。
那么大白的思考題來(lái)啦,在只有一條最長(zhǎng)鏈的區(qū)塊鏈的情況下,假設(shè)當(dāng)前記賬本這一頁(yè)的頁(yè)碼是 3 ,那么這個(gè)區(qū)塊是這條區(qū)塊鏈的第多少個(gè)區(qū)塊呢?答案:第 4 個(gè)區(qū)塊。
有的小伙伴會(huì)疑問(wèn)為什么不是第 3 個(gè)區(qū)塊呢?原因是區(qū)塊鏈的還有一個(gè)區(qū)塊高度為 0 的區(qū)塊,也就是創(chuàng)世區(qū)塊。它的頁(yè)碼為 0,因此到頁(yè)碼為 3 的區(qū)塊時(shí),是代表著它的前面有3個(gè)區(qū)塊,也叫做區(qū)塊的祖先數(shù)量。而它自己是這條鏈的第 4 個(gè)區(qū)塊。
3. 出塊和記賬本頁(yè)碼生成
在搞明白什么是區(qū)塊高度之后,大白再繼續(xù)和大家說(shuō)說(shuō)區(qū)塊高度是怎么形成的。在挖礦機(jī)制的區(qū)塊鏈中,區(qū)塊鏈這個(gè)記賬小本本的頁(yè)碼是礦工競(jìng)爭(zhēng)得到的。比如當(dāng)前的區(qū)塊高度是 3,當(dāng)幸運(yùn)的礦工解決計(jì)算難題后,就會(huì)得到頁(yè)碼為 4 的那頁(yè)記賬本(即區(qū)塊高度為 4 的區(qū)塊)的記賬權(quán)利,并會(huì)獲得一定的獎(jiǎng)勵(lì)。
此時(shí)這個(gè)區(qū)塊就會(huì)記錄著被這個(gè)礦工打包并且已經(jīng)確認(rèn)過(guò)的交易。當(dāng)這一個(gè)區(qū)塊已經(jīng)形成后,礦工們又會(huì)在區(qū)塊高度為 4 的區(qū)塊上繼續(xù)競(jìng)爭(zhēng)得到區(qū)塊高度為 5 的區(qū)塊。
4. 分叉和記賬本頁(yè)碼重復(fù)
大白前面談到,礦工通過(guò)解決計(jì)算難題去得到下一個(gè)區(qū)塊的記賬權(quán)利,那么問(wèn)題來(lái)了,假如當(dāng)前的區(qū)塊高度是 2,當(dāng)兩個(gè)幸運(yùn)的礦工同時(shí)解決了計(jì)算難題,那么就都會(huì)獲得區(qū)塊高度為 3 的區(qū)塊的記賬權(quán)。
這就相當(dāng)于說(shuō),礦工小白拿著頁(yè)碼為 3 的一頁(yè)紙,礦工小黑也拿著頁(yè)碼為3 的一頁(yè)紙,雖然小白和小黑的紙的頁(yè)碼是一樣,但是兩張記賬紙記錄的內(nèi)容卻不是完全一樣的。
可是按規(guī)則來(lái)說(shuō),小白和小黑的這兩頁(yè)紙都是沒(méi)有問(wèn)題的,那么到底選哪一張記賬紙呢?這個(gè)時(shí)候,一些礦工會(huì)選擇小白的這頁(yè)紙訂在記賬本的后面,繼續(xù)去“尋求”頁(yè)碼為 4 的那頁(yè)記賬紙,而有的礦工會(huì)選擇小黑的那頁(yè)紙訂在記賬本上再繼續(xù)去“尋求”頁(yè)碼為 4 的那頁(yè)記賬紙。
這樣就相當(dāng)于在頁(yè)碼為 2 的那頁(yè)紙的地方,分成了兩個(gè)記賬本。在區(qū)塊鏈中,把這種行為叫做分叉??墒窃趨^(qū)塊鏈中有一個(gè)“最長(zhǎng)鏈原則”,礦工們會(huì)選擇最長(zhǎng)的那條鏈作為主鏈繼續(xù)挖礦。比如在繼小白那條鏈之后,小紅先挖到區(qū)塊高度為 4 的區(qū)塊,那么小黑那條鏈將會(huì)被舍棄,礦工們都會(huì)選擇在小白這條鏈上繼續(xù)挖礦。
前面大白談到是用區(qū)塊高度去標(biāo)識(shí)某一筆交易到底屬于哪個(gè)區(qū)塊 ??墒乾F(xiàn)在就出現(xiàn)了兩個(gè)區(qū)塊高度一樣的區(qū)塊,那怎么去標(biāo)識(shí)呢?
實(shí)際上在區(qū)塊鏈中,采用的是區(qū)塊哈希去唯一標(biāo)識(shí)一個(gè)區(qū)塊,而不是區(qū)塊高度。因?yàn)榧词箙^(qū)塊高度一樣,區(qū)塊里面記錄的內(nèi)容也并非完全一樣的,這樣一來(lái)區(qū)塊的哈希(由區(qū)塊內(nèi)容求得)就一定不是一樣的,所以可以用區(qū)塊的哈希去唯一標(biāo)識(shí)一個(gè)區(qū)塊。
總結(jié)而言,區(qū)塊鏈就像是一個(gè)記賬本,而區(qū)塊就像是這個(gè)記賬本里面的一頁(yè)頁(yè)記賬紙,區(qū)塊高度就是記賬紙的頁(yè)碼,當(dāng)同時(shí)出現(xiàn)兩個(gè)相同頁(yè)碼時(shí)就會(huì)發(fā)生分叉。
來(lái)源: 白話區(qū)塊鏈





