@aztec/ethereum 0.0.0-test.1 → 0.0.1-commit.21caa21
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/account.d.ts +2 -0
- package/dest/account.d.ts.map +1 -0
- package/dest/account.js +4 -0
- package/dest/chain.d.ts +1 -1
- package/dest/client.d.ts +6 -4
- package/dest/client.d.ts.map +1 -1
- package/dest/client.js +16 -2
- package/dest/config.d.ts +111 -17
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +462 -22
- package/dest/constants.d.ts +1 -1
- package/dest/contracts/empire_base.d.ts +24 -8
- package/dest/contracts/empire_base.d.ts.map +1 -1
- package/dest/contracts/empire_base.js +75 -2
- package/dest/contracts/empire_slashing_proposer.d.ts +66 -0
- package/dest/contracts/empire_slashing_proposer.d.ts.map +1 -0
- package/dest/contracts/empire_slashing_proposer.js +200 -0
- package/dest/contracts/errors.d.ts +7 -0
- package/dest/contracts/errors.d.ts.map +1 -0
- package/dest/contracts/errors.js +12 -0
- package/dest/contracts/fee_asset_handler.d.ts +19 -0
- package/dest/contracts/fee_asset_handler.d.ts.map +1 -0
- package/dest/contracts/fee_asset_handler.js +57 -0
- package/dest/contracts/fee_juice.d.ts +6 -7
- package/dest/contracts/fee_juice.d.ts.map +1 -1
- package/dest/contracts/fee_juice.js +27 -20
- package/dest/contracts/governance.d.ts +43 -32
- package/dest/contracts/governance.d.ts.map +1 -1
- package/dest/contracts/governance.js +87 -84
- package/dest/contracts/governance_proposer.d.ts +16 -13
- package/dest/contracts/governance_proposer.d.ts.map +1 -1
- package/dest/contracts/governance_proposer.js +37 -17
- package/dest/contracts/gse.d.ts +32 -0
- package/dest/contracts/gse.d.ts.map +1 -0
- package/dest/contracts/gse.js +72 -0
- package/dest/contracts/inbox.d.ts +26 -0
- package/dest/contracts/inbox.d.ts.map +1 -0
- package/dest/contracts/inbox.js +45 -0
- package/dest/contracts/index.d.ts +9 -3
- package/dest/contracts/index.d.ts.map +1 -1
- package/dest/contracts/index.js +8 -2
- package/dest/contracts/multicall.d.ts +21 -0
- package/dest/contracts/multicall.d.ts.map +1 -0
- package/dest/contracts/multicall.js +156 -0
- package/dest/contracts/registry.d.ts +10 -5
- package/dest/contracts/registry.d.ts.map +1 -1
- package/dest/contracts/registry.js +44 -16
- package/dest/contracts/rollup.d.ts +204 -40
- package/dest/contracts/rollup.d.ts.map +1 -1
- package/dest/contracts/rollup.js +529 -79
- package/dest/contracts/slasher_contract.d.ts +44 -0
- package/dest/contracts/slasher_contract.d.ts.map +1 -0
- package/dest/contracts/slasher_contract.js +75 -0
- package/dest/contracts/tally_slashing_proposer.d.ts +139 -0
- package/dest/contracts/tally_slashing_proposer.d.ts.map +1 -0
- package/dest/contracts/tally_slashing_proposer.js +313 -0
- package/dest/contracts/utils.d.ts +3 -0
- package/dest/contracts/utils.d.ts.map +1 -0
- package/dest/contracts/utils.js +11 -0
- package/dest/deploy_l1_contracts.d.ts +577 -21114
- package/dest/deploy_l1_contracts.d.ts.map +1 -1
- package/dest/deploy_l1_contracts.js +1225 -421
- package/dest/eth-signer/eth-signer.d.ts +21 -0
- package/dest/eth-signer/eth-signer.d.ts.map +1 -0
- package/dest/eth-signer/eth-signer.js +5 -0
- package/dest/eth-signer/index.d.ts +2 -0
- package/dest/eth-signer/index.d.ts.map +1 -0
- package/dest/eth-signer/index.js +1 -0
- package/dest/index.d.ts +7 -3
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +6 -2
- package/dest/l1_artifacts.d.ts +77344 -0
- package/dest/l1_artifacts.d.ts.map +1 -0
- package/dest/l1_artifacts.js +166 -0
- package/dest/l1_contract_addresses.d.ts +24 -4
- package/dest/l1_contract_addresses.d.ts.map +1 -1
- package/dest/l1_contract_addresses.js +22 -18
- package/dest/l1_reader.d.ts +2 -2
- package/dest/l1_reader.d.ts.map +1 -1
- package/dest/l1_reader.js +8 -8
- package/dest/l1_tx_utils/config.d.ts +59 -0
- package/dest/l1_tx_utils/config.d.ts.map +1 -0
- package/dest/l1_tx_utils/config.js +82 -0
- package/dest/l1_tx_utils/constants.d.ts +6 -0
- package/dest/l1_tx_utils/constants.d.ts.map +1 -0
- package/dest/l1_tx_utils/constants.js +14 -0
- package/dest/l1_tx_utils/factory.d.ts +24 -0
- package/dest/l1_tx_utils/factory.d.ts.map +1 -0
- package/dest/l1_tx_utils/factory.js +12 -0
- package/dest/l1_tx_utils/index.d.ts +10 -0
- package/dest/l1_tx_utils/index.d.ts.map +1 -0
- package/dest/l1_tx_utils/index.js +10 -0
- package/dest/l1_tx_utils/interfaces.d.ts +76 -0
- package/dest/l1_tx_utils/interfaces.d.ts.map +1 -0
- package/dest/l1_tx_utils/interfaces.js +4 -0
- package/dest/l1_tx_utils/l1_tx_utils.d.ts +94 -0
- package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -0
- package/dest/l1_tx_utils/l1_tx_utils.js +610 -0
- package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts +26 -0
- package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts.map +1 -0
- package/dest/l1_tx_utils/l1_tx_utils_with_blobs.js +26 -0
- package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts +94 -0
- package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts.map +1 -0
- package/dest/l1_tx_utils/readonly_l1_tx_utils.js +430 -0
- package/dest/l1_tx_utils/signer.d.ts +4 -0
- package/dest/l1_tx_utils/signer.d.ts.map +1 -0
- package/dest/l1_tx_utils/signer.js +16 -0
- package/dest/l1_tx_utils/types.d.ts +67 -0
- package/dest/l1_tx_utils/types.d.ts.map +1 -0
- package/dest/l1_tx_utils/types.js +26 -0
- package/dest/l1_tx_utils/utils.d.ts +4 -0
- package/dest/l1_tx_utils/utils.d.ts.map +1 -0
- package/dest/l1_tx_utils/utils.js +14 -0
- package/dest/l1_types.d.ts +6 -0
- package/dest/l1_types.d.ts.map +1 -0
- package/dest/l1_types.js +1 -0
- package/dest/publisher_manager.d.ts +15 -0
- package/dest/publisher_manager.d.ts.map +1 -0
- package/dest/publisher_manager.js +88 -0
- package/dest/queries.d.ts +4 -2
- package/dest/queries.d.ts.map +1 -1
- package/dest/queries.js +53 -12
- package/dest/test/chain_monitor.d.ts +73 -0
- package/dest/test/chain_monitor.d.ts.map +1 -0
- package/dest/test/chain_monitor.js +215 -0
- package/dest/test/delayed_tx_utils.d.ts +8 -3
- package/dest/test/delayed_tx_utils.d.ts.map +1 -1
- package/dest/test/delayed_tx_utils.js +13 -6
- package/dest/test/eth_cheat_codes.d.ts +217 -0
- package/dest/test/eth_cheat_codes.d.ts.map +1 -0
- package/dest/test/eth_cheat_codes.js +558 -0
- package/dest/test/eth_cheat_codes_with_state.d.ts +2 -2
- package/dest/test/eth_cheat_codes_with_state.d.ts.map +1 -1
- package/dest/test/eth_cheat_codes_with_state.js +1 -1
- package/dest/test/index.d.ts +4 -1
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/index.js +3 -0
- package/dest/test/rollup_cheat_codes.d.ts +87 -0
- package/dest/test/rollup_cheat_codes.d.ts.map +1 -0
- package/dest/test/rollup_cheat_codes.js +266 -0
- package/dest/test/start_anvil.d.ts +7 -1
- package/dest/test/start_anvil.d.ts.map +1 -1
- package/dest/test/start_anvil.js +16 -7
- package/dest/test/tx_delayer.d.ts +18 -7
- package/dest/test/tx_delayer.d.ts.map +1 -1
- package/dest/test/tx_delayer.js +95 -19
- package/dest/test/upgrade_utils.d.ts +6 -5
- package/dest/test/upgrade_utils.d.ts.map +1 -1
- package/dest/test/upgrade_utils.js +23 -16
- package/dest/types.d.ts +7 -8
- package/dest/types.d.ts.map +1 -1
- package/dest/types.js +3 -1
- package/dest/utils.d.ts +2 -1
- package/dest/utils.d.ts.map +1 -1
- package/dest/utils.js +43 -88
- package/dest/zkPassportVerifierAddress.d.ts +15 -0
- package/dest/zkPassportVerifierAddress.d.ts.map +1 -0
- package/dest/zkPassportVerifierAddress.js +11 -0
- package/package.json +28 -19
- package/src/account.ts +5 -0
- package/src/client.ts +42 -4
- package/src/config.ts +592 -31
- package/src/contracts/empire_base.ts +77 -7
- package/src/contracts/empire_slashing_proposer.ts +265 -0
- package/src/contracts/errors.ts +13 -0
- package/src/contracts/fee_asset_handler.ts +63 -0
- package/src/contracts/fee_juice.ts +29 -15
- package/src/contracts/governance.ts +80 -77
- package/src/contracts/governance_proposer.ts +66 -24
- package/src/contracts/gse.ts +88 -0
- package/src/contracts/inbox.ts +63 -0
- package/src/contracts/index.ts +8 -2
- package/src/contracts/multicall.ts +155 -0
- package/src/contracts/registry.ts +51 -26
- package/src/contracts/rollup.ts +596 -74
- package/src/contracts/slasher_contract.ts +89 -0
- package/src/contracts/tally_slashing_proposer.ts +316 -0
- package/src/contracts/utils.ts +14 -0
- package/src/deploy_l1_contracts.ts +1459 -538
- package/src/eth-signer/eth-signer.ts +25 -0
- package/src/eth-signer/index.ts +1 -0
- package/src/index.ts +6 -2
- package/src/l1_artifacts.ts +254 -0
- package/src/l1_contract_addresses.ts +32 -19
- package/src/l1_reader.ts +9 -9
- package/src/l1_tx_utils/README.md +177 -0
- package/src/l1_tx_utils/config.ts +143 -0
- package/src/l1_tx_utils/constants.ts +18 -0
- package/src/l1_tx_utils/factory.ts +64 -0
- package/src/l1_tx_utils/index.ts +12 -0
- package/src/l1_tx_utils/interfaces.ts +86 -0
- package/src/l1_tx_utils/l1_tx_utils.ts +718 -0
- package/src/l1_tx_utils/l1_tx_utils_with_blobs.ts +77 -0
- package/src/l1_tx_utils/readonly_l1_tx_utils.ts +558 -0
- package/src/l1_tx_utils/signer.ts +28 -0
- package/src/l1_tx_utils/types.ts +85 -0
- package/src/l1_tx_utils/utils.ts +16 -0
- package/src/l1_types.ts +6 -0
- package/src/publisher_manager.ts +106 -0
- package/src/queries.ts +73 -15
- package/src/test/chain_monitor.ts +243 -0
- package/src/test/delayed_tx_utils.ts +34 -6
- package/src/test/eth_cheat_codes.ts +588 -0
- package/src/test/eth_cheat_codes_with_state.ts +1 -1
- package/src/test/index.ts +3 -0
- package/src/test/rollup_cheat_codes.ts +307 -0
- package/src/test/start_anvil.ts +22 -5
- package/src/test/tx_delayer.ts +127 -26
- package/src/test/upgrade_utils.ts +30 -21
- package/src/types.ts +10 -8
- package/src/utils.ts +49 -90
- package/src/zkPassportVerifierAddress.ts +15 -0
- package/dest/contracts/forwarder.d.ts +0 -24
- package/dest/contracts/forwarder.d.ts.map +0 -1
- package/dest/contracts/forwarder.js +0 -101
- package/dest/contracts/slashing_proposer.d.ts +0 -21
- package/dest/contracts/slashing_proposer.d.ts.map +0 -1
- package/dest/contracts/slashing_proposer.js +0 -47
- package/dest/eth_cheat_codes.d.ts +0 -147
- package/dest/eth_cheat_codes.d.ts.map +0 -1
- package/dest/eth_cheat_codes.js +0 -303
- package/dest/l1_tx_utils.d.ts +0 -192
- package/dest/l1_tx_utils.d.ts.map +0 -1
- package/dest/l1_tx_utils.js +0 -641
- package/dest/l1_tx_utils_with_blobs.d.ts +0 -12
- package/dest/l1_tx_utils_with_blobs.d.ts.map +0 -1
- package/dest/l1_tx_utils_with_blobs.js +0 -64
- package/src/contracts/forwarder.ts +0 -132
- package/src/contracts/slashing_proposer.ts +0 -51
- package/src/eth_cheat_codes.ts +0 -314
- package/src/l1_tx_utils.ts +0 -847
- package/src/l1_tx_utils_with_blobs.ts +0 -86
package/dest/contracts/index.js
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
export * from './empire_base.js';
|
|
2
|
+
export * from './errors.js';
|
|
3
|
+
export * from './fee_asset_handler.js';
|
|
2
4
|
export * from './fee_juice.js';
|
|
3
|
-
export * from './forwarder.js';
|
|
4
5
|
export * from './governance.js';
|
|
5
6
|
export * from './governance_proposer.js';
|
|
7
|
+
export * from './gse.js';
|
|
8
|
+
export * from './inbox.js';
|
|
9
|
+
export * from './multicall.js';
|
|
6
10
|
export * from './registry.js';
|
|
7
11
|
export * from './rollup.js';
|
|
8
|
-
export * from './
|
|
12
|
+
export * from './empire_slashing_proposer.js';
|
|
13
|
+
export * from './tally_slashing_proposer.js';
|
|
14
|
+
export * from './slasher_contract.js';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Logger } from '@aztec/foundation/log';
|
|
2
|
+
import { type Hex } from 'viem';
|
|
3
|
+
import type { L1BlobInputs, L1TxConfig, L1TxRequest, L1TxUtils } from '../l1_tx_utils/index.js';
|
|
4
|
+
import type { ExtendedViemWalletClient } from '../types.js';
|
|
5
|
+
import { FormattedViemError } from '../utils.js';
|
|
6
|
+
export declare const MULTI_CALL_3_ADDRESS: "0xcA11bde05977b3631167028862bE2a173976CA11";
|
|
7
|
+
export declare class Multicall3 {
|
|
8
|
+
static forward(requests: L1TxRequest[], l1TxUtils: L1TxUtils, gasConfig: L1TxConfig | undefined, blobConfig: L1BlobInputs | undefined, rollupAddress: Hex, logger: Logger, opts?: {
|
|
9
|
+
revertOnFailure?: boolean;
|
|
10
|
+
}): Promise<FormattedViemError | {
|
|
11
|
+
receipt: import("viem").TransactionReceipt;
|
|
12
|
+
stats: import("../l1_tx_utils/types.js").TransactionStats | undefined;
|
|
13
|
+
errorMsg?: undefined;
|
|
14
|
+
} | {
|
|
15
|
+
stats?: undefined;
|
|
16
|
+
receipt: import("viem").TransactionReceipt;
|
|
17
|
+
errorMsg: string | undefined;
|
|
18
|
+
}>;
|
|
19
|
+
}
|
|
20
|
+
export declare function deployMulticall3(l1Client: ExtendedViemWalletClient, logger: Logger): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGljYWxsLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL211bHRpY2FsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQXFDLEtBQUssR0FBRyxFQUFxQyxNQUFNLE1BQU0sQ0FBQztBQUV0RyxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRyxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQW1CLE1BQU0sYUFBYSxDQUFDO0FBR2xFLGVBQU8sTUFBTSxvQkFBb0IsOENBQXdELENBQUM7QUFFMUYscUJBQWEsVUFBVTtJQUNyQixPQUFhLE9BQU8sQ0FDbEIsUUFBUSxFQUFFLFdBQVcsRUFBRSxFQUN2QixTQUFTLEVBQUUsU0FBUyxFQUNwQixTQUFTLEVBQUUsVUFBVSxHQUFHLFNBQVMsRUFDakMsVUFBVSxFQUFFLFlBQVksR0FBRyxTQUFTLEVBQ3BDLGFBQWEsRUFBRSxHQUFHLEVBQ2xCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsSUFBSSxHQUFFO1FBQUUsZUFBZSxDQUFDLEVBQUUsT0FBTyxDQUFBO0tBQU87Ozs7Ozs7O09BbUd6QztDQUNGO0FBRUQsd0JBQXNCLGdCQUFnQixDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkErQnhGIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multicall.d.ts","sourceRoot":"","sources":["../../src/contracts/multicall.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAqC,KAAK,GAAG,EAAqC,MAAM,MAAM,CAAC;AAEtG,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAChG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAmB,MAAM,aAAa,CAAC;AAGlE,eAAO,MAAM,oBAAoB,8CAAwD,CAAC;AAE1F,qBAAa,UAAU;IACrB,OAAa,OAAO,CAClB,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,UAAU,GAAG,SAAS,EACjC,UAAU,EAAE,YAAY,GAAG,SAAS,EACpC,aAAa,EAAE,GAAG,EAClB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAO;;;;;;;;OAmGzC;CACF;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,iBA+BxF"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { toHex as toPaddedHex } from '@aztec/foundation/bigint-buffer';
|
|
2
|
+
import { TimeoutError } from '@aztec/foundation/error';
|
|
3
|
+
import { encodeFunctionData, multicall3Abi } from 'viem';
|
|
4
|
+
import { FormattedViemError, formatViemError } from '../utils.js';
|
|
5
|
+
import { RollupContract } from './rollup.js';
|
|
6
|
+
export const MULTI_CALL_3_ADDRESS = '0xcA11bde05977b3631167028862bE2a173976CA11';
|
|
7
|
+
export class Multicall3 {
|
|
8
|
+
static async forward(requests, l1TxUtils, gasConfig, blobConfig, rollupAddress, logger, opts = {}) {
|
|
9
|
+
requests = requests.filter((request)=>request.to !== null);
|
|
10
|
+
const args = requests.map((r)=>({
|
|
11
|
+
target: r.to,
|
|
12
|
+
callData: r.data,
|
|
13
|
+
allowFailure: !opts.revertOnFailure
|
|
14
|
+
}));
|
|
15
|
+
const forwarderFunctionData = {
|
|
16
|
+
abi: multicall3Abi,
|
|
17
|
+
functionName: 'aggregate3',
|
|
18
|
+
args: [
|
|
19
|
+
args
|
|
20
|
+
]
|
|
21
|
+
};
|
|
22
|
+
const encodedForwarderData = encodeFunctionData(forwarderFunctionData);
|
|
23
|
+
try {
|
|
24
|
+
const { receipt, state } = await l1TxUtils.sendAndMonitorTransaction({
|
|
25
|
+
to: MULTI_CALL_3_ADDRESS,
|
|
26
|
+
data: encodedForwarderData
|
|
27
|
+
}, gasConfig, blobConfig);
|
|
28
|
+
if (receipt.status === 'success') {
|
|
29
|
+
const stats = await l1TxUtils.getTransactionStats(receipt.transactionHash);
|
|
30
|
+
return {
|
|
31
|
+
receipt,
|
|
32
|
+
stats
|
|
33
|
+
};
|
|
34
|
+
} else {
|
|
35
|
+
logger.error('Forwarder transaction failed', undefined, {
|
|
36
|
+
receipt
|
|
37
|
+
});
|
|
38
|
+
const args = {
|
|
39
|
+
...forwarderFunctionData,
|
|
40
|
+
address: MULTI_CALL_3_ADDRESS
|
|
41
|
+
};
|
|
42
|
+
let errorMsg;
|
|
43
|
+
if (blobConfig) {
|
|
44
|
+
const maxFeePerBlobGas = blobConfig.maxFeePerBlobGas ?? state.gasPrice.maxFeePerBlobGas;
|
|
45
|
+
if (maxFeePerBlobGas === undefined) {
|
|
46
|
+
errorMsg = 'maxFeePerBlobGas is required to get the error message';
|
|
47
|
+
} else {
|
|
48
|
+
logger.debug('Trying to get error from reverted tx with blob config');
|
|
49
|
+
errorMsg = await l1TxUtils.tryGetErrorFromRevertedTx(encodedForwarderData, args, {
|
|
50
|
+
blobs: blobConfig.blobs,
|
|
51
|
+
kzg: blobConfig.kzg,
|
|
52
|
+
maxFeePerBlobGas
|
|
53
|
+
}, [
|
|
54
|
+
{
|
|
55
|
+
address: rollupAddress,
|
|
56
|
+
stateDiff: [
|
|
57
|
+
{
|
|
58
|
+
slot: toPaddedHex(RollupContract.checkBlobStorageSlot, true),
|
|
59
|
+
value: toPaddedHex(0n, true)
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
]);
|
|
64
|
+
}
|
|
65
|
+
} else {
|
|
66
|
+
logger.debug('Trying to get error from reverted tx without blob config');
|
|
67
|
+
errorMsg = await l1TxUtils.tryGetErrorFromRevertedTx(encodedForwarderData, args, undefined, []);
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
receipt,
|
|
71
|
+
errorMsg
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
} catch (err) {
|
|
75
|
+
if (err instanceof TimeoutError) {
|
|
76
|
+
throw err;
|
|
77
|
+
}
|
|
78
|
+
for (const request of requests){
|
|
79
|
+
logger.debug('Simulating request', {
|
|
80
|
+
request
|
|
81
|
+
});
|
|
82
|
+
const result = await l1TxUtils.simulate(request, undefined, [
|
|
83
|
+
{
|
|
84
|
+
address: rollupAddress,
|
|
85
|
+
stateDiff: [
|
|
86
|
+
{
|
|
87
|
+
slot: toPaddedHex(RollupContract.checkBlobStorageSlot, true),
|
|
88
|
+
value: toPaddedHex(0n, true)
|
|
89
|
+
}
|
|
90
|
+
]
|
|
91
|
+
}
|
|
92
|
+
]).catch((err)=>formatViemError(err, request.abi));
|
|
93
|
+
if (result instanceof FormattedViemError) {
|
|
94
|
+
logger.error('Found error in simulation', result, {
|
|
95
|
+
to: request.to ?? 'null',
|
|
96
|
+
data: request.data
|
|
97
|
+
});
|
|
98
|
+
return result;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
logger.warn('Failed to get error from reverted tx', {
|
|
102
|
+
err
|
|
103
|
+
});
|
|
104
|
+
throw err;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
export async function deployMulticall3(l1Client, logger) {
|
|
109
|
+
const existing = await l1Client.getCode({
|
|
110
|
+
address: MULTI_CALL_3_ADDRESS
|
|
111
|
+
});
|
|
112
|
+
if (existing && existing !== '0x') {
|
|
113
|
+
logger.verbose('Multicall3 already deployed', {
|
|
114
|
+
address: MULTI_CALL_3_ADDRESS
|
|
115
|
+
});
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const deployer = '0x05f32b3cc3888453ff71b01135b34ff8e41263f2';
|
|
119
|
+
const sendEth = await l1Client.sendTransaction({
|
|
120
|
+
to: deployer,
|
|
121
|
+
value: 10n ** 17n
|
|
122
|
+
});
|
|
123
|
+
logger.info('Sent 0.1 ETH to deployer', {
|
|
124
|
+
deployer,
|
|
125
|
+
value: 10n ** 17n
|
|
126
|
+
});
|
|
127
|
+
const sendEthReceipt = await l1Client.waitForTransactionReceipt({
|
|
128
|
+
hash: sendEth
|
|
129
|
+
});
|
|
130
|
+
if (sendEthReceipt.status !== 'success') {
|
|
131
|
+
logger.error('Failed to send ETH to deployer', undefined, {
|
|
132
|
+
sendEthReceipt
|
|
133
|
+
});
|
|
134
|
+
throw new Error('Failed to send ETH to deployer');
|
|
135
|
+
} else {
|
|
136
|
+
logger.info('Sent 0.1 ETH to deployer', {
|
|
137
|
+
deployer,
|
|
138
|
+
value: 10n ** 17n
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
const tx = '0xf90f538085174876e800830f42408080b90f00608060405234801561001057600080fd5b50610ee0806100206000396000f3fe6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e1461025a578063bce38bd714610275578063c3077fa914610288578063ee82ac5e1461029b57600080fd5b80634d2301cc146101ec57806372425d9d1461022157806382ad56cb1461023457806386d516e81461024757600080fd5b80633408e470116100c65780633408e47014610191578063399542e9146101a45780633e64a696146101c657806342cbb15c146101d957600080fd5b80630f28c97d146100f8578063174dea711461011a578063252dba421461013a57806327e86d6e1461015b575b600080fd5b34801561010457600080fd5b50425b6040519081526020015b60405180910390f35b61012d610128366004610a85565b6102ba565b6040516101119190610bbe565b61014d610148366004610a85565b6104ef565b604051610111929190610bd8565b34801561016757600080fd5b50437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0140610107565b34801561019d57600080fd5b5046610107565b6101b76101b2366004610c60565b610690565b60405161011193929190610cba565b3480156101d257600080fd5b5048610107565b3480156101e557600080fd5b5043610107565b3480156101f857600080fd5b50610107610207366004610ce2565b73ffffffffffffffffffffffffffffffffffffffff163190565b34801561022d57600080fd5b5044610107565b61012d610242366004610a85565b6106ab565b34801561025357600080fd5b5045610107565b34801561026657600080fd5b50604051418152602001610111565b61012d610283366004610c60565b61085a565b6101b7610296366004610a85565b610a1a565b3480156102a757600080fd5b506101076102b6366004610d18565b4090565b60606000828067ffffffffffffffff8111156102d8576102d8610d31565b60405190808252806020026020018201604052801561031e57816020015b6040805180820190915260008152606060208201528152602001906001900390816102f65790505b5092503660005b8281101561047757600085828151811061034157610341610d60565b6020026020010151905087878381811061035d5761035d610d60565b905060200281019061036f9190610d8f565b6040810135958601959093506103886020850185610ce2565b73ffffffffffffffffffffffffffffffffffffffff16816103ac6060870187610dcd565b6040516103ba929190610e32565b60006040518083038185875af1925050503d80600081146103f7576040519150601f19603f3d011682016040523d82523d6000602084013e6103fc565b606091505b50602080850191909152901515808452908501351761046d577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b5050600101610325565b508234146104e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d756c746963616c6c333a2076616c7565206d69736d6174636800000000000060448201526064015b60405180910390fd5b50505092915050565b436060828067ffffffffffffffff81111561050c5761050c610d31565b60405190808252806020026020018201604052801561053f57816020015b606081526020019060019003908161052a5790505b5091503660005b8281101561068657600087878381811061056257610562610d60565b90506020028101906105749190610e42565b92506105836020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166105a66020850185610dcd565b6040516105b4929190610e32565b6000604051808303816000865af19150503d80600081146105f1576040519150601f19603f3d011682016040523d82523d6000602084013e6105f6565b606091505b5086848151811061060957610609610d60565b602090810291909101015290508061067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b50600101610546565b5050509250929050565b43804060606106a086868661085a565b905093509350939050565b6060818067ffffffffffffffff8111156106c7576106c7610d31565b60405190808252806020026020018201604052801561070d57816020015b6040805180820190915260008152606060208201528152602001906001900390816106e55790505b5091503660005b828110156104e657600084828151811061073057610730610d60565b6020026020010151905086868381811061074c5761074c610d60565b905060200281019061075e9190610e76565b925061076d6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166107906040850185610dcd565b60405161079e929190610e32565b6000604051808303816000865af19150503d80600081146107db576040519150601f19603f3d011682016040523d82523d6000602084013e6107e0565b606091505b506020808401919091529015158083529084013517610851577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b50600101610714565b6060818067ffffffffffffffff81111561087657610876610d31565b6040519080825280602002602001820160405280156108bc57816020015b6040805180820190915260008152606060208201528152602001906001900390816108945790505b5091503660005b82811015610a105760008482815181106108df576108df610d60565b602002602001015190508686838181106108fb576108fb610d60565b905060200281019061090d9190610e42565b925061091c6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff1661093f6020850185610dcd565b60405161094d929190610e32565b6000604051808303816000865af19150503d806000811461098a576040519150601f19603f3d011682016040523d82523d6000602084013e61098f565b606091505b506020830152151581528715610a07578051610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b506001016108c3565b5050509392505050565b6000806060610a2b60018686610690565b919790965090945092505050565b60008083601f840112610a4b57600080fd5b50813567ffffffffffffffff811115610a6357600080fd5b6020830191508360208260051b8501011115610a7e57600080fd5b9250929050565b60008060208385031215610a9857600080fd5b823567ffffffffffffffff811115610aaf57600080fd5b610abb85828601610a39565b90969095509350505050565b6000815180845260005b81811015610aed57602081850181015186830182015201610ad1565b81811115610aff576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015610bb1578583037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001895281518051151584528401516040858501819052610b9d81860183610ac7565b9a86019a9450505090830190600101610b4f565b5090979650505050505050565b602081526000610bd16020830184610b32565b9392505050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015610c52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452610c40868351610ac7565b95509284019290840190600101610c06565b509398975050505050505050565b600080600060408486031215610c7557600080fd5b83358015158114610c8557600080fd5b9250602084013567ffffffffffffffff811115610ca157600080fd5b610cad86828701610a39565b9497909650939450505050565b838152826020820152606060408201526000610cd96060830184610b32565b95945050505050565b600060208284031215610cf457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610bd157600080fd5b600060208284031215610d2a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112610dc357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e0257600080fd5b83018035915067ffffffffffffffff821115610e1d57600080fd5b602001915036819003821315610a7e57600080fd5b8183823760009101908152919050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112610dc357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610dc357600080fdfea2646970667358221220bb2b5c71a328032f97c676ae39a1ec2148d3e5d6f73d95e9b17910152d61f16264736f6c634300080c00331ca0edce47092c0f398cebf3ffc267f05c8e7076e3b89445e0fe50f6332273d4569ba01b0b9d000e19b24c5869b0fc3b22b0d6fa47cd63316875cbbd577d76e6fde086';
|
|
142
|
+
const deployTx = await l1Client.sendRawTransaction({
|
|
143
|
+
serializedTransaction: tx
|
|
144
|
+
});
|
|
145
|
+
const deployTxReceipt = await l1Client.waitForTransactionReceipt({
|
|
146
|
+
hash: deployTx
|
|
147
|
+
});
|
|
148
|
+
if (deployTxReceipt.status !== 'success') {
|
|
149
|
+
logger.error('Failed to deploy Multicall3', undefined, {
|
|
150
|
+
deployTxReceipt
|
|
151
|
+
});
|
|
152
|
+
throw new Error('Failed to deploy Multicall3');
|
|
153
|
+
} else {
|
|
154
|
+
logger.info('Deployed Multicall3');
|
|
155
|
+
}
|
|
156
|
+
}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
2
|
import { type Hex } from 'viem';
|
|
3
3
|
import type { L1ContractAddresses } from '../l1_contract_addresses.js';
|
|
4
|
-
import type {
|
|
4
|
+
import type { ViemClient } from '../types.js';
|
|
5
5
|
export declare class RegistryContract {
|
|
6
|
-
readonly client:
|
|
6
|
+
readonly client: ViemClient;
|
|
7
7
|
address: EthAddress;
|
|
8
|
+
private readonly log;
|
|
8
9
|
private readonly registry;
|
|
9
|
-
constructor(client:
|
|
10
|
+
constructor(client: ViemClient, address: Hex | EthAddress);
|
|
11
|
+
getOwner(): Promise<EthAddress>;
|
|
10
12
|
/**
|
|
11
13
|
* Returns the address of the rollup for a given version.
|
|
12
14
|
* @param version - The version of the rollup. 'canonical' can be used to get the canonical address (i.e. the latest version).
|
|
@@ -19,6 +21,9 @@ export declare class RegistryContract {
|
|
|
19
21
|
*/
|
|
20
22
|
getCanonicalAddress(): Promise<EthAddress>;
|
|
21
23
|
getGovernanceAddresses(): Promise<Pick<L1ContractAddresses, 'governanceProposerAddress' | 'governanceAddress'>>;
|
|
22
|
-
static collectAddresses(client:
|
|
24
|
+
static collectAddresses(client: ViemClient, registryAddress: Hex | EthAddress, rollupVersion: number | bigint | 'canonical'): Promise<L1ContractAddresses>;
|
|
25
|
+
getNumberOfVersions(): Promise<number>;
|
|
26
|
+
getRollupVersions(): Promise<bigint[]>;
|
|
27
|
+
getRewardDistributor(): Promise<EthAddress>;
|
|
23
28
|
}
|
|
24
|
-
//# sourceMappingURL=
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdHMvcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBSzNELE9BQU8sRUFBOEIsS0FBSyxHQUFHLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFFekUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJOUMscUJBQWEsZ0JBQWdCO2FBT1QsTUFBTSxFQUFFLFVBQVU7SUFON0IsT0FBTyxFQUFFLFVBQVUsQ0FBQztJQUUzQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBK0M7SUFDbkUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQXdEO0lBRWpGLFlBQ2tCLE1BQU0sRUFBRSxVQUFVLEVBQ2xDLE9BQU8sRUFBRSxHQUFHLEdBQUcsVUFBVSxFQU8xQjtJQUVZLFFBQVEsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBRTNDO0lBRUQ7Ozs7T0FJRztJQUNVLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsTUFBTSxHQUFHLFdBQVcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBc0J6RjtJQUVEOzs7T0FHRztJQUNVLG1CQUFtQixJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FFdEQ7SUFFWSxzQkFBc0IsSUFBSSxPQUFPLENBQzVDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSwyQkFBMkIsR0FBRyxtQkFBbUIsQ0FBQyxDQUM3RSxDQVFBO0lBRUQsT0FBb0IsZ0JBQWdCLENBQ2xDLE1BQU0sRUFBRSxVQUFVLEVBQ2xCLGVBQWUsRUFBRSxHQUFHLEdBQUcsVUFBVSxFQUNqQyxhQUFhLEVBQUUsTUFBTSxHQUFHLE1BQU0sR0FBRyxXQUFXLEdBQzNDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQXVCOUI7SUFFWSxtQkFBbUIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBR2xEO0lBRVksaUJBQWlCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBU2xEO0lBRVksb0JBQW9CLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUV2RDtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/contracts/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/contracts/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAK3D,OAAO,EAA8B,KAAK,GAAG,EAAe,MAAM,MAAM,CAAC;AAEzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,qBAAa,gBAAgB;aAOT,MAAM,EAAE,UAAU;IAN7B,OAAO,EAAE,UAAU,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA+C;IACnE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwD;IAEjF,YACkB,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG,GAAG,UAAU,EAO1B;IAEY,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,CAE3C;IAED;;;;OAIG;IACU,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAsBzF;IAED;;;OAGG;IACU,mBAAmB,IAAI,OAAO,CAAC,UAAU,CAAC,CAEtD;IAEY,sBAAsB,IAAI,OAAO,CAC5C,IAAI,CAAC,mBAAmB,EAAE,2BAA2B,GAAG,mBAAmB,CAAC,CAC7E,CAQA;IAED,OAAoB,gBAAgB,CAClC,MAAM,EAAE,UAAU,EAClB,eAAe,EAAE,GAAG,GAAG,UAAU,EACjC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAC3C,OAAO,CAAC,mBAAmB,CAAC,CAuB9B;IAEY,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAGlD;IAEY,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CASlD;IAEY,oBAAoB,IAAI,OAAO,CAAC,UAAU,CAAC,CAEvD;CACF"}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
2
3
|
import { RegistryAbi } from '@aztec/l1-artifacts/RegistryAbi';
|
|
3
4
|
import { TestERC20Abi } from '@aztec/l1-artifacts/TestERC20Abi';
|
|
4
5
|
import { getContract } from 'viem';
|
|
5
|
-
import {
|
|
6
|
+
import { ReadOnlyGovernanceContract } from './governance.js';
|
|
6
7
|
import { RollupContract } from './rollup.js';
|
|
7
8
|
export class RegistryContract {
|
|
8
9
|
client;
|
|
9
10
|
address;
|
|
11
|
+
log;
|
|
10
12
|
registry;
|
|
11
13
|
constructor(client, address){
|
|
12
14
|
this.client = client;
|
|
15
|
+
this.log = createLogger('ethereum:contracts:registry');
|
|
13
16
|
if (address instanceof EthAddress) {
|
|
14
17
|
address = address.toString();
|
|
15
18
|
}
|
|
@@ -20,6 +23,9 @@ export class RegistryContract {
|
|
|
20
23
|
client
|
|
21
24
|
});
|
|
22
25
|
}
|
|
26
|
+
async getOwner() {
|
|
27
|
+
return EthAddress.fromString(await this.registry.read.owner());
|
|
28
|
+
}
|
|
23
29
|
/**
|
|
24
30
|
* Returns the address of the rollup for a given version.
|
|
25
31
|
* @param version - The version of the rollup. 'canonical' can be used to get the canonical address (i.e. the latest version).
|
|
@@ -31,33 +37,38 @@ export class RegistryContract {
|
|
|
31
37
|
if (typeof version === 'number') {
|
|
32
38
|
version = BigInt(version);
|
|
33
39
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
40
|
+
try {
|
|
41
|
+
return EthAddress.fromString(await this.registry.read.getRollup([
|
|
42
|
+
version
|
|
43
|
+
]));
|
|
44
|
+
} catch {
|
|
45
|
+
this.log.warn(`Failed fetching rollup address for version ${version}. Retrying as index.`);
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
const actualVersion = await this.registry.read.getVersion([
|
|
49
|
+
version
|
|
50
|
+
]);
|
|
51
|
+
const rollupAddress = await this.registry.read.getRollup([
|
|
52
|
+
actualVersion
|
|
53
|
+
]);
|
|
54
|
+
return EthAddress.fromString(rollupAddress);
|
|
55
|
+
} catch {
|
|
39
56
|
throw new Error('Rollup address is undefined');
|
|
40
57
|
}
|
|
41
|
-
return address;
|
|
42
58
|
}
|
|
43
59
|
/**
|
|
44
60
|
* Returns the canonical address of the rollup.
|
|
45
61
|
* @returns The canonical address of the rollup. If the rollup is not set, throws an error.
|
|
46
62
|
*/ async getCanonicalAddress() {
|
|
47
|
-
|
|
48
|
-
const address = EthAddress.fromString(snapshot.rollup);
|
|
49
|
-
if (address.equals(EthAddress.ZERO)) {
|
|
50
|
-
throw new Error('Rollup address is undefined');
|
|
51
|
-
}
|
|
52
|
-
return address;
|
|
63
|
+
return EthAddress.fromString(await this.registry.read.getCanonicalRollup());
|
|
53
64
|
}
|
|
54
65
|
async getGovernanceAddresses() {
|
|
55
66
|
const governanceAddress = await this.registry.read.getGovernance();
|
|
56
|
-
const governance = new
|
|
57
|
-
const
|
|
67
|
+
const governance = new ReadOnlyGovernanceContract(governanceAddress, this.client);
|
|
68
|
+
const governanceProposerAddress = await governance.getGovernanceProposerAddress();
|
|
58
69
|
return {
|
|
59
70
|
governanceAddress: governance.address,
|
|
60
|
-
governanceProposerAddress:
|
|
71
|
+
governanceProposerAddress: governanceProposerAddress
|
|
61
72
|
};
|
|
62
73
|
}
|
|
63
74
|
static async collectAddresses(client, registryAddress, rollupVersion) {
|
|
@@ -82,4 +93,21 @@ export class RegistryContract {
|
|
|
82
93
|
coinIssuerAddress: EthAddress.fromString(coinIssuer)
|
|
83
94
|
};
|
|
84
95
|
}
|
|
96
|
+
async getNumberOfVersions() {
|
|
97
|
+
const version = await this.registry.read.numberOfVersions();
|
|
98
|
+
return Number(version);
|
|
99
|
+
}
|
|
100
|
+
async getRollupVersions() {
|
|
101
|
+
const count = await this.getNumberOfVersions();
|
|
102
|
+
const versions = [];
|
|
103
|
+
for(let i = 0; i < count; i++){
|
|
104
|
+
versions.push(await this.registry.read.getVersion([
|
|
105
|
+
BigInt(i)
|
|
106
|
+
]));
|
|
107
|
+
}
|
|
108
|
+
return versions;
|
|
109
|
+
}
|
|
110
|
+
async getRewardDistributor() {
|
|
111
|
+
return EthAddress.fromString(await this.registry.read.getRewardDistributor());
|
|
112
|
+
}
|
|
85
113
|
}
|