区块链的数据结构(一)——区块、链

这篇具有很好参考价值的文章主要介绍了区块链的数据结构(一)——区块、链。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

区块

        区块(block)由区块头(block header)和交易列表(transaction list,tx list)组成,block之间通过block header的hash连接成了一个链表结构。但这个链表不同于普通链表。

1. block header

比特币的block header:

int32_t nVersion;
uint256 hashPrevBlock;
uint256 hashMerkleRoot;
uint32_t nTime;
uint32_t nBits;
uint32_t nNonce;

以太坊的block header:

ParentHash  common.Hash    `json:"parentHash"       gencodec:"required"`
UncleHash   common.Hash    `json:"sha3Uncles"       gencodec:"required"`
Coinbase    common.Address `json:"miner"            gencodec:"required"`
Root        common.Hash    `json:"stateRoot"        gencodec:"required"`
TxHash      common.Hash    `json:"transactionsRoot" gencodec:"required"`
ReceiptHash common.Hash    `json:"receiptsRoot"     gencodec:"required"`
Bloom       Bloom          `json:"logsBloom"        gencodec:"required"`
Difficulty  *big.Int       `json:"difficulty"       gencodec:"required"`
Number      *big.Int       `json:"number"           gencodec:"required"`
GasLimit    uint64         `json:"gasLimit"         gencodec:"required"`
GasUsed     uint64         `json:"gasUsed"          gencodec:"required"`
Time        uint64         `json:"timestamp"        gencodec:"required"`
Extra       []byte         `json:"extraData"        gencodec:"required"`
MixDigest   common.Hash    `json:"mixHash"`
Nonce       BlockNonce     `json:"nonce"`


// BaseFee was added by EIP-1559 and is ignored in legacy headers.
BaseFee *big.Int `json:"baseFeePerGas" rlp:"optional"`
  • hashPrevBlock /ParentHash,上一个block header的hash
  • hashMerkleRoot/TxHash,交易list的hash

TxHash和ParentHash相结合,赋予了区块链不可篡改的特性。

2. block body

区块链 链式数据结构,区块链技术,区块链

  • block body就是交易list,block header通过TxHash指向唯一的交易list
  • 从tx hash list得到TxHash的hash算法叫做默克尔树(Merkle tree),相比其他的hash算法有特殊的性质(可以简洁地证明tx存在其中)

        block header通过ParentHash指向唯一的上个block header,并最终形成一条链。

        例如:一个结构体B里面如果包括了一个指针pa,那这个结构体就可以指向另一个结构体A。一个结构体C里面如果包括了一个指针pb,那这个结构体就可以指向另一个结构体B。以此类推,通过指针,结构体就可以连起来。

区块链 链式数据结构,区块链技术,区块链

        

        而区块链是用哈希指针(hash pointers)代替了普通指针。哈希指针是一个可以指向数据存储位置及位置的数据的哈希值的指针。  

        哈希指针:不仅要存放地址,还要存放这个结构体的哈希值,一般用H表示一个哈希指针。

区块链 链式数据结构,区块链技术,区块链

       这样做的好处是:我们不光可以找到这个结构体的位置,同时还能够检测出这个结构体的内容有没有被篡改,因为我们保存了他的哈希值。

区块链 链式数据结构,区块链技术,区块链

        最前面的区块是系统中产生的第一个区块,叫做创世纪块(genesis block),顺便说一句,比特币的创世区块里,中本聪写了一句话“The Times 03/Jan/2009 Chancellor on brink of second bailout forbanks.”

区块链 链式数据结构,区块链技术,区块链

        最后一个区块是最近产生的区块,每个区块都包含指向前一个区块的哈希指针,最后一个区块也有一个指向它的哈希指针H()保存在系统里。文章来源地址https://www.toymoban.com/news/detail-648283.html

到了这里,关于区块链的数据结构(一)——区块、链的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://blog.csdn.net/qq_40213907/article/details/127195482

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包