evm.execution_blockhash_reads

Canonical execution-keyed evidence projection.

Kind
View
Layer
execution_read_model
Columns
23
Queries
2

Contract and lifecycle

Grain
One contextual attempt fact per (execution_id, attempt_kind, step_index or observation_index, frame_index); attempt_id identifies the reusable physical attempt.
Lifecycle
run publishes this immutable row set atomically with its owning run. Statement failure or caller rollback publishes no durable prefix; direct DML is unsupported because it can corrupt the documented invariants.
Status and NULLs
Interpret nullable payloads only through their owning status fields. Defensive poisoned and engine_error outcomes mean the engine refused to claim a trustworthy normal result; broad view nullability also covers owner alternatives and left-joined evidence.
Join guidance
  • Join evm.executions on execution_id for candidate and run context.
  • Use attempt_id to deduplicate physical facts expanded across contextual owners.
  • For program owners use step_index; for observation-call owners use observation_index and observation_key.
Effect semantics
  • Access flags describe attempted EVM access, not committed state change.
  • Effect facts retain attempted evidence and final committed, reverted, discarded, or poisoned disposition.
  • execution_state_deltas contains committed checkpoint transitions only; observation-call effects are excluded from execution_effect_summary.

Columns

Identity and ownership

Name Type
execution_id UUID

Contextual execution association identity; do not use it as reusable artifact identity.

attempt_kind VARCHAR

Owner kind: program_step or observation_call.

observation_key VARCHAR

Byte-exact caller observation identity for an observation_call owner; otherwise NULL.

attempt_id UUID

Reusable physical attempt identity; contextual owners may share this value.

Contextual keys and reusable identities that establish row ownership.

Chain context

Name Type
chain_id UBIGINT

EVM chain identifier frozen for the owning execution.

chain_profile VARCHAR

Named chain-rules profile frozen for the owning execution.

Pinned chain, block, profile, and revision context.

Ordering and cardinality

NameType
step_indexUINTEGER

Zero-based program order; NULL for observation_call attempt owners.

observation_indexUINTEGER

Zero-based expanded point order; identifies observation-call ownership.

frame_indexUINTEGER

Frame that produced the BLOCKHASH read

global_indexUINTEGER

Global append-order fact index

frame_local_indexUINTEGER

Frame-local append-order fact index

Showing fewer

Stable indexes and counts used to reconstruct deterministic order.

Payload and evidence

NameType
current_block_numberUBIGINT

Execution block number

requested_block_numberUBIGINT

BLOCKHASH argument

canonicalBOOLEAN

Whether the returned value is canonical evidence

syntheticBOOLEAN

Whether the returned value is synthetic/dev evidence

sourceVARCHAR

Resolution source

Showing fewer

Operation-specific inputs, outputs, and authenticated evidence.

Status and disposition

Name Type
status VARCHAR

Resolution status

Outcome vocabulary and NULL-controlling disposition fields.

Commitments

Name Type
block_hash BYTES32

Returned block hash

Hashes and roots authenticating specifications, facts, state, or results.

Linked joins

Related public objects

Verified queries

Confirm fixture coverage

Confirm that this object has rows owned by the stable seven-candidate public fixture.

SELECT 'evm.execution_blockhash_reads'::VARCHAR AS object_name, CASE WHEN count(*) > 0 THEN 'PASS' ELSE 'FAIL' END::VARCHAR AS status FROM evm."execution_blockhash_reads" o JOIN evm.executions e USING (execution_id) WHERE e.candidate_key IN ('complete-effects', 'later-revert', 'ordered-logs', 'create', 'selfdestruct', 'blockhash', 'transient-access');

Example: table.evm.execution_blockhash_reads.lookup

Check candidate ownership

Diagnose whether this object remains linked to at least one stable fixture candidate through public keys.

SELECT 'evm.execution_blockhash_reads'::VARCHAR AS object_name, CASE WHEN count(DISTINCT e.candidate_key) > 0 THEN 'PASS' ELSE 'FAIL' END::VARCHAR AS status FROM evm."execution_blockhash_reads" o JOIN evm.executions e USING (execution_id) WHERE e.candidate_key IN ('complete-effects', 'later-revert', 'ordered-logs', 'create', 'selfdestruct', 'blockhash', 'transient-access');

Example: table.evm.execution_blockhash_reads.diagnostic