Skip to content

refactor: make prover-node a subsystem of aztec-node#20393

Merged
PhilWindle merged 1 commit intomerge-train/spartanfrom
palla/prover-node-as-subsystem
Feb 16, 2026
Merged

refactor: make prover-node a subsystem of aztec-node#20393
PhilWindle merged 1 commit intomerge-train/spartanfrom
palla/prover-node-as-subsystem

Conversation

@spalladino
Copy link
Copy Markdown
Contributor

@spalladino spalladino commented Feb 11, 2026

Changes the prover-node so, instead of a separate entrypoint, it acts as a subsystem of the aztec-node. This should help eliminate differences between the two.

  • Turns the prover-node from a standalone process into an optional subsystem of the aztec-node, controlled by an enableProverNode config flag
  • When enabled, AztecNodeService.createAndSync calls the prover-node factory passing shared subsystems (archiver, world-state, p2p, epoch cache, blob client, telemetry), so they are created once instead of duplicated
  • The prover-node factory creates only prover-specific sub-subsystems (broker, prover client, publisher factory, epoch monitor, L1 metrics, rollup contract) and returns a self-contained ProverNode
  • Adds owned-resources tracking to ProverNode so it doesn't stop shared resources on shutdown when running as a subsystem
  • Updates all e2e tests to create prover nodes as aztec-node subsystems instead of standalone instances
  • Breaks TxSenderConfig and PublisherConfig into distinct Sequencer and Prover configs, so they don't overlap with each other.

Future work:

  • Remove the p2p client "prover" flavor
  • Rename prover-node to prover-client (following the naming of sequencer-client) and rename the current prover-client
  • Lift node-lib to aztec-node
  • Simplify config (eventually)

🤖 Generated with Claude Code

@spalladino spalladino added the ci-no-fail-fast Sets NO_FAIL_FAST in the CI so the run is not aborted on the first failure label Feb 11, 2026
@spalladino spalladino force-pushed the palla/prover-node-as-subsystem branch 4 times, most recently from 8c85c22 to 44643f1 Compare February 11, 2026 21:16
@danielntmd
Copy link
Copy Markdown
Contributor

Keystore usage looks good ie. merge works correctly, factory usage looks good, and the web3signer fallback failure to use local keys should be the correct behavior).

@spalladino spalladino force-pushed the palla/prover-node-as-subsystem branch from 814005f to f02e3de Compare February 13, 2026 19:12
Comment on lines +131 to +132
// TODO(#20393): Check that the tx collection node sources are properly injected
// See aztecNodeTxProvider
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.

Does this still need to be checked?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Created an issue to follow up later.

Changes the prover-node so, instead of a separate entrypoint, it acts as a subsystem of the aztec-node. This should help eliminate differences between the two.

- Turns the prover-node from a standalone process into an optional subsystem of the aztec-node, controlled by an `enableProverNode` config flag
- When enabled, `AztecNodeService.createAndSync` calls the prover-node factory passing shared subsystems (archiver, world-state, p2p, epoch cache, blob client, telemetry), so they are created once instead of duplicated
- The prover-node factory creates only prover-specific sub-subsystems (broker, prover client, publisher factory, epoch monitor, L1 metrics, rollup contract) and returns a self-contained `ProverNode`
- Adds owned-resources tracking to `ProverNode` so it doesn't stop shared resources on shutdown when running as a subsystem
- Updates all e2e tests to create prover nodes as aztec-node subsystems instead of standalone instances
- Breaks `TxSenderConfig` and `PublisherConfig` into distinct Sequencer and Prover configs, so they don't overlap with each other.

Future work:
- Remove the p2p client "prover" flavor
- Rename prover-node to prover-client (following the naming of sequencer-client) and rename the current prover-client
- Lift node-lib to aztec-node
- Simplify config (eventually)

