區塊鏈之區塊結構-學習筆記

目錄

一、區塊結構

二、區塊頭

三、區塊體

四、交易類型

(1)生產交易

(2)通用地址交易

(3)合成地址交易


一、區塊結構

        數據區塊是區塊鏈的基本元素。比特幣系統的每個數據區塊主要由區塊頭(Block Header)和區塊體(Block Body)兩部分組成,其中區塊頭記錄當前區塊的元數據,而區塊體則存儲封裝到該區塊的實際交易數據。

比特幣系統的區塊結構
數據項 數據說明 大小
Block Size 區塊大小 4字節
Block Header 區塊頭 80字節
Transaction Counter 交易數量 1~9字節
Transactions 交易列表 可變

 

下圖是:比特幣系統的區塊結構圖

二、區塊頭

比特幣系統區塊頭的數據項及說明:

比特幣系統區塊頭的數據項及說明
數據項 說明 更新時間 大小
Version 版本號,表示本區塊遵守的驗證規則 版本升級時 4字節
Pre-block 引用區塊鏈中夫區塊的哈希值 創建一個新區塊時 32字節
Bits 壓縮格式的當前目標哈希值 當挖礦難度調整時 4字節
Nonce 32位數字(從0開始) 共識過程中實時更新 4字節
Kerkle-root 基於一個區塊中所有交易的哈希值 交易列表發生變化時 32字節
Timestamp 該區塊產生的近似時間,精確到秒的Unix時間戳 構建區塊時 4字節

三、區塊體

數據項 數據描述 大小
Version No 版本號,目前爲1,表示這筆交易參照的規則 4字節
In-counter 輸入數量,正整數VI=VarInt 1~9字節
list of inputs 輸入列表,每區塊的第一個交易稱爲“Coinbase”交易 <in-counter>許多輸入
Out-counter 輸出數量,正整數VI=VarInt 1~9字節
list of outputs 輸出列表,每區塊第一個交易的輸出是給礦工的獎勵 <out-counter>許多輸出
lock_time

鎖定時間,如果非0並且序號小於0XFFFFFFFF,則是指塊序號;

如果交易已經終止,則是指時間戳

 

        交易主要可以分成三部分:元數據、一系列的輸入和一系列的輸出。除了第一筆Coinbase交易是礦工的挖礦收入之外,其他每一筆交易都有一個或多個輸入,以及一個或多個輸出。Coinbase交易沒有輸入,只有輸出。

(1)元數據

        主要存儲一些內部處理的信息,包含版本號、這筆交易的規模,輸入的數量、輸出的數量、交易鎖定時間,以及作爲該交易獨一無二的ID的哈希值。其他區塊可以通過哈希指針指向這個ID。

(2)交易輸入

        每筆交易的所有輸入排成一個序列,每個輸入的格式相同,當交易被序列化以便在網絡上傳播時,輸入將被編碼爲字節流。

數據項 描述 大小
Previous Transaction hash 指向交易包含的未花費的UTXO的哈希指針 32字節
Previous Txout-index 未花費的UTXO的索引號,第一個是0 4bytes
Txin-script length 解鎖腳本長度 1~9字節(可變整數)
Txin-script/scriptSig 一個達到UTXO鎖定腳本中的條件的腳本 變長
sequence_no 目前未被使用的交易替換功能,通常設成0xFFFFFFFF 4字節

(3)交易輸出

        每個輸出的內容分成兩部分,一部分是特定數量的比特幣,以“聰”爲單位(最小的比特幣單位),另一部分是鎖定腳本,即提出支付輸出所必須滿足的條件以“鎖住”這筆總額。

數據項 描述 大小
Value 用“聰”表示的比特幣值 8字節
Txout-script length 鎖定腳本長度 1~9字節(可變整數)
Txout-script/scriptPubKey 定義了支付輸出所需條件的腳本 變長

四、交易類型

(1)生產交易

        每個區塊的第一筆交易都是生產新幣的交易。該交易沒有輸入地址,僅有一個輸出地址,其作用是將系統新生成的加密貨幣獎勵給創造當前區塊的礦工。

(2)通用地址交易

        這是區塊鏈系統中最常見的交易,由N個輸入和M個輸出構成,其中N>0,M>0。根據N和M的不同取值,可以進一步細分爲一對一轉賬交易、一對多分散交易、多對一聚合交易和多對多轉賬交易。

(3)合成地址交易

        合成地址交易是一類特殊交易,其接收地址不是通常意義的地址,而是一個以3開頭的合成地址。合成地址一般是M of N的多重簽名地址,其中1<=N<=3、1<=M<=N,通常選擇N=3。合成地址的交易構造、簽名和發送過程與普通交易類似,但其地址創建過程需要三對公鑰和私鑰,其中公鑰用於創建地址、私鑰用於簽名。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章