Skip to content

refactor(config): drop nested config option, flatten l1Contracts#23143

Merged
spypsy merged 7 commits into
merge-train/spartanfrom
spy/remove-nested-config
May 12, 2026
Merged

refactor(config): drop nested config option, flatten l1Contracts#23143
spypsy merged 7 commits into
merge-train/spartanfrom
spy/remove-nested-config

Conversation

@spypsy
Copy link
Copy Markdown
Member

@spypsy spypsy commented May 11, 2026

  • Drop the nested field from ConfigMapping and the recursive branch in getConfigFromMappings. Env-var groups now have to be expressed as flat keys.
  • Flatten l1Contracts from every config that exposed it (ChainConfig, DataStoreConfig, L1ReaderConfig, BaseSignerConfig, AztecNodeConfig, archiver, etc.); L1 contract addresses are top-level keys everywhere.
  • Centralise the L1 address mapping in ethereum/src/l1_contract_addresses.ts and add pickL1ContractAddressMappings, pickL1ContractAddressesSchema, pickL1ContractAddresses, randomL1ContractAddresses so other configs can compose the addresses they need without reintroducing nesting.

Fixes A-986

…op level

Removes the `nested` field from `ConfigMapping` and flattens the
`l1Contracts` sub-object on every config that exposed it (chain config,
data store, L1 reader, HA signer, aztec-node, etc.). L1 contract
addresses are now top-level keys built from a single mapping in
`l1_contract_addresses.ts`, with helpers `pickL1ContractAddressMappings`,
`pickL1ContractAddressesSchema`, `pickL1ContractAddresses`, and
`randomL1ContractAddresses` for reuse.
Comment on lines +135 to +137
for (const key of REQUIRED_L1_CONTRACT_ADDRESS_KEYS) {
result[key] = config[key];
}
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.

Should this throw an error if config[key] is undefined?

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.

Oh I guess the fn declaration forces the shape to be correct.

// L1 contracts are not mutable via admin updates.
export type AztecNodeAdminConfig = Omit<ValidatorClientFullConfig, 'l1Contracts'> &
// Rollup address is not mutable via admin updates.
export type AztecNodeAdminConfig = Omit<ValidatorClientFullConfig, 'rollupAddress'> &
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.

Shouldn't this be all L1 contract addresses?

@spypsy spypsy added ci-full Run all master checks. and removed ci-full-no-test-cache labels May 11, 2026
@spypsy spypsy enabled auto-merge (squash) May 12, 2026 09:13
@spypsy spypsy merged commit cf63324 into merge-train/spartan May 12, 2026
14 checks passed
@spypsy spypsy deleted the spy/remove-nested-config branch May 12, 2026 09:21
rangozd pushed a commit to rangozd/aztec-packages that referenced this pull request May 16, 2026
BEGIN_COMMIT_OVERRIDE
fix(test): warp L1 forward when proposer scan hits EpochNotStable
(AztecProtocol#22967)
test(e2e): fail epochs tests on proposer-rollup-check-failed (AztecProtocol#22965)
fix: grafana switch to aztec_status="proposed" (AztecProtocol#22978)
chore: update benchmark scraper (AztecProtocol#22984)
test(e2e): migrate simple epoch tests to pipelining (AztecProtocol#22973)
chore: remove top-level yarn.lock (AztecProtocol#22987)
refactor(archiver)!: unify L2BlockSource checkpoint lookups via query
objects (AztecProtocol#22933)
fix(sequencer): bounded sweep instead of event scan for governance
proposal check (AztecProtocol#22989)
fix(docs): allow webapp-tutorial yarn install to populate empty lockfile
in CI (AztecProtocol#23000)
test(e2e): enable pipelining in l1-reorgs and mbps redistribution tests
(AztecProtocol#23009)
fix(archiver): restore pending block height metric under pipelining
(AztecProtocol#22994)
chore(p2p): remove skipped validation result option (AztecProtocol#23034)
refactor(p2p)!: remove slow tx collection flow (AztecProtocol#22878)
chore(spartan): add next-net-clone environment config (AztecProtocol#22995)
chore(sequencer): add context to proposer-rollup-check-failed logs
(AztecProtocol#23071)
test(e2e): wait for archiver sync before asserting pipelining (AztecProtocol#22997)
refactor(node-rpc)!: remove deprecated AztecNode methods and
L2BlockSource tip helpers (AztecProtocol#22934)
feat(p2p): detect and track announce IP changes at runtime (AztecProtocol#22405)
test: mark tx_stats_bench 10 TPS as flake-retryable on
merge-train/spartan (AztecProtocol#23083)
fix(sequencer): bind vote-only multicalls to target slot under
pipelining (AztecProtocol#23090)
feat(sequencer): build optimistically across pruning epoch boundary
(AztecProtocol#23056)
fix(sequencer): use chainTipsOverride.pending for log context (AztecProtocol#23098)
test(e2e): relax post-boundary slot assertion in
epochs_proof_at_boundary (AztecProtocol#23108)
fix(bb-prover): pool long-lived bb verifier processes instead of
spawning per-call (AztecProtocol#23093)
fix(sequencer): anchor fee asset price modifier to predicted parent
(AztecProtocol#23113)
chore: error log when L1 head timestamp drifts (AztecProtocol#22947)
fix(sequencer): override full parent checkpoint cell in pipelined
simulation (AztecProtocol#23073)
test(e2e): enable pipelining on missed l1 slot test (AztecProtocol#23068)
fix: more robust metrics reporting in IRM monitor (AztecProtocol#23038)
fix: preserve LMDB slashing protection (AztecProtocol#23145)
test(e2e): enable pipelining on p2p tests (AztecProtocol#23070)
fix(archiver): move L2 tips cache refresh out of write transactions
(AztecProtocol#23110)
test(e2e): fix data_withholding_slash flake by freezing L1 across
restart (AztecProtocol#23162)
fix(validator): include proposed checkpoint out-hashes when validating
checkpoint proposals (AztecProtocol#23119)
refactor(config): drop nested config option, flatten l1Contracts
(AztecProtocol#23143)
test(e2e): bump bash TIMEOUT for e2e_p2p/add_rollup to match jest 20m
(AztecProtocol#23177)
fix(p2p): chunk archive of mined txs on block finalization (A-969)
(AztecProtocol#23085)
fix(p2p): stream tx pool hydration to bound startup memory (A-968)
(AztecProtocol#23086)
chore: remove orphan --archiver flag usages from start invocations
(AztecProtocol#23186)
feat(ci): daily merge-train/spartan stale-PR notifier (AztecProtocol#23189)
fix: preserve contract artifact permissions (AztecProtocol#23174)
fix(ci3): accept slashes in /list/&lt;path:key&gt; for merge-train
history (AztecProtocol#23160)
feat(ci): route merge-train/spartan flake notifications to
#team-alpha-ci (AztecProtocol#23219)
fix(cheat-codes): wait for post-warp L2 block in warpL2TimeAtLeastTo
(AztecProtocol#23213)
feat: slash attesters signing over bad checkpoints (AztecProtocol#23180)
refactor(prover-client): split orchestrator into sub-tree + top-tree
pair (AztecProtocol#22996)
fix(srs): retry transient CRS HTTP downloads with exponential backoff
(AztecProtocol#23244)
refactor(p2p): remove old reqresp mode (AztecProtocol#23158)
docs(sequencer-client): rewrite top-level and timing READMEs (AztecProtocol#23149)
fix(aztec-node): include upcoming checkpoint's L1 to L2 messages in
simulatePublicCalls (AztecProtocol#23163)
END_COMMIT_OVERRIDE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-full Run all master checks.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants