區塊
區塊鏈是由網路參與者共同維護的帳本,我們可以將區塊鏈想像成一本帳簿,而「區塊」就是每一頁的交易紀錄。
一個完整的區塊需包含四個資訊
- 區塊大小(Block Size):該區塊的容量大小 (比特幣的區塊大小限制在 1MB 以內)
- 區塊頭(Block Header):用於驗證區塊的有效性
- 交易數量(Transaction Counter):該區塊中的交易數量
- 交易資訊(Transactions):每一筆被包含在這個區塊中的交易資訊
區塊頭(Block Header)
區塊頭主要目的是讓礦工快速的審核該區塊的有效性,並讓每一個區塊與前一個區塊資料產生無形的連結,確保區塊序列及歷史紀錄的正確性,這也是形成「鏈」最關鍵的連結,就好比帳佈的每一頁都會有頁碼,如果有人竄改帳本撕掉其中一頁,因為頁碼對不上我們就能很輕易的發現資料有誤。區塊頭由六個部分所構成:
- 版本(Version):當前區塊鏈版本
- 前Hash值(Previous Block Hash ):父區塊頭的 Hash 值
- 哈希樹根(Merkle Root):被包含在該區塊的最終 Hash 值
- 時間戳(Timestamp):該區塊產生的時間
- 難度目標(Difficulty Target):該區塊工作量證明的難度
- 隨機數(Nonce):符合計帳條件的隨機數
區塊體(Block Body)
區塊體較為簡單,所包含的內容就是由該區塊礦工所驗證的交易的支出地址詳情、接收地址詳情、交易數量統計、交易時間戳以及交易 Hash 值等。
- 支出地址詳情:發起比特幣交易的地址
- 接收地址詳情:接收比特幣交易的地址
- 交易數量統計:交易的比特幣數量
- 交易時間戳:時間戳是指1970年01月01日格林威治時間 00:00:00 到交易發起時的總秒數。
- 交易 Hash 值:該筆交易在區塊鏈上的交易編號每一筆交易的 Hash 值,都是 Merkle Tree 的一部分,最終會生成區塊頭中的 Merkle Root,保障了紀錄在區塊鏈上每一筆交易的有效性與不可竄改性。
此外,紀錄在區塊體中的交易分為兩種。
- Coinbase 交易:只有收款方,沒有付款方。比特幣區塊鏈上的每個區塊之中會包含多個交易(transaction),其中第一個交易就叫做 Coinbase 交易,也就是系統給礦工的挖礦獎勵
- 一般交易:一般的鏈上交易
創世區塊(Genesis Block)
創世區塊就是整個區塊鏈的第一個區塊,另一個說法是區塊高度為 0( Block #0) 的區塊。根據上文所說,每一個區塊的區塊頭都必須引用前一個區塊的 Hash 值,因此,系統誕生時必須直接生成創世區塊 Block #0,Block #1 才能引用其 Hash 值放進區塊頭,接著就能夠按照這個規則不斷產生區塊,連接成區塊鏈。