🤖 Generated with [Claude Code](https://claude.com/claude-code)
@AztecBot AztecBot force-pushed the palla/prover-node-as-subsystem branch from 723aae9 to 80a54b5 Compare February 16, 2026 16:39
@PhilWindle PhilWindle merged commit 8f3a389 into merge-train/spartan Feb 16, 2026
9 checks passed
@PhilWindle PhilWindle deleted the palla/prover-node-as-subsystem branch February 16, 2026 16:39
github-merge-queue Bot pushed a commit that referenced this pull request Feb 17, 2026
BEGIN_COMMIT_OVERRIDE
fix: stringify all bigints in pino-logger (#20303)
chore: ensure consistent HA DB timestamps (#20398)
chore: log L1 trace errors once in debug (#20380)
test(archiver): add missing reorg and prune unit tests (#20441)
feat(ci.aztec-labs.com): CI cost and metrics tracking (#20100)
refactor(ethereum): cleaner initialization for tx delayer in l1txutils
(#20319)
chore(validator): blob upload tests (#20463)
chore: move TXE ports out of Linux ephemeral range (#20475)
fix(node): sync ws before simulating public calls (#20499)
fix(ethereum): check timeout before consuming nonce in L1TxUtils
(#20501)
chore(e2e): reenable block building test (#20504)
refactor(sequencer): rename block-level metrics to checkpoint-level
(#20505)
feat(archiver): return L2 block data to avoid fetching full block
(#20503)
chore(mbps): clean up TODOs for multiple blocks per slot (#20502)
feat(archiver): add l2 tips cache (#20510)
chore(e2e): toggle mbps in e2e tests (#20315)
fix: set PXE sync chain tip to proposed for scenario bot (#20530)
feat: Metrics added to the transaction pool (#20477)
fix(ci): preserve both attempt logs when retrying flaky tests (#20439)
feat: automatically stop node from signalling (#20416)
refactor: add getCheckpointsDataForEpoch and enrich CheckpointData
(#20467)
refactor: make prover-node a subsystem of aztec-node (#20393)
feat: worker thread wallet (#20557)
chore: fix deployments (#20558)
feat: suspend sentinel during escape hatch (#20471)
fix: async blob (#20559)
chore: vendor web3signer (#20570)
fix: Fix checkpoint invalidation test (#20579)
feat: World state history length is now defined in checkpoints (#20566)
fix: async world state cleanups (#20578)
chore: merge next into merge-train/spartan (#20582)
chore: better agent utilisation in proving test (#20562)
feat: (A-302) add reloadKeystore admin RPC endpoint (#20325)
feat: (A-451) error codes for RPC calls (#20560)
feat: (A-514) add API key authentication for admin RPC endpoint (#20411)
fix: increase waitForTx timeout in epochs_invalidate_block test (#20603)
chore: update block proposal/checkpoint proposal panel (#20584)
fix: async dispose() lint rule (#20587)
fix(p2p): fix compress option in file store and enable for tx uploads
(#20605)
chore: fixes for chaos mesh experiments (#20606)
feat(p2p): add download metrics to file store tx source (#20601)
chore: update skill to correct path and add changelog docs for new
endpoints and error codes (#20607)
chore: deflake epoch_mbps (#20609)
END_COMMIT_OVERRIDE
github-actions Bot pushed a commit that referenced this pull request Feb 17, 2026
Changes the prover-node so, instead of a separate entrypoint, it acts as
a subsystem of the aztec-node. This should help eliminate differences
between the two.

- Turns the prover-node from a standalone process into an optional
subsystem of the aztec-node, controlled by an `enableProverNode` config
flag
- When enabled, `AztecNodeService.createAndSync` calls the prover-node
factory passing shared subsystems (archiver, world-state, p2p, epoch
cache, blob client, telemetry), so they are created once instead of
duplicated
- The prover-node factory creates only prover-specific sub-subsystems
(broker, prover client, publisher factory, epoch monitor, L1 metrics,
rollup contract) and returns a self-contained `ProverNode`
- Adds owned-resources tracking to `ProverNode` so it doesn't stop
shared resources on shutdown when running as a subsystem
- Updates all e2e tests to create prover nodes as aztec-node subsystems
instead of standalone instances
- Breaks `TxSenderConfig` and `PublisherConfig` into distinct Sequencer
and Prover configs, so they don't overlap with each other.

Future work:
- Remove the p2p client "prover" flavor
- Rename prover-node to prover-client (following the naming of
sequencer-client) and rename the current prover-client
- Lift node-lib to aztec-node
- Simplify config (eventually)

🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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.

5 participants