Skip to content

Commit f272c2b

Browse files
committed
refactor!: StakingAssetHandler is a normal faucet
1 parent 331b458 commit f272c2b

34 files changed

+538
-1359
lines changed

l1-contracts/foundry.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ out = 'out'
66
libs = ['lib']
77
# NOTE!: This line defines the solc version used.
88
# It is downloaded by bootstrap.sh, but the version string here is parsed.
9-
solc = "./solc-0.8.27"
9+
solc = "./solc-0.8.30"
1010
evm_version = 'prague'
1111
optimizer = true
1212
match_path = "test/**/*.t.sol"

l1-contracts/lib/circuits

Submodule circuits updated 621 files

l1-contracts/script/InternalGov.s.sol

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,8 @@ contract GovScript is Test {
6666
emit log_named_decimal_uint("\tMint Amount", feeAssetHandler.mintAmount(), 18);
6767

6868
emit log_named_address("# Staking Asset", address(stakingAsset));
69-
emit log_named_uint("\tMint Interval ", stakingAssetHandler.mintInterval());
70-
emit log_named_uint("\tDeposits Per Mint", stakingAssetHandler.depositsPerMint());
69+
emit log_named_decimal_uint("\tFaucet Amount ", stakingAssetHandler.faucetAmount(), 18);
7170
emit log_named_address("\tRollup ", address(stakingAssetHandler.getRollup()));
72-
emit log_named_address("\tWithdrawer ", address(stakingAssetHandler.withdrawer()));
7371

7472
emit log_named_address("# Rollup", address(rollup));
7573
uint256 baseFee = rollup.getManaBaseFeeAt(Timestamp.wrap(block.timestamp), true);
@@ -207,28 +205,13 @@ contract GovScript is Test {
207205

208206
// This should be called to update the staking asset handler config when the rollup is updated
209207
function updateStakingAssetHandlerConfig() public {
210-
uint256 mintInterval = 60 * 60 * 24;
211-
uint256 depositsPerMint = 100;
208+
uint256 newFaucetAmount = 1_000_000 * 1e18; // 1M STK
212209
address amin = 0x3b218d0F26d15B36C715cB06c949210a0d630637;
213210

214-
// Update the deposits per mint if it differs
215-
if (stakingAssetHandler.mintInterval() != mintInterval) {
211+
// Update the faucet amount if it differs
212+
if (stakingAssetHandler.faucetAmount() != newFaucetAmount) {
216213
vm.startBroadcast(ME);
217-
stakingAssetHandler.setMintInterval(mintInterval);
218-
vm.stopBroadcast();
219-
}
220-
221-
// Update the deposits per mint if it differs
222-
if (stakingAssetHandler.depositsPerMint() != depositsPerMint) {
223-
vm.startBroadcast(ME);
224-
stakingAssetHandler.setDepositsPerMint(depositsPerMint);
225-
vm.stopBroadcast();
226-
}
227-
228-
// Update the withdrawer if it's not amin
229-
if (stakingAssetHandler.withdrawer() != amin) {
230-
vm.startBroadcast(ME);
231-
stakingAssetHandler.setWithdrawer(amin);
214+
stakingAssetHandler.setFaucetAmount(newFaucetAmount);
232215
vm.stopBroadcast();
233216
}
234217

l1-contracts/script/ProofSim.s.sol

Lines changed: 45 additions & 0 deletions
Large diffs are not rendered by default.

l1-contracts/script/StakingAssetHandler.s.sol

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,51 +19,46 @@ import {StakingAssetHandler} from "../src/mock/StakingAssetHandler.sol";
1919
import {FeeAssetHandler} from "../src/mock/FeeAssetHandler.sol";
2020
import {Timestamp, Slot} from "@aztec/core/libraries/TimeLib.sol";
2121
import {IStaking} from "@aztec/core/interfaces/IStaking.sol";
22-
import {ZKPassportVerifier} from "@zkpassport/ZKPassportVerifier.sol";
22+
import {ZKPassportRootVerifier as ZKPassportVerifier} from "@zkpassport/ZKPassportRootVerifier.sol";
2323

24+
// NOTE: The values below are for the testnet on sepolia, deployed initially with `v3` in December 2025.
2425
contract StakingAssetHandlerScript is Test {
25-
address internal constant ME = address(0xf8d7d601759CBcfB78044bA7cA9B0c0D6301A54f);
26+
address internal constant ME = address(0xdfe19Da6a717b7088621d8bBB66be59F2d78e924);
2627

2728
string internal constant DOMAIN = "testnet.aztec.network";
2829
string internal constant SCOPE = "personhood";
2930

30-
bytes32 public constant DEPOSIT_MERKLE_ROOT = bytes32(0);
31-
3231
ZKPassportVerifier internal constant zkPassportVerifier =
33-
ZKPassportVerifier(0x0b05F45ff2F431a136eE8e708458286eC02b0d00);
32+
ZKPassportVerifier(0x1D000001000EFD9a6371f4d90bB8920D5431c0D8);
3433

35-
TestERC20 public constant stakingAsset = TestERC20(0x6732CEDafCBF85Afa9B5C83f0385967840BBCe47);
36-
IRegistry public constant registry = IRegistry(0xc2F24280F5c7F4897370dFDEb30f79Ded14f1c81);
34+
TestERC20 public constant stakingAsset = TestERC20(0x5595cb9ED193cAc2C0Bc5393313bc6115817954B);
35+
IRegistry public constant registry = IRegistry(0xA0BFb1B494FB49041e5c6e8c2C1BE09cD171c6Ba);
3736

3837
function setUp() public {}
3938

4039
function deploy() public {
4140
address amin = 0x3b218d0F26d15B36C715cB06c949210a0d630637;
41+
address koen = 0xEfDb4C5f3a2f04e0cb393725bCAE2DD675cC3718;
4242

43-
address[] memory isUnhinged = new address[](1);
44-
isUnhinged[0] = amin;
43+
address[] memory unhingedAddresses = new address[](2);
44+
unhingedAddresses[0] = amin;
45+
unhingedAddresses[1] = koen;
4546

4647
StakingAssetHandler.StakingAssetHandlerArgs memory stakingAssetHandlerArgs =
4748
StakingAssetHandler.StakingAssetHandlerArgs({
4849
owner: ME,
4950
stakingAsset: address(stakingAsset),
5051
registry: registry,
51-
withdrawer: amin,
52-
mintInterval: 60 * 60 * 24,
53-
depositsPerMint: 1000,
54-
depositMerkleRoot: DEPOSIT_MERKLE_ROOT,
52+
faucetAmount: 1_000_000 * 1e18, // 1M STK
5553
zkPassportVerifier: zkPassportVerifier,
56-
unhinged: isUnhinged,
54+
unhinged: unhingedAddresses,
5755
domain: DOMAIN,
5856
scope: SCOPE,
59-
skipBindCheck: false, // DO NOT: skip bind check
60-
skipMerkleCheck: true, // DO: skip merkle check
61-
validatorsToFlush: 48
57+
skipBindCheck: false // DO NOT: skip bind check
6258
});
6359

6460
vm.startBroadcast(ME);
6561
StakingAssetHandler stakingAssetHandler = new StakingAssetHandler(stakingAssetHandlerArgs);
66-
stakingAsset.addMinter(address(stakingAssetHandler));
6762
vm.stopBroadcast();
6863

6964
emit log_named_address("StakingAssetHandler deployed", address(stakingAssetHandler));

l1-contracts/script/deploy/DeployAztecL1Contracts.s.sol

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import {TestERC20} from "@aztec/mock/TestERC20.sol";
3030

3131
import {DateGatedRelayer} from "@aztec/periphery/DateGatedRelayer.sol";
3232

33-
import {ZKPassportVerifier} from "@zkpassport/ZKPassportVerifier.sol";
33+
import {ZKPassportRootVerifier as ZKPassportVerifier} from "@zkpassport/ZKPassportRootVerifier.sol";
3434

3535
import {DeployRollupLib, RollupAddressInput, RollupAddressOutput} from "./DeployRollupLib.sol";
3636
import {
@@ -230,18 +230,13 @@ contract DeployAztecL1Contracts is Script, Test {
230230
owner: deployer,
231231
stakingAsset: address(_output.stakingAsset),
232232
registry: _output.registry,
233-
withdrawer: AMIN,
234-
validatorsToFlush: 16,
235-
mintInterval: 60 * 60 * 24,
236-
depositsPerMint: 10,
237-
depositMerkleRoot: bytes32(0),
233+
faucetAmount: 1_000_000 * 1e18, // 1M STK
238234
zkPassportVerifier: ZKPassportVerifier(zkPassportVerifier),
239235
unhinged: unhinged,
240236
// Scopes
241237
domain: zkConfig.domain,
242238
scope: zkConfig.scope,
243-
skipBindCheck: !isSepoliaTestChain, // Only skip bind check with mock verifier
244-
skipMerkleCheck: true // DO: skip merkle check
239+
skipBindCheck: !isSepoliaTestChain // Only skip bind check with mock verifier
245240
})
246241
);
247242
TestERC20(address(_output.stakingAsset)).addMinter(address(_output.stakingAssetHandler));

0 commit comments

Comments
 (0)