我們回到兩個人轉賬交易的程序中,去理解位元幣區塊鏈的資料結構,
我發起一筆交易,即我向整個區塊鏈網路廣播,我和你兩個人想進行這筆交易:我向你的地址中轉入一筆位元幣,無須你的許可,
但只有當這筆交易被打包進最新的位元幣區塊中時,這筆交易才真正完成,通常來說,當在一筆交易所在的區塊之后又增加 5 個區塊,即包括它自己在內一共經過 6 次確認時,這筆交易可認為被完全確認,按位元幣每個區塊的確認時間 10 分鐘估算,即一筆交易最終確認要經過約 1 小時,
這里包括了兩步:一是交易被打包進候選區塊,每個節點可以按規則生成不同的候選區塊;二是節點挖礦成功,候選區塊被成功地加到區塊鏈的尾部,成為最新的正式區塊,
那么,把一筆交易打包進區塊是什么意思呢?這涉及區塊鏈最基礎的資料結構,這也是它不可篡改的基礎,
以下討論可能略顯枯燥,但卻是認識位元幣與區塊鏈的最基礎的知識,我盡量以通俗的語言來解釋,
區塊鏈之所以被稱為 blockchain,是因為它的資料塊以鏈狀的形式存盤著,從第一個區塊即所謂的創世區塊開始,新增的區塊不斷地被連到上一個區塊的后面,形成一條鏈條,
每個區塊由兩個部分組成——區塊頭部和區塊資料,其中,區塊頭部中有一個哈希指標指向上一個區塊,這個哈希指標包含前一個資料塊的哈希值,哈希值可以被看成是資料塊的指紋,即在后一個區塊的頭部中均存盤有上一個區塊資料的指紋,如果上一個區塊中的資料被篡改了,那么資料和指紋就對不上號,篡改行為就被發現了,要改變一個區塊中的資料,對其后的每個區塊都必須相應地進行修改,
位元幣區塊鏈設計有一種機制讓這種修改難以發生,我們稍后在談到“作業量證明”和“位元幣挖礦”時再詳細討論,
一個區塊中的資料是被打包進這個區塊的一系列交易,這些交易按照既定的規則被打包形成特定的二叉樹資料結構——梅克爾樹(Merkle trees),按目前的位元幣區塊的大小,一個區塊中能容納的交易數量在 2000 個左右,比如在第 526957 個區塊中容納了 1804 個交易,
可通過如下網站查看位元幣區塊鏈的資料資訊:https://blockchain.info/,
位元幣區塊鏈的資料結構中包括兩種哈希指標,它們均是不可篡改特性的資料結構基礎,一個是形成“區塊+鏈”(block+chain)的鏈狀資料結構,另一個是哈希指標形成的梅克爾樹(見圖 1),鏈狀資料結構使得對某一區塊內的資料的修改很容易被發現;梅克爾樹的結構起類似作用,使得對其中的任何交易資料的修改很容易被發現,

圖1:位元幣區塊鏈的“區塊鏈”與梅克爾樹
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/3796.html
標籤:其他
上一篇:企業數字化轉型之路
下一篇:計算機組成復習——概論
