Execution
Table of Contents
Overview
This is an experimental section and may be changed in the future. It is not required for the initial release.
After the full execution of a block, the set of logs that are emitted MUST be merklized and included in the block header. This commitment MUST be included as the block header's extra data field. The events are serialized with using Simple Serialize aka SSZ.
The goal of committing to data in the extra data field is to make commitments to data required to verify executing messages easier. The commitment could also commit to the set of executing messages instead of just the logs which represent all possible initiating messages that originate in the block. This would reduce rounds of communication for nodes that use proofs to verify executing messages.
Name | Value |
---|---|
MAX_LOG_DATA_SIZE | uint64(2**24) or 16,777,216 |
MAX_MESSAGES_PER_BLOCK | uint64(2**20) or 1,048,576 |
class Log(Container):
address: ExecutionAddress
topics: List[bytes32, 4]
data: ByteList[MAX_LOG_DATA_SIZE]
transaction_hash: bytes32
transaction_index: uint64
log_index: uint64
logs = List[Log, MAX_MESSAGES_PER_BLOCK](
log_0, log_1, log_2, ...)
block.extra_data = logs.hash_tree_root()
Security Considerations
TODO