Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion l1-contracts/.rebuild_patterns
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
^l1-contracts/src/.*\.sol$
^l1-contracts/test/.*\.sol$
^l1-contracts/script/.*\.sol$
^l1-contracts/bootstrap.sh
^l1-contracts/foundry.toml
^l1-contracts/foundry.toml
14 changes: 6 additions & 8 deletions l1-contracts/script/deploy/DeploymentConfiguration.sol
Original file line number Diff line number Diff line change
Expand Up @@ -114,16 +114,14 @@ contract DeploymentConfiguration is IDeploymentConfiguration, Test {
});
} else if (h == keccak256("testnet")) {
return GovernanceConfiguration({
proposeConfig: ProposeWithLockConfiguration({
lockDelay: Timestamp.wrap(10 * 365 * 24 * 60 * 60), lockAmount: 1250 * 200_000e18
}),
votingDelay: Timestamp.wrap(12 * 60 * 60),
votingDuration: Timestamp.wrap(1 * 24 * 60 * 60),
executionDelay: Timestamp.wrap(12 * 60 * 60),
gracePeriod: Timestamp.wrap(1 * 24 * 60 * 60),
proposeConfig: ProposeWithLockConfiguration({lockDelay: Timestamp.wrap(90 days), lockAmount: 258_750_000e18}),
votingDelay: Timestamp.wrap(12 hours),
votingDuration: Timestamp.wrap(1 days),
executionDelay: Timestamp.wrap(12 hours),
gracePeriod: Timestamp.wrap(1 days),
quorum: 0.2e18,
requiredYeaMargin: 0.1e18,
minimumVotes: 100 * 200_000e18
minimumVotes: 48 * 200_000e18
});
} else if (h == keccak256("staging-ignition")) {
return GovernanceConfiguration({
Expand Down
67 changes: 12 additions & 55 deletions l1-contracts/script/deploy/RollupConfiguration.sol
Original file line number Diff line number Diff line change
Expand Up @@ -67,18 +67,12 @@ contract RollupConfiguration is IRollupConfiguration, Test {
});
}

function getRewardConfiguration(IRewardDistributor _rewardDistributor) external view returns (RewardConfig memory) {
// Default: sequencerBps=8000, checkpointReward=500e18
// Mainnet: sequencerBps=7000, checkpointReward=400e18
function getRewardConfiguration(IRewardDistributor _rewardDistributor) external pure returns (RewardConfig memory) {
uint16 sequencerBps;
uint96 checkpointReward;
if (keccak256(bytes(networkName)) == keccak256("mainnet")) {
sequencerBps = 7000;
checkpointReward = 400e18;
} else {
sequencerBps = 8000;
checkpointReward = 500e18;
}
sequencerBps = 7000;
checkpointReward = 400e18;

return RewardConfig({
rewardDistributor: _rewardDistributor,
sequencerBps: Bps.wrap(sequencerBps),
Expand All @@ -94,50 +88,13 @@ contract RollupConfiguration is IRollupConfiguration, Test {
}

function getStakingQueueConfiguration() external view returns (StakingQueueConfig memory) {
bytes32 h = keccak256(bytes(networkName));

if (h == keccak256("staging-public")) {
return StakingQueueConfig({
bootstrapValidatorSetSize: 48,
bootstrapFlushSize: 48,
normalFlushSizeMin: 1,
normalFlushSizeQuotient: 2475,
maxQueueFlushSize: 32
});
} else if (h == keccak256("testnet")) {
return StakingQueueConfig({
bootstrapValidatorSetSize: 256,
bootstrapFlushSize: 256,
normalFlushSizeMin: 4,
normalFlushSizeQuotient: 2048,
maxQueueFlushSize: 8
});
} else if (h == keccak256("staging-ignition")) {
return StakingQueueConfig({
bootstrapValidatorSetSize: 48,
bootstrapFlushSize: 48,
normalFlushSizeMin: 1,
normalFlushSizeQuotient: 2048,
maxQueueFlushSize: 24
});
} else if (h == keccak256("mainnet")) {
return StakingQueueConfig({
bootstrapValidatorSetSize: 1000,
bootstrapFlushSize: 1000,
normalFlushSizeMin: 1,
normalFlushSizeQuotient: 2048,
maxQueueFlushSize: 8
});
} else {
// local, devnet, next-net, etc.
return StakingQueueConfig({
bootstrapValidatorSetSize: 0,
bootstrapFlushSize: 0,
normalFlushSizeMin: 48,
normalFlushSizeQuotient: 2,
maxQueueFlushSize: 48
});
}
return StakingQueueConfig({
bootstrapValidatorSetSize: vm.envOr("AZTEC_ENTRY_QUEUE_BOOTSTRAP_VALIDATOR_SET_SIZE", uint256(0)),
bootstrapFlushSize: vm.envOr("AZTEC_ENTRY_QUEUE_BOOTSTRAP_FLUSH_SIZE", uint256(0)),
normalFlushSizeMin: vm.envOr("AZTEC_ENTRY_QUEUE_FLUSH_SIZE_MIN", uint256(48)),
normalFlushSizeQuotient: vm.envOr("AZTEC_ENTRY_QUEUE_FLUSH_SIZE_QUOTIENT", uint256(2)),
maxQueueFlushSize: vm.envOr("AZTEC_ENTRY_QUEUE_MAX_FLUSH_SIZE", uint256(48))
});
}

function getRollupConfiguration(IRewardDistributor _rewardDistributor)
Expand All @@ -161,7 +118,7 @@ contract RollupConfiguration is IRollupConfiguration, Test {
lagInEpochsForValidatorSet: vm.envOr("AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET", uint256(2)),
lagInEpochsForRandao: vm.envOr("AZTEC_LAG_IN_EPOCHS_FOR_RANDAO", uint256(2)),
aztecProofSubmissionEpochs: vm.envOr("AZTEC_PROOF_SUBMISSION_EPOCHS", uint256(1)),
localEjectionThreshold: vm.envOr("AZTEC_LOCAL_EJECTION_THRESHOLD", uint256(98e18)),
localEjectionThreshold: vm.envOr("AZTEC_LOCAL_EJECTION_THRESHOLD", uint256(198e18)),
slashingQuorum: slashingQuorum,
slashingRoundSize: slashingRoundSize,
slashingLifetimeInRounds: vm.envOr("AZTEC_SLASHING_LIFETIME_IN_ROUNDS", uint256(5)),
Expand Down
28 changes: 27 additions & 1 deletion spartan/environments/testnet.env
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,32 @@ SEQ_MIN_TX_PER_BLOCK=0
SEQ_MAX_TX_PER_BLOCK=8
NETWORK=testnet

REAL_VERIFIER=true
AZTEC_ENTRY_QUEUE_BOOTSTRAP_VALIDATOR_SET_SIZE=48
AZTEC_ENTRY_QUEUE_BOOTSTRAP_FLUSH_SIZE=48
AZTEC_ENTRY_QUEUE_FLUSH_SIZE_MIN=10
AZTEC_ENTRY_QUEUE_FLUSH_SIZE_QUOTIENT=400
AZTEC_ENTRY_QUEUE_MAX_FLUSH_SIZE=10
AZTEC_SLOT_DURATION=72
AZTEC_EPOCH_DURATION=32
AZTEC_TARGET_COMMITTEE_SIZE=48
AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET=2
AZTEC_LAG_IN_EPOCHS_FOR_RANDAO=2
AZTEC_PROOF_SUBMISSION_EPOCHS=1
AZTEC_LOCAL_EJECTION_THRESHOLD=199000e18
AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS=2
AZTEC_SLASHING_QUORUM=33
AZTEC_SLASHING_OFFSET_IN_ROUNDS=2
AZTEC_SLASHING_LIFETIME_IN_ROUNDS=5
AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS=2
AZTEC_SLASHING_VETOER=\"0xdfe19Da6a717b7088621d8bBB66be59F2d78e924\"
AZTEC_MANA_TARGET=150000000
AZTEC_ACTIVATION_THRESHOLD=200000e18
AZTEC_EJECTION_THRESHOLD=100000e18
AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE=100
AZTEC_GOVERNANCE_PROPOSER_QUORUM=60


ETHEREUM_CHAIN_ID=11155111
ETHEREUM_RPC_URLS=REPLACE_WITH_GCP_SECRET
ETHEREUM_CONSENSUS_HOST_URLS=REPLACE_WITH_GCP_SECRET
Expand Down Expand Up @@ -38,7 +64,7 @@ RPC_INGRESS_SSL_CERT_NAME=testnet-rpc-cert


VALIDATOR_REPLICAS=4
VALIDATORS_PER_NODE=12
VALIDATORS_PER_NODE=20
PUBLISHERS_PER_VALIDATOR_KEY=2
VALIDATOR_PUBLISHER_MNEMONIC_START_INDEX=5000

Expand Down
1 change: 1 addition & 0 deletions spartan/scripts/deploy_network.sh
Original file line number Diff line number Diff line change
Expand Up @@ -325,6 +325,7 @@ AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE = ${AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE:-n
AZTEC_MANA_TARGET = ${AZTEC_MANA_TARGET:-null}
AZTEC_PROVING_COST_PER_MANA = ${AZTEC_PROVING_COST_PER_MANA:-null}
AZTEC_EXIT_DELAY_SECONDS = ${AZTEC_EXIT_DELAY_SECONDS:-null}
ETHERSCAN_API_KEY = "${ETHERSCAN_API_KEY:-null}"
NETWORK = ${NETWORK_TF}
JOB_NAME = "deploy-rollup-contracts"
JOB_BACKOFF_LIMIT = 3
Expand Down
60 changes: 29 additions & 31 deletions spartan/terraform/deploy-rollup-contracts/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -35,37 +35,35 @@ locals {

# Environment variables for the container (omit keys with null values)
# if NETWORK is set, ignore the other env vars
env_vars = var.NETWORK != null ? {
NETWORK = var.NETWORK
LOG_LEVEL = "debug"
BOOTSTRAP_NODES = "asdf"
} : { for k, v in {
AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET = var.AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET
AZTEC_LAG_IN_EPOCHS_FOR_RANDAO = var.AZTEC_LAG_IN_EPOCHS_FOR_RANDAO
AZTEC_SLOT_DURATION = var.AZTEC_SLOT_DURATION
AZTEC_EPOCH_DURATION = var.AZTEC_EPOCH_DURATION
AZTEC_TARGET_COMMITTEE_SIZE = var.AZTEC_TARGET_COMMITTEE_SIZE
AZTEC_PROOF_SUBMISSION_EPOCHS = var.AZTEC_PROOF_SUBMISSION_EPOCHS
AZTEC_ACTIVATION_THRESHOLD = var.AZTEC_ACTIVATION_THRESHOLD
AZTEC_EJECTION_THRESHOLD = var.AZTEC_EJECTION_THRESHOLD
AZTEC_LOCAL_EJECTION_THRESHOLD = var.AZTEC_LOCAL_EJECTION_THRESHOLD
AZTEC_SLASHING_QUORUM = var.AZTEC_SLASHING_QUORUM
AZTEC_SLASHING_ROUND_SIZE = var.AZTEC_SLASHING_ROUND_SIZE
AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS = var.AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS
AZTEC_SLASHING_LIFETIME_IN_ROUNDS = var.AZTEC_SLASHING_LIFETIME_IN_ROUNDS
AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS = var.AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS
AZTEC_SLASHING_VETOER = var.AZTEC_SLASHING_VETOER
AZTEC_SLASHING_OFFSET_IN_ROUNDS = var.AZTEC_SLASHING_OFFSET_IN_ROUNDS
AZTEC_SLASH_AMOUNT_SMALL = var.AZTEC_SLASH_AMOUNT_SMALL
AZTEC_SLASH_AMOUNT_MEDIUM = var.AZTEC_SLASH_AMOUNT_MEDIUM
AZTEC_SLASH_AMOUNT_LARGE = var.AZTEC_SLASH_AMOUNT_LARGE
AZTEC_SLASHER_FLAVOR = var.AZTEC_SLASHER_FLAVOR
AZTEC_GOVERNANCE_PROPOSER_QUORUM = var.AZTEC_GOVERNANCE_PROPOSER_QUORUM
AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE = var.AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE
AZTEC_MANA_TARGET = var.AZTEC_MANA_TARGET
AZTEC_PROVING_COST_PER_MANA = var.AZTEC_PROVING_COST_PER_MANA
AZTEC_EXIT_DELAY_SECONDS = var.AZTEC_EXIT_DELAY_SECONDS
LOG_LEVEL = "debug"
env_vars = { for k, v in {
NETWORK = var.NETWORK
AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET = var.AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET
AZTEC_LAG_IN_EPOCHS_FOR_RANDAO = var.AZTEC_LAG_IN_EPOCHS_FOR_RANDAO
AZTEC_SLOT_DURATION = var.AZTEC_SLOT_DURATION
AZTEC_EPOCH_DURATION = var.AZTEC_EPOCH_DURATION
AZTEC_TARGET_COMMITTEE_SIZE = var.AZTEC_TARGET_COMMITTEE_SIZE
AZTEC_PROOF_SUBMISSION_EPOCHS = var.AZTEC_PROOF_SUBMISSION_EPOCHS
AZTEC_ACTIVATION_THRESHOLD = var.AZTEC_ACTIVATION_THRESHOLD
AZTEC_EJECTION_THRESHOLD = var.AZTEC_EJECTION_THRESHOLD
AZTEC_LOCAL_EJECTION_THRESHOLD = var.AZTEC_LOCAL_EJECTION_THRESHOLD
AZTEC_SLASHING_QUORUM = var.AZTEC_SLASHING_QUORUM
AZTEC_SLASHING_ROUND_SIZE = var.AZTEC_SLASHING_ROUND_SIZE
AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS = var.AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS
AZTEC_SLASHING_LIFETIME_IN_ROUNDS = var.AZTEC_SLASHING_LIFETIME_IN_ROUNDS
AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS = var.AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS
AZTEC_SLASHING_VETOER = var.AZTEC_SLASHING_VETOER
AZTEC_SLASHING_OFFSET_IN_ROUNDS = var.AZTEC_SLASHING_OFFSET_IN_ROUNDS
AZTEC_SLASH_AMOUNT_SMALL = var.AZTEC_SLASH_AMOUNT_SMALL
AZTEC_SLASH_AMOUNT_MEDIUM = var.AZTEC_SLASH_AMOUNT_MEDIUM
AZTEC_SLASH_AMOUNT_LARGE = var.AZTEC_SLASH_AMOUNT_LARGE
AZTEC_SLASHER_FLAVOR = var.AZTEC_SLASHER_FLAVOR
AZTEC_GOVERNANCE_PROPOSER_QUORUM = var.AZTEC_GOVERNANCE_PROPOSER_QUORUM
AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE = var.AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE
AZTEC_MANA_TARGET = var.AZTEC_MANA_TARGET
AZTEC_PROVING_COST_PER_MANA = var.AZTEC_PROVING_COST_PER_MANA
AZTEC_EXIT_DELAY_SECONDS = var.AZTEC_EXIT_DELAY_SECONDS
ETHERSCAN_API_KEY = var.ETHERSCAN_API_KEY
LOG_LEVEL = "debug"
} : k => v if v != null }

# Generate a unique job name with timestamp to avoid conflicts
Expand Down
8 changes: 8 additions & 0 deletions spartan/terraform/deploy-rollup-contracts/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,14 @@ variable "AZTEC_DOCKER_IMAGE" {
type = string
}

variable "ETHERSCAN_API_KEY" {
description = "Etherscan API key"
type = string
sensitive = true
nullable = true
default = null
}

# Deploy L1 contracts configuration
variable "L1_RPC_URLS" {
description = "Comma-separated list of L1 RPC URLs"
Expand Down
6 changes: 3 additions & 3 deletions yarn-project/aztec/src/mainnet_compatibility.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@ import { getGenesisValues } from '@aztec/world-state/testing';
*/
describe('Mainnet compatibility', () => {
it('has expected VK tree root', () => {
const expectedRoots = [Fr.fromHexString('0x229eadb7c540c82204b5373633d3c25557f8264ad8fca760660fe853e5275e39')];
const expectedRoots = [Fr.fromHexString('0x0f485d750a6264d399c416e01909e4dd18fa0dbaad882fe2b87c7847aeaab564')];
expect(expectedRoots).toContainEqual(getVKTreeRoot());
});
it('has expected Protocol Contracts tree root', () => {
expect(protocolContractsHash).toEqual(
Fr.fromHexString('0x12e9aa367b065eff3e48912b8cae62209970117d34a8c9ef1e9e4116e41bc8d6'),
Fr.fromHexString('0x2348b12e0edd63c38dbb849b6c788c4975ed3f1f3706fcb5e17431e805da672d'),
);
});
it('has expected Genesis tree roots', async () => {
Expand All @@ -25,7 +25,7 @@ describe('Mainnet compatibility', () => {
/* initial public data leaves */ [],
);
expect(genesisArchiveRoot).toEqual(
Fr.fromHexString('0x1f9c798be7975bb34c3e605a4c92c75796eae7b9a08644bc9a6a55354ed470be'),
Fr.fromHexString('0x1f8c805403d88ee809d3cb3e52eeba0a104f69968cdb844a9cbdf1e9e00b3a95'),
);
});
});
44 changes: 22 additions & 22 deletions yarn-project/cli/src/config/chain_l2_config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ export const testnetL2ChainConfig: L2ChainConfig = {
disableTransactions: true,
bootstrapNodes: [],
minTxsPerBlock: 0,
maxTxsPerBlock: 0,
maxTxsPerBlock: 20,
realProofs: true,
snapshotsUrls: [`${SNAPSHOTS_URL}/testnet/`],
autoUpdate: 'config-and-version',
Expand All @@ -323,55 +323,55 @@ export const testnetL2ChainConfig: L2ChainConfig = {
/** How many L2 slots an epoch lasts. */
aztecEpochDuration: 32,
/** The target validator committee size. */
aztecTargetCommitteeSize: 24,
aztecTargetCommitteeSize: 48,
/** The number of epochs to lag behind the current epoch for validator selection. */
lagInEpochsForValidatorSet: 2,
/** The number of epochs to lag behind the current epoch for randao selection. */
lagInEpochsForRandao: 2,
/** The number of epochs after an epoch ends that proofs are still accepted. */
aztecProofSubmissionEpochs: 1,

// This is a diff from mainnet: we have 2-strikes you're out, rather than 3 on mainnet.
localEjectionThreshold: 198_000n * 10n ** 18n,
// This is a diff from mainnet: we have 1-strike you're out, rather than 3 on mainnet.
localEjectionThreshold: 199_000n * 10n ** 18n,
/** How many sequencers must agree with a slash for it to be executed. */
slashingQuorum: 65,
slashingRoundSizeInEpochs: 4,
slashingExecutionDelayInRounds: 28,
slashingLifetimeInRounds: 34,
slashingVetoer: EthAddress.fromString('0xBbB4aF368d02827945748b28CD4b2D42e4A37480'),
slashingQuorum: 33,
slashingRoundSizeInEpochs: 2,
slashingExecutionDelayInRounds: 2,
slashingLifetimeInRounds: 5,
slashingVetoer: EthAddress.fromString('0xdfe19Da6a717b7088621d8bBB66be59F2d78e924'),
slashingOffsetInRounds: 2,

slashingDisableDuration: 259_200, // 3 days
slashingDisableDuration: 5 * 24 * 60 * 60, // 5 days
slasherFlavor: 'tally',

slashAmountSmall: 2_000n * 10n ** 18n,
slashAmountMedium: 2_000n * 10n ** 18n,
slashAmountLarge: 2_000n * 10n ** 18n,
slashAmountSmall: 10_000n * 10n ** 18n,
slashAmountMedium: 50_000n * 10n ** 18n,
slashAmountLarge: 200_000n * 10n ** 18n,

/** The mana target for the rollup */
manaTarget: 0n,
manaTarget: 150_000_000n,

/** The proving cost per mana */
provingCostPerMana: 0n,
provingCostPerMana: 100n,

exitDelaySeconds: 4 * 24 * 60 * 60, // 4 days

activationThreshold: 200_000n * 10n ** 18n,
ejectionThreshold: 100_000n * 10n ** 18n,

governanceProposerRoundSize: 300,
governanceProposerQuorum: 151,
governanceProposerRoundSize: 100,
governanceProposerQuorum: 60,

// Node slashing config
slashInactivityTargetPercentage: 0.8,
slashInactivityConsecutiveEpochThreshold: 2,
slashInactivityPenalty: 2_000n * 10n ** 18n,
slashInactivityPenalty: 10_000n * 10n ** 18n,
slashPrunePenalty: 0n, // 2_000n * 10n ** 18n, We disable slashing for prune offenses right now
slashDataWithholdingPenalty: 0n, // 2_000n * 10n ** 18n, We disable slashing for data withholding offenses right now
slashProposeInvalidAttestationsPenalty: 2_000n * 10n ** 18n,
slashAttestDescendantOfInvalidPenalty: 2_000n * 10n ** 18n,
slashUnknownPenalty: 2_000n * 10n ** 18n,
slashBroadcastedInvalidBlockPenalty: 2_000n * 10n ** 18n, // 10_000n * 10n ** 18n, Disabled for now until further testing
slashProposeInvalidAttestationsPenalty: 10_000n * 10n ** 18n,
slashAttestDescendantOfInvalidPenalty: 10_000n * 10n ** 18n,
slashUnknownPenalty: 10_000n * 10n ** 18n,
slashBroadcastedInvalidBlockPenalty: 10_000n * 10n ** 18n, // 10_000n * 10n ** 18n, Disabled for now until further testing
slashGracePeriodL2Slots: 1_200, // One day from deployment
slashOffenseExpirationRounds: 8,

Expand Down
6 changes: 4 additions & 2 deletions yarn-project/ethereum/src/deploy_aztec_l1_contracts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { spawn } from 'child_process';
import { dirname, resolve } from 'path';
import readline from 'readline';
import type { Hex } from 'viem';
import { foundry, mainnet } from 'viem/chains';
import { foundry, mainnet, sepolia } from 'viem/chains';

import { createEthereumChain, isAnvilTestChain } from './chain.js';
import { createExtendedL1Client } from './client.js';
Expand Down Expand Up @@ -246,6 +246,7 @@ export async function deployAztecL1Contracts(
const FORGE_SCRIPT = 'script/deploy/DeployAztecL1Contracts.s.sol';
await maybeForgeForceProductionBuild(l1ContractsPath, FORGE_SCRIPT, chainId);

const shouldVerify = chainId === mainnet.id || chainId === sepolia.id;
// From heuristic testing. More caused issues with anvil.
const MAGIC_ANVIL_BATCH_SIZE = 12;
// Anvil seems to stall with unbounded batch size. Otherwise no max batch size is desirable.
Expand All @@ -260,7 +261,8 @@ export async function deployAztecL1Contracts(
'--rpc-url',
rpcUrl,
'--broadcast',
...(chainId === foundry.id ? ['--batch-size', MAGIC_ANVIL_BATCH_SIZE.toString()] : ['--verify']),
...(chainId === foundry.id ? ['--batch-size', MAGIC_ANVIL_BATCH_SIZE.toString()] : []),
...(shouldVerify ? ['--verify'] : []),
];
const forgeEnv = {
// Protect against root leaving deployment files in docker that cannot be used later.
Expand Down
Loading