Structure of On-Chain Data
The EVM Protobuf Streams provide three main message types for different use cases:BlockMessage
: Full blocks with detailed transaction tracesTransfersMessage
: Focused on token transfers with currency metadata
Block-Level Data
Each block in the stream includes aBlockHeader
with fields such as:
Hash
: The unique identifier of the blockParentHash
: Hash of the previous blockNumber
: Block number/height in the chainGasLimit
: Maximum gas allowed in this blockGasUsed
: Actual gas consumed by transactionsTime
: Block timestampBaseFee
: Base fee per gas (EIP-1559)
BlockMessage
also includes:
Chain
: Information about the blockchain (ChainId, Config)Uncles
: Uncle/ommer blocks (Ethereum PoW)Transactions
: All transactions in the blockL1Header
: For Layer 2 chains, information about the corresponding L1 block
Transaction-Level Data
Transactions include: TransactionHeader: Core transaction dataHash
: Transaction hashGas
: Gas limit for this transactionValue
: Amount of native currency transferredData
: Call data for contract interactionsFrom
/To
: Sender and recipient addressesGasPrice
,GasFeeCap
,GasTipCap
: Fee parameters- Special fields for EIP-4844 blob transactions
Status
: Success or failureGasUsed
: Actual gas consumedLogs
: Event logs emitted
Calls
: Internal contract callsCaptureStates
: State modifications
Transfer Data
TheTransfersMessage
stream provides information about native token and token transfers:
TokenTransfer: Records native token and token movements with:
Sender
: Address sending tokensReceiver
: Address receiving tokensAmount
: Amount of tokens transferredId
: Token ID (for non-fungible tokens)Currency
: Detailed token informationSuccess
: Whether the transfer succeeded
SmartContract
: Token contract addressName
: Token nameSymbol
: Token symbolDecimals
: Token decimal placesFungible
: Whether token is fungible (ERC-20) or non-fungible (ERC-721/1155)
Layer 2 Support
EVM Protobuf Streams provide dedicated fields for Layer 2 chains:L1Header
: Corresponding L1 block information- Optimism-specific fields:
SequenceNumber
,BatcherAddr
,L1FeeOverhead
, etc. - Arbitrum-specific fields:
GasL1
for L1 data costs
Using This Stream
Topic Names
The EVM streams are available under different topics:eth.v1.transfers.proto
→TransfersMessage