以太坊区块与区块头数据结构解析

Block数据结构解析

源代码

// Block represents an entire block in the Ethereum blockchain.
type Block struct {
    header       *Header
    uncles       []*Header
    transactions Transactions
 
    // caches
    hash atomic.Value
    size atomic.Value
 
    // Td is used by package core to store the total difficulty
    // of the chain up to and including the block.
    td *big.Int
 
    // These fields are used by package eth to track
    // inter-peer block relay.
    ReceivedAt   time.Time
    ReceivedFrom interface{}
}

主要属性:

- header:          该区块的信息

- uncles:           该区块所包含的叔块的信息

- transactions:  该区块所包含的交易信息

- td:                   总难度,即从开始区块到本区块(包括本区块)所有的难度的累加

- ReceivedAt:     用于跟踪区块的生成       

- ReceivedFrom:用于跟踪区块的生成

 

 

Header数据结构解析

源代码

// Header represents a block header in the Ethereum blockchain.
type Header struct {
   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        *big.Int       `json:"timestamp"        gencodec:"required"`
   Extra       []byte         `json:"extraData"        gencodec:"required"`
   Extra2      []byte         `json:"extraData2"       gencodec:"required"`
   MixDigest   common.Hash    `json:"mixHash"          gencodec:"required"`
   Nonce       BlockNonce     `json:"nonce"            gencodec:"required"`
}

主要属性:

- ParentHash:  该区块的父区块的哈希值

- UncleHash:   该区块所包含的叔块的哈希值

- Coinbase:     打包该区块矿工的地址,矿工费和打包区块的奖金将发送到这个地址

- Root:             存储账户状态的Merkle树的根节点的哈希

- TxHash:        存储该区块中的交易的Merkle树的根节点的哈希

- ReceiptHash:存储该区块的交易的回单的Merkle树的根节点的哈希

- Bloom:          交易日志的布隆过滤器,用于查询

- Difficulty:       该区块的难度

- Number:       区块号,也是区块高度,也是所有祖先区块的数量

- GasLimit:      该区块的汽油(gas)上限

- GasUsed:     该区块使用的汽油(gas)

- Time:            区块开始打包时间戳(调用Engine.Prepare函数的时候设置)

- MixDigest:    该哈希值与Nonce值一起证明该区块上已经进行了足够的计算,用于证明挖矿成功

- Nonce:         该哈希值与MixDigest哈希值一起证明该区块上已经进行了足够的计算,用于证明挖矿成功

- Extra:           预留它用(例如Clique共识机制使用)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值