區塊鏈賬本
區塊鏈表示一種特有的數據記錄格式,區塊鏈就是“區塊+鏈”,所謂的區塊就是數據塊的意思,每一個區塊之間通過某個標志連接起來,從而形成一條鏈,如下圖:

如圖所示,一個區塊一個區塊的銜接,大家可以發現在生活中有很多相似的記錄方式,比如企業會計賬本,每個月會將記賬憑證匯總並且月結,這樣一段時間下來,就按月形成了一個連續賬本,每個月的數據就相當於一個區塊,區塊與區塊之間通過年月進行串聯。以比特幣來說,大約10分鍾產生一個區塊,區塊中主要包含了交易事務數據以及區塊的摘要信息。我們看下比特幣中區塊鏈數據組成示意圖:

通過上圖我們可以看到比特幣中區塊鏈賬本的數據組成及關系,並且可以看到區塊數據在邏輯上分成了區塊頭和區塊體,每個區塊頭中通過梅克爾根(梅克爾根也稱為梅克爾根哈希值,具體概念后續詳細介紹,暫且可以認為是一個區塊中所有交易事務的集體身份證號)關聯了區塊中眾多的交易事務,而每個區塊之間通過區塊頭的哈希值串聯起來,這是一個很有趣的數據格式,它將連續不斷的數據分成一個一個的數據塊。在下載同步這些數據的時候,可以並行的從各個節點來獲得,無論數據的先后,到達本地后在根據身份證號進行組裝起來就行,另外,這是一種鏈條格式,鏈條最大的特點就是一環扣一環,很難從中間去破壞。比如有人篡改了中間的2號區塊,那就得吧2號區塊后的所有區塊全部改掉,這樣的難度非常大。在區塊鏈系統中,一個節點產生的數據和更改的數據要發送到網絡中其他節點去確認,而其他節點是不會確認通過一個被篡改的數據的,因為跟自己本地區塊鏈賬本匹配不起來,這也就是區塊鏈數據不可篡改的一個很重要的設計。
這種格式還有一個巧妙的地方,如果這個數據總是由一個人來記錄那就沒什么意思了,但是如果放到網上,大家共同來維護這個數據,這也才會體現出價值,每個區塊由誰來記錄或打包,可以有一個規則,比如擲骰子,大家約定好一個規則,贏者就讓他來記錄下一個區塊的數據,為了補償她的勞動投入,獎勵他一部分收益,比特幣就是使用了這樣的原理來不斷的發行新的比特幣出來,獎勵給打包記錄區塊數據的那個人的比特幣就是新發行的比特幣,這個也叫做挖礦。
