From 106d009ff46afd1be803236d7ee79b51a4f64510 Mon Sep 17 00:00:00 2001 From: AztecBot Date: Mon, 21 Sep 2026 21:44:47 +0000 Subject: [PATCH 1/3] docs(l1): state that the generic deploy scripts are the test/testnet deployer, not the mainnet path --- CLAUDE.md | 2 +- l1-contracts/script/deploy/DeployAztecL1Contracts.s.sol | 7 +++++++ l1-contracts/script/deploy/DeployRollupForUpgrade.s.sol | 8 ++++++++ l1-contracts/script/deploy/DeployRollupLib.sol | 5 +++++ l1-contracts/script/deploy/RollupConfiguration.sol | 8 ++++++++ 5 files changed, 29 insertions(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index a114dc02106..505eb3b84ca 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -9,7 +9,7 @@ All paths below are relative to the git root. When working inside a component, a `avm-transpiler/` transpiles Noir bytecode to AVM bytecode (Rust). `noir/` is the Noir compiler, a git submodule pointing to noir-lang/noir. `noir-projects/fnd/` holds the protocol circuits and protocol contracts written in Noir. -`l1-contracts/` holds the Solidity L1 rollup contracts (a Foundry project). `bb-pilcom/` is the PIL compiler for AVM relation codegen. `ci3/` contains CI infrastructure scripts. +`l1-contracts/` holds the Solidity L1 rollup contracts (a Foundry project). `l1-contracts/script/deploy/` is the env-driven deployer for tests, spartan/CLI and testnets; mainnet rollup upgrades use bespoke pinned scripts (`DeployRollupForUpgradeV.s.sol`: V5 on the `v5-next` branch, V6), so its defaults are not mainnet configuration and findings against them are not mainnet findings. `bb-pilcom/` is the PIL compiler for AVM relation codegen. `ci3/` contains CI infrastructure scripts. diff --git a/l1-contracts/script/deploy/DeployAztecL1Contracts.s.sol b/l1-contracts/script/deploy/DeployAztecL1Contracts.s.sol index 97383d84f0d..d338b032425 100644 --- a/l1-contracts/script/deploy/DeployAztecL1Contracts.s.sol +++ b/l1-contracts/script/deploy/DeployAztecL1Contracts.s.sol @@ -64,6 +64,13 @@ struct DeployAztecL1ContractsOutput { * @author Aztec Labs * @notice Deploy Aztec L1 contracts. Configuration is read from environment variables. * See DeploymentConfiguration and RollupConfiguration for environment variables supported. + * + * This is the env-driven deployer for tests, the spartan/CLI tooling and testnets: it deploys a + * complete L1 set from scratch, including test-only assets and handlers. It is not how mainnet was + * deployed: mainnet's one-off contracts (token, GSE, Registry, Governance, GovernanceProposer, + * ProtocolTreasury, CoinIssuer) came from the `AztecProtocol/ignition-contracts` deployment, and each + * mainnet rollup version is deployed by a bespoke pinned `DeployRollupForUpgradeV.s.sol`. Its + * defaults are test-network conveniences, not mainnet configuration. */ contract DeployAztecL1Contracts is Script, Test { /// @notice All deployed contract addresses diff --git a/l1-contracts/script/deploy/DeployRollupForUpgrade.s.sol b/l1-contracts/script/deploy/DeployRollupForUpgrade.s.sol index 97f1ea3ac2c..d18563debe3 100644 --- a/l1-contracts/script/deploy/DeployRollupForUpgrade.s.sol +++ b/l1-contracts/script/deploy/DeployRollupForUpgrade.s.sol @@ -34,6 +34,14 @@ import {IRollupConfiguration, RollupConfiguration} from "./RollupConfiguration.s /// GenesisState supplied via environment variables; no archive, checkpoint, message or fee-juice state is /// carried over from the canonical rollup, which stays registered under its own version. /// +/// This is the env-driven deployer for tests, the spartan/CLI tooling and testnets. Mainnet upgrades +/// do not run it: each mainnet rollup version is deployed by a bespoke pinned script, +/// `DeployRollupForUpgradeV.s.sol`, that hard-codes and re-verifies the configuration of that one +/// deployment (v5: `DeployRollupForUpgradeV5.s.sol` on the `v5-next` branch; v6: +/// `DeployRollupForUpgradeV6.s.sol`). The environment defaults consumed here and in +/// `RollupConfiguration` (a mock verifier unless `REAL_VERIFIER=true`, zero genesis roots) are +/// test-network conveniences, not mainnet configuration. +/// /// For initial L1 deployment, use DeployAztecL1Contracts.s.sol instead. /// /// See RollupConfiguration.sol for relevant environment variables. diff --git a/l1-contracts/script/deploy/DeployRollupLib.sol b/l1-contracts/script/deploy/DeployRollupLib.sol index d6347408a21..3c8fe2d54e9 100644 --- a/l1-contracts/script/deploy/DeployRollupLib.sol +++ b/l1-contracts/script/deploy/DeployRollupLib.sol @@ -45,6 +45,11 @@ struct RollupAddressOutput { /// @title DeployRollupLib /// @author Aztec Labs /// @notice Library for deploying rollup contracts. Used by DeployAztecL1Contracts and DeployRollupForUpgrade. +/// @dev Serves the env-driven deployer for tests, the spartan/CLI tooling and testnets. Mainnet rollup +/// versions are deployed by bespoke pinned `DeployRollupForUpgradeV.s.sol` scripts (v5 on the +/// `v5-next` branch, v6) that construct the rollup directly with hard-coded configuration; the +/// `IRollupConfiguration` defaults honoured here, such as the mock verifier when `REAL_VERIFIER` is +/// unset, are test-network conveniences, not mainnet configuration. library DeployRollupLib { function deployRollup(RollupAddressInput memory input, IRollupConfiguration config) internal diff --git a/l1-contracts/script/deploy/RollupConfiguration.sol b/l1-contracts/script/deploy/RollupConfiguration.sol index f6730887098..b713b57cb15 100644 --- a/l1-contracts/script/deploy/RollupConfiguration.sol +++ b/l1-contracts/script/deploy/RollupConfiguration.sol @@ -27,6 +27,14 @@ interface IRollupConfiguration { function parseValidators() external view returns (CheatDepositArgs[] memory); } +/// @title RollupConfiguration +/// @author Aztec Labs +/// @notice Reads rollup deployment configuration from environment variables for the env-driven deployer +/// used by tests, the spartan/CLI tooling and testnets (`DeployAztecL1Contracts`, `DeployRollupForUpgrade`). +/// @dev Mainnet rollup versions are deployed by bespoke pinned `DeployRollupForUpgradeV.s.sol` scripts +/// (v5 on the `v5-next` branch, v6) that hard-code their configuration instead of reading it here. The +/// defaults below (a mock verifier unless `REAL_VERIFIER=true`, zero genesis roots, `NETWORK=local`) are +/// test-network conveniences, not mainnet configuration. contract RollupConfiguration is IRollupConfiguration, Test { using stdJson for string; using SafeCast for uint256; From 566ae4f627501388d37e712a011ddb19b33ad0c1 Mon Sep 17 00:00:00 2001 From: AztecBot Date: Mon, 21 Sep 2026 22:15:59 +0000 Subject: [PATCH 2/3] docs(l1): list the pinned mainnet scripts as examples --- CLAUDE.md | 2 +- l1-contracts/script/deploy/DeployAztecL1Contracts.s.sol | 6 ++++-- l1-contracts/script/deploy/DeployRollupForUpgrade.s.sol | 6 ++++-- l1-contracts/script/deploy/DeployRollupLib.sol | 7 +++++-- l1-contracts/script/deploy/RollupConfiguration.sol | 6 ++++-- 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 505eb3b84ca..4aa4bdc5802 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -9,7 +9,7 @@ All paths below are relative to the git root. When working inside a component, a `avm-transpiler/` transpiles Noir bytecode to AVM bytecode (Rust). `noir/` is the Noir compiler, a git submodule pointing to noir-lang/noir. `noir-projects/fnd/` holds the protocol circuits and protocol contracts written in Noir. -`l1-contracts/` holds the Solidity L1 rollup contracts (a Foundry project). `l1-contracts/script/deploy/` is the env-driven deployer for tests, spartan/CLI and testnets; mainnet rollup upgrades use bespoke pinned scripts (`DeployRollupForUpgradeV.s.sol`: V5 on the `v5-next` branch, V6), so its defaults are not mainnet configuration and findings against them are not mainnet findings. `bb-pilcom/` is the PIL compiler for AVM relation codegen. `ci3/` contains CI infrastructure scripts. +`l1-contracts/` holds the Solidity L1 rollup contracts (a Foundry project). `l1-contracts/script/deploy/` is the env-driven deployer for tests, spartan/CLI and testnets; mainnet rollup upgrades use bespoke pinned scripts (`DeployRollupForUpgradeV.s.sol`, for example `DeployRollupForUpgradeV5.s.sol` on the `v5-next` branch and `DeployRollupForUpgradeV6.s.sol`), so its defaults are not mainnet configuration and findings against them are not mainnet findings. `bb-pilcom/` is the PIL compiler for AVM relation codegen. `ci3/` contains CI infrastructure scripts. diff --git a/l1-contracts/script/deploy/DeployAztecL1Contracts.s.sol b/l1-contracts/script/deploy/DeployAztecL1Contracts.s.sol index d338b032425..a04069f3376 100644 --- a/l1-contracts/script/deploy/DeployAztecL1Contracts.s.sol +++ b/l1-contracts/script/deploy/DeployAztecL1Contracts.s.sol @@ -69,8 +69,10 @@ struct DeployAztecL1ContractsOutput { * complete L1 set from scratch, including test-only assets and handlers. It is not how mainnet was * deployed: mainnet's one-off contracts (token, GSE, Registry, Governance, GovernanceProposer, * ProtocolTreasury, CoinIssuer) came from the `AztecProtocol/ignition-contracts` deployment, and each - * mainnet rollup version is deployed by a bespoke pinned `DeployRollupForUpgradeV.s.sol`. Its - * defaults are test-network conveniences, not mainnet configuration. + * mainnet rollup version is deployed by a bespoke pinned `DeployRollupForUpgradeV.s.sol`. Examples: + * - v5: `DeployRollupForUpgradeV5.s.sol` on the `v5-next` branch + * - v6: `DeployRollupForUpgradeV6.s.sol` + * This script's defaults are test-network conveniences, not mainnet configuration. */ contract DeployAztecL1Contracts is Script, Test { /// @notice All deployed contract addresses diff --git a/l1-contracts/script/deploy/DeployRollupForUpgrade.s.sol b/l1-contracts/script/deploy/DeployRollupForUpgrade.s.sol index d18563debe3..2546d1066b3 100644 --- a/l1-contracts/script/deploy/DeployRollupForUpgrade.s.sol +++ b/l1-contracts/script/deploy/DeployRollupForUpgrade.s.sol @@ -37,8 +37,10 @@ import {IRollupConfiguration, RollupConfiguration} from "./RollupConfiguration.s /// This is the env-driven deployer for tests, the spartan/CLI tooling and testnets. Mainnet upgrades /// do not run it: each mainnet rollup version is deployed by a bespoke pinned script, /// `DeployRollupForUpgradeV.s.sol`, that hard-codes and re-verifies the configuration of that one -/// deployment (v5: `DeployRollupForUpgradeV5.s.sol` on the `v5-next` branch; v6: -/// `DeployRollupForUpgradeV6.s.sol`). The environment defaults consumed here and in +/// deployment. Examples: +/// - v5: `DeployRollupForUpgradeV5.s.sol` on the `v5-next` branch +/// - v6: `DeployRollupForUpgradeV6.s.sol` +/// The environment defaults consumed here and in /// `RollupConfiguration` (a mock verifier unless `REAL_VERIFIER=true`, zero genesis roots) are /// test-network conveniences, not mainnet configuration. /// diff --git a/l1-contracts/script/deploy/DeployRollupLib.sol b/l1-contracts/script/deploy/DeployRollupLib.sol index 3c8fe2d54e9..a5aecaa3bd0 100644 --- a/l1-contracts/script/deploy/DeployRollupLib.sol +++ b/l1-contracts/script/deploy/DeployRollupLib.sol @@ -46,8 +46,11 @@ struct RollupAddressOutput { /// @author Aztec Labs /// @notice Library for deploying rollup contracts. Used by DeployAztecL1Contracts and DeployRollupForUpgrade. /// @dev Serves the env-driven deployer for tests, the spartan/CLI tooling and testnets. Mainnet rollup -/// versions are deployed by bespoke pinned `DeployRollupForUpgradeV.s.sol` scripts (v5 on the -/// `v5-next` branch, v6) that construct the rollup directly with hard-coded configuration; the +/// versions are deployed by bespoke pinned `DeployRollupForUpgradeV.s.sol` scripts that construct the +/// rollup directly with hard-coded configuration. Examples: +/// - v5: `DeployRollupForUpgradeV5.s.sol` on the `v5-next` branch +/// - v6: `DeployRollupForUpgradeV6.s.sol` +/// The /// `IRollupConfiguration` defaults honoured here, such as the mock verifier when `REAL_VERIFIER` is /// unset, are test-network conveniences, not mainnet configuration. library DeployRollupLib { diff --git a/l1-contracts/script/deploy/RollupConfiguration.sol b/l1-contracts/script/deploy/RollupConfiguration.sol index b713b57cb15..0658fb200d7 100644 --- a/l1-contracts/script/deploy/RollupConfiguration.sol +++ b/l1-contracts/script/deploy/RollupConfiguration.sol @@ -32,8 +32,10 @@ interface IRollupConfiguration { /// @notice Reads rollup deployment configuration from environment variables for the env-driven deployer /// used by tests, the spartan/CLI tooling and testnets (`DeployAztecL1Contracts`, `DeployRollupForUpgrade`). /// @dev Mainnet rollup versions are deployed by bespoke pinned `DeployRollupForUpgradeV.s.sol` scripts -/// (v5 on the `v5-next` branch, v6) that hard-code their configuration instead of reading it here. The -/// defaults below (a mock verifier unless `REAL_VERIFIER=true`, zero genesis roots, `NETWORK=local`) are +/// that hard-code their configuration instead of reading it here. Examples: +/// - v5: `DeployRollupForUpgradeV5.s.sol` on the `v5-next` branch +/// - v6: `DeployRollupForUpgradeV6.s.sol` +/// The defaults below (a mock verifier unless `REAL_VERIFIER=true`, zero genesis roots, `NETWORK=local`) are /// test-network conveniences, not mainnet configuration. contract RollupConfiguration is IRollupConfiguration, Test { using stdJson for string; From 6ac655dad1d34ef38ba37403c2ab88fcb5586f0c Mon Sep 17 00:00:00 2001 From: AztecBot Date: Mon, 21 Sep 2026 22:19:24 +0000 Subject: [PATCH 3/3] docs(l1): keep the deployer comments independent of the env defaults --- l1-contracts/script/deploy/DeployRollupForUpgrade.s.sol | 5 ++--- l1-contracts/script/deploy/DeployRollupLib.sol | 4 +--- l1-contracts/script/deploy/RollupConfiguration.sol | 3 +-- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/l1-contracts/script/deploy/DeployRollupForUpgrade.s.sol b/l1-contracts/script/deploy/DeployRollupForUpgrade.s.sol index 2546d1066b3..963a8256d14 100644 --- a/l1-contracts/script/deploy/DeployRollupForUpgrade.s.sol +++ b/l1-contracts/script/deploy/DeployRollupForUpgrade.s.sol @@ -40,9 +40,8 @@ import {IRollupConfiguration, RollupConfiguration} from "./RollupConfiguration.s /// deployment. Examples: /// - v5: `DeployRollupForUpgradeV5.s.sol` on the `v5-next` branch /// - v6: `DeployRollupForUpgradeV6.s.sol` -/// The environment defaults consumed here and in -/// `RollupConfiguration` (a mock verifier unless `REAL_VERIFIER=true`, zero genesis roots) are -/// test-network conveniences, not mainnet configuration. +/// The environment-driven inputs consumed here and in `RollupConfiguration` describe a test network, +/// not mainnet. /// /// For initial L1 deployment, use DeployAztecL1Contracts.s.sol instead. /// diff --git a/l1-contracts/script/deploy/DeployRollupLib.sol b/l1-contracts/script/deploy/DeployRollupLib.sol index a5aecaa3bd0..bc1ad476810 100644 --- a/l1-contracts/script/deploy/DeployRollupLib.sol +++ b/l1-contracts/script/deploy/DeployRollupLib.sol @@ -50,9 +50,7 @@ struct RollupAddressOutput { /// rollup directly with hard-coded configuration. Examples: /// - v5: `DeployRollupForUpgradeV5.s.sol` on the `v5-next` branch /// - v6: `DeployRollupForUpgradeV6.s.sol` -/// The -/// `IRollupConfiguration` defaults honoured here, such as the mock verifier when `REAL_VERIFIER` is -/// unset, are test-network conveniences, not mainnet configuration. +/// The `IRollupConfiguration` values honoured here describe a test network, not mainnet. library DeployRollupLib { function deployRollup(RollupAddressInput memory input, IRollupConfiguration config) internal diff --git a/l1-contracts/script/deploy/RollupConfiguration.sol b/l1-contracts/script/deploy/RollupConfiguration.sol index 0658fb200d7..bd167c8f3cf 100644 --- a/l1-contracts/script/deploy/RollupConfiguration.sol +++ b/l1-contracts/script/deploy/RollupConfiguration.sol @@ -35,8 +35,7 @@ interface IRollupConfiguration { /// that hard-code their configuration instead of reading it here. Examples: /// - v5: `DeployRollupForUpgradeV5.s.sol` on the `v5-next` branch /// - v6: `DeployRollupForUpgradeV6.s.sol` -/// The defaults below (a mock verifier unless `REAL_VERIFIER=true`, zero genesis roots, `NETWORK=local`) are -/// test-network conveniences, not mainnet configuration. +/// The environment variables read below describe a test network, not mainnet. contract RollupConfiguration is IRollupConfiguration, Test { using stdJson for string; using SafeCast for uint256;