區塊鏈中區塊的構成詳解


       區塊鏈是一個鏈式存儲結構,區塊就是鏈式存儲結構中的數據元素,區塊鏈由區塊相互連接形成單向鏈式結構,其中第一個區塊被稱為創始區塊。

       那作為區塊鏈的數據元素,區塊的構成又是怎樣的呢?

  其實,每個區塊的大小被規定不能超過1M,它的結構分為兩部分,區塊頭和區塊體。

 

  區塊頭共80字節,分為6個部分:versionprevBlockHashmerkleRoottime difficultyTargetnonce

  version:大小為4字節,記錄了區塊頭的版本號,用於跟蹤軟件/協議的更新;

  prevBlockHash:大小為32字節 ,記錄了該區塊的上一個區塊的Hash地址;

  merkleRoot:大小為32字節,記錄了該區塊中交易的merkle樹根的哈希值;

  time:大小為 4字節,記錄了該區塊的創建時間戳;

  difficultyTarget:大小為4字節,記錄了該區塊鏈工作量證明難度目標;

  nonce:大小為4字節,記錄了用於證明工作量的計算參數。

  區塊體的內容是該區塊的交易信息,包括交易數量和交易數據。區塊體共分為三部分:

  numTransactionsBytesnumTransactionstransactions

  numTransactionsBytes:大小為1字節,記錄了交易數量占用的字節數;

  numTransactions:大小為0-8個字節,記錄了區塊內的交易數量;

  transactions:大小不確定,記錄了區塊內存的多個交易數據。

  在區塊體部分中,numTransactions(記錄區塊內交易數量)是存儲交易信息的重要字段,將numTransactions(記錄區塊內交易數量)部分使用壓縮存儲方式,這樣可以大量的節約存儲空間。numTransactionsBytes字段的存在是為了指出numTransactions在區塊體中存在的部位,為讀取交易數量而做准備,因此,應最先讀取numTransactionsBytes字段值,並根據該字段值的不同做出如下規定:

  如果numTransactionsBytes字段值小於253,則交易數量為numTransactionsBytes字段值作為;

  如果numTransactionsBytes字段值等於253,則交易數量為numTransactionsBytes字段值之后的兩個字節;

  如果numTransactionsBytes字段值等於254,則交易數量為numTransactionsBytes字段值之后的4個字節;

  否則,交易數量為numTransactionsBytes字段值之后的8個字節。

 

作者:f珞珈山神

原文鏈接:https://www.kg.com/article/507675167221223424


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM