zoukankan      html  css  js  c++  java
  • 区块链中区块的构成详解

           区块链是一个链式存储结构,区块就是链式存储结构中的数据元素,区块链由区块相互连接形成单向链式结构,其中第一个区块被称为创始区块。

           那作为区块链的数据元素,区块的构成又是怎样的呢?

      其实,每个区块的大小被规定不能超过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

  • 相关阅读:
    经典的ajax遍历循环
    fastadmin别名关联表与js下划线冲突问题解决:with里的别名,不要用驼峰,用shippingtype
    thinkphp 临时关闭布局,ajax只输出主题部分
    linux php5.6 链接sql server
    ecstore导入文件开发问题解决 死循环+不兼容mac换行解决
    thinkphp 二级目录安装
    解决crontab执行时间与系统时间不一致的问题
    电阻性能检测的二种方法(转载)
    短路的原因与危害有哪些
    潮湿引发的电路板常见故障(转载)
  • 原文地址:https://www.cnblogs.com/space007/p/9897075.html
Copyright © 2011-2022 走看看