每個區塊的Block Header都會包含一組Previous Block Hash值,這是將前一個區塊的Block Header進行Hash Function而得到的值,因此每個區塊之間,都會藉由這個無形的鏈條與先前的區塊環環相扣。

區塊鏈(Blockchain)顧名思義就像是由無數個區塊(Block)所組成,以比特幣的區塊鏈來說,目前已經產生超過40萬個區塊,這整個區塊鏈就像是一個共享的分散式總帳,由多個參與比特幣交易的運算節點來共同維護,每個節點也各自擁有一份完整的帳本備份(完整個區塊鏈資料),而其中的每個區塊,就像是帳本中的其中一頁,記錄好幾筆不同的交易資訊,這些紀錄都無法經由其中一個節點來竄改。不過,這只是個比喻,實際上,這些一個一個的區塊到底是什麼?如何讓這些區塊被串在一起,又如何確保它們無法被竄改,得先從分析每一個區塊所包含的資訊說起。

在比特幣區塊鏈中,每一個區塊(Block)所包含的資訊,包括區塊的容量大小(Block Size)、區塊頭(Block Header)、該區塊包含的交易數量(Transaction Counter),以及每一筆被包含在這個區塊中的交易資訊(Transactions)。其中,這些交易資訊都是已經Hash過的值,而Block Header則是最重要的一個部分。

每個區塊中的Block Header大小固定為80 Bytes,包含用來追蹤區塊鏈協議升級的版本號(Version),以及三組區塊中繼資料(Block Metadata)。

第一組資料為固定32 Bytes的Hash值,從前一個區塊中的Block Header所計算出來(Previous Block Header Hash),這麼做可讓每一個區塊與前一個區塊資料產生無形的連結,並能確保區塊序列及歷史紀錄的正確性,這也是形成區塊「鏈」最關鍵的連結。

實際產生的過程,則是當區塊鏈網絡中的其中一個節點完成工作量證明時,該節點會將這個新區塊廣播給其它節點,其他節點會進行驗證,確認這個新區塊的正確性及有效性,並將這個新區塊接上區塊鏈,這個過程就像是讓這本大家共同維護的帳本資訊同步,此時,各個節點便會將這個新區塊的Block Header進行Hash,得到的Hash值會被放進下一個產生的區塊中,進行下一回合的工作量證明。

這麼做可讓這些被驗證完的交易區塊一個串接一個,形成區塊鏈,一旦這個Hash值不正確,便會立刻被其他節點驗證出來,也因此,讓區塊鏈具有無法輕易竄改的特性。

第二組是與進行工作量證明相關的中繼資料,由Difficulty Target、Timestamp及Nonce值所組成,Difficulty Target是在工作量證明演算法過程中,Nonce則用來表示工作量證明演算法進行的次數。這個困難值每2016個區塊會調整一次。最後第三組則是用來彙整多筆交易紀錄的資料結構Merkle Tree Root,這是一個由數筆被放進區塊中的交易記錄Hash值,經由Merkle Tree演算法所算出來的Hash值。

【相關報導請參考「區塊鏈」專題】


Advertisement

更多 iThome相關內容