Skip to content

fix(builder): persist contractsDB across blocks within a checkpoint#21520

Open
spalladino wants to merge 4 commits intomerge-train/spartanfrom
palla/checkpoint-builder-contracts-db
Open

fix(builder): persist contractsDB across blocks within a checkpoint#21520
spalladino wants to merge 4 commits intomerge-train/spartanfrom
palla/checkpoint-builder-contracts-db

Conversation

@spalladino
Copy link
Contributor

@spalladino spalladino commented Mar 13, 2026

Motivation

When building multiple blocks within a single checkpoint, the CheckpointBuilder was creating a new PublicContractsDB instance for each block. This meant that contracts deployed in an earlier block within the same checkpoint were not visible to subsequent blocks, causing calls to newly deployed contracts to fail.

Approach

Move the PublicContractsDB instance to be a persistent field on CheckpointBuilder, initialized once in the constructor and shared across all blocks in the checkpoint. Wrap block building in checkpoint/commit/revert semantics on the contracts DB so that failed blocks don't leak state.

Changes

  • validator-client: Promote contractsDB from a local variable in makeBlockBuilderDeps to a class field on CheckpointBuilder. Wrap buildBlock in createCheckpoint/commitCheckpoint/revertCheckpoint calls on the contracts DB.
  • validator-client (tests): Add tests verifying that the contracts DB checkpoint lifecycle is correctly managed across successful and failed block builds.
  • end-to-end (tests): Add e2e test that deploys a contract and calls it in separate blocks within the same slot, validating cross-block contract visibility within a checkpoint.

Fixes A-658

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@spalladino spalladino added ci-no-fail-fast Sets NO_FAIL_FAST in the CI so the run is not aborted on the first failure backport-to-v4-next labels Mar 13, 2026
@spalladino spalladino enabled auto-merge (squash) March 17, 2026 01:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport-to-v4-next ci-no-fail-fast Sets NO_FAIL_FAST in the CI so the run is not aborted on the first failure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants