Ethereum Data Model
The sf.ethereum.type.v2.Block Protobuf is shared across EVM-compatible blockchains (Ethereum, Polygon, Arbitrum...). While the Protobuf definition (.proto
file) is largely self-documented, it is important to be aware of the version of the Protobuf you are working with.
The Protobuf Version
Most changes in EVM chains are backward-compatible, meaning there is no need to introduce an entirely new Protobuf namespace (e.g., sf.ethereum.type.v3.Block). Instead, sf.ethereum.type.v2.Block
is used consistently to avoid breaking changes.
To manage internal updates, Firehose uses a versioning system defined by the ver
field in the Block
Protobuf.
// Ver represents that data model version of the block, it is used internally by Firehose on Ethereum
// as a validation that we are reading the correct version.
int32 ver = 1;
This version refers to the Block
emitted by the Firehose trace.
Version 3
This version is current in place for all EVM chains, with the exception of Optimism from block 0 to the last pre-Prague (blockchains currently in Prague version are listed in a section later in this document) hard fork block.
This version contains several known issues, which are described in the Protobuf definition itself (next to the corresponding field affected). You can also check out this GitHub issue.
Version 4
This version is currently in place for the following chains:
Optimism
Ethereum Hoodi
Sei EVM
This version fixes the known issue of version 3.
Prague-enabled blockchains
The following chains have already upgraded to Ethereum's Prague version:
Ethereum Sepolia
Ethereum Holesky
BSC Mainnet
BSC Testnet
Last updated
Was this helpful?