以太坊區(qū)塊與區(qū)塊頭的數(shù)據(jù)結(jié)構(gòu)解析

Block數(shù)據(jù)結(jié)構(gòu)解析

源代碼

// 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: ? ? ? ? ?該區(qū)塊的信息

- uncles: ? ? ? ? ? 該區(qū)塊所包含的叔塊的信息

- transactions: ?該區(qū)塊所包含的交易信息

- td: ? ? ? ? ? ? ? ? ? 總難度,即從開始區(qū)塊到本區(qū)塊(包括本區(qū)塊)所有的難度的累加

- ReceivedAt: ? ? 用于跟蹤區(qū)塊的生成 ? ? ??

- ReceivedFrom:用于跟蹤區(qū)塊的生成

Header數(shù)據(jù)結(jié)構(gòu)解析

源代碼

// 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: ?該區(qū)塊的父區(qū)塊的哈希值

- UncleHash: ? 該區(qū)塊所包含的叔塊的哈希值

- Coinbase: ? ? 打包該區(qū)塊礦工的地址,礦工費(fèi)和打包區(qū)塊的獎(jiǎng)金將發(fā)送到這個(gè)地址

- Root: ? ? ? ? ? ? 存儲(chǔ)賬戶狀態(tài)的Merkle樹的根節(jié)點(diǎn)的哈希

- TxHash: ? ? ? ?存儲(chǔ)該區(qū)塊中的交易的Merkle樹的根節(jié)點(diǎn)的哈希

- ReceiptHash:存儲(chǔ)該區(qū)塊的交易的回單的Merkle樹的根節(jié)點(diǎn)的哈希

- Bloom: ? ? ? ? ?交易日志的布隆過(guò)濾器,用于查詢

- Difficulty: ? ? ? 該區(qū)塊的難度

- Number: ? ? ? 區(qū)塊號(hào),也是區(qū)塊高度,也是所有祖先區(qū)塊的數(shù)量

- GasLimit: ? ? ?該區(qū)塊的汽油(gas)上限

- GasUsed: ? ? 該區(qū)塊使用的汽油(gas)

- Time: ? ? ? ? ? ?區(qū)塊開始打包時(shí)間戳(調(diào)用Engine.Prepare函數(shù)的時(shí)候設(shè)置)

- MixDigest: ? ?該哈希值與Nonce值一起證明該區(qū)塊上已經(jīng)進(jìn)行了足夠的計(jì)算,用于證明挖礦成功

- Nonce: ? ? ? ? 該哈希值與MixDigest哈希值一起證明該區(qū)塊上已經(jīng)進(jìn)行了足夠的計(jì)算,用于證明挖礦成功

- Extra: ? ? ? ? ? 預(yù)留它用(例如Clique共識(shí)機(jī)制使用)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Go-ethereum 源碼解析之 core/types/block.go Appendix A. 總體批注 文件...
    furnace閱讀 1,033評(píng)論 0 0
  • 不管你這一天是怎么活的 你的心臟都在努力跳動(dòng)著 努力為你存在著 一刻 也未停歇 也不曾敢停歇 所以,為了明天清晨的...
    燕研小視界閱讀 195評(píng)論 1 0
  • 高三女生,17歲。①房子②樹③人 整體: 從整幅畫來(lái)看,表面看起來(lái)內(nèi)向穩(wěn)定的性格,但顯現(xiàn)的不穩(wěn)定元素也不少,案主平...
    巴珍閱讀 402評(píng)論 0 0
  • 韓劇《愛情的溫度》劇照 01 曾采訪過(guò)一對(duì)夫妻,他們有一對(duì)可愛的雙胞胎女兒??墒?,小溪在做體檢時(shí)發(fā)現(xiàn)了乳腺癌,當(dāng)時(shí)...
    裝睡貓閱讀 1,547評(píng)論 2 2

友情鏈接更多精彩內(nèi)容