v4.0.0 (from v3.0.0)
Overview
Migration difficulty: TODO
Breaking changes
StakingAssetHandler refactored to simple token faucet
The StakingAssetHandler L1 contract has been significantly simplified. It no longer handles validator registration directly - instead it functions as a simple STK token faucet with ZKPassport sybil resistance.
v3.0.0:
// Single call registered validator
stakingAssetHandler.addValidator(attester, merkleProof, zkPassportParams, publicKeyG1, publicKeyG2, signature);
v4.0.0:
// Step 1: Claim STK tokens from faucet
stakingAssetHandler.claim(zkPassportParams);
// Step 2: Approve rollup to spend tokens
stakingAsset.approve(rollupAddress, amount);
// Step 3: Deposit into rollup (user chooses their own withdrawer)
rollup.deposit(attester, withdrawer, publicKeyG1, publicKeyG2, signature, moveWithLatestRollup);
Removed functions:
addValidator()- replaced byclaim()+ direct rollup depositreenterExitedValidator()setValidatorsToFlush(),setMintInterval(),setDepositsPerMint(),setWithdrawer()setSkipMerkleCheck(),setDepositMerkleRoot()
New functions:
claim(ProofVerificationParams)- claim STK tokens with ZKPassport proofsetFaucetAmount(uint256)- owner sets claim amountresetNullifier(bytes32)- owner can reset a nullifier
CLI changes:
# v3.0.0
aztec add-l1-validator --merkle-proof <proof>
# v4.0.0
aztec add-l1-validator --withdrawer-address <address>
Migration: Users must now call claim() to get STK tokens, then deposit into the rollup themselves. The --merkle-proof CLI flag is removed; add --withdrawer-address instead.
Removed features
New features
P2P clock tolerance for slot validation
Added a 500ms tolerance window for P2P messages from the previous slot, following Ethereum's MAXIMUM_GOSSIP_CLOCK_DISPARITY approach. This prevents peers from being penalized for valid messages that arrive slightly after the slot boundary due to network latency.
The tolerance is hardcoded at 500ms (matching Ethereum's current value) and can be made configurable via environment variables in the future if needed.
Impact: Improved network stability with no action required from node operators.
Changed defaults
Troubleshooting
Next steps
- How to Run a Sequencer Node - Updated setup instructions
- Advanced Keystore Usage - Keystore configuration
- Ethereum RPC Calls Reference - Infrastructure requirements
- Aztec Discord - Upgrade support