MetalHeader adds consensus and interoperability fields around the standard
Ethereum execution header. The block hash commits to the complete RLP-encoded
MetalHeader.
RLP layout
The outer RLP list has the following order:subblock_metadata_root is a trailing optional field. A header without this
field remains unambiguous to the RLP decoder.
Millisecond timestamp
The nested header stores whole seconds.timestamp_millis_part stores the
remaining milliseconds:
timestamp in
seconds.
Proposer and fee recipient
proposer is the raw 48-byte compressed BLS public key of the validator that
proposed the block. The genesis header uses the all-zero key.
The JSON-RPC miner field identifies the EVM fee recipient. proposer
identifies the consensus validator.
Message root
interop_message_root is the count-bound root of the Metal message tree after
the block finishes executing:
MetalInbox contracts verify
message proofs against it.
Subblock metadata root
When present,subblock_metadata_root commits to the ordered metadata of the
included subblocks. The block hash and finality certificate cover this field.
The field may be absent. Absence and a 32-byte zero value are distinct RLP
encodings.
Ethereum consensus update
ethereum_update carries an Ethereum light-client operation chosen by the
validator and verified during block execution. Its bytes are committed by
the Metal block hash. The field is empty for a block without an operation;
a nonempty value begins with an operation-kind byte followed by its SSZ
encoding. Its maximum size is 64 KiB.
Validator-set roots
validator_set_root commits to the validator set for the block’s epoch.
next_validator_set_root commits to the next epoch’s set, allowing a verifier
to authenticate a scheduled transition through the finalized header. The roots
are equal while the set is unchanged. Both are zero in the genesis header.
JSON-RPC fields
Metal block responses add these fields to the standard Ethereum response:
Use Block Timestamps for the JSON-RPC
calculation and EVM behavior.