以太坊区块(Block)核心结构有什么数据?区块头和区块体如何被记录的?
以太坊区块是区块链的核心数据单元,它将交易打包、验证并永久记录到分布式账本中,每个区块通过密码学哈希链式链接,保证数据不可篡改、透明且去中心化,以太坊自合并(The Merge)后采用权益证明(PoS)机制,但区块结构基本保持稳定(执行层与共识层协同),区块仍分为区块头(Header)和区块体(Body)两大核心部分。

区块头是区块的“身份证”和安全守护者,它通过一系列Merkle根哈希(Merkle Root)保护整个区块的数据完整性,区块体则承载实际执行内容,包括交易列表等。
区块整体核心内容
一个完整的以太坊区块包含
1、区块头:约500字节左右的元数据,记录区块身份、状态摘要和验证信息。
2、区块体:实际数据负载,包括交易列表、叔块(Uncles/Ommers,在PoS中较少)和提款列表(Withdrawals)。
区块通过区块哈希(Block Hash)唯一标识,该哈希是对整个区块头的Keccak-256计算结果,任何对交易或状态的微小修改,都会使哈希失效,从而被全网节点拒绝,这就是区块链的“不可篡改”保障。
区块头:保护什么数据?
区块头是Merkle树根的集合,它不存储原始数据,而是通过哈希根(Root)间接“保护”以下核心数据,保证任何篡改都会被立即发现。
Header结构体主要字段如下
ParentHash(父区块哈希):指向前一个区块头的哈希,形成链式结构,保护整个区块链历史顺序,防止“前插”或修改旧区块。
UncleHash / sha3Uncles(叔块哈希):叔块头列表的Merkle根,保护PoW时代遗留的并发区块奖励机制(PoS下较少用)。
Coinbase / Miner(矿工/验证者地址):接收区块奖励和手续费的地址。
StateRoot(状态根):执行完本区块所有交易后,全局状态Trie(账户余额、合约存储、非ce等)的Merkle根,保护全网账户状态一致性,任何人无法伪造账户余额变化。
TransactionsRoot(交易根):区块体内所有交易的Merkle-Patricia Trie根哈希,保护交易列表完整性(顺序、内容不可改)。
ReceiptsRoot(收据根):交易收据(执行结果、日志、gas使用)的Trie根,保护交易执行结果的审计性(如事件日志、成功/失败状态)。
LogsBloom(日志布隆过滤器):高效过滤事件日志的位图,保护快速查询合约事件,而无需扫描所有收据。
Difficulty、Number(区块高度)、GasLimit(gas上限)、GasUsed(实际消耗gas)、Timestamp(时间戳):控制出块速率和资源消耗。
ExtraData(额外数据):最多32字节的任意字节(可用于矿池标签等)。
MixHash / Nonce:PoW时代验证字段(PoS下固定为0)。
BaseFeePerGas(EIP-1559基础费):基础gas费用(部分被燃烧)。
WithdrawalsHash(EIP-4895,上海升级):提款列表的根哈希,保护质押提现操作。
BlobGasUsed / ExcessBlobGas(EIP-4844,Dencun升级):Blob数据gas消耗,保护Layer2 Rollup的廉价数据可用性。
ParentBeaconBlockRoot(EIP-4788):指向共识层Beacon区块根,保护执行层与共识层同步。
RequestsHash/SlotNumber(近期EIP-7685/EIP-7843可选):请求哈希和槽位号。
区块头如何“保护”数据?
它不直接存交易内容,而是存三个核心Merkle根(StateRoot、TransactionsRoot、ReceiptsRoot),这些根是Merkle树的顶部哈希,树叶是真实数据,任意修改叶子都会导致根哈希变化,验证节点只需重新执行交易、计算新根并与头中根对比即可验证合法性,这极大降低了存储和带宽(轻节点只需头即可验证)。
区块体:包含什么数据?
1、Transactions:交易列表(核心,最多几百笔,受gasLimit限制)。
2、Uncles(叔块头列表):PoW遗留,PoS下几乎为空。
3、Withdrawals:质押提现对象列表(每个含validatorIndex、地址、金额)。
区块体本身不直接进入哈希计算,但其Merkle根(通过TransactionsRoot等)被区块头保护,执行客户端会逐一运行体内的交易,更新状态树,生成新StateRoot。
交易栗子🌰从创建到上链的细致流程
假设Alice(地址:0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8)想转0.01 ETH给Bob(地址:0xac03bb73b6a9e108530aff4df5077c2b3d481e5a),这是一笔简单Type 2交易(EIP-1559,最常见类型)。
交易对象字段(签名前)
{
"chainId": 1,
// 主网ID,防重放攻击
"nonce": 5,
// Alice账户当前交易计数器(防双花)
"maxPriorityFeePerGas": "10",
// 小费(给验证者,单位:Gwei)
"maxFeePerGas": "300",
// 最高总费用(基础费+小费)
"gasLimit": "21000",
// 简单转账固定消耗
"to": "0xac03bb73b6a9e108530aff4df5077c2b3d481e5a", // Bob地址
"value": "10000000000000000",
// 0.01 ETH(以wei为单位)
"data": "0x",
// 无数据(纯转账,非合约调用)
"accessList": []
// 可选访问列表
}
Alice用私钥对以上字段做ECDSA签名,生成v、r、s(签名组件),完整原始交易(RLP编码)广播到网络,进入验证者交易池。
上链过程(进入区块体)
1、验证者(proposer)从交易池挑选这笔交易(按gas费优先)。
2、打包进当前区块的Transactions列表(区块体)。
3、执行:扣Alice余额,加Bob余额,消耗21000 gas,生成收据(状态:成功,cumulativeGasUsed等)。
4、计算三个根
● TransactionsRoot:所有交易(包括这笔)的Merkle树根。
● ReceiptsRoot:收据树根。
● StateRoot:更新后全局状态树根。
5、填充区块头(包含以上三个根+ ParentHash等)。
6、区块提议、共识层验证、最终化(Finalized)。
交易在区块体中的实际位置,它是Transactions数组的某一项,它的交易哈希(Transaction Hash)是签名后RLP的Keccak-256,可在Etherscan查询(如0x...),一旦区块Finalized,这笔转账不可逆转。
为什么安全?
区块头中的TransactionsRoot锁定了这笔交易的存在与内容,StateRoot锁定余额变化,全网节点重新执行一遍即可验证,如果有人想伪造转账,根哈希会不匹配,被拒绝。
区块的强大之处
以太坊区块通过区块头哈希根保护机制+区块体实际数据,实现了高效验证、状态一致性和去中心化执行,区块头是“护盾”(保护历史、状态、交易完整性),区块体是“引擎”(驱动状态更新)。






