@aztec/cli 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2 → 0.77.0-testnet-ignition.21
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/README.md +1 -1
- package/dest/cmds/contracts/index.d.ts +4 -0
- package/dest/cmds/contracts/index.d.ts.map +1 -0
- package/dest/cmds/contracts/inspect_contract.d.ts +3 -0
- package/dest/cmds/contracts/inspect_contract.d.ts.map +1 -0
- package/dest/cmds/contracts/inspect_contract.js +3 -3
- package/dest/cmds/contracts/parse_parameter_struct.d.ts +3 -0
- package/dest/cmds/contracts/parse_parameter_struct.d.ts.map +1 -0
- package/dest/cmds/devnet/bootstrap_network.d.ts +3 -0
- package/dest/cmds/devnet/bootstrap_network.d.ts.map +1 -0
- package/dest/cmds/devnet/bootstrap_network.js +13 -10
- package/dest/cmds/devnet/faucet.d.ts +4 -0
- package/dest/cmds/devnet/faucet.d.ts.map +1 -0
- package/dest/cmds/devnet/index.d.ts +4 -0
- package/dest/cmds/devnet/index.d.ts.map +1 -0
- package/dest/cmds/devnet/index.js +5 -3
- package/dest/cmds/infrastructure/index.d.ts +4 -0
- package/dest/cmds/infrastructure/index.d.ts.map +1 -0
- package/dest/cmds/infrastructure/index.js +8 -6
- package/dest/cmds/infrastructure/sequencers.d.ts +13 -0
- package/dest/cmds/infrastructure/sequencers.d.ts.map +1 -0
- package/dest/cmds/infrastructure/sequencers.js +5 -5
- package/dest/cmds/infrastructure/setup_l2_contract.d.ts +3 -0
- package/dest/cmds/infrastructure/setup_l2_contract.d.ts.map +1 -0
- package/dest/cmds/infrastructure/setup_l2_contract.js +43 -0
- package/dest/cmds/l1/advance_epoch.d.ts +3 -0
- package/dest/cmds/l1/advance_epoch.d.ts.map +1 -0
- package/dest/cmds/l1/advance_epoch.js +3 -3
- package/dest/cmds/l1/assume_proven_through.d.ts +3 -0
- package/dest/cmds/l1/assume_proven_through.d.ts.map +1 -0
- package/dest/cmds/l1/assume_proven_through.js +8 -8
- package/dest/cmds/l1/bridge_erc20.d.ts +4 -0
- package/dest/cmds/l1/bridge_erc20.d.ts.map +1 -0
- package/dest/cmds/l1/bridge_erc20.js +3 -3
- package/dest/cmds/l1/create_l1_account.d.ts +3 -0
- package/dest/cmds/l1/create_l1_account.d.ts.map +1 -0
- package/dest/cmds/l1/deploy_l1_contracts.d.ts +4 -0
- package/dest/cmds/l1/deploy_l1_contracts.d.ts.map +1 -0
- package/dest/cmds/l1/deploy_l1_contracts.js +7 -3
- package/dest/cmds/l1/deploy_l1_verifier.d.ts +5 -0
- package/dest/cmds/l1/deploy_l1_verifier.d.ts.map +1 -0
- package/dest/cmds/l1/deploy_l1_verifier.js +4 -4
- package/dest/cmds/l1/deploy_new_rollup.d.ts +4 -0
- package/dest/cmds/l1/deploy_new_rollup.d.ts.map +1 -0
- package/dest/cmds/l1/deploy_new_rollup.js +19 -0
- package/dest/cmds/l1/get_l1_addresses.d.ts +4 -0
- package/dest/cmds/l1/get_l1_addresses.d.ts.map +1 -0
- package/dest/cmds/l1/get_l1_addresses.js +18 -0
- package/dest/cmds/l1/get_l1_balance.d.ts +4 -0
- package/dest/cmds/l1/get_l1_balance.d.ts.map +1 -0
- package/dest/cmds/l1/get_l1_balance.js +4 -4
- package/dest/cmds/l1/governance_utils.d.ts +50 -0
- package/dest/cmds/l1/governance_utils.d.ts.map +1 -0
- package/dest/cmds/l1/governance_utils.js +85 -0
- package/dest/cmds/l1/index.d.ts +4 -0
- package/dest/cmds/l1/index.d.ts.map +1 -0
- package/dest/cmds/l1/index.js +108 -27
- package/dest/cmds/l1/prover_stats.d.ts +14 -0
- package/dest/cmds/l1/prover_stats.d.ts.map +1 -0
- package/dest/cmds/l1/prover_stats.js +6 -6
- package/dest/cmds/l1/update_l1_validators.d.ts +30 -0
- package/dest/cmds/l1/update_l1_validators.d.ts.map +1 -0
- package/dest/cmds/l1/update_l1_validators.js +22 -22
- package/dest/cmds/misc/compute_selector.d.ts +3 -0
- package/dest/cmds/misc/compute_selector.d.ts.map +1 -0
- package/dest/cmds/misc/compute_selector.js +1 -1
- package/dest/cmds/misc/example_contracts.d.ts +3 -0
- package/dest/cmds/misc/example_contracts.d.ts.map +1 -0
- package/dest/cmds/misc/generate_bootnode_enr.d.ts +3 -0
- package/dest/cmds/misc/generate_bootnode_enr.d.ts.map +1 -0
- package/dest/cmds/misc/generate_bootnode_enr.js +5 -0
- package/dest/cmds/misc/generate_p2p_private_key.d.ts +3 -0
- package/dest/cmds/misc/generate_p2p_private_key.d.ts.map +1 -0
- package/dest/cmds/misc/generate_secret_and_hash.d.ts +3 -0
- package/dest/cmds/misc/generate_secret_and_hash.d.ts.map +1 -0
- package/dest/cmds/misc/generate_secret_key.d.ts +5 -0
- package/dest/cmds/misc/generate_secret_key.d.ts.map +1 -0
- package/dest/cmds/misc/index.d.ts +4 -0
- package/dest/cmds/misc/index.d.ts.map +1 -0
- package/dest/cmds/misc/index.js +9 -1
- package/dest/cmds/misc/setup_contracts.d.ts +7 -0
- package/dest/cmds/misc/setup_contracts.d.ts.map +1 -0
- package/dest/cmds/misc/setup_contracts.js +5 -3
- package/dest/cmds/misc/update/common.d.ts +17 -0
- package/dest/cmds/misc/update/common.d.ts.map +1 -0
- package/dest/cmds/misc/update/github.d.ts +4 -0
- package/dest/cmds/misc/update/github.d.ts.map +1 -0
- package/dest/cmds/misc/update/noir.d.ts +10 -0
- package/dest/cmds/misc/update/noir.d.ts.map +1 -0
- package/dest/cmds/misc/update/npm.d.ts +34 -0
- package/dest/cmds/misc/update/npm.d.ts.map +1 -0
- package/dest/cmds/misc/update/utils.d.ts +14 -0
- package/dest/cmds/misc/update/utils.d.ts.map +1 -0
- package/dest/cmds/misc/update.d.ts +3 -0
- package/dest/cmds/misc/update.d.ts.map +1 -0
- package/dest/cmds/pxe/add_contract.d.ts +5 -0
- package/dest/cmds/pxe/add_contract.d.ts.map +1 -0
- package/dest/cmds/pxe/add_contract.js +6 -4
- package/dest/cmds/pxe/block_number.d.ts +3 -0
- package/dest/cmds/pxe/block_number.d.ts.map +1 -0
- package/dest/cmds/pxe/get_account.d.ts +4 -0
- package/dest/cmds/pxe/get_account.d.ts.map +1 -0
- package/dest/cmds/pxe/get_accounts.d.ts +3 -0
- package/dest/cmds/pxe/get_accounts.d.ts.map +1 -0
- package/dest/cmds/pxe/get_block.d.ts +3 -0
- package/dest/cmds/pxe/get_block.d.ts.map +1 -0
- package/dest/cmds/pxe/get_contract_data.d.ts +4 -0
- package/dest/cmds/pxe/get_contract_data.d.ts.map +1 -0
- package/dest/cmds/pxe/get_contract_data.js +1 -1
- package/dest/cmds/pxe/get_current_base_fee.d.ts +3 -0
- package/dest/cmds/pxe/get_current_base_fee.d.ts.map +1 -0
- package/dest/cmds/pxe/get_l1_to_l2_message_witness.d.ts +4 -0
- package/dest/cmds/pxe/get_l1_to_l2_message_witness.d.ts.map +1 -0
- package/dest/cmds/pxe/get_logs.d.ts +4 -0
- package/dest/cmds/pxe/get_logs.d.ts.map +1 -0
- package/dest/cmds/pxe/get_node_info.d.ts +3 -0
- package/dest/cmds/pxe/get_node_info.d.ts.map +1 -0
- package/dest/cmds/pxe/get_node_info.js +2 -2
- package/dest/cmds/pxe/get_pxe_info.d.ts +3 -0
- package/dest/cmds/pxe/get_pxe_info.d.ts.map +1 -0
- package/dest/cmds/pxe/index.d.ts +4 -0
- package/dest/cmds/pxe/index.d.ts.map +1 -0
- package/dest/cmds/pxe/index.js +1 -1
- package/dest/utils/aztec.d.ts +68 -0
- package/dest/utils/aztec.d.ts.map +1 -0
- package/dest/utils/aztec.js +34 -23
- package/dest/utils/commands.d.ts +143 -0
- package/dest/utils/commands.d.ts.map +1 -0
- package/dest/utils/commands.js +2 -2
- package/dest/utils/encoding.d.ts +15 -0
- package/dest/utils/encoding.d.ts.map +1 -0
- package/dest/utils/encoding.js +6 -13
- package/dest/utils/github.d.ts +4 -0
- package/dest/utils/github.d.ts.map +1 -0
- package/dest/utils/index.d.ts +5 -0
- package/dest/utils/index.d.ts.map +1 -0
- package/dest/utils/inspect.d.ts +17 -0
- package/dest/utils/inspect.d.ts.map +1 -0
- package/dest/utils/inspect.js +4 -4
- package/package.json +21 -20
- package/src/cmds/contracts/index.ts +2 -2
- package/src/cmds/contracts/inspect_contract.ts +5 -5
- package/src/cmds/contracts/parse_parameter_struct.ts +2 -2
- package/src/cmds/devnet/bootstrap_network.ts +24 -12
- package/src/cmds/devnet/faucet.ts +2 -2
- package/src/cmds/devnet/index.ts +16 -8
- package/src/cmds/infrastructure/index.ts +12 -11
- package/src/cmds/infrastructure/sequencers.ts +10 -7
- package/src/cmds/infrastructure/setup_l2_contract.ts +47 -0
- package/src/cmds/l1/advance_epoch.ts +4 -4
- package/src/cmds/l1/assume_proven_through.ts +8 -14
- package/src/cmds/l1/bridge_erc20.ts +5 -6
- package/src/cmds/l1/create_l1_account.ts +1 -1
- package/src/cmds/l1/deploy_l1_contracts.ts +13 -5
- package/src/cmds/l1/deploy_l1_verifier.ts +7 -7
- package/src/cmds/l1/deploy_new_rollup.ts +58 -0
- package/src/cmds/l1/get_l1_addresses.ts +30 -0
- package/src/cmds/l1/get_l1_balance.ts +9 -6
- package/src/cmds/l1/governance_utils.ts +187 -0
- package/src/cmds/l1/index.ts +238 -97
- package/src/cmds/l1/prover_stats.ts +21 -11
- package/src/cmds/l1/update_l1_validators.ts +25 -25
- package/src/cmds/misc/compute_selector.ts +2 -2
- package/src/cmds/misc/example_contracts.ts +1 -1
- package/src/cmds/misc/generate_bootnode_enr.ts +12 -0
- package/src/cmds/misc/generate_p2p_private_key.ts +1 -1
- package/src/cmds/misc/generate_secret_and_hash.ts +1 -1
- package/src/cmds/misc/index.ts +25 -3
- package/src/cmds/misc/setup_contracts.ts +6 -4
- package/src/cmds/misc/update/noir.ts +2 -2
- package/src/cmds/misc/update/npm.ts +2 -2
- package/src/cmds/misc/update/utils.ts +1 -1
- package/src/cmds/misc/update.ts +2 -2
- package/src/cmds/pxe/add_contract.ts +7 -5
- package/src/cmds/pxe/block_number.ts +1 -1
- package/src/cmds/pxe/get_account.ts +2 -2
- package/src/cmds/pxe/get_accounts.ts +1 -1
- package/src/cmds/pxe/get_block.ts +1 -1
- package/src/cmds/pxe/get_contract_data.ts +5 -3
- package/src/cmds/pxe/get_current_base_fee.ts +1 -1
- package/src/cmds/pxe/get_l1_to_l2_message_witness.ts +1 -1
- package/src/cmds/pxe/get_logs.ts +2 -2
- package/src/cmds/pxe/get_node_info.ts +3 -3
- package/src/cmds/pxe/get_pxe_info.ts +1 -1
- package/src/cmds/pxe/index.ts +3 -3
- package/src/utils/aztec.ts +74 -44
- package/src/utils/commands.ts +4 -4
- package/src/utils/encoding.ts +7 -13
- package/src/utils/inspect.ts +8 -7
- package/dest/cmds/infrastructure/setup_protocol_contract.js +0 -31
- package/src/cmds/infrastructure/setup_protocol_contract.ts +0 -36
package/src/cmds/l1/index.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
-
import {
|
|
2
|
+
import type { LogFn, Logger } from '@aztec/foundation/log';
|
|
3
3
|
|
|
4
4
|
import { type Command, Option } from 'commander';
|
|
5
5
|
|
|
6
6
|
import {
|
|
7
|
-
|
|
7
|
+
ETHEREUM_HOSTS,
|
|
8
8
|
PRIVATE_KEY,
|
|
9
9
|
l1ChainIdOption,
|
|
10
10
|
makePxeOption,
|
|
@@ -14,17 +14,22 @@ import {
|
|
|
14
14
|
pxeOption,
|
|
15
15
|
} from '../../utils/commands.js';
|
|
16
16
|
|
|
17
|
+
const l1RpcUrlsOption = new Option(
|
|
18
|
+
'--l1-rpc-urls <string>',
|
|
19
|
+
'List of Ethereum host URLs. Chain identifiers localhost and testnet can be used (comma separated)',
|
|
20
|
+
)
|
|
21
|
+
.env('ETHEREUM_HOSTS')
|
|
22
|
+
.default([ETHEREUM_HOSTS])
|
|
23
|
+
.makeOptionMandatory(true)
|
|
24
|
+
.argParser((arg: string) => arg.split(',').map(url => url.trim()));
|
|
25
|
+
|
|
17
26
|
export function injectCommands(program: Command, log: LogFn, debugLogger: Logger) {
|
|
18
27
|
const { BB_BINARY_PATH, BB_WORKING_DIRECTORY } = process.env;
|
|
19
28
|
|
|
20
29
|
program
|
|
21
30
|
.command('deploy-l1-contracts')
|
|
22
31
|
.description('Deploys all necessary Ethereum contracts for Aztec.')
|
|
23
|
-
.
|
|
24
|
-
'-u, --rpc-url <string>',
|
|
25
|
-
'Url of the ethereum host. Chain identifiers localhost and testnet can be used',
|
|
26
|
-
ETHEREUM_HOST,
|
|
27
|
-
)
|
|
32
|
+
.addOption(l1RpcUrlsOption)
|
|
28
33
|
.option('-pk, --private-key <string>', 'The private key to use for deployment', PRIVATE_KEY)
|
|
29
34
|
.option('--validators <string>', 'Comma separated list of validators')
|
|
30
35
|
.option(
|
|
@@ -36,18 +41,20 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
36
41
|
.addOption(l1ChainIdOption)
|
|
37
42
|
.option('--salt <number>', 'The optional salt to use in deployment', arg => parseInt(arg))
|
|
38
43
|
.option('--json', 'Output the contract addresses in JSON format')
|
|
44
|
+
.option('--test-accounts', 'Populate genesis state with initial fee juice for test accounts')
|
|
39
45
|
.action(async options => {
|
|
40
46
|
const { deployL1Contracts } = await import('./deploy_l1_contracts.js');
|
|
41
47
|
|
|
42
48
|
const initialValidators =
|
|
43
49
|
options.validators?.split(',').map((validator: string) => EthAddress.fromString(validator)) || [];
|
|
44
50
|
await deployL1Contracts(
|
|
45
|
-
options.
|
|
51
|
+
options.l1RpcUrls,
|
|
46
52
|
options.l1ChainId,
|
|
47
53
|
options.privateKey,
|
|
48
54
|
options.mnemonic,
|
|
49
55
|
options.mnemonicIndex,
|
|
50
56
|
options.salt,
|
|
57
|
+
options.testAccounts,
|
|
51
58
|
options.json,
|
|
52
59
|
initialValidators,
|
|
53
60
|
log,
|
|
@@ -55,6 +62,204 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
55
62
|
);
|
|
56
63
|
});
|
|
57
64
|
|
|
65
|
+
program
|
|
66
|
+
.command('deploy-new-rollup')
|
|
67
|
+
.description('Deploys a new rollup contract and a payload to upgrade the registry with it.')
|
|
68
|
+
.requiredOption('-r, --registry-address <string>', 'The address of the registry contract', parseEthereumAddress)
|
|
69
|
+
.addOption(l1RpcUrlsOption)
|
|
70
|
+
.option('-pk, --private-key <string>', 'The private key to use for deployment', PRIVATE_KEY)
|
|
71
|
+
.option('--validators <string>', 'Comma separated list of validators')
|
|
72
|
+
.option(
|
|
73
|
+
'-m, --mnemonic <string>',
|
|
74
|
+
'The mnemonic to use in deployment',
|
|
75
|
+
'test test test test test test test test test test test junk',
|
|
76
|
+
)
|
|
77
|
+
.option('-i, --mnemonic-index <number>', 'The index of the mnemonic to use in deployment', arg => parseInt(arg), 0)
|
|
78
|
+
.addOption(l1ChainIdOption)
|
|
79
|
+
.option('--salt <number>', 'The optional salt to use in deployment', arg => parseInt(arg))
|
|
80
|
+
.option('--json', 'Output the contract addresses in JSON format')
|
|
81
|
+
.option('--test-accounts', 'Populate genesis state with initial fee juice for test accounts')
|
|
82
|
+
.action(async options => {
|
|
83
|
+
const { deployNewRollup } = await import('./deploy_new_rollup.js');
|
|
84
|
+
|
|
85
|
+
const initialValidators =
|
|
86
|
+
options.validators?.split(',').map((validator: string) => EthAddress.fromString(validator)) || [];
|
|
87
|
+
await deployNewRollup(
|
|
88
|
+
options.registryAddress,
|
|
89
|
+
options.l1RpcUrls,
|
|
90
|
+
options.l1ChainId,
|
|
91
|
+
options.privateKey,
|
|
92
|
+
options.mnemonic,
|
|
93
|
+
options.mnemonicIndex,
|
|
94
|
+
options.salt,
|
|
95
|
+
options.testAccounts,
|
|
96
|
+
options.json,
|
|
97
|
+
initialValidators,
|
|
98
|
+
log,
|
|
99
|
+
debugLogger,
|
|
100
|
+
);
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
program
|
|
104
|
+
.command('deposit-governance-tokens')
|
|
105
|
+
.description('Deposits governance tokens to the governance contract.')
|
|
106
|
+
.requiredOption('-r, --registry-address <string>', 'The address of the registry contract', parseEthereumAddress)
|
|
107
|
+
.requiredOption('--recipient <string>', 'The recipient of the tokens', parseEthereumAddress)
|
|
108
|
+
.requiredOption('-a, --amount <string>', 'The amount of tokens to deposit', parseBigint)
|
|
109
|
+
.option('--mint', 'Mint the tokens on L1', false)
|
|
110
|
+
.addOption(l1RpcUrlsOption)
|
|
111
|
+
.addOption(l1ChainIdOption)
|
|
112
|
+
.option('-p, --private-key <string>', 'The private key to use to deposit', PRIVATE_KEY)
|
|
113
|
+
.option(
|
|
114
|
+
'-m, --mnemonic <string>',
|
|
115
|
+
'The mnemonic to use to deposit',
|
|
116
|
+
'test test test test test test test test test test test junk',
|
|
117
|
+
)
|
|
118
|
+
.option('-i, --mnemonic-index <number>', 'The index of the mnemonic to use to deposit', arg => parseInt(arg), 0)
|
|
119
|
+
.action(async options => {
|
|
120
|
+
const { depositGovernanceTokens } = await import('./governance_utils.js');
|
|
121
|
+
await depositGovernanceTokens({
|
|
122
|
+
registryAddress: options.registryAddress.toString(),
|
|
123
|
+
recipient: options.recipient.toString(),
|
|
124
|
+
amount: options.amount,
|
|
125
|
+
mint: options.mint,
|
|
126
|
+
rpcUrls: options.l1RpcUrls,
|
|
127
|
+
chainId: options.l1ChainId,
|
|
128
|
+
privateKey: options.privateKey,
|
|
129
|
+
mnemonic: options.mnemonic,
|
|
130
|
+
mnemonicIndex: options.mnemonicIndex,
|
|
131
|
+
debugLogger,
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
program
|
|
136
|
+
.command('propose-with-lock')
|
|
137
|
+
.description('Makes a proposal to governance with a lock')
|
|
138
|
+
.requiredOption('-r, --registry-address <string>', 'The address of the registry contract', parseEthereumAddress)
|
|
139
|
+
.requiredOption('-p, --payload-address <string>', 'The address of the payload contract', parseEthereumAddress)
|
|
140
|
+
.addOption(l1RpcUrlsOption)
|
|
141
|
+
.addOption(l1ChainIdOption)
|
|
142
|
+
.option('-pk, --private-key <string>', 'The private key to use to propose', PRIVATE_KEY)
|
|
143
|
+
.option(
|
|
144
|
+
'-m, --mnemonic <string>',
|
|
145
|
+
'The mnemonic to use to propose',
|
|
146
|
+
'test test test test test test test test test test test junk',
|
|
147
|
+
)
|
|
148
|
+
.option('-i, --mnemonic-index <number>', 'The index of the mnemonic to use to propose', arg => parseInt(arg), 0)
|
|
149
|
+
.option('--json', 'Output the proposal ID in JSON format')
|
|
150
|
+
.action(async options => {
|
|
151
|
+
const { proposeWithLock } = await import('./governance_utils.js');
|
|
152
|
+
await proposeWithLock({
|
|
153
|
+
payloadAddress: options.payloadAddress.toString(),
|
|
154
|
+
registryAddress: options.registryAddress.toString(),
|
|
155
|
+
rpcUrls: options.l1RpcUrls,
|
|
156
|
+
chainId: options.l1ChainId,
|
|
157
|
+
privateKey: options.privateKey,
|
|
158
|
+
mnemonic: options.mnemonic,
|
|
159
|
+
mnemonicIndex: options.mnemonicIndex,
|
|
160
|
+
debugLogger: debugLogger,
|
|
161
|
+
json: options.json,
|
|
162
|
+
log,
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
program
|
|
167
|
+
.command('vote-on-governance-proposal')
|
|
168
|
+
.description('Votes on a governance proposal.')
|
|
169
|
+
.requiredOption('-p, --proposal-id <string>', 'The ID of the proposal', parseBigint)
|
|
170
|
+
.option('-a, --vote-amount <string>', 'The amount of tokens to vote', parseBigint)
|
|
171
|
+
.requiredOption(
|
|
172
|
+
'--in-favor <boolean>',
|
|
173
|
+
'Whether to vote in favor of the proposal. Use "yea" for true, any other value for false.',
|
|
174
|
+
arg => arg === 'yea' || arg === 'true' || arg === '1' || arg === 'yes',
|
|
175
|
+
)
|
|
176
|
+
.requiredOption('--wait <boolean>', 'Whether to wait until the proposal is active', arg => arg === 'true')
|
|
177
|
+
.requiredOption('-r, --registry-address <string>', 'The address of the registry contract', parseEthereumAddress)
|
|
178
|
+
.addOption(l1RpcUrlsOption)
|
|
179
|
+
.addOption(l1ChainIdOption)
|
|
180
|
+
.option('-pk, --private-key <string>', 'The private key to use to vote', PRIVATE_KEY)
|
|
181
|
+
.option(
|
|
182
|
+
'-m, --mnemonic <string>',
|
|
183
|
+
'The mnemonic to use to vote',
|
|
184
|
+
'test test test test test test test test test test test junk',
|
|
185
|
+
)
|
|
186
|
+
.option('-i, --mnemonic-index <number>', 'The index of the mnemonic to use to vote', arg => parseInt(arg), 0)
|
|
187
|
+
.action(async options => {
|
|
188
|
+
const { voteOnGovernanceProposal } = await import('./governance_utils.js');
|
|
189
|
+
await voteOnGovernanceProposal({
|
|
190
|
+
proposalId: options.proposalId,
|
|
191
|
+
voteAmount: options.voteAmount,
|
|
192
|
+
inFavor: options.inFavor,
|
|
193
|
+
waitTilActive: options.wait,
|
|
194
|
+
registryAddress: options.registryAddress.toString(),
|
|
195
|
+
rpcUrls: options.l1RpcUrls,
|
|
196
|
+
chainId: options.l1ChainId,
|
|
197
|
+
privateKey: options.privateKey,
|
|
198
|
+
mnemonic: options.mnemonic,
|
|
199
|
+
mnemonicIndex: options.mnemonicIndex,
|
|
200
|
+
debugLogger,
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
program
|
|
205
|
+
.command('execute-governance-proposal')
|
|
206
|
+
.description('Executes a governance proposal.')
|
|
207
|
+
.requiredOption('-p, --proposal-id <string>', 'The ID of the proposal', parseBigint)
|
|
208
|
+
.requiredOption('-r, --registry-address <string>', 'The address of the registry contract', parseEthereumAddress)
|
|
209
|
+
.requiredOption('--wait <boolean>', 'Whether to wait until the proposal is executable', arg => arg === 'true')
|
|
210
|
+
.addOption(l1RpcUrlsOption)
|
|
211
|
+
.addOption(l1ChainIdOption)
|
|
212
|
+
.option('-pk, --private-key <string>', 'The private key to use to vote', PRIVATE_KEY)
|
|
213
|
+
.option(
|
|
214
|
+
'-m, --mnemonic <string>',
|
|
215
|
+
'The mnemonic to use to vote',
|
|
216
|
+
'test test test test test test test test test test test junk',
|
|
217
|
+
)
|
|
218
|
+
.option('-i, --mnemonic-index <number>', 'The index of the mnemonic to use to vote', arg => parseInt(arg), 0)
|
|
219
|
+
.action(async options => {
|
|
220
|
+
const { executeGovernanceProposal } = await import('./governance_utils.js');
|
|
221
|
+
await executeGovernanceProposal({
|
|
222
|
+
proposalId: options.proposalId,
|
|
223
|
+
registryAddress: options.registryAddress.toString(),
|
|
224
|
+
waitTilExecutable: options.wait,
|
|
225
|
+
rpcUrls: options.l1RpcUrls,
|
|
226
|
+
chainId: options.l1ChainId,
|
|
227
|
+
privateKey: options.privateKey,
|
|
228
|
+
mnemonic: options.mnemonic,
|
|
229
|
+
mnemonicIndex: options.mnemonicIndex,
|
|
230
|
+
debugLogger,
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
program
|
|
235
|
+
.command('get-l1-addresses')
|
|
236
|
+
.description('Gets the addresses of the L1 contracts.')
|
|
237
|
+
.requiredOption('-r, --registry-address <string>', 'The address of the registry contract', parseEthereumAddress)
|
|
238
|
+
.addOption(l1RpcUrlsOption)
|
|
239
|
+
.requiredOption('-v, --rollup-version <number>', 'The version of the rollup', arg => {
|
|
240
|
+
if (arg === 'canonical' || arg === 'latest' || arg === '') {
|
|
241
|
+
return 'canonical';
|
|
242
|
+
}
|
|
243
|
+
const version = parseInt(arg);
|
|
244
|
+
if (isNaN(version)) {
|
|
245
|
+
throw new Error('Invalid rollup version');
|
|
246
|
+
}
|
|
247
|
+
return version;
|
|
248
|
+
})
|
|
249
|
+
.addOption(l1ChainIdOption)
|
|
250
|
+
.option('--json', 'Output the addresses in JSON format')
|
|
251
|
+
.action(async options => {
|
|
252
|
+
const { getL1Addresses } = await import('./get_l1_addresses.js');
|
|
253
|
+
await getL1Addresses(
|
|
254
|
+
options.registryAddress,
|
|
255
|
+
options.rollupVersion,
|
|
256
|
+
options.l1RpcUrls,
|
|
257
|
+
options.l1ChainId,
|
|
258
|
+
options.json,
|
|
259
|
+
log,
|
|
260
|
+
);
|
|
261
|
+
});
|
|
262
|
+
|
|
58
263
|
program
|
|
59
264
|
.command('generate-l1-account')
|
|
60
265
|
.description('Generates a new private key for an account on L1.')
|
|
@@ -68,11 +273,7 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
68
273
|
program
|
|
69
274
|
.command('add-l1-validator')
|
|
70
275
|
.description('Adds a validator to the L1 rollup contract.')
|
|
71
|
-
.
|
|
72
|
-
'-u, --rpc-url <string>',
|
|
73
|
-
'Url of the ethereum host. Chain identifiers localhost and testnet can be used',
|
|
74
|
-
ETHEREUM_HOST,
|
|
75
|
-
)
|
|
276
|
+
.addOption(l1RpcUrlsOption)
|
|
76
277
|
.option('-pk, --private-key <string>', 'The private key to use for deployment', PRIVATE_KEY)
|
|
77
278
|
.option(
|
|
78
279
|
'-m, --mnemonic <string>',
|
|
@@ -86,7 +287,7 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
86
287
|
.action(async options => {
|
|
87
288
|
const { addL1Validator } = await import('./update_l1_validators.js');
|
|
88
289
|
await addL1Validator({
|
|
89
|
-
|
|
290
|
+
rpcUrls: options.l1RpcUrls,
|
|
90
291
|
chainId: options.l1ChainId,
|
|
91
292
|
privateKey: options.privateKey,
|
|
92
293
|
mnemonic: options.mnemonic,
|
|
@@ -101,11 +302,7 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
101
302
|
program
|
|
102
303
|
.command('remove-l1-validator')
|
|
103
304
|
.description('Removes a validator to the L1 rollup contract.')
|
|
104
|
-
.
|
|
105
|
-
'-u, --rpc-url <string>',
|
|
106
|
-
'Url of the ethereum host. Chain identifiers localhost and testnet can be used',
|
|
107
|
-
ETHEREUM_HOST,
|
|
108
|
-
)
|
|
305
|
+
.addOption(l1RpcUrlsOption)
|
|
109
306
|
.option('-pk, --private-key <string>', 'The private key to use for deployment', PRIVATE_KEY)
|
|
110
307
|
.option(
|
|
111
308
|
'-m, --mnemonic <string>',
|
|
@@ -118,7 +315,7 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
118
315
|
.action(async options => {
|
|
119
316
|
const { removeL1Validator } = await import('./update_l1_validators.js');
|
|
120
317
|
await removeL1Validator({
|
|
121
|
-
|
|
318
|
+
rpcUrls: options.l1RpcUrls,
|
|
122
319
|
chainId: options.l1ChainId,
|
|
123
320
|
privateKey: options.privateKey,
|
|
124
321
|
mnemonic: options.mnemonic,
|
|
@@ -132,18 +329,14 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
132
329
|
program
|
|
133
330
|
.command('fast-forward-epochs')
|
|
134
331
|
.description('Fast forwards the epoch of the L1 rollup contract.')
|
|
135
|
-
.
|
|
136
|
-
'-u, --rpc-url <string>',
|
|
137
|
-
'Url of the ethereum host. Chain identifiers localhost and testnet can be used',
|
|
138
|
-
ETHEREUM_HOST,
|
|
139
|
-
)
|
|
332
|
+
.addOption(l1RpcUrlsOption)
|
|
140
333
|
.addOption(l1ChainIdOption)
|
|
141
334
|
.option('--rollup <address>', 'ethereum address of the rollup contract', parseEthereumAddress)
|
|
142
335
|
.option('--count <number>', 'The number of epochs to fast forward', arg => BigInt(parseInt(arg)), 1n)
|
|
143
336
|
.action(async options => {
|
|
144
337
|
const { fastForwardEpochs } = await import('./update_l1_validators.js');
|
|
145
338
|
await fastForwardEpochs({
|
|
146
|
-
|
|
339
|
+
rpcUrls: options.l1RpcUrls,
|
|
147
340
|
chainId: options.l1ChainId,
|
|
148
341
|
rollupAddress: options.rollup,
|
|
149
342
|
numEpochs: options.count,
|
|
@@ -155,17 +348,13 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
155
348
|
program
|
|
156
349
|
.command('debug-rollup')
|
|
157
350
|
.description('Debugs the rollup contract.')
|
|
158
|
-
.
|
|
159
|
-
'-u, --rpc-url <string>',
|
|
160
|
-
'Url of the ethereum host. Chain identifiers localhost and testnet can be used',
|
|
161
|
-
ETHEREUM_HOST,
|
|
162
|
-
)
|
|
351
|
+
.addOption(l1RpcUrlsOption)
|
|
163
352
|
.addOption(l1ChainIdOption)
|
|
164
353
|
.option('--rollup <address>', 'ethereum address of the rollup contract', parseEthereumAddress)
|
|
165
354
|
.action(async options => {
|
|
166
355
|
const { debugRollup } = await import('./update_l1_validators.js');
|
|
167
356
|
await debugRollup({
|
|
168
|
-
|
|
357
|
+
rpcUrls: options.l1RpcUrls,
|
|
169
358
|
chainId: options.l1ChainId,
|
|
170
359
|
privateKey: options.privateKey,
|
|
171
360
|
mnemonic: options.mnemonic,
|
|
@@ -178,11 +367,7 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
178
367
|
program
|
|
179
368
|
.command('prune-rollup')
|
|
180
369
|
.description('Prunes the pending chain on the rollup contract.')
|
|
181
|
-
.
|
|
182
|
-
'-u, --rpc-url <string>',
|
|
183
|
-
'Url of the ethereum host. Chain identifiers localhost and testnet can be used',
|
|
184
|
-
ETHEREUM_HOST,
|
|
185
|
-
)
|
|
370
|
+
.addOption(l1RpcUrlsOption)
|
|
186
371
|
.option('-pk, --private-key <string>', 'The private key to use for deployment', PRIVATE_KEY)
|
|
187
372
|
.option(
|
|
188
373
|
'-m, --mnemonic <string>',
|
|
@@ -194,7 +379,7 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
194
379
|
.action(async options => {
|
|
195
380
|
const { pruneRollup } = await import('./update_l1_validators.js');
|
|
196
381
|
await pruneRollup({
|
|
197
|
-
|
|
382
|
+
rpcUrls: options.rpcUrls,
|
|
198
383
|
chainId: options.l1ChainId,
|
|
199
384
|
privateKey: options.privateKey,
|
|
200
385
|
mnemonic: options.mnemonic,
|
|
@@ -207,17 +392,8 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
207
392
|
program
|
|
208
393
|
.command('deploy-l1-verifier')
|
|
209
394
|
.description('Deploys the rollup verifier contract')
|
|
210
|
-
.
|
|
211
|
-
|
|
212
|
-
'Url of the ethereum host. Chain identifiers localhost and testnet can be used',
|
|
213
|
-
ETHEREUM_HOST,
|
|
214
|
-
)
|
|
215
|
-
.addOption(
|
|
216
|
-
new Option('--l1-chain-id <string>', 'The chain id of the L1 network')
|
|
217
|
-
.env('L1_CHAIN_ID')
|
|
218
|
-
.default('31337')
|
|
219
|
-
.makeOptionMandatory(true),
|
|
220
|
-
)
|
|
395
|
+
.addOption(l1RpcUrlsOption)
|
|
396
|
+
.addOption(l1ChainIdOption)
|
|
221
397
|
.addOption(makePxeOption(false).conflicts('rollup-address'))
|
|
222
398
|
.addOption(
|
|
223
399
|
new Option('--rollup-address <string>', 'The address of the rollup contract')
|
|
@@ -239,7 +415,7 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
239
415
|
if (options.verifier === 'mock') {
|
|
240
416
|
await deployMockVerifier(
|
|
241
417
|
options.rollupAddress?.toString(),
|
|
242
|
-
options.
|
|
418
|
+
options.l1RpcUrls,
|
|
243
419
|
options.l1ChainId,
|
|
244
420
|
options.l1PrivateKey,
|
|
245
421
|
options.mnemonic,
|
|
@@ -250,7 +426,7 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
250
426
|
} else {
|
|
251
427
|
await deployUltraHonkVerifier(
|
|
252
428
|
options.rollupAddress?.toString(),
|
|
253
|
-
options.
|
|
429
|
+
options.l1RpcUrls,
|
|
254
430
|
options.l1ChainId,
|
|
255
431
|
options.l1PrivateKey,
|
|
256
432
|
options.mnemonic,
|
|
@@ -268,11 +444,7 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
268
444
|
.description('Bridges ERC20 tokens to L2.')
|
|
269
445
|
.argument('<amount>', 'The amount of Fee Juice to mint and bridge.', parseBigint)
|
|
270
446
|
.argument('<recipient>', 'Aztec address of the recipient.', parseAztecAddress)
|
|
271
|
-
.
|
|
272
|
-
'--l1-rpc-url <string>',
|
|
273
|
-
'Url of the ethereum host. Chain identifiers localhost and testnet can be used',
|
|
274
|
-
ETHEREUM_HOST,
|
|
275
|
-
)
|
|
447
|
+
.addOption(l1RpcUrlsOption)
|
|
276
448
|
.option(
|
|
277
449
|
'-m, --mnemonic <string>',
|
|
278
450
|
'The mnemonic to use for deriving the Ethereum address that will mint and bridge',
|
|
@@ -290,7 +462,7 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
290
462
|
await bridgeERC20(
|
|
291
463
|
amount,
|
|
292
464
|
recipient,
|
|
293
|
-
options.
|
|
465
|
+
options.l1RpcUrls,
|
|
294
466
|
options.l1ChainId,
|
|
295
467
|
options.l1PrivateKey,
|
|
296
468
|
options.mnemonic,
|
|
@@ -316,17 +488,13 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
316
488
|
.command('get-l1-balance')
|
|
317
489
|
.description('Gets the balance of an ERC token in L1 for the given Ethereum address.')
|
|
318
490
|
.argument('<who>', 'Ethereum address to check.', parseEthereumAddress)
|
|
319
|
-
.
|
|
320
|
-
'--l1-rpc-url <string>',
|
|
321
|
-
'Url of the ethereum host. Chain identifiers localhost and testnet can be used',
|
|
322
|
-
ETHEREUM_HOST,
|
|
323
|
-
)
|
|
491
|
+
.addOption(l1RpcUrlsOption)
|
|
324
492
|
.option('-t, --token <string>', 'The address of the token to check the balance of', parseEthereumAddress)
|
|
325
493
|
.addOption(l1ChainIdOption)
|
|
326
494
|
.option('--json', 'Output the balance in JSON format')
|
|
327
495
|
.action(async (who, options) => {
|
|
328
496
|
const { getL1Balance } = await import('./get_l1_balance.js');
|
|
329
|
-
await getL1Balance(who, options.token, options.
|
|
497
|
+
await getL1Balance(who, options.token, options.l1RpcUrls, options.l1ChainId, options.json, log);
|
|
330
498
|
});
|
|
331
499
|
|
|
332
500
|
program
|
|
@@ -335,53 +503,26 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
335
503
|
'Instructs the L1 rollup contract to assume all blocks until the given number are automatically proven.',
|
|
336
504
|
)
|
|
337
505
|
.argument('[blockNumber]', 'The target block number, defaults to the latest pending block number.', parseBigint)
|
|
338
|
-
.
|
|
339
|
-
'--l1-rpc-url <string>',
|
|
340
|
-
'Url of the ethereum host. Chain identifiers localhost and testnet can be used',
|
|
341
|
-
ETHEREUM_HOST,
|
|
342
|
-
)
|
|
506
|
+
.addOption(l1RpcUrlsOption)
|
|
343
507
|
.addOption(pxeOption)
|
|
344
|
-
.option(
|
|
345
|
-
'-m, --mnemonic <string>',
|
|
346
|
-
'The mnemonic to use for deriving the Ethereum address that will mint and bridge',
|
|
347
|
-
'test test test test test test test test test test test junk',
|
|
348
|
-
)
|
|
349
|
-
.addOption(l1ChainIdOption)
|
|
350
|
-
.option('--l1-private-key <string>', 'The private key to use for deployment', PRIVATE_KEY)
|
|
351
508
|
.action(async (blockNumber, options) => {
|
|
352
509
|
const { assumeProvenThrough } = await import('./assume_proven_through.js');
|
|
353
|
-
await assumeProvenThrough(
|
|
354
|
-
blockNumber,
|
|
355
|
-
options.l1RpcUrl,
|
|
356
|
-
options.rpcUrl,
|
|
357
|
-
options.l1ChainId,
|
|
358
|
-
options.l1PrivateKey,
|
|
359
|
-
options.mnemonic,
|
|
360
|
-
log,
|
|
361
|
-
);
|
|
510
|
+
await assumeProvenThrough(blockNumber, options.l1RpcUrls, options.rpcUrl, log);
|
|
362
511
|
});
|
|
363
512
|
|
|
364
513
|
program
|
|
365
514
|
.command('advance-epoch')
|
|
366
515
|
.description('Use L1 cheat codes to warp time until the next epoch.')
|
|
367
|
-
.
|
|
368
|
-
'--l1-rpc-url <string>',
|
|
369
|
-
'Url of the ethereum host. Chain identifiers localhost and testnet can be used',
|
|
370
|
-
ETHEREUM_HOST,
|
|
371
|
-
)
|
|
516
|
+
.addOption(l1RpcUrlsOption)
|
|
372
517
|
.addOption(pxeOption)
|
|
373
518
|
.action(async options => {
|
|
374
519
|
const { advanceEpoch } = await import('./advance_epoch.js');
|
|
375
|
-
await advanceEpoch(options.
|
|
520
|
+
await advanceEpoch(options.l1RpcUrls, options.rpcUrl, log);
|
|
376
521
|
});
|
|
377
522
|
|
|
378
523
|
program
|
|
379
524
|
.command('prover-stats', { hidden: true })
|
|
380
|
-
.
|
|
381
|
-
'--l1-rpc-url <string>',
|
|
382
|
-
'Url of the ethereum host. Chain identifiers localhost and testnet can be used',
|
|
383
|
-
ETHEREUM_HOST,
|
|
384
|
-
)
|
|
525
|
+
.addOption(l1RpcUrlsOption)
|
|
385
526
|
.addOption(l1ChainIdOption)
|
|
386
527
|
.option('--start-block <number>', 'The L1 block number to start from', parseBigint, 1n)
|
|
387
528
|
.option('--end-block <number>', 'The last L1 block number to query', parseBigint)
|
|
@@ -395,10 +536,10 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
|
|
|
395
536
|
.option('--raw-logs', 'Output raw logs instead of aggregated stats')
|
|
396
537
|
.action(async options => {
|
|
397
538
|
const { proverStats } = await import('./prover_stats.js');
|
|
398
|
-
const {
|
|
539
|
+
const { l1RpcUrls, chainId, l1RollupAddress, startBlock, endBlock, batchSize, nodeUrl, provingTimeout, rawLogs } =
|
|
399
540
|
options;
|
|
400
541
|
await proverStats({
|
|
401
|
-
|
|
542
|
+
l1RpcUrls,
|
|
402
543
|
chainId,
|
|
403
544
|
l1RollupAddress,
|
|
404
545
|
startBlock,
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { retrieveL2ProofVerifiedEvents } from '@aztec/archiver';
|
|
2
|
-
import {
|
|
3
|
-
import { EthAddress } from '@aztec/circuits.js';
|
|
4
|
-
import { createEthereumChain } from '@aztec/ethereum';
|
|
2
|
+
import { type ViemPublicClient, createEthereumChain } from '@aztec/ethereum';
|
|
5
3
|
import { compactArray, mapValues, unique } from '@aztec/foundation/collection';
|
|
4
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
6
5
|
import { type LogFn, type Logger, createLogger } from '@aztec/foundation/log';
|
|
7
6
|
import { RollupAbi } from '@aztec/l1-artifacts';
|
|
7
|
+
import { createAztecNodeClient } from '@aztec/stdlib/interfaces/client';
|
|
8
8
|
|
|
9
9
|
import chunk from 'lodash.chunk';
|
|
10
10
|
import groupBy from 'lodash.groupby';
|
|
11
|
-
import {
|
|
11
|
+
import { createPublicClient, fallback, getAbiItem, getAddress, http } from 'viem';
|
|
12
12
|
|
|
13
13
|
export async function proverStats(opts: {
|
|
14
|
-
|
|
14
|
+
l1RpcUrls: string[];
|
|
15
15
|
chainId: number;
|
|
16
16
|
l1RollupAddress: string | undefined;
|
|
17
17
|
nodeUrl: string | undefined;
|
|
@@ -23,8 +23,18 @@ export async function proverStats(opts: {
|
|
|
23
23
|
rawLogs: boolean;
|
|
24
24
|
}) {
|
|
25
25
|
const debugLog = createLogger('cli:prover_stats');
|
|
26
|
-
const {
|
|
27
|
-
|
|
26
|
+
const {
|
|
27
|
+
startBlock,
|
|
28
|
+
chainId,
|
|
29
|
+
l1RpcUrls,
|
|
30
|
+
l1RollupAddress,
|
|
31
|
+
batchSize,
|
|
32
|
+
nodeUrl,
|
|
33
|
+
provingTimeout,
|
|
34
|
+
endBlock,
|
|
35
|
+
rawLogs,
|
|
36
|
+
log,
|
|
37
|
+
} = opts;
|
|
28
38
|
if (!l1RollupAddress && !nodeUrl) {
|
|
29
39
|
throw new Error('Either L1 rollup address or node URL must be set');
|
|
30
40
|
}
|
|
@@ -35,8 +45,8 @@ export async function proverStats(opts: {
|
|
|
35
45
|
.getL1ContractAddresses()
|
|
36
46
|
.then(a => a.rollupAddress);
|
|
37
47
|
|
|
38
|
-
const chain = createEthereumChain(
|
|
39
|
-
const publicClient = createPublicClient({ chain, transport: http(
|
|
48
|
+
const chain = createEthereumChain(l1RpcUrls, chainId).chainInfo;
|
|
49
|
+
const publicClient = createPublicClient({ chain, transport: fallback(l1RpcUrls.map(url => http(url))) });
|
|
40
50
|
const lastBlockNum = endBlock ?? (await publicClient.getBlockNumber());
|
|
41
51
|
debugLog.verbose(`Querying events on rollup at ${rollup.toString()} from ${startBlock} up to ${lastBlockNum}`);
|
|
42
52
|
|
|
@@ -146,7 +156,7 @@ async function getL2ProofVerifiedEvents(
|
|
|
146
156
|
lastBlockNum: bigint,
|
|
147
157
|
batchSize: bigint,
|
|
148
158
|
debugLog: Logger,
|
|
149
|
-
publicClient:
|
|
159
|
+
publicClient: ViemPublicClient,
|
|
150
160
|
rollup: EthAddress,
|
|
151
161
|
) {
|
|
152
162
|
let blockNum = startBlock;
|
|
@@ -166,7 +176,7 @@ async function getL2BlockEvents(
|
|
|
166
176
|
lastBlockNum: bigint,
|
|
167
177
|
batchSize: bigint,
|
|
168
178
|
debugLog: Logger,
|
|
169
|
-
publicClient:
|
|
179
|
+
publicClient: ViemPublicClient,
|
|
170
180
|
rollup: EthAddress,
|
|
171
181
|
) {
|
|
172
182
|
let blockNum = startBlock;
|