Skip to content

feat(sync): hand off genesis replay between eras - #8246

Merged
0xrusowsky merged 14 commits into
rus/tempo-t10-floorfrom
rus/tempo-era-handoff
Oct 10, 2026
Merged

0xrusowsky merged 14 commits into
rus/tempo-t10-floorfrom
rus/tempo-era-handoff

Conversation

@0xrusowsky

@0xrusowsky 0xrusowsky commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Stacked on #8237; frozen worker backport: https://github.com/tempoxyz/tempo-history/pull/3.

Runs the bundled Genesis–T10 writer to its pinned checkpoint, then verifies a recent consensus anchor and syncs T11+ with Reth. The existing archives retain the executed tail before finality is published, allowing an interrupted handoff to recover without a snapshot or a new storage format.

Validated on dev-team: 509 library tests, 52 handoff/follower/snapshot/restart tests, CLI smoke, nightly formatting, Clippy with warnings denied, frozen package checks, bounded loopback P2P sync, and launcher cancellation with fresh and initialized databases. Full production-chain genesis replay remains untested. Genesis generation and pinned Foundry CI failures are inherited from #8237.

@0xrusowsky
0xrusowsky force-pushed the rus/tempo-era-handoff branch from 767a4c5 to d1c9f6e Compare October 10, 2026 03:56
@github-actions

github-actions Bot commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

📊 Tempo Precompiles Coverage

📦 Download full HTML report

@0xrusowsky
0xrusowsky merged commit 29bc101 into rus/tempo-t10-floor Oct 10, 2026
59 of 63 checks passed
@0xrusowsky
0xrusowsky deleted the rus/tempo-era-handoff branch October 10, 2026 17:02
@tempoxyz-bot

tempoxyz-bot commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

👁️ Cyclops Security Review

Last reviewed: no commit yet
❌ Review of bcd58ce failed · workflow

# Severity Finding Introduced Status
1 ⚪ Informational File-based mainnet chainspec blocks validator handoff startup bcd58ce 🟠 Open

);

// A newer floor may skip delivery only when execution and its cache cover the whole path.
let first = blocks

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can break the node.

Comment thread bin/tempo/src/history.rs
Comment on lines +32 to +37
|| !eras::supports_release_catalog(&node.chain)
{
return Ok(ControlFlow::Continue(false));
}
let catalog = eras::release_catalog()?;
let Some(schedule) = catalog.for_chain(node.chain.chain_id(), node.chain.genesis_hash()) else {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Informational: File-based mainnet chainspec blocks validator handoff startup

A validator using the bundled Presto genesis through --chain with a file path can match the production release catalog and require historical anchoring. Unlike the named mainnet chainspec, the file-parsed spec has no default RPC URL, so the new handoff check aborts before starting the validator consensus stack.

Valid? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants