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
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