@aztec/cli 4.0.0-nightly.20260116 → 4.0.0-nightly.20260117

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -23,11 +23,11 @@ export declare function generateL1Account(): {
23
23
  privateKey: `0x${string}`;
24
24
  address: `0x${string}`;
25
25
  };
26
- export declare function addL1Validator({ rpcUrls, chainId, privateKey, mnemonic, attesterAddress, stakingAssetHandlerAddress, merkleProof, proofParams, blsSecretKey, log, debugLogger }: StakingAssetHandlerCommandArgs & LoggerArgs & {
26
+ export declare function addL1Validator({ rpcUrls, chainId, privateKey, mnemonic, attesterAddress, withdrawerAddress, stakingAssetHandlerAddress, proofParams, blsSecretKey, log, debugLogger }: StakingAssetHandlerCommandArgs & LoggerArgs & {
27
27
  blsSecretKey: bigint;
28
28
  attesterAddress: EthAddress;
29
+ withdrawerAddress: EthAddress;
29
30
  proofParams: Buffer;
30
- merkleProof: string[];
31
31
  }): Promise<void>;
32
32
  export declare function addL1ValidatorViaRollup({ rpcUrls, chainId, privateKey, mnemonic, attesterAddress, withdrawerAddress, blsSecretKey, moveWithLatestRollup, rollupAddress, log, debugLogger }: RollupCommandArgs & LoggerArgs & {
33
33
  blsSecretKey: bigint;
@@ -42,4 +42,4 @@ export declare function fastForwardEpochs({ rpcUrls, chainId, rollupAddress, num
42
42
  numEpochs: bigint;
43
43
  }): Promise<void>;
44
44
  export declare function debugRollup({ rpcUrls, chainId, rollupAddress, log }: RollupCommandArgs & LoggerArgs): Promise<void>;
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlX2wxX3ZhbGlkYXRvcnMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbWRzL2wxL3VwZGF0ZV9sMV92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQVUzRCxNQUFNLFdBQVcsaUJBQWlCO0lBQ2hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNsQixPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hCLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNwQixRQUFRLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDbEIsYUFBYSxFQUFFLFVBQVUsQ0FBQztJQUMxQixpQkFBaUIsQ0FBQyxFQUFFLFVBQVUsQ0FBQztDQUNoQztBQUVELE1BQU0sV0FBVyw4QkFBOEI7SUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ2xCLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDaEIsVUFBVSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3BCLFFBQVEsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNsQiwwQkFBMEIsRUFBRSxVQUFVLENBQUM7Q0FDeEM7QUFFRCxNQUFNLFdBQVcsVUFBVTtJQUN6QixHQUFHLEVBQUUsS0FBSyxDQUFDO0lBQ1gsV0FBVyxFQUFFLE1BQU0sQ0FBQztDQUNyQjtBQUVELHdCQUFnQixpQkFBaUI7OztFQVFoQztBQUVELHdCQUFzQixjQUFjLENBQUMsRUFDbkMsT0FBTyxFQUNQLE9BQU8sRUFDUCxVQUFVLEVBQ1YsUUFBUSxFQUNSLGVBQWUsRUFDZiwwQkFBMEIsRUFDMUIsV0FBVyxFQUNYLFdBQVcsRUFDWCxZQUFZLEVBQ1osR0FBRyxFQUNILFdBQVcsRUFDWixFQUFFLDhCQUE4QixHQUMvQixVQUFVLEdBQUc7SUFDWCxZQUFZLEVBQUUsTUFBTSxDQUFDO0lBQ3JCLGVBQWUsRUFBRSxVQUFVLENBQUM7SUFDNUIsV0FBVyxFQUFFLE1BQU0sQ0FBQztJQUNwQixXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUM7Q0FDdkIsaUJBNERGO0FBRUQsd0JBQXNCLHVCQUF1QixDQUFDLEVBQzVDLE9BQU8sRUFDUCxPQUFPLEVBQ1AsVUFBVSxFQUNWLFFBQVEsRUFDUixlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLEdBQUcsRUFDSCxXQUFXLEVBQ1osRUFBRSxpQkFBaUIsR0FDbEIsVUFBVSxHQUFHO0lBQ1gsWUFBWSxFQUFFLE1BQU0sQ0FBQztJQUNyQixlQUFlLEVBQUUsVUFBVSxDQUFDO0lBQzVCLG9CQUFvQixFQUFFLE9BQU8sQ0FBQztDQUMvQixpQkF1REY7QUFFRCx3QkFBc0IsaUJBQWlCLENBQUMsRUFDdEMsT0FBTyxFQUNQLE9BQU8sRUFDUCxVQUFVLEVBQ1YsUUFBUSxFQUNSLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsR0FBRyxFQUNILFdBQVcsRUFDWixFQUFFLGlCQUFpQixHQUFHLFVBQVUsR0FBRztJQUFFLGdCQUFnQixFQUFFLFVBQVUsQ0FBQTtDQUFFLGlCQWlCbkU7QUFFRCx3QkFBc0IsV0FBVyxDQUFDLEVBQ2hDLE9BQU8sRUFDUCxPQUFPLEVBQ1AsVUFBVSxFQUNWLFFBQVEsRUFDUixhQUFhLEVBQ2IsR0FBRyxFQUNILFdBQVcsRUFDWixFQUFFLGlCQUFpQixHQUFHLFVBQVUsaUJBZ0JoQztBQUVELHdCQUFzQixpQkFBaUIsQ0FBQyxFQUN0QyxPQUFPLEVBQ1AsT0FBTyxFQUNQLGFBQWEsRUFDYixTQUFTLEVBQ1QsR0FBRyxFQUNILFdBQVcsRUFDWixFQUFFLGlCQUFpQixHQUFHLFVBQVUsR0FBRztJQUFFLFNBQVMsRUFBRSxNQUFNLENBQUE7Q0FBRSxpQkF5QnhEO0FBRUQsd0JBQXNCLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxFQUFFLGlCQUFpQixHQUFHLFVBQVUsaUJBd0J6RyJ9
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlX2wxX3ZhbGlkYXRvcnMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbWRzL2wxL3VwZGF0ZV9sMV92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQVEzRCxNQUFNLFdBQVcsaUJBQWlCO0lBQ2hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNsQixPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hCLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNwQixRQUFRLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDbEIsYUFBYSxFQUFFLFVBQVUsQ0FBQztJQUMxQixpQkFBaUIsQ0FBQyxFQUFFLFVBQVUsQ0FBQztDQUNoQztBQUVELE1BQU0sV0FBVyw4QkFBOEI7SUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ2xCLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDaEIsVUFBVSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3BCLFFBQVEsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNsQiwwQkFBMEIsRUFBRSxVQUFVLENBQUM7Q0FDeEM7QUFFRCxNQUFNLFdBQVcsVUFBVTtJQUN6QixHQUFHLEVBQUUsS0FBSyxDQUFDO0lBQ1gsV0FBVyxFQUFFLE1BQU0sQ0FBQztDQUNyQjtBQUVELHdCQUFnQixpQkFBaUI7OztFQVFoQztBQUVELHdCQUFzQixjQUFjLENBQUMsRUFDbkMsT0FBTyxFQUNQLE9BQU8sRUFDUCxVQUFVLEVBQ1YsUUFBUSxFQUNSLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsMEJBQTBCLEVBQzFCLFdBQVcsRUFDWCxZQUFZLEVBQ1osR0FBRyxFQUNILFdBQVcsRUFDWixFQUFFLDhCQUE4QixHQUMvQixVQUFVLEdBQUc7SUFDWCxZQUFZLEVBQUUsTUFBTSxDQUFDO0lBQ3JCLGVBQWUsRUFBRSxVQUFVLENBQUM7SUFDNUIsaUJBQWlCLEVBQUUsVUFBVSxDQUFDO0lBQzlCLFdBQVcsRUFBRSxNQUFNLENBQUM7Q0FDckIsaUJBd0ZGO0FBRUQsd0JBQXNCLHVCQUF1QixDQUFDLEVBQzVDLE9BQU8sRUFDUCxPQUFPLEVBQ1AsVUFBVSxFQUNWLFFBQVEsRUFDUixlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLEdBQUcsRUFDSCxXQUFXLEVBQ1osRUFBRSxpQkFBaUIsR0FDbEIsVUFBVSxHQUFHO0lBQ1gsWUFBWSxFQUFFLE1BQU0sQ0FBQztJQUNyQixlQUFlLEVBQUUsVUFBVSxDQUFDO0lBQzVCLG9CQUFvQixFQUFFLE9BQU8sQ0FBQztDQUMvQixpQkF1REY7QUFFRCx3QkFBc0IsaUJBQWlCLENBQUMsRUFDdEMsT0FBTyxFQUNQLE9BQU8sRUFDUCxVQUFVLEVBQ1YsUUFBUSxFQUNSLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsR0FBRyxFQUNILFdBQVcsRUFDWixFQUFFLGlCQUFpQixHQUFHLFVBQVUsR0FBRztJQUFFLGdCQUFnQixFQUFFLFVBQVUsQ0FBQTtDQUFFLGlCQWlCbkU7QUFFRCx3QkFBc0IsV0FBVyxDQUFDLEVBQ2hDLE9BQU8sRUFDUCxPQUFPLEVBQ1AsVUFBVSxFQUNWLFFBQVEsRUFDUixhQUFhLEVBQ2IsR0FBRyxFQUNILFdBQVcsRUFDWixFQUFFLGlCQUFpQixHQUFHLFVBQVUsaUJBZ0JoQztBQUVELHdCQUFzQixpQkFBaUIsQ0FBQyxFQUN0QyxPQUFPLEVBQ1AsT0FBTyxFQUNQLGFBQWEsRUFDYixTQUFTLEVBQ1QsR0FBRyxFQUNILFdBQVcsRUFDWixFQUFFLGlCQUFpQixHQUFHLFVBQVUsR0FBRztJQUFFLFNBQVMsRUFBRSxNQUFNLENBQUE7Q0FBRSxpQkF5QnhEO0FBRUQsd0JBQXNCLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxFQUFFLGlCQUFpQixHQUFHLFVBQVUsaUJBd0J6RyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"update_l1_validators.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/update_l1_validators.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAU3D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,UAAU,CAAC;IAC1B,iBAAiB,CAAC,EAAE,UAAU,CAAC;CAChC;AAED,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0BAA0B,EAAE,UAAU,CAAC;CACxC;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,KAAK,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,iBAAiB;;;EAQhC;AAED,wBAAsB,cAAc,CAAC,EACnC,OAAO,EACP,OAAO,EACP,UAAU,EACV,QAAQ,EACR,eAAe,EACf,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,YAAY,EACZ,GAAG,EACH,WAAW,EACZ,EAAE,8BAA8B,GAC/B,UAAU,GAAG;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,UAAU,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,iBA4DF;AAED,wBAAsB,uBAAuB,CAAC,EAC5C,OAAO,EACP,OAAO,EACP,UAAU,EACV,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,GAAG,EACH,WAAW,EACZ,EAAE,iBAAiB,GAClB,UAAU,GAAG;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,UAAU,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;CAC/B,iBAuDF;AAED,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,EACP,OAAO,EACP,UAAU,EACV,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,GAAG,EACH,WAAW,EACZ,EAAE,iBAAiB,GAAG,UAAU,GAAG;IAAE,gBAAgB,EAAE,UAAU,CAAA;CAAE,iBAiBnE;AAED,wBAAsB,WAAW,CAAC,EAChC,OAAO,EACP,OAAO,EACP,UAAU,EACV,QAAQ,EACR,aAAa,EACb,GAAG,EACH,WAAW,EACZ,EAAE,iBAAiB,GAAG,UAAU,iBAgBhC;AAED,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,EACP,OAAO,EACP,aAAa,EACb,SAAS,EACT,GAAG,EACH,WAAW,EACZ,EAAE,iBAAiB,GAAG,UAAU,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,iBAyBxD;AAED,wBAAsB,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,iBAAiB,GAAG,UAAU,iBAwBzG"}
1
+ {"version":3,"file":"update_l1_validators.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/update_l1_validators.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAQ3D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,UAAU,CAAC;IAC1B,iBAAiB,CAAC,EAAE,UAAU,CAAC;CAChC;AAED,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0BAA0B,EAAE,UAAU,CAAC;CACxC;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,KAAK,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,iBAAiB;;;EAQhC;AAED,wBAAsB,cAAc,CAAC,EACnC,OAAO,EACP,OAAO,EACP,UAAU,EACV,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,WAAW,EACX,YAAY,EACZ,GAAG,EACH,WAAW,EACZ,EAAE,8BAA8B,GAC/B,UAAU,GAAG;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,UAAU,CAAC;IAC5B,iBAAiB,EAAE,UAAU,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB,iBAwFF;AAED,wBAAsB,uBAAuB,CAAC,EAC5C,OAAO,EACP,OAAO,EACP,UAAU,EACV,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,GAAG,EACH,WAAW,EACZ,EAAE,iBAAiB,GAClB,UAAU,GAAG;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,UAAU,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;CAC/B,iBAuDF;AAED,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,EACP,OAAO,EACP,UAAU,EACV,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,GAAG,EACH,WAAW,EACZ,EAAE,iBAAiB,GAAG,UAAU,GAAG;IAAE,gBAAgB,EAAE,UAAU,CAAA;CAAE,iBAiBnE;AAED,wBAAsB,WAAW,CAAC,EAChC,OAAO,EACP,OAAO,EACP,UAAU,EACV,QAAQ,EACR,aAAa,EACb,GAAG,EACH,WAAW,EACZ,EAAE,iBAAiB,GAAG,UAAU,iBAgBhC;AAED,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,EACP,OAAO,EACP,aAAa,EACb,SAAS,EACT,GAAG,EACH,WAAW,EACZ,EAAE,iBAAiB,GAAG,UAAU,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,iBAyBxD;AAED,wBAAsB,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,iBAAiB,GAAG,UAAU,iBAwBzG"}
@@ -5,11 +5,10 @@ import { GSEContract, RollupContract } from '@aztec/ethereum/contracts';
5
5
  import { createL1TxUtilsFromViemWallet } from '@aztec/ethereum/l1-tx-utils';
6
6
  import { EthCheatCodes } from '@aztec/ethereum/test';
7
7
  import { DateProvider } from '@aztec/foundation/timer';
8
- import { RollupAbi, StakingAssetHandlerAbi } from '@aztec/l1-artifacts';
8
+ import { RollupAbi, StakingAssetHandlerAbi, TestERC20Abi } from '@aztec/l1-artifacts';
9
9
  import { ZkPassportProofParams } from '@aztec/stdlib/zkpassport';
10
- import { encodeFunctionData, formatEther, getContract } from 'viem';
10
+ import { encodeFunctionData, formatEther, getContract, maxUint256 } from 'viem';
11
11
  import { generatePrivateKey, mnemonicToAccount, privateKeyToAccount } from 'viem/accounts';
12
- import { addLeadingHex } from '../../utils/aztec.js';
13
12
  export function generateL1Account() {
14
13
  const privateKey = generatePrivateKey();
15
14
  const account = privateKeyToAccount(privateKey);
@@ -19,7 +18,7 @@ export function generateL1Account() {
19
18
  address: account.address
20
19
  };
21
20
  }
22
- export async function addL1Validator({ rpcUrls, chainId, privateKey, mnemonic, attesterAddress, stakingAssetHandlerAddress, merkleProof, proofParams, blsSecretKey, log, debugLogger }) {
21
+ export async function addL1Validator({ rpcUrls, chainId, privateKey, mnemonic, attesterAddress, withdrawerAddress, stakingAssetHandlerAddress, proofParams, blsSecretKey, log, debugLogger }) {
23
22
  const dualLog = makeDualLog(log, debugLogger);
24
23
  const account = getAccount(privateKey, mnemonic);
25
24
  const chain = createEthereumChain(rpcUrls, chainId);
@@ -43,24 +42,60 @@ export async function addL1Validator({ rpcUrls, chainId, privateKey, mnemonic, a
43
42
  logger: debugLogger
44
43
  });
45
44
  const proofParamsObj = ZkPassportProofParams.fromBuffer(proofParams);
46
- const merkleProofArray = merkleProof.map((proof)=>addLeadingHex(proof));
47
- const { receipt } = await l1TxUtils.sendAndMonitorTransaction({
45
+ // Step 1: Claim STK tokens from the faucet
46
+ dualLog(`Claiming STK tokens from faucet`);
47
+ const { receipt: claimReceipt } = await l1TxUtils.sendAndMonitorTransaction({
48
48
  to: stakingAssetHandlerAddress.toString(),
49
49
  data: encodeFunctionData({
50
50
  abi: StakingAssetHandlerAbi,
51
- functionName: 'addValidator',
51
+ functionName: 'claim',
52
+ args: [
53
+ proofParamsObj.toViem()
54
+ ]
55
+ }),
56
+ abi: StakingAssetHandlerAbi
57
+ });
58
+ dualLog(`Claim transaction hash: ${claimReceipt.transactionHash}`);
59
+ await l1Client.waitForTransactionReceipt({
60
+ hash: claimReceipt.transactionHash
61
+ });
62
+ // Step 2: Approve the rollup to spend STK tokens
63
+ const stakingAssetAddress = await stakingAssetHandler.read.STAKING_ASSET();
64
+ dualLog(`Approving rollup to spend STK tokens`);
65
+ const { receipt: approveReceipt } = await l1TxUtils.sendAndMonitorTransaction({
66
+ to: stakingAssetAddress,
67
+ data: encodeFunctionData({
68
+ abi: TestERC20Abi,
69
+ functionName: 'approve',
70
+ args: [
71
+ rollupAddress,
72
+ maxUint256
73
+ ]
74
+ }),
75
+ abi: TestERC20Abi
76
+ });
77
+ await l1Client.waitForTransactionReceipt({
78
+ hash: approveReceipt.transactionHash
79
+ });
80
+ // Step 3: Deposit into the rollup to register as a validator
81
+ dualLog(`Depositing into rollup to register validator`);
82
+ const { receipt } = await l1TxUtils.sendAndMonitorTransaction({
83
+ to: rollupAddress,
84
+ data: encodeFunctionData({
85
+ abi: RollupAbi,
86
+ functionName: 'deposit',
52
87
  args: [
53
88
  attesterAddress.toString(),
54
- merkleProofArray,
55
- proofParamsObj.toViem(),
89
+ withdrawerAddress.toString(),
56
90
  registrationTuple.publicKeyInG1,
57
91
  registrationTuple.publicKeyInG2,
58
- registrationTuple.proofOfPossession
92
+ registrationTuple.proofOfPossession,
93
+ false
59
94
  ]
60
95
  }),
61
- abi: StakingAssetHandlerAbi
96
+ abi: RollupAbi
62
97
  });
63
- dualLog(`Transaction hash: ${receipt.transactionHash}`);
98
+ dualLog(`Deposit transaction hash: ${receipt.transactionHash}`);
64
99
  await l1Client.waitForTransactionReceipt({
65
100
  hash: receipt.transactionHash
66
101
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/cli",
3
- "version": "4.0.0-nightly.20260116",
3
+ "version": "4.0.0-nightly.20260117",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./contracts": "./dest/cmds/contracts/index.js",
@@ -77,23 +77,23 @@
77
77
  ]
78
78
  },
79
79
  "dependencies": {
80
- "@aztec/accounts": "4.0.0-nightly.20260116",
81
- "@aztec/archiver": "4.0.0-nightly.20260116",
82
- "@aztec/aztec.js": "4.0.0-nightly.20260116",
83
- "@aztec/constants": "4.0.0-nightly.20260116",
84
- "@aztec/entrypoints": "4.0.0-nightly.20260116",
85
- "@aztec/ethereum": "4.0.0-nightly.20260116",
86
- "@aztec/foundation": "4.0.0-nightly.20260116",
87
- "@aztec/l1-artifacts": "4.0.0-nightly.20260116",
88
- "@aztec/node-keystore": "4.0.0-nightly.20260116",
89
- "@aztec/node-lib": "4.0.0-nightly.20260116",
90
- "@aztec/p2p": "4.0.0-nightly.20260116",
91
- "@aztec/protocol-contracts": "4.0.0-nightly.20260116",
92
- "@aztec/sequencer-client": "4.0.0-nightly.20260116",
93
- "@aztec/slasher": "4.0.0-nightly.20260116",
94
- "@aztec/stdlib": "4.0.0-nightly.20260116",
95
- "@aztec/test-wallet": "4.0.0-nightly.20260116",
96
- "@aztec/world-state": "4.0.0-nightly.20260116",
80
+ "@aztec/accounts": "4.0.0-nightly.20260117",
81
+ "@aztec/archiver": "4.0.0-nightly.20260117",
82
+ "@aztec/aztec.js": "4.0.0-nightly.20260117",
83
+ "@aztec/constants": "4.0.0-nightly.20260117",
84
+ "@aztec/entrypoints": "4.0.0-nightly.20260117",
85
+ "@aztec/ethereum": "4.0.0-nightly.20260117",
86
+ "@aztec/foundation": "4.0.0-nightly.20260117",
87
+ "@aztec/l1-artifacts": "4.0.0-nightly.20260117",
88
+ "@aztec/node-keystore": "4.0.0-nightly.20260117",
89
+ "@aztec/node-lib": "4.0.0-nightly.20260117",
90
+ "@aztec/p2p": "4.0.0-nightly.20260117",
91
+ "@aztec/protocol-contracts": "4.0.0-nightly.20260117",
92
+ "@aztec/sequencer-client": "4.0.0-nightly.20260117",
93
+ "@aztec/slasher": "4.0.0-nightly.20260117",
94
+ "@aztec/stdlib": "4.0.0-nightly.20260117",
95
+ "@aztec/test-wallet": "4.0.0-nightly.20260117",
96
+ "@aztec/world-state": "4.0.0-nightly.20260117",
97
97
  "@ethersproject/wallet": "^5.8.0",
98
98
  "@iarna/toml": "^2.2.5",
99
99
  "@libp2p/peer-id-factory": "^3.0.4",
@@ -107,9 +107,9 @@
107
107
  "viem": "npm:@aztec/viem@2.38.2"
108
108
  },
109
109
  "devDependencies": {
110
- "@aztec/aztec-node": "4.0.0-nightly.20260116",
111
- "@aztec/kv-store": "4.0.0-nightly.20260116",
112
- "@aztec/telemetry-client": "4.0.0-nightly.20260116",
110
+ "@aztec/aztec-node": "4.0.0-nightly.20260117",
111
+ "@aztec/kv-store": "4.0.0-nightly.20260117",
112
+ "@aztec/telemetry-client": "4.0.0-nightly.20260117",
113
113
  "@jest/globals": "^30.0.0",
114
114
  "@types/jest": "^30.0.0",
115
115
  "@types/lodash.chunk": "^4.2.9",
@@ -126,15 +126,15 @@
126
126
  "typescript": "^5.3.3"
127
127
  },
128
128
  "peerDependencies": {
129
- "@aztec/accounts": "4.0.0-nightly.20260116",
130
- "@aztec/bb-prover": "4.0.0-nightly.20260116",
131
- "@aztec/ethereum": "4.0.0-nightly.20260116",
132
- "@aztec/l1-artifacts": "4.0.0-nightly.20260116",
133
- "@aztec/noir-contracts.js": "4.0.0-nightly.20260116",
134
- "@aztec/noir-protocol-circuits-types": "4.0.0-nightly.20260116",
135
- "@aztec/noir-test-contracts.js": "4.0.0-nightly.20260116",
136
- "@aztec/protocol-contracts": "4.0.0-nightly.20260116",
137
- "@aztec/stdlib": "4.0.0-nightly.20260116"
129
+ "@aztec/accounts": "4.0.0-nightly.20260117",
130
+ "@aztec/bb-prover": "4.0.0-nightly.20260117",
131
+ "@aztec/ethereum": "4.0.0-nightly.20260117",
132
+ "@aztec/l1-artifacts": "4.0.0-nightly.20260117",
133
+ "@aztec/noir-contracts.js": "4.0.0-nightly.20260117",
134
+ "@aztec/noir-protocol-circuits-types": "4.0.0-nightly.20260117",
135
+ "@aztec/noir-test-contracts.js": "4.0.0-nightly.20260117",
136
+ "@aztec/protocol-contracts": "4.0.0-nightly.20260117",
137
+ "@aztec/stdlib": "4.0.0-nightly.20260117"
138
138
  },
139
139
  "files": [
140
140
  "dest",
@@ -7,14 +7,12 @@ import { EthCheatCodes } from '@aztec/ethereum/test';
7
7
  import type { EthAddress } from '@aztec/foundation/eth-address';
8
8
  import type { LogFn, Logger } from '@aztec/foundation/log';
9
9
  import { DateProvider } from '@aztec/foundation/timer';
10
- import { RollupAbi, StakingAssetHandlerAbi } from '@aztec/l1-artifacts';
10
+ import { RollupAbi, StakingAssetHandlerAbi, TestERC20Abi } from '@aztec/l1-artifacts';
11
11
  import { ZkPassportProofParams } from '@aztec/stdlib/zkpassport';
12
12
 
13
- import { encodeFunctionData, formatEther, getContract } from 'viem';
13
+ import { encodeFunctionData, formatEther, getContract, maxUint256 } from 'viem';
14
14
  import { generatePrivateKey, mnemonicToAccount, privateKeyToAccount } from 'viem/accounts';
15
15
 
16
- import { addLeadingHex } from '../../utils/aztec.js';
17
-
18
16
  export interface RollupCommandArgs {
19
17
  rpcUrls: string[];
20
18
  chainId: number;
@@ -53,8 +51,8 @@ export async function addL1Validator({
53
51
  privateKey,
54
52
  mnemonic,
55
53
  attesterAddress,
54
+ withdrawerAddress,
56
55
  stakingAssetHandlerAddress,
57
- merkleProof,
58
56
  proofParams,
59
57
  blsSecretKey,
60
58
  log,
@@ -63,8 +61,8 @@ export async function addL1Validator({
63
61
  LoggerArgs & {
64
62
  blsSecretKey: bigint; // scalar field element of BN254
65
63
  attesterAddress: EthAddress;
64
+ withdrawerAddress: EthAddress;
66
65
  proofParams: Buffer;
67
- merkleProof: string[];
68
66
  }) {
69
67
  const dualLog = makeDualLog(log, debugLogger);
70
68
  const account = getAccount(privateKey, mnemonic);
@@ -87,33 +85,61 @@ export async function addL1Validator({
87
85
  });
88
86
 
89
87
  const gseAddress = await rollup.read.getGSE();
90
-
91
88
  const gse = new GSEContract(l1Client, gseAddress);
92
-
93
89
  const registrationTuple = await gse.makeRegistrationTuple(blsSecretKey);
94
90
 
95
91
  const l1TxUtils = createL1TxUtilsFromViemWallet(l1Client, { logger: debugLogger });
96
92
  const proofParamsObj = ZkPassportProofParams.fromBuffer(proofParams);
97
- const merkleProofArray = merkleProof.map(proof => addLeadingHex(proof));
98
93
 
99
- const { receipt } = await l1TxUtils.sendAndMonitorTransaction({
94
+ // Step 1: Claim STK tokens from the faucet
95
+ dualLog(`Claiming STK tokens from faucet`);
96
+ const { receipt: claimReceipt } = await l1TxUtils.sendAndMonitorTransaction({
100
97
  to: stakingAssetHandlerAddress.toString(),
101
98
  data: encodeFunctionData({
102
99
  abi: StakingAssetHandlerAbi,
103
- functionName: 'addValidator',
100
+ functionName: 'claim',
101
+ args: [proofParamsObj.toViem()],
102
+ }),
103
+ abi: StakingAssetHandlerAbi,
104
+ });
105
+ dualLog(`Claim transaction hash: ${claimReceipt.transactionHash}`);
106
+ await l1Client.waitForTransactionReceipt({ hash: claimReceipt.transactionHash });
107
+
108
+ // Step 2: Approve the rollup to spend STK tokens
109
+ const stakingAssetAddress = await stakingAssetHandler.read.STAKING_ASSET();
110
+ dualLog(`Approving rollup to spend STK tokens`);
111
+ const { receipt: approveReceipt } = await l1TxUtils.sendAndMonitorTransaction({
112
+ to: stakingAssetAddress,
113
+ data: encodeFunctionData({
114
+ abi: TestERC20Abi,
115
+ functionName: 'approve',
116
+ args: [rollupAddress, maxUint256],
117
+ }),
118
+ abi: TestERC20Abi,
119
+ });
120
+ await l1Client.waitForTransactionReceipt({ hash: approveReceipt.transactionHash });
121
+
122
+ // Step 3: Deposit into the rollup to register as a validator
123
+ dualLog(`Depositing into rollup to register validator`);
124
+ const { receipt } = await l1TxUtils.sendAndMonitorTransaction({
125
+ to: rollupAddress,
126
+ data: encodeFunctionData({
127
+ abi: RollupAbi,
128
+ functionName: 'deposit',
104
129
  args: [
105
130
  attesterAddress.toString(),
106
- merkleProofArray,
107
- proofParamsObj.toViem(),
131
+ withdrawerAddress.toString(),
108
132
  registrationTuple.publicKeyInG1,
109
133
  registrationTuple.publicKeyInG2,
110
134
  registrationTuple.proofOfPossession,
135
+ false, // moveWithLatestRollup
111
136
  ],
112
137
  }),
113
- abi: StakingAssetHandlerAbi,
138
+ abi: RollupAbi,
114
139
  });
115
- dualLog(`Transaction hash: ${receipt.transactionHash}`);
140
+ dualLog(`Deposit transaction hash: ${receipt.transactionHash}`);
116
141
  await l1Client.waitForTransactionReceipt({ hash: receipt.transactionHash });
142
+
117
143
  if (isAnvilTestChain(chainId)) {
118
144
  dualLog(`Funding validator on L1`);
119
145
  const cheatCodes = new EthCheatCodes(rpcUrls, new DateProvider(), debugLogger);