@aztec/cli 0.87.6 → 1.0.0-nightly.20250604
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.
- package/dest/cmds/infrastructure/sequencers.js +1 -2
- package/dest/cmds/l1/deploy_l1_contracts.d.ts +2 -2
- package/dest/cmds/l1/deploy_l1_contracts.d.ts.map +1 -1
- package/dest/cmds/l1/deploy_l1_contracts.js +2 -1
- package/dest/cmds/l1/deploy_l1_verifier.d.ts +1 -1
- package/dest/cmds/l1/deploy_l1_verifier.d.ts.map +1 -1
- package/dest/cmds/l1/deploy_l1_verifier.js +6 -2
- package/dest/cmds/l1/deploy_new_rollup.d.ts +2 -1
- package/dest/cmds/l1/deploy_new_rollup.d.ts.map +1 -1
- package/dest/cmds/l1/deploy_new_rollup.js +2 -2
- package/dest/cmds/l1/index.js +3 -4
- package/dest/cmds/l1/update_l1_validators.d.ts +1 -2
- package/dest/cmds/l1/update_l1_validators.d.ts.map +1 -1
- package/dest/cmds/l1/update_l1_validators.js +8 -12
- package/dest/utils/aztec.d.ts +3 -3
- package/dest/utils/aztec.d.ts.map +1 -1
- package/dest/utils/aztec.js +5 -1
- package/package.json +22 -22
- package/src/cmds/infrastructure/sequencers.ts +1 -1
- package/src/cmds/l1/deploy_l1_contracts.ts +4 -4
- package/src/cmds/l1/deploy_l1_verifier.ts +6 -1
- package/src/cmds/l1/deploy_new_rollup.ts +4 -4
- package/src/cmds/l1/index.ts +2 -2
- package/src/cmds/l1/update_l1_validators.ts +7 -19
- package/src/utils/aztec.ts +10 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Operator } from '@aztec/ethereum';
|
|
2
2
|
import type { LogFn, Logger } from '@aztec/foundation/log';
|
|
3
|
-
export declare function deployL1Contracts(rpcUrls: string[], chainId: number, privateKey: string | undefined, mnemonic: string, mnemonicIndex: number, salt: number | undefined, testAccounts: boolean, sponsoredFPC: boolean, acceleratedTestDeployments: boolean, json: boolean, initialValidators:
|
|
3
|
+
export declare function deployL1Contracts(rpcUrls: string[], chainId: number, privateKey: string | undefined, mnemonic: string, mnemonicIndex: number, salt: number | undefined, testAccounts: boolean, sponsoredFPC: boolean, acceleratedTestDeployments: boolean, json: boolean, initialValidators: Operator[], log: LogFn, debugLogger: Logger): Promise<void>;
|
|
4
4
|
//# sourceMappingURL=deploy_l1_contracts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy_l1_contracts.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/deploy_l1_contracts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deploy_l1_contracts.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/deploy_l1_contracts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAA+B,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAM3D,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,YAAY,EAAE,OAAO,EACrB,YAAY,EAAE,OAAO,EACrB,0BAA0B,EAAE,OAAO,EACnC,IAAI,EAAE,OAAO,EACb,iBAAiB,EAAE,QAAQ,EAAE,EAC7B,GAAG,EAAE,KAAK,EACV,WAAW,EAAE,MAAM,iBAoDpB"}
|
|
@@ -18,6 +18,7 @@ export async function deployL1Contracts(rpcUrls, chainId, privateKey, mnemonic,
|
|
|
18
18
|
} else {
|
|
19
19
|
log(`Rollup Address: ${l1ContractAddresses.rollupAddress.toString()}`);
|
|
20
20
|
log(`Registry Address: ${l1ContractAddresses.registryAddress.toString()}`);
|
|
21
|
+
log(`GSE Address: ${l1ContractAddresses.gseAddress?.toString()}`);
|
|
21
22
|
log(`L1 -> L2 Inbox Address: ${l1ContractAddresses.inboxAddress.toString()}`);
|
|
22
23
|
log(`L2 -> L1 Outbox Address: ${l1ContractAddresses.outboxAddress.toString()}`);
|
|
23
24
|
log(`Fee Juice Address: ${l1ContractAddresses.feeJuiceAddress.toString()}`);
|
|
@@ -31,7 +32,7 @@ export async function deployL1Contracts(rpcUrls, chainId, privateKey, mnemonic,
|
|
|
31
32
|
log(`FeeAssetHandler Address: ${l1ContractAddresses.feeAssetHandlerAddress?.toString()}`);
|
|
32
33
|
log(`StakingAssetHandler Address: ${l1ContractAddresses.stakingAssetHandlerAddress?.toString()}`);
|
|
33
34
|
log(`Initial funded accounts: ${initialFundedAccounts.map((a)=>a.toString()).join(', ')}`);
|
|
34
|
-
log(`Initial validators: ${initialValidators.map((a)=>a.toString()).join(', ')}`);
|
|
35
|
+
log(`Initial validators: ${initialValidators.map((a)=>a.attester.toString()).join(', ')}`);
|
|
35
36
|
log(`Genesis archive root: ${genesisArchiveRoot.toString()}`);
|
|
36
37
|
}
|
|
37
38
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { LogFn, Logger } from '@aztec/foundation/log';
|
|
2
2
|
import { type Hex } from 'viem';
|
|
3
|
-
export declare function deployUltraHonkVerifier(rollupAddress: Hex | undefined, ethRpcUrls: string[], l1ChainId: string, privateKey: string | undefined, mnemonic: string, pxeRpcUrl: string, log: LogFn, debugLogger: Logger): Promise<void>;
|
|
3
|
+
export declare function deployUltraHonkVerifier(rollupAddress: Hex | undefined, ethRpcUrls: string[], l1ChainId: string, privateKey: string | undefined, mnemonic: string, mnemonicIndex: number, pxeRpcUrl: string, log: LogFn, debugLogger: Logger): Promise<void>;
|
|
4
4
|
export declare function deployMockVerifier(rollupAddress: Hex | undefined, ethRpcUrls: string[], l1ChainId: string, privateKey: string | undefined, mnemonic: string, pxeRpcUrl: string, log: LogFn, debugLogger: Logger): Promise<void>;
|
|
5
5
|
//# sourceMappingURL=deploy_l1_verifier.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy_l1_verifier.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/deploy_l1_verifier.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAI3D,OAAO,EAAE,KAAK,GAAG,EAAe,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"deploy_l1_verifier.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/deploy_l1_verifier.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAI3D,OAAO,EAAE,KAAK,GAAG,EAAe,MAAM,MAAM,CAAC;AAG7C,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,GAAG,GAAG,SAAS,EAC9B,UAAU,EAAE,MAAM,EAAE,EACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,KAAK,EACV,WAAW,EAAE,MAAM,iBAmCpB;AAED,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,GAAG,GAAG,SAAS,EAC9B,UAAU,EAAE,MAAM,EAAE,EACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,KAAK,EACV,WAAW,EAAE,MAAM,iBAkCpB"}
|
|
@@ -3,8 +3,12 @@ import { createEthereumChain, createExtendedL1Client, deployL1Contract } from '@
|
|
|
3
3
|
import { HonkVerifierAbi, HonkVerifierBytecode } from '@aztec/l1-artifacts';
|
|
4
4
|
import { InvalidOptionArgumentError } from 'commander';
|
|
5
5
|
import { getContract } from 'viem';
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
import { mnemonicToAccount, privateKeyToAccount } from 'viem/accounts';
|
|
7
|
+
export async function deployUltraHonkVerifier(rollupAddress, ethRpcUrls, l1ChainId, privateKey, mnemonic, mnemonicIndex, pxeRpcUrl, log, debugLogger) {
|
|
8
|
+
const account = !privateKey ? mnemonicToAccount(mnemonic, {
|
|
9
|
+
addressIndex: mnemonicIndex
|
|
10
|
+
}) : privateKeyToAccount(`${privateKey.startsWith('0x') ? '' : '0x'}${privateKey}`);
|
|
11
|
+
const extendedClient = createExtendedL1Client(ethRpcUrls, account, createEthereumChain(ethRpcUrls, l1ChainId).chainInfo);
|
|
8
12
|
if (!rollupAddress && pxeRpcUrl) {
|
|
9
13
|
const pxe = await createCompatibleClient(pxeRpcUrl, debugLogger);
|
|
10
14
|
const { l1ContractAddresses } = await pxe.getNodeInfo();
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import { type Operator } from '@aztec/ethereum';
|
|
1
2
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
3
|
import type { LogFn, Logger } from '@aztec/foundation/log';
|
|
3
|
-
export declare function deployNewRollup(registryAddress: EthAddress, rpcUrls: string[], chainId: number, privateKey: string | undefined, mnemonic: string, mnemonicIndex: number, salt: number | undefined, testAccounts: boolean, sponsoredFPC: boolean, json: boolean, initialValidators:
|
|
4
|
+
export declare function deployNewRollup(registryAddress: EthAddress, rpcUrls: string[], chainId: number, privateKey: string | undefined, mnemonic: string, mnemonicIndex: number, salt: number | undefined, testAccounts: boolean, sponsoredFPC: boolean, json: boolean, initialValidators: Operator[], log: LogFn, debugLogger: Logger): Promise<void>;
|
|
4
5
|
//# sourceMappingURL=deploy_new_rollup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy_new_rollup.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/deploy_new_rollup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deploy_new_rollup.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/deploy_new_rollup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAA+B,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAM3D,wBAAsB,eAAe,CACnC,eAAe,EAAE,UAAU,EAC3B,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,YAAY,EAAE,OAAO,EACrB,YAAY,EAAE,OAAO,EACrB,IAAI,EAAE,OAAO,EACb,iBAAiB,EAAE,QAAQ,EAAE,EAC7B,GAAG,EAAE,KAAK,EACV,WAAW,EAAE,MAAM,iBA6CpB"}
|
|
@@ -14,14 +14,14 @@ export async function deployNewRollup(registryAddress, rpcUrls, chainId, private
|
|
|
14
14
|
log(JSON.stringify({
|
|
15
15
|
rollupAddress: rollup.address,
|
|
16
16
|
initialFundedAccounts: initialFundedAccounts.map((a)=>a.toString()),
|
|
17
|
-
initialValidators: initialValidators.map((a)=>a.toString()),
|
|
17
|
+
initialValidators: initialValidators.map((a)=>a.attester.toString()),
|
|
18
18
|
genesisArchiveRoot: genesisArchiveRoot.toString(),
|
|
19
19
|
slashFactoryAddress: slashFactoryAddress.toString()
|
|
20
20
|
}, null, 2));
|
|
21
21
|
} else {
|
|
22
22
|
log(`Rollup Address: ${rollup.address}`);
|
|
23
23
|
log(`Initial funded accounts: ${initialFundedAccounts.map((a)=>a.toString()).join(', ')}`);
|
|
24
|
-
log(`Initial validators: ${initialValidators.map((a)=>a.toString()).join(', ')}`);
|
|
24
|
+
log(`Initial validators: ${initialValidators.map((a)=>a.attester.toString()).join(', ')}`);
|
|
25
25
|
log(`Genesis archive root: ${genesisArchiveRoot.toString()}`);
|
|
26
26
|
log(`Slash Factory Address: ${slashFactoryAddress.toString()}`);
|
|
27
27
|
}
|
package/dest/cmds/l1/index.js
CHANGED
|
@@ -94,7 +94,7 @@ export function injectCommands(program, log, debugLogger) {
|
|
|
94
94
|
const account = generateL1Account();
|
|
95
95
|
log(JSON.stringify(account, null, 2));
|
|
96
96
|
});
|
|
97
|
-
program.command('add-l1-validator').description('Adds a validator to the L1 rollup contract.').addOption(l1RpcUrlsOption).option('-pk, --private-key <string>', 'The private key to use sending the transaction', PRIVATE_KEY).option('-m, --mnemonic <string>', 'The mnemonic to use sending the transaction', 'test test test test test test test test test test test junk').addOption(l1ChainIdOption).option('--attester <address>', 'ethereum address of the attester', parseEthereumAddress).option('--
|
|
97
|
+
program.command('add-l1-validator').description('Adds a validator to the L1 rollup contract.').addOption(l1RpcUrlsOption).option('-pk, --private-key <string>', 'The private key to use sending the transaction', PRIVATE_KEY).option('-m, --mnemonic <string>', 'The mnemonic to use sending the transaction', 'test test test test test test test test test test test junk').addOption(l1ChainIdOption).option('--attester <address>', 'ethereum address of the attester', parseEthereumAddress).option('--staking-asset-handler <address>', 'ethereum address of the staking asset handler', parseEthereumAddress).action(async (options)=>{
|
|
98
98
|
const { addL1Validator } = await import('./update_l1_validators.js');
|
|
99
99
|
await addL1Validator({
|
|
100
100
|
rpcUrls: options.l1RpcUrls,
|
|
@@ -102,7 +102,6 @@ export function injectCommands(program, log, debugLogger) {
|
|
|
102
102
|
privateKey: options.privateKey,
|
|
103
103
|
mnemonic: options.mnemonic,
|
|
104
104
|
attesterAddress: options.attester,
|
|
105
|
-
proposerEOAAddress: options.proposerEoa,
|
|
106
105
|
stakingAssetHandlerAddress: options.stakingAssetHandler,
|
|
107
106
|
log,
|
|
108
107
|
debugLogger
|
|
@@ -167,12 +166,12 @@ export function injectCommands(program, log, debugLogger) {
|
|
|
167
166
|
debugLogger
|
|
168
167
|
});
|
|
169
168
|
});
|
|
170
|
-
program.command('deploy-l1-verifier').description('Deploys the rollup verifier contract').addOption(l1RpcUrlsOption).addOption(l1ChainIdOption).addOption(makePxeOption(false).conflicts('rollup-address')).addOption(new Option('--rollup-address <string>', 'The address of the rollup contract').env('ROLLUP_CONTRACT_ADDRESS').argParser(parseEthereumAddress).conflicts('rpc-url')).option('--l1-private-key <string>', 'The L1 private key to use for deployment', PRIVATE_KEY).option('-m, --mnemonic <string>', 'The mnemonic to use in deployment', 'test test test test test test test test test test test junk').requiredOption('--verifier <verifier>', 'Either mock or real', 'real').action(async (options)=>{
|
|
169
|
+
program.command('deploy-l1-verifier').description('Deploys the rollup verifier contract').addOption(l1RpcUrlsOption).addOption(l1ChainIdOption).addOption(makePxeOption(false).conflicts('rollup-address')).addOption(new Option('--rollup-address <string>', 'The address of the rollup contract').env('ROLLUP_CONTRACT_ADDRESS').argParser(parseEthereumAddress).conflicts('rpc-url')).option('--l1-private-key <string>', 'The L1 private key to use for deployment', PRIVATE_KEY).option('-m, --mnemonic <string>', 'The mnemonic to use in deployment', 'test test test test test test test test test test test junk').option('-i, --mnemonic-index <number>', 'The index of the mnemonic to use in deployment', (arg)=>parseInt(arg), 0).requiredOption('--verifier <verifier>', 'Either mock or real', 'real').action(async (options)=>{
|
|
171
170
|
const { deployMockVerifier, deployUltraHonkVerifier } = await import('./deploy_l1_verifier.js');
|
|
172
171
|
if (options.verifier === 'mock') {
|
|
173
172
|
await deployMockVerifier(options.rollupAddress?.toString(), options.l1RpcUrls, options.l1ChainId, options.l1PrivateKey, options.mnemonic, options.rpcUrl, log, debugLogger);
|
|
174
173
|
} else {
|
|
175
|
-
await deployUltraHonkVerifier(options.rollupAddress?.toString(), options.l1RpcUrls, options.l1ChainId, options.l1PrivateKey, options.mnemonic, options.rpcUrl, log, debugLogger);
|
|
174
|
+
await deployUltraHonkVerifier(options.rollupAddress?.toString(), options.l1RpcUrls, options.l1ChainId, options.l1PrivateKey, options.mnemonic, options.mnemonicIndex, options.rpcUrl, log, debugLogger);
|
|
176
175
|
}
|
|
177
176
|
});
|
|
178
177
|
program.command('bridge-erc20').description('Bridges ERC20 tokens to L2.').argument('<amount>', 'The amount of Fee Juice to mint and bridge.', parseBigint).argument('<recipient>', 'Aztec address of the recipient.', parseAztecAddress).addOption(l1RpcUrlsOption).option('-m, --mnemonic <string>', 'The mnemonic to use for deriving the Ethereum address that will mint and bridge', 'test test test test test test test test test test test junk').option('--mint', 'Mint the tokens on L1', false).option('--private', 'If the bridge should use the private flow', false).addOption(l1ChainIdOption).requiredOption('-t, --token <string>', 'The address of the token to bridge', parseEthereumAddress).requiredOption('-p, --portal <string>', 'The address of the portal contract', parseEthereumAddress).option('-f, --faucet <string>', 'The address of the faucet contract (only used if minting)', parseEthereumAddress).option('--l1-private-key <string>', 'The private key to use for deployment', PRIVATE_KEY).option('--json', 'Output the claim in JSON format').action(async (amount, recipient, options)=>{
|
|
@@ -23,9 +23,8 @@ 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,
|
|
26
|
+
export declare function addL1Validator({ rpcUrls, chainId, privateKey, mnemonic, attesterAddress, stakingAssetHandlerAddress, log, debugLogger, }: StakingAssetHandlerCommandArgs & LoggerArgs & {
|
|
27
27
|
attesterAddress: EthAddress;
|
|
28
|
-
proposerEOAAddress: EthAddress;
|
|
29
28
|
}): Promise<void>;
|
|
30
29
|
export declare function removeL1Validator({ rpcUrls, chainId, privateKey, mnemonic, validatorAddress, rollupAddress, log, debugLogger, }: RollupCommandArgs & LoggerArgs & {
|
|
31
30
|
validatorAddress: EthAddress;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update_l1_validators.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/update_l1_validators.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update_l1_validators.d.ts","sourceRoot":"","sources":["../../../src/cmds/l1/update_l1_validators.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAM3D,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,GAAG,EACH,WAAW,GACZ,EAAE,8BAA8B,GAAG,UAAU,GAAG;IAAE,eAAe,EAAE,UAAU,CAAA;CAAE,iBAuC/E;AAED,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,EACP,OAAO,EACP,UAAU,EACV,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,GAAG,EACH,WAAW,GACZ,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,GACZ,EAAE,iBAAiB,GAAG,UAAU,iBAgBhC;AAED,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,EACP,OAAO,EACP,aAAa,EACb,SAAS,EACT,GAAG,EACH,WAAW,GACZ,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,5 +1,5 @@
|
|
|
1
|
-
import { EthCheatCodes, L1TxUtils, RollupContract, createEthereumChain, createExtendedL1Client,
|
|
2
|
-
import {
|
|
1
|
+
import { EthCheatCodes, L1TxUtils, RollupContract, createEthereumChain, createExtendedL1Client, getL1ContractsConfigEnvVars, getPublicClient, isAnvilTestChain } from '@aztec/ethereum';
|
|
2
|
+
import { RollupAbi, StakingAssetHandlerAbi } from '@aztec/l1-artifacts';
|
|
3
3
|
import { encodeFunctionData, formatEther, getContract } from 'viem';
|
|
4
4
|
import { generatePrivateKey, mnemonicToAccount, privateKeyToAccount } from 'viem/accounts';
|
|
5
5
|
export function generateL1Account() {
|
|
@@ -11,7 +11,7 @@ export function generateL1Account() {
|
|
|
11
11
|
address: account.address
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
|
-
export async function addL1Validator({ rpcUrls, chainId, privateKey, mnemonic, attesterAddress,
|
|
14
|
+
export async function addL1Validator({ rpcUrls, chainId, privateKey, mnemonic, attesterAddress, stakingAssetHandlerAddress, log, debugLogger }) {
|
|
15
15
|
const dualLog = makeDualLog(log, debugLogger);
|
|
16
16
|
const account = getAccount(privateKey, mnemonic);
|
|
17
17
|
const chain = createEthereumChain(rpcUrls, chainId);
|
|
@@ -22,10 +22,7 @@ export async function addL1Validator({ rpcUrls, chainId, privateKey, mnemonic, a
|
|
|
22
22
|
client: l1Client
|
|
23
23
|
});
|
|
24
24
|
const rollup = await stakingAssetHandler.read.getRollup();
|
|
25
|
-
|
|
26
|
-
proposerEOAAddress.toString()
|
|
27
|
-
], proposerEOAAddress.toString()).address;
|
|
28
|
-
dualLog(`Adding validator (${attesterAddress}, ${proposerEOAAddress} [forwarder: ${forwarderAddress}]) to rollup ${rollup.toString()}`);
|
|
25
|
+
dualLog(`Adding validator (${attesterAddress} to rollup ${rollup.toString()}`);
|
|
29
26
|
const l1TxUtils = new L1TxUtils(l1Client, debugLogger);
|
|
30
27
|
const { receipt } = await l1TxUtils.sendAndMonitorTransaction({
|
|
31
28
|
to: stakingAssetHandlerAddress.toString(),
|
|
@@ -33,8 +30,7 @@ export async function addL1Validator({ rpcUrls, chainId, privateKey, mnemonic, a
|
|
|
33
30
|
abi: StakingAssetHandlerAbi,
|
|
34
31
|
functionName: 'addValidator',
|
|
35
32
|
args: [
|
|
36
|
-
attesterAddress.toString()
|
|
37
|
-
forwarderAddress
|
|
33
|
+
attesterAddress.toString()
|
|
38
34
|
]
|
|
39
35
|
}),
|
|
40
36
|
abi: StakingAssetHandlerAbi
|
|
@@ -46,12 +42,12 @@ export async function addL1Validator({ rpcUrls, chainId, privateKey, mnemonic, a
|
|
|
46
42
|
if (isAnvilTestChain(chainId)) {
|
|
47
43
|
dualLog(`Funding validator on L1`);
|
|
48
44
|
const cheatCodes = new EthCheatCodes(rpcUrls, debugLogger);
|
|
49
|
-
await cheatCodes.setBalance(
|
|
45
|
+
await cheatCodes.setBalance(attesterAddress, 10n ** 20n);
|
|
50
46
|
} else {
|
|
51
47
|
const balance = await l1Client.getBalance({
|
|
52
|
-
address:
|
|
48
|
+
address: attesterAddress.toString()
|
|
53
49
|
});
|
|
54
|
-
dualLog(`
|
|
50
|
+
dualLog(`Validator balance: ${formatEther(balance)} ETH`);
|
|
55
51
|
if (balance === 0n) {
|
|
56
52
|
dualLog(`WARNING: Proposer has no balance. Remember to fund it!`);
|
|
57
53
|
}
|
package/dest/utils/aztec.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EthAddress, type PXE } from '@aztec/aztec.js';
|
|
2
2
|
import { type ContractArtifact, type FunctionAbi } from '@aztec/aztec.js/abi';
|
|
3
|
-
import { type DeployL1ContractsReturnType, type L1ContractsConfig, RollupContract } from '@aztec/ethereum';
|
|
3
|
+
import { type DeployL1ContractsReturnType, type L1ContractsConfig, type Operator, RollupContract } from '@aztec/ethereum';
|
|
4
4
|
import type { Fr } from '@aztec/foundation/fields';
|
|
5
5
|
import type { LogFn, Logger } from '@aztec/foundation/log';
|
|
6
6
|
import type { NoirPackageConfig } from '@aztec/foundation/noir';
|
|
@@ -18,8 +18,8 @@ export declare function getFunctionAbi(artifact: ContractArtifact, fnName: strin
|
|
|
18
18
|
* @param privateKey - The private key to be used in contract deployment.
|
|
19
19
|
* @param mnemonic - The mnemonic to be used in contract deployment.
|
|
20
20
|
*/
|
|
21
|
-
export declare function deployAztecContracts(rpcUrls: string[], chainId: number, privateKey: string | undefined, mnemonic: string, mnemonicIndex: number, salt: number | undefined, initialValidators:
|
|
22
|
-
export declare function deployNewRollupContracts(registryAddress: EthAddress, rpcUrls: string[], chainId: number, privateKey: string | undefined, mnemonic: string, mnemonicIndex: number, salt: number | undefined, initialValidators:
|
|
21
|
+
export declare function deployAztecContracts(rpcUrls: string[], chainId: number, privateKey: string | undefined, mnemonic: string, mnemonicIndex: number, salt: number | undefined, initialValidators: Operator[], genesisArchiveRoot: Fr, feeJuicePortalInitialBalance: bigint, acceleratedTestDeployments: boolean, config: L1ContractsConfig, debugLogger: Logger): Promise<DeployL1ContractsReturnType>;
|
|
22
|
+
export declare function deployNewRollupContracts(registryAddress: EthAddress, rpcUrls: string[], chainId: number, privateKey: string | undefined, mnemonic: string, mnemonicIndex: number, salt: number | undefined, initialValidators: Operator[], genesisArchiveRoot: Fr, feeJuicePortalInitialBalance: bigint, config: L1ContractsConfig, logger: Logger): Promise<{
|
|
23
23
|
rollup: RollupContract;
|
|
24
24
|
slashFactoryAddress: EthAddress;
|
|
25
25
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aztec.d.ts","sourceRoot":"","sources":["../../src/utils/aztec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAIjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"aztec.d.ts","sourceRoot":"","sources":["../../src/utils/aztec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAIjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,KAAK,2BAA2B,EAChC,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,cAAc,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAShE;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAMtF;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,iBAAiB,EAAE,QAAQ,EAAE,EAC7B,kBAAkB,EAAE,EAAE,EACtB,4BAA4B,EAAE,MAAM,EACpC,0BAA0B,EAAE,OAAO,EACnC,MAAM,EAAE,iBAAiB,EACzB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,2BAA2B,CAAC,CA4BtC;AAED,wBAAsB,wBAAwB,CAC5C,eAAe,EAAE,UAAU,EAC3B,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,iBAAiB,EAAE,QAAQ,EAAE,EAC7B,kBAAkB,EAAE,EAAE,EACtB,4BAA4B,EAAE,MAAM,EACpC,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,mBAAmB,EAAE,UAAU,CAAA;CAAE,CAAC,CAmCtE;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAKjE;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,6BA4BpE;AAED;;;;;;;GAOG;AACH,wBAAsB,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK;;;;GAO3G;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,WAK1C,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAUtE;AAKD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,oBAAoB,EAAE,MAAM,iBAyB9E"}
|
package/dest/utils/aztec.js
CHANGED
|
@@ -53,8 +53,12 @@ export async function deployNewRollupContracts(registryAddress, rpcUrls, chainId
|
|
|
53
53
|
const client = createExtendedL1Client(rpcUrls, account, chain.chainInfo, undefined, mnemonicIndex);
|
|
54
54
|
if (!initialValidators || initialValidators.length === 0) {
|
|
55
55
|
// initialize the new rollup with Amin's validator address.
|
|
56
|
+
const amin = EthAddress.fromString('0x3b218d0F26d15B36C715cB06c949210a0d630637');
|
|
56
57
|
initialValidators = [
|
|
57
|
-
|
|
58
|
+
{
|
|
59
|
+
attester: amin,
|
|
60
|
+
withdrawer: amin
|
|
61
|
+
}
|
|
58
62
|
];
|
|
59
63
|
logger.info('Initializing new rollup with old attesters', {
|
|
60
64
|
initialValidators
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0-nightly.20250604",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./contracts": "./dest/cmds/contracts/index.js",
|
|
@@ -65,15 +65,15 @@
|
|
|
65
65
|
]
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
|
-
"@aztec/archiver": "0.
|
|
69
|
-
"@aztec/aztec.js": "0.
|
|
70
|
-
"@aztec/constants": "0.
|
|
71
|
-
"@aztec/entrypoints": "0.
|
|
72
|
-
"@aztec/foundation": "0.
|
|
73
|
-
"@aztec/l1-artifacts": "0.
|
|
74
|
-
"@aztec/p2p": "0.
|
|
75
|
-
"@aztec/stdlib": "0.
|
|
76
|
-
"@aztec/world-state": "0.
|
|
68
|
+
"@aztec/archiver": "1.0.0-nightly.20250604",
|
|
69
|
+
"@aztec/aztec.js": "1.0.0-nightly.20250604",
|
|
70
|
+
"@aztec/constants": "1.0.0-nightly.20250604",
|
|
71
|
+
"@aztec/entrypoints": "1.0.0-nightly.20250604",
|
|
72
|
+
"@aztec/foundation": "1.0.0-nightly.20250604",
|
|
73
|
+
"@aztec/l1-artifacts": "1.0.0-nightly.20250604",
|
|
74
|
+
"@aztec/p2p": "1.0.0-nightly.20250604",
|
|
75
|
+
"@aztec/stdlib": "1.0.0-nightly.20250604",
|
|
76
|
+
"@aztec/world-state": "1.0.0-nightly.20250604",
|
|
77
77
|
"@iarna/toml": "^2.2.5",
|
|
78
78
|
"@libp2p/peer-id-factory": "^3.0.4",
|
|
79
79
|
"commander": "^12.1.0",
|
|
@@ -85,9 +85,9 @@
|
|
|
85
85
|
"viem": "2.23.7"
|
|
86
86
|
},
|
|
87
87
|
"devDependencies": {
|
|
88
|
-
"@aztec/accounts": "0.
|
|
89
|
-
"@aztec/ethereum": "0.
|
|
90
|
-
"@aztec/protocol-contracts": "0.
|
|
88
|
+
"@aztec/accounts": "1.0.0-nightly.20250604",
|
|
89
|
+
"@aztec/ethereum": "1.0.0-nightly.20250604",
|
|
90
|
+
"@aztec/protocol-contracts": "1.0.0-nightly.20250604",
|
|
91
91
|
"@jest/globals": "^29.5.0",
|
|
92
92
|
"@types/jest": "^29.5.0",
|
|
93
93
|
"@types/lodash.chunk": "^4.2.9",
|
|
@@ -103,15 +103,15 @@
|
|
|
103
103
|
"typescript": "^5.3.3"
|
|
104
104
|
},
|
|
105
105
|
"peerDependencies": {
|
|
106
|
-
"@aztec/accounts": "0.
|
|
107
|
-
"@aztec/bb-prover": "0.
|
|
108
|
-
"@aztec/ethereum": "0.
|
|
109
|
-
"@aztec/l1-artifacts": "0.
|
|
110
|
-
"@aztec/noir-contracts.js": "0.
|
|
111
|
-
"@aztec/noir-protocol-circuits-types": "0.
|
|
112
|
-
"@aztec/noir-test-contracts.js": "0.
|
|
113
|
-
"@aztec/protocol-contracts": "0.
|
|
114
|
-
"@aztec/stdlib": "0.
|
|
106
|
+
"@aztec/accounts": "1.0.0-nightly.20250604",
|
|
107
|
+
"@aztec/bb-prover": "1.0.0-nightly.20250604",
|
|
108
|
+
"@aztec/ethereum": "1.0.0-nightly.20250604",
|
|
109
|
+
"@aztec/l1-artifacts": "1.0.0-nightly.20250604",
|
|
110
|
+
"@aztec/noir-contracts.js": "1.0.0-nightly.20250604",
|
|
111
|
+
"@aztec/noir-protocol-circuits-types": "1.0.0-nightly.20250604",
|
|
112
|
+
"@aztec/noir-test-contracts.js": "1.0.0-nightly.20250604",
|
|
113
|
+
"@aztec/protocol-contracts": "1.0.0-nightly.20250604",
|
|
114
|
+
"@aztec/stdlib": "1.0.0-nightly.20250604"
|
|
115
115
|
},
|
|
116
116
|
"files": [
|
|
117
117
|
"dest",
|
|
@@ -79,7 +79,7 @@ export async function sequencers(opts: {
|
|
|
79
79
|
].map(txHash => publicClient.waitForTransactionReceipt({ hash: txHash })),
|
|
80
80
|
);
|
|
81
81
|
|
|
82
|
-
const hash = await writeableRollup.write.deposit([who, who,
|
|
82
|
+
const hash = await writeableRollup.write.deposit([who, who, true]);
|
|
83
83
|
await publicClient.waitForTransactionReceipt({ hash });
|
|
84
84
|
log(`Added in tx ${hash}`);
|
|
85
85
|
} else if (command === 'remove') {
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { getInitialTestAccounts } from '@aztec/accounts/testing';
|
|
2
|
-
import { getL1ContractsConfigEnvVars } from '@aztec/ethereum';
|
|
3
|
-
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
+
import { type Operator, getL1ContractsConfigEnvVars } from '@aztec/ethereum';
|
|
4
3
|
import type { LogFn, Logger } from '@aztec/foundation/log';
|
|
5
4
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
6
5
|
|
|
@@ -18,7 +17,7 @@ export async function deployL1Contracts(
|
|
|
18
17
|
sponsoredFPC: boolean,
|
|
19
18
|
acceleratedTestDeployments: boolean,
|
|
20
19
|
json: boolean,
|
|
21
|
-
initialValidators:
|
|
20
|
+
initialValidators: Operator[],
|
|
22
21
|
log: LogFn,
|
|
23
22
|
debugLogger: Logger,
|
|
24
23
|
) {
|
|
@@ -55,6 +54,7 @@ export async function deployL1Contracts(
|
|
|
55
54
|
} else {
|
|
56
55
|
log(`Rollup Address: ${l1ContractAddresses.rollupAddress.toString()}`);
|
|
57
56
|
log(`Registry Address: ${l1ContractAddresses.registryAddress.toString()}`);
|
|
57
|
+
log(`GSE Address: ${l1ContractAddresses.gseAddress?.toString()}`);
|
|
58
58
|
log(`L1 -> L2 Inbox Address: ${l1ContractAddresses.inboxAddress.toString()}`);
|
|
59
59
|
log(`L2 -> L1 Outbox Address: ${l1ContractAddresses.outboxAddress.toString()}`);
|
|
60
60
|
log(`Fee Juice Address: ${l1ContractAddresses.feeJuiceAddress.toString()}`);
|
|
@@ -68,7 +68,7 @@ export async function deployL1Contracts(
|
|
|
68
68
|
log(`FeeAssetHandler Address: ${l1ContractAddresses.feeAssetHandlerAddress?.toString()}`);
|
|
69
69
|
log(`StakingAssetHandler Address: ${l1ContractAddresses.stakingAssetHandlerAddress?.toString()}`);
|
|
70
70
|
log(`Initial funded accounts: ${initialFundedAccounts.map(a => a.toString()).join(', ')}`);
|
|
71
|
-
log(`Initial validators: ${initialValidators.map(a => a.toString()).join(', ')}`);
|
|
71
|
+
log(`Initial validators: ${initialValidators.map(a => a.attester.toString()).join(', ')}`);
|
|
72
72
|
log(`Genesis archive root: ${genesisArchiveRoot.toString()}`);
|
|
73
73
|
}
|
|
74
74
|
}
|
|
@@ -5,6 +5,7 @@ import { HonkVerifierAbi, HonkVerifierBytecode } from '@aztec/l1-artifacts';
|
|
|
5
5
|
|
|
6
6
|
import { InvalidOptionArgumentError } from 'commander';
|
|
7
7
|
import { type Hex, getContract } from 'viem';
|
|
8
|
+
import { mnemonicToAccount, privateKeyToAccount } from 'viem/accounts';
|
|
8
9
|
|
|
9
10
|
export async function deployUltraHonkVerifier(
|
|
10
11
|
rollupAddress: Hex | undefined,
|
|
@@ -12,13 +13,17 @@ export async function deployUltraHonkVerifier(
|
|
|
12
13
|
l1ChainId: string,
|
|
13
14
|
privateKey: string | undefined,
|
|
14
15
|
mnemonic: string,
|
|
16
|
+
mnemonicIndex: number,
|
|
15
17
|
pxeRpcUrl: string,
|
|
16
18
|
log: LogFn,
|
|
17
19
|
debugLogger: Logger,
|
|
18
20
|
) {
|
|
21
|
+
const account = !privateKey
|
|
22
|
+
? mnemonicToAccount(mnemonic!, { addressIndex: mnemonicIndex })
|
|
23
|
+
: privateKeyToAccount(`${privateKey.startsWith('0x') ? '' : '0x'}${privateKey}` as `0x${string}`);
|
|
19
24
|
const extendedClient = createExtendedL1Client(
|
|
20
25
|
ethRpcUrls,
|
|
21
|
-
|
|
26
|
+
account,
|
|
22
27
|
createEthereumChain(ethRpcUrls, l1ChainId).chainInfo,
|
|
23
28
|
);
|
|
24
29
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getInitialTestAccounts } from '@aztec/accounts/testing';
|
|
2
|
-
import { getL1ContractsConfigEnvVars } from '@aztec/ethereum';
|
|
2
|
+
import { type Operator, getL1ContractsConfigEnvVars } from '@aztec/ethereum';
|
|
3
3
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
4
|
import type { LogFn, Logger } from '@aztec/foundation/log';
|
|
5
5
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
@@ -18,7 +18,7 @@ export async function deployNewRollup(
|
|
|
18
18
|
testAccounts: boolean,
|
|
19
19
|
sponsoredFPC: boolean,
|
|
20
20
|
json: boolean,
|
|
21
|
-
initialValidators:
|
|
21
|
+
initialValidators: Operator[],
|
|
22
22
|
log: LogFn,
|
|
23
23
|
debugLogger: Logger,
|
|
24
24
|
) {
|
|
@@ -50,7 +50,7 @@ export async function deployNewRollup(
|
|
|
50
50
|
{
|
|
51
51
|
rollupAddress: rollup.address,
|
|
52
52
|
initialFundedAccounts: initialFundedAccounts.map(a => a.toString()),
|
|
53
|
-
initialValidators: initialValidators.map(a => a.toString()),
|
|
53
|
+
initialValidators: initialValidators.map(a => a.attester.toString()),
|
|
54
54
|
genesisArchiveRoot: genesisArchiveRoot.toString(),
|
|
55
55
|
slashFactoryAddress: slashFactoryAddress.toString(),
|
|
56
56
|
},
|
|
@@ -61,7 +61,7 @@ export async function deployNewRollup(
|
|
|
61
61
|
} else {
|
|
62
62
|
log(`Rollup Address: ${rollup.address}`);
|
|
63
63
|
log(`Initial funded accounts: ${initialFundedAccounts.map(a => a.toString()).join(', ')}`);
|
|
64
|
-
log(`Initial validators: ${initialValidators.map(a => a.toString()).join(', ')}`);
|
|
64
|
+
log(`Initial validators: ${initialValidators.map(a => a.attester.toString()).join(', ')}`);
|
|
65
65
|
log(`Genesis archive root: ${genesisArchiveRoot.toString()}`);
|
|
66
66
|
log(`Slash Factory Address: ${slashFactoryAddress.toString()}`);
|
|
67
67
|
}
|
package/src/cmds/l1/index.ts
CHANGED
|
@@ -289,7 +289,6 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
289
289
|
)
|
|
290
290
|
.addOption(l1ChainIdOption)
|
|
291
291
|
.option('--attester <address>', 'ethereum address of the attester', parseEthereumAddress)
|
|
292
|
-
.option('--proposer-eoa <address>', 'ethereum address of the proposer EOA', parseEthereumAddress)
|
|
293
292
|
.option('--staking-asset-handler <address>', 'ethereum address of the staking asset handler', parseEthereumAddress)
|
|
294
293
|
.action(async options => {
|
|
295
294
|
const { addL1Validator } = await import('./update_l1_validators.js');
|
|
@@ -299,7 +298,6 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
299
298
|
privateKey: options.privateKey,
|
|
300
299
|
mnemonic: options.mnemonic,
|
|
301
300
|
attesterAddress: options.attester,
|
|
302
|
-
proposerEOAAddress: options.proposerEoa,
|
|
303
301
|
stakingAssetHandlerAddress: options.stakingAssetHandler,
|
|
304
302
|
log,
|
|
305
303
|
debugLogger,
|
|
@@ -438,6 +436,7 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
438
436
|
'The mnemonic to use in deployment',
|
|
439
437
|
'test test test test test test test test test test test junk',
|
|
440
438
|
)
|
|
439
|
+
.option('-i, --mnemonic-index <number>', 'The index of the mnemonic to use in deployment', arg => parseInt(arg), 0)
|
|
441
440
|
.requiredOption('--verifier <verifier>', 'Either mock or real', 'real')
|
|
442
441
|
.action(async options => {
|
|
443
442
|
const { deployMockVerifier, deployUltraHonkVerifier } = await import('./deploy_l1_verifier.js');
|
|
@@ -459,6 +458,7 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
459
458
|
options.l1ChainId,
|
|
460
459
|
options.l1PrivateKey,
|
|
461
460
|
options.mnemonic,
|
|
461
|
+
options.mnemonicIndex,
|
|
462
462
|
options.rpcUrl,
|
|
463
463
|
log,
|
|
464
464
|
debugLogger,
|
|
@@ -4,14 +4,13 @@ import {
|
|
|
4
4
|
RollupContract,
|
|
5
5
|
createEthereumChain,
|
|
6
6
|
createExtendedL1Client,
|
|
7
|
-
getExpectedAddress,
|
|
8
7
|
getL1ContractsConfigEnvVars,
|
|
9
8
|
getPublicClient,
|
|
10
9
|
isAnvilTestChain,
|
|
11
10
|
} from '@aztec/ethereum';
|
|
12
11
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
13
12
|
import type { LogFn, Logger } from '@aztec/foundation/log';
|
|
14
|
-
import {
|
|
13
|
+
import { RollupAbi, StakingAssetHandlerAbi } from '@aztec/l1-artifacts';
|
|
15
14
|
|
|
16
15
|
import { encodeFunctionData, formatEther, getContract } from 'viem';
|
|
17
16
|
import { generatePrivateKey, mnemonicToAccount, privateKeyToAccount } from 'viem/accounts';
|
|
@@ -54,11 +53,10 @@ export async function addL1Validator({
|
|
|
54
53
|
privateKey,
|
|
55
54
|
mnemonic,
|
|
56
55
|
attesterAddress,
|
|
57
|
-
proposerEOAAddress,
|
|
58
56
|
stakingAssetHandlerAddress,
|
|
59
57
|
log,
|
|
60
58
|
debugLogger,
|
|
61
|
-
}: StakingAssetHandlerCommandArgs & LoggerArgs & { attesterAddress: EthAddress
|
|
59
|
+
}: StakingAssetHandlerCommandArgs & LoggerArgs & { attesterAddress: EthAddress }) {
|
|
62
60
|
const dualLog = makeDualLog(log, debugLogger);
|
|
63
61
|
const account = getAccount(privateKey, mnemonic);
|
|
64
62
|
const chain = createEthereumChain(rpcUrls, chainId);
|
|
@@ -71,17 +69,7 @@ export async function addL1Validator({
|
|
|
71
69
|
});
|
|
72
70
|
|
|
73
71
|
const rollup = await stakingAssetHandler.read.getRollup();
|
|
74
|
-
|
|
75
|
-
const forwarderAddress = getExpectedAddress(
|
|
76
|
-
ForwarderAbi,
|
|
77
|
-
ForwarderBytecode,
|
|
78
|
-
[proposerEOAAddress.toString()],
|
|
79
|
-
proposerEOAAddress.toString(),
|
|
80
|
-
).address;
|
|
81
|
-
|
|
82
|
-
dualLog(
|
|
83
|
-
`Adding validator (${attesterAddress}, ${proposerEOAAddress} [forwarder: ${forwarderAddress}]) to rollup ${rollup.toString()}`,
|
|
84
|
-
);
|
|
72
|
+
dualLog(`Adding validator (${attesterAddress} to rollup ${rollup.toString()}`);
|
|
85
73
|
|
|
86
74
|
const l1TxUtils = new L1TxUtils(l1Client, debugLogger);
|
|
87
75
|
|
|
@@ -90,7 +78,7 @@ export async function addL1Validator({
|
|
|
90
78
|
data: encodeFunctionData({
|
|
91
79
|
abi: StakingAssetHandlerAbi,
|
|
92
80
|
functionName: 'addValidator',
|
|
93
|
-
args: [attesterAddress.toString()
|
|
81
|
+
args: [attesterAddress.toString()],
|
|
94
82
|
}),
|
|
95
83
|
abi: StakingAssetHandlerAbi,
|
|
96
84
|
});
|
|
@@ -99,10 +87,10 @@ export async function addL1Validator({
|
|
|
99
87
|
if (isAnvilTestChain(chainId)) {
|
|
100
88
|
dualLog(`Funding validator on L1`);
|
|
101
89
|
const cheatCodes = new EthCheatCodes(rpcUrls, debugLogger);
|
|
102
|
-
await cheatCodes.setBalance(
|
|
90
|
+
await cheatCodes.setBalance(attesterAddress, 10n ** 20n);
|
|
103
91
|
} else {
|
|
104
|
-
const balance = await l1Client.getBalance({ address:
|
|
105
|
-
dualLog(`
|
|
92
|
+
const balance = await l1Client.getBalance({ address: attesterAddress.toString() });
|
|
93
|
+
dualLog(`Validator balance: ${formatEther(balance)} ETH`);
|
|
106
94
|
if (balance === 0n) {
|
|
107
95
|
dualLog(`WARNING: Proposer has no balance. Remember to fund it!`);
|
|
108
96
|
}
|
package/src/utils/aztec.ts
CHANGED
|
@@ -6,7 +6,12 @@ import {
|
|
|
6
6
|
getAllFunctionAbis,
|
|
7
7
|
loadContractArtifact,
|
|
8
8
|
} from '@aztec/aztec.js/abi';
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
type DeployL1ContractsReturnType,
|
|
11
|
+
type L1ContractsConfig,
|
|
12
|
+
type Operator,
|
|
13
|
+
RollupContract,
|
|
14
|
+
} from '@aztec/ethereum';
|
|
10
15
|
import type { Fr } from '@aztec/foundation/fields';
|
|
11
16
|
import type { LogFn, Logger } from '@aztec/foundation/log';
|
|
12
17
|
import type { NoirPackageConfig } from '@aztec/foundation/noir';
|
|
@@ -46,7 +51,7 @@ export async function deployAztecContracts(
|
|
|
46
51
|
mnemonic: string,
|
|
47
52
|
mnemonicIndex: number,
|
|
48
53
|
salt: number | undefined,
|
|
49
|
-
initialValidators:
|
|
54
|
+
initialValidators: Operator[],
|
|
50
55
|
genesisArchiveRoot: Fr,
|
|
51
56
|
feeJuicePortalInitialBalance: bigint,
|
|
52
57
|
acceleratedTestDeployments: boolean,
|
|
@@ -90,7 +95,7 @@ export async function deployNewRollupContracts(
|
|
|
90
95
|
mnemonic: string,
|
|
91
96
|
mnemonicIndex: number,
|
|
92
97
|
salt: number | undefined,
|
|
93
|
-
initialValidators:
|
|
98
|
+
initialValidators: Operator[],
|
|
94
99
|
genesisArchiveRoot: Fr,
|
|
95
100
|
feeJuicePortalInitialBalance: bigint,
|
|
96
101
|
config: L1ContractsConfig,
|
|
@@ -108,7 +113,8 @@ export async function deployNewRollupContracts(
|
|
|
108
113
|
|
|
109
114
|
if (!initialValidators || initialValidators.length === 0) {
|
|
110
115
|
// initialize the new rollup with Amin's validator address.
|
|
111
|
-
|
|
116
|
+
const amin = EthAddress.fromString('0x3b218d0F26d15B36C715cB06c949210a0d630637');
|
|
117
|
+
initialValidators = [{ attester: amin, withdrawer: amin }];
|
|
112
118
|
logger.info('Initializing new rollup with old attesters', { initialValidators });
|
|
113
119
|
}
|
|
114
120
|
|