區塊鏈基礎 2 BTC區塊結構

2021-10-22 00:00:20 字數 2695 閱讀 4921

btc中的區塊結構大致如下:

其中,乙個完整的區塊由塊頭(block header)和塊體(block body組成),下面將對其中的資料結構進行說明。

全節點:儲存區塊的全部內容,包括header和body,在本地硬碟維護完整的區塊鏈資訊。

輕節點:只儲存區塊的header。

區塊鏈系統中,輕節點的數量要多於全節點,輕節點的使用限制也相對更少。

雜湊指標是應用在區塊鏈技術中的一種資料結構。普通的指標儲存了一段資料的記憶體位置,而雜湊指標除了儲存資料位置之外,還儲存了這段資料的雜湊值。

區塊鏈即為雜湊指標組成的鍊錶(block chain is a linked list using hash pointers)。每個區塊的header都包含指向下乙個區塊的雜湊指標,走到底的區塊是系統中產生的第乙個區塊,叫創世紀塊(genesis block),而開頭的區塊是系統中最近產生的區塊(most recent block),最近產生的區塊前面沒有別的區塊,但是也會有乙個雜湊指標,儲存在系統裡。由此,雜湊指標組成的鍊錶應為無環鏈表,否則將產生迴圈依賴。

通過後乙個區塊的雜湊指標,不僅能找到前乙個區塊,而且能夠防止有人篡改資料,具有防篡改日誌(tamper-evident log)屬性。如果有人妄想修改某個區塊的資料,那麼它後面的那個區塊的雜湊指標,不能夠和篡改資料後的區塊生成的雜湊指標匹配。

區塊鏈中輕節點可以不儲存整個區塊鏈的內容,需要時可向全節點進行獲取,根據防篡改日誌屬性,輕節點可對獲取到內容的正確性進行驗證。

實際在網路中,雜湊指標只是一種形象的說法,在header中只儲存上個區塊header的雜湊值,並無指標。全節點一般將區塊存在key-value資料庫中,key儲存區塊的雜湊,value儲存區塊的內容,只要掌握了最後乙個區塊的雜湊值,即可查詢到之前各個區塊的資料。

默克爾樹是一種雜湊二叉樹,其葉節點儲存的是資料檔案,而非葉節點儲存的是其子節點的雜湊值,只要檢視根雜湊值,就能檢測出樹中是否有地方被篡改,效率較高。

其中,交易列表儲存於區塊的body中,根雜湊值則儲存在區塊的header中。

假設有這樣一種場景需要用到數字貨幣支付,支付完成後本人需要證明這筆交易已經寫到區塊中,比較容易想到的辦法就是拿到打包交易的對應區塊,然後對比區塊中的所有交易來確認是否已經被打包其中。但是在位元幣或者以太坊的場景下,乙個區塊大概有兩三千筆交易,乙個交易又包含若干字段,如果逐一比較交易不僅速度慢,而且不安全,因為拿單一的區塊無法知道拿到的塊的真偽。

merkle proof是一種僅需鏈中全量header就可以證明交易是否存在(proof of membership)某一區塊中的方法。

如圖所示,綠色塊為輕節點已知的header資訊,黃色塊為輕節點接收到其它節點傳送過來的交易資訊和路徑中部分雜湊值。輕節點可自下而上計算藍色塊中的雜湊值,並將最終計算得到的雜湊值與header中的跟雜湊值比較,以驗證交易生否真正存在。這一點也利用了雜湊函式collision resistance的特性,其時間複雜度為o(logn)。

優點

使用場景:

輕節點只包含區塊頭,也就是只有交易樹的根雜湊值,當需要向輕節點證明一筆交易已經打包到指定區塊時,只需要提供這筆交易和對應路徑上的雜湊值即可,這樣輕節點就可以在不儲存區塊體的情況下證明了這筆交易已經上鏈不可更改了。

target 就是乙個 256-bit 的數,計算 nonce 值的過程就是對區塊 header 不斷的運算雜湊,直至找到能使區塊雜湊小於 target 的 nonce:

h (b

lock

head

er)<=t

arge

th(block header) <= target

h(bloc

khea

der)

<=t

arge

t根據nonce計算得到雜湊值就去跟 target 對比,如果雜湊值大於 target ,更改nonce,再次計算 header 雜湊;反之如果雜湊小於等於 target,那麼運算過程就結束了,當前 nonce 值會被最終記錄到 header 中。

雜湊值只計算header中的資料即可,由於body中交易列表的根雜湊值存於header,可由此驗證交易列表是否被篡改。

礦機每秒能做多少次nonce 求解過程為算力的代表,其單位hash/s,顯然算力越大,就有更大的概率率先找到 nonce 值,也就是巨集觀意義上搶到的記賬權。爭奪記賬權的過程成為挖礦,爭奪記賬權的節點成為礦工,挖礦使用的計算機成為礦機

參考資料

區塊鏈基礎系列

歡迎打賞σ(っ°д°;)っ

區塊鏈 基礎2

區塊鏈到底是如何工作?區塊鏈涵蓋了哪些關鍵技術?使其被稱為 信任機器 要搞懂區塊鏈交易工作原理與流程,可先將其分成交易與區塊兩個部分,來了解區塊鏈交易的原理流程。下面是區塊鏈交易的五個流程 第一步 交易的生成 當前所有者利用私鑰對前一次交易和下一位所有者簽署乙個數字簽名,並將這個簽名附加在這枚貨幣的...

區塊鏈Btc98技術原理分享

在談應用之前,最重要的是先理解它的技術本質是什麼,所有介紹區塊鏈的答案裡,都最先提到了區塊鏈不可篡改的特性,所以第乙個要理解的是它到底是怎麼實現不可篡改性的。h0 hash a h1 hash b h0 h2 hash c h1 h0 hash a nonce0 h1 hash b h0 nonce...

區塊鏈技術與應用 BTC挖礦難度

挖礦就是不斷嘗試nonce,使整個block header中的雜湊值小於等於給定的目標閾值 target。h block header target。target越小,挖礦難度越大。調整挖礦難度,就是調整目標空間在整個輸出空間中所佔的比例。位元幣中的hash演算法是sha 256,整個輸出空間是2 ...