以太坊区块数据详解
在以太坊区块链上,任何需要更改链上数据的行为(转账、部署合约、调用合约方法),都会被记录为一笔交易,被打包进区块中,下面我们来看详细了解下区块中到底保存了哪些信息。
区块字段解析
字段名
类型
描述
number
QUANTITY
块编号,挂起块为null
hash
DATA, 32 Bytes
块哈希,挂起块为null
mixHash
DATA, 32 Bytes
块mix哈希(另外一种哈希算法),挂起块为null
parentHash
DATA, 32 Bytes
父块的哈希
nonce
DATA, 8 Bytes
生成的pow哈希,挂起块为null
sha3Uncles
DATA, 32 Bytes
块中叔伯数据的SHA3哈希
logsBloom
DATA, 256 Bytes
块日志的bloom过滤器,挂起块为null
transactionsRoot
DATA, 32 Bytes
块中的交易树根节点
stateRoot
DATA, 32 Bytes
块最终状态树的根节点
receiptsRoot
DATA, 32 Bytes
块交易收据树的根节点
miner
DATA, 20 Bytes
挖矿奖励的接收账户
difficulty
QUANTITY
块难度,整数
totalDifficulty
QUANTITY
截止到本块的链上总难度
extraData
DATA
块额外数据
size
QUANTITY
本块字节数
gasLimit
QUANTITY
本块允许的最大gas用量
gasUsed
QUANTITY
本块中所有交易使用的总gas用量
timestamp
QUANTITY
块时间戳
transactions
Array
交易对象数组,或32字节长的交易哈希数组
uncles
Array
叔伯哈希数组(叔伯块与正常区块结构一致,只是不包含交易)
区块数据样例
交易记录字段解析
字段名
类型
描述
应用场景
hash
DATA, 32字节
交易哈希
nonce
QUANTITY
本次交易之前发送方已经生成的交易数量
blockHash
DATA, 32字节
交易所在块的哈希,对于挂起块,该值为null
blockNumber
QUANTITY
交易所在块的编号,对于挂起块,该值为null
transactionIndex
QUANTITY
交易在块中的索引位置,挂起块该值为null
from
DATA, 20字节
交易发送方地址
to
DATA, 20字节
交易接收方地址,对于合约创建交易,该值为null
value
QUANTITY
发送的以太数量,单位:wei
gasPrice
QUANTITY
发送方提供的gas价格,单位:wei
gasPrice * gas 等于本次交易的矿工费,单位为wei
gas
QUANTITY
发送方提供的gas可用量
input
DATA
随交易发送的数据
type
QUANTITY
类型(应该已经没用了)
r
DATA
签名值
r、s、v 共同组成一个签名值
s
DATA
签名值
v
QUANTITY
签名值
交易记录数据样例
交易收据字段解析
字段名
类型
描述
应用场景
transactionHash
DATA, 32字节
交易哈希
transactionIndex
QUANTITY
交易在块内的索引序号
blockHash
DATA, 32字节
交易所在块的哈希
blockNumber
QUANTITY
交易所在块的编号
from
DATA, 20字节
交易发送方地址
过滤这两个地址,可拉出一个用户完整的交易记录
to
DATA, 20字节
交易接收方地址,对于合约创建交易该值为null
cumulativeGasUsed
QUANTITY
交易所在块消耗的gas总量
gasUsed
QUANTITY
该次交易消耗的gas用量
contractAddress
DATA, 20字节
对于合约创建交易,该值为新创建的合约地址,否则为null
logs
Array
本次交易生成的日志对象数组
logsBloom
DATA, 256字节
bloom过滤器,轻客户端用来快速提取相关日志
root
DATA 32字节
后交易状态根(pre Byzantium)
status
QUANTITY
1 (成功) 或 0 (失败)
交易收据数据样例
交易收据日志字段解析
字段名
类型
描述
应用场景
removed
TAG
如果日志已被删除则返回true,如果是有效日志则返回false
logIndex
QUANTITY
日志在块内的索引序号。对于挂起日志,该值为null
transactionIndex
QUANTITY
创建日志的交易索引序号,对于挂起日志,该值为null
transactionHash
DATA, 32字节
创建该日志的交易的哈希。对于挂起日志,该值为null
blockHash
DATA, 32字节
该日志所在块的哈希。对于挂起日志,该值为null
blockNumber
QUANTITY
该日志所在块的编号。对于挂起日志,该值为null
address
DATA, 20字节
该日志的源地址
data
DATA
包含该日志的一个或多个32字节无索引参数
topics
Array of DATA
0~4个32字节索引日志参数的数据
topics[0]的值为触发的事件名称哈希值,解析合约时,可对所有事件生成此值,用于判定交易记录中与合约的哪个方法进行交互;
如标准 ERC20/ERC721 合约的Transfer事件,此值为0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef;
topics数组每个元素分别代表:0-事件名称哈希值 1-事件第一个indexed参数的值 2-事件第二个indexed参数的值,以此类推,最多4个;
可以过滤topic[0]的值为0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef的交易记录,生成用户的Token列表和NFT列表,Token列表的topics长度为3,NFT列表的topics长度为4;
交易收据日志数据样例
参考资料
Last updated
Was this helpful?