@aztec/end-to-end 3.0.0-canary.a9708bd → 3.0.0-devnet.20251212
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/bench/client_flows/benchmark.d.ts +4 -3
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/benchmark.js +2 -2
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +25 -14
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +111 -90
- package/dest/bench/client_flows/config.d.ts +1 -1
- package/dest/bench/client_flows/data_extractor.d.ts +1 -1
- package/dest/bench/client_flows/data_extractor.js +8 -30
- package/dest/bench/utils.d.ts +4 -13
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +10 -34
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +8 -8
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +42 -42
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +12 -9
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +35 -35
- package/dest/e2e_deploy_contract/deploy_test.d.ts +12 -6
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_deploy_contract/deploy_test.js +9 -18
- package/dest/e2e_epochs/epochs_test.d.ts +19 -12
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +30 -22
- package/dest/e2e_fees/bridging_race.notest.d.ts +1 -1
- package/dest/e2e_fees/bridging_race.notest.js +14 -11
- package/dest/e2e_fees/fees_test.d.ts +10 -8
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +35 -38
- package/dest/e2e_l1_publisher/write_json.d.ts +4 -2
- package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
- package/dest/e2e_l1_publisher/write_json.js +9 -8
- package/dest/e2e_multi_validator/utils.d.ts +2 -2
- package/dest/e2e_multi_validator/utils.d.ts.map +1 -1
- package/dest/e2e_multi_validator/utils.js +4 -10
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +7 -4
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +11 -12
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +31 -0
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -0
- package/dest/e2e_p2p/inactivity_slash_test.js +139 -0
- package/dest/e2e_p2p/p2p_network.d.ts +238 -17
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +46 -19
- package/dest/e2e_p2p/shared.d.ts +16 -17
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +56 -55
- package/dest/e2e_token_contract/token_contract_test.d.ts +6 -5
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +14 -17
- package/dest/fixtures/e2e_prover_test.d.ts +12 -8
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +53 -58
- package/dest/fixtures/fixtures.d.ts +1 -1
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +1 -1
- package/dest/fixtures/get_acvm_config.d.ts +2 -2
- package/dest/fixtures/get_acvm_config.d.ts.map +1 -1
- package/dest/fixtures/get_acvm_config.js +1 -1
- package/dest/fixtures/get_bb_config.d.ts +2 -2
- package/dest/fixtures/get_bb_config.d.ts.map +1 -1
- package/dest/fixtures/get_bb_config.js +2 -2
- package/dest/fixtures/index.d.ts +1 -1
- package/dest/fixtures/l1_to_l2_messaging.d.ts +4 -3
- package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
- package/dest/fixtures/l1_to_l2_messaging.js +2 -2
- package/dest/fixtures/logging.d.ts +1 -1
- package/dest/fixtures/setup_l1_contracts.d.ts +476 -5
- package/dest/fixtures/setup_l1_contracts.d.ts.map +1 -1
- package/dest/fixtures/setup_l1_contracts.js +3 -3
- package/dest/fixtures/setup_p2p_test.d.ts +12 -11
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +50 -24
- package/dest/fixtures/snapshot_manager.d.ts +13 -10
- package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
- package/dest/fixtures/snapshot_manager.js +66 -51
- package/dest/fixtures/token_utils.d.ts +10 -5
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +17 -18
- package/dest/fixtures/utils.d.ts +479 -35
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +106 -125
- package/dest/fixtures/web3signer.d.ts +5 -0
- package/dest/fixtures/web3signer.d.ts.map +1 -0
- package/dest/fixtures/web3signer.js +53 -0
- package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
- package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
- package/dest/fixtures/with_telemetry_utils.js +2 -2
- package/dest/index.d.ts +1 -1
- package/dest/quality_of_service/alert_checker.d.ts +2 -2
- package/dest/quality_of_service/alert_checker.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.d.ts +20 -23
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +14 -16
- package/dest/shared/gas_portal_test_harness.d.ts +10 -17
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +11 -8
- package/dest/shared/index.d.ts +1 -1
- package/dest/shared/jest_setup.d.ts +1 -1
- package/dest/shared/jest_setup.js +1 -1
- package/dest/shared/submit-transactions.d.ts +6 -4
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +8 -7
- package/dest/shared/uniswap_l1_l2.d.ts +12 -8
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +44 -58
- package/dest/simulators/index.d.ts +1 -1
- package/dest/simulators/lending_simulator.d.ts +4 -7
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +8 -5
- package/dest/simulators/token_simulator.d.ts +4 -2
- package/dest/simulators/token_simulator.d.ts.map +1 -1
- package/dest/simulators/token_simulator.js +2 -2
- package/dest/spartan/setup_test_wallets.d.ts +22 -14
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +144 -86
- package/dest/spartan/tx_metrics.d.ts +39 -0
- package/dest/spartan/tx_metrics.d.ts.map +1 -0
- package/dest/spartan/tx_metrics.js +95 -0
- package/dest/spartan/utils.d.ts +92 -17
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +386 -63
- package/package.json +43 -40
- package/src/bench/client_flows/benchmark.ts +8 -8
- package/src/bench/client_flows/client_flows_benchmark.ts +141 -114
- package/src/bench/client_flows/data_extractor.ts +9 -31
- package/src/bench/utils.ts +9 -37
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +46 -63
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +38 -51
- package/src/e2e_deploy_contract/deploy_test.ts +18 -36
- package/src/e2e_epochs/epochs_test.ts +41 -35
- package/src/e2e_fees/bridging_race.notest.ts +16 -11
- package/src/e2e_fees/fees_test.ts +42 -47
- package/src/e2e_l1_publisher/write_json.ts +12 -9
- package/src/e2e_multi_validator/utils.ts +5 -11
- package/src/e2e_nested_contract/nested_contract_test.ts +15 -13
- package/src/e2e_p2p/inactivity_slash_test.ts +184 -0
- package/src/e2e_p2p/p2p_network.ts +124 -82
- package/src/e2e_p2p/shared.ts +66 -58
- package/src/e2e_token_contract/token_contract_test.ts +17 -17
- package/src/fixtures/e2e_prover_test.ts +60 -97
- package/src/fixtures/fixtures.ts +1 -2
- package/src/fixtures/get_acvm_config.ts +2 -2
- package/src/fixtures/get_bb_config.ts +3 -2
- package/src/fixtures/l1_to_l2_messaging.ts +4 -2
- package/src/fixtures/setup_l1_contracts.ts +5 -4
- package/src/fixtures/setup_p2p_test.ts +79 -32
- package/src/fixtures/snapshot_manager.ts +87 -82
- package/src/fixtures/token_utils.ts +16 -24
- package/src/fixtures/utils.ts +142 -172
- package/src/fixtures/web3signer.ts +63 -0
- package/src/fixtures/with_telemetry_utils.ts +2 -2
- package/src/guides/up_quick_start.sh +3 -11
- package/src/quality_of_service/alert_checker.ts +1 -1
- package/src/shared/cross_chain_test_harness.ts +23 -31
- package/src/shared/gas_portal_test_harness.ts +14 -21
- package/src/shared/jest_setup.ts +1 -1
- package/src/shared/submit-transactions.ts +12 -8
- package/src/shared/uniswap_l1_l2.ts +77 -86
- package/src/simulators/lending_simulator.ts +9 -6
- package/src/simulators/token_simulator.ts +5 -2
- package/src/spartan/DEVELOP.md +15 -3
- package/src/spartan/setup_test_wallets.ts +171 -127
- package/src/spartan/tx_metrics.ts +130 -0
- package/src/spartan/utils.ts +463 -64
package/dest/fixtures/utils.js
CHANGED
|
@@ -1,35 +1,44 @@
|
|
|
1
1
|
import { SchnorrAccountContractArtifact } from '@aztec/accounts/schnorr';
|
|
2
|
-
import {
|
|
2
|
+
import { generateSchnorrAccounts, getInitialTestAccountsData } from '@aztec/accounts/testing';
|
|
3
3
|
import { createArchiver } from '@aztec/archiver';
|
|
4
4
|
import { AztecNodeService, getConfigEnvVars } from '@aztec/aztec-node';
|
|
5
|
-
import { BatchCall
|
|
5
|
+
import { BatchCall } from '@aztec/aztec.js/contracts';
|
|
6
6
|
import { publishContractClass, publishInstance } from '@aztec/aztec.js/deployment';
|
|
7
|
+
import { createLogger } from '@aztec/aztec.js/log';
|
|
8
|
+
import { createAztecNodeClient, waitForNode } from '@aztec/aztec.js/node';
|
|
7
9
|
import { AnvilTestWatcher, CheatCodes } from '@aztec/aztec/testing';
|
|
8
10
|
import { createBlobSinkClient } from '@aztec/blob-sink/client';
|
|
9
11
|
import { createBlobSinkServer } from '@aztec/blob-sink/server';
|
|
10
12
|
import { GENESIS_ARCHIVE_ROOT, SPONSORED_FPC_SALT } from '@aztec/constants';
|
|
11
|
-
import {
|
|
13
|
+
import { isAnvilTestChain } from '@aztec/ethereum/chain';
|
|
14
|
+
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
15
|
+
import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
|
|
16
|
+
import { NULL_KEY } from '@aztec/ethereum/constants';
|
|
17
|
+
import { RollupContract, deployMulticall3 } from '@aztec/ethereum/contracts';
|
|
18
|
+
import { deployL1Contracts } from '@aztec/ethereum/deploy-l1-contracts';
|
|
19
|
+
import { FeeAssetArtifact } from '@aztec/ethereum/l1-artifacts';
|
|
12
20
|
import { DelayedTxUtils, EthCheatCodes, EthCheatCodesWithState, createDelayedL1TxUtilsFromViemWallet, startAnvil } from '@aztec/ethereum/test';
|
|
21
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
13
22
|
import { SecretValue } from '@aztec/foundation/config';
|
|
14
|
-
import { randomBytes } from '@aztec/foundation/crypto';
|
|
23
|
+
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
24
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
15
25
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
16
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
17
26
|
import { tryRmDir } from '@aztec/foundation/fs';
|
|
18
27
|
import { withLogNameSuffix } from '@aztec/foundation/log';
|
|
19
28
|
import { retryUntil } from '@aztec/foundation/retry';
|
|
20
|
-
import {
|
|
29
|
+
import { sleep } from '@aztec/foundation/sleep';
|
|
30
|
+
import { DateProvider, TestDateProvider } from '@aztec/foundation/timer';
|
|
21
31
|
import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC';
|
|
22
32
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
23
33
|
import { MockGossipSubNetwork, getMockPubSubP2PServiceFactory } from '@aztec/p2p/test-helpers';
|
|
24
|
-
import {
|
|
34
|
+
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
25
35
|
import { createProverNode } from '@aztec/prover-node';
|
|
26
|
-
import {
|
|
27
|
-
import { MemoryCircuitRecorder, SimulatorRecorderWrapper, WASMSimulator } from '@aztec/simulator/client';
|
|
28
|
-
import { FileCircuitRecorder } from '@aztec/simulator/testing';
|
|
36
|
+
import { getPXEConfig } from '@aztec/pxe/server';
|
|
29
37
|
import { getContractClassFromArtifact, getContractInstanceFromInstantiationParams } from '@aztec/stdlib/contract';
|
|
30
38
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
31
39
|
import { getConfigEnvVars as getTelemetryConfig, initTelemetryClient } from '@aztec/telemetry-client';
|
|
32
40
|
import { BenchmarkTelemetryClient } from '@aztec/telemetry-client/bench';
|
|
41
|
+
import { TestWallet, deployFundedSchnorrAccounts } from '@aztec/test-wallet/server';
|
|
33
42
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
34
43
|
import fs from 'fs/promises';
|
|
35
44
|
import getPort from 'get-port';
|
|
@@ -44,16 +53,16 @@ import { getBBConfig } from './get_bb_config.js';
|
|
|
44
53
|
import { isMetricsLoggingRequested, setupMetricsLogger } from './logging.js';
|
|
45
54
|
export { deployAndInitializeTokenAndBridgeContracts } from '../shared/cross_chain_test_harness.js';
|
|
46
55
|
export { startAnvil };
|
|
47
|
-
const {
|
|
48
|
-
const getAztecUrl = ()=>
|
|
56
|
+
const { AZTEC_NODE_URL = '' } = process.env;
|
|
57
|
+
const getAztecUrl = ()=>AZTEC_NODE_URL;
|
|
49
58
|
let telemetry = undefined;
|
|
50
|
-
function getTelemetryClient(partialConfig = {}) {
|
|
59
|
+
async function getTelemetryClient(partialConfig = {}) {
|
|
51
60
|
if (!telemetry) {
|
|
52
61
|
const config = {
|
|
53
62
|
...getTelemetryConfig(),
|
|
54
63
|
...partialConfig
|
|
55
64
|
};
|
|
56
|
-
telemetry = config.benchmark ? new BenchmarkTelemetryClient() : initTelemetryClient(config);
|
|
65
|
+
telemetry = config.benchmark ? new BenchmarkTelemetryClient() : await initTelemetryClient(config);
|
|
57
66
|
}
|
|
58
67
|
return telemetry;
|
|
59
68
|
}
|
|
@@ -72,44 +81,44 @@ export const getPrivateKeyFromIndex = (index)=>{
|
|
|
72
81
|
export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, chain = foundry)=>{
|
|
73
82
|
const l1Data = await deployL1Contracts(l1RpcUrls, account, chain, logger, {
|
|
74
83
|
vkTreeRoot: getVKTreeRoot(),
|
|
75
|
-
|
|
84
|
+
protocolContractsHash,
|
|
76
85
|
genesisArchiveRoot: args.genesisArchiveRoot ?? new Fr(GENESIS_ARCHIVE_ROOT),
|
|
77
86
|
salt: args.salt,
|
|
78
87
|
initialValidators: args.initialValidators,
|
|
79
88
|
...getL1ContractsConfigEnvVars(),
|
|
80
89
|
realVerifier: false,
|
|
81
90
|
...args
|
|
91
|
+
}, {
|
|
92
|
+
priorityFeeBumpPercentage: 0,
|
|
93
|
+
priorityFeeRetryBumpPercentage: 0
|
|
82
94
|
});
|
|
83
95
|
return l1Data;
|
|
84
96
|
};
|
|
85
97
|
/**
|
|
86
|
-
* Sets up Private eXecution Environment (PXE).
|
|
98
|
+
* Sets up Private eXecution Environment (PXE) and returns the corresponding test wallet.
|
|
87
99
|
* @param aztecNode - An instance of Aztec Node.
|
|
88
|
-
* @param opts - Partial configuration for the PXE
|
|
100
|
+
* @param opts - Partial configuration for the PXE.
|
|
89
101
|
* @param logger - The logger to be used.
|
|
90
102
|
* @param useLogSuffix - Whether to add a randomly generated suffix to the PXE debug logs.
|
|
91
|
-
* @returns
|
|
92
|
-
*/ export async function
|
|
93
|
-
const
|
|
94
|
-
...
|
|
103
|
+
* @returns A test wallet, logger and teardown function.
|
|
104
|
+
*/ export async function setupPXEAndGetWallet(aztecNode, opts = {}, logger = getLogger(), useLogSuffix = false) {
|
|
105
|
+
const PXEConfig = {
|
|
106
|
+
...getPXEConfig(),
|
|
95
107
|
...opts
|
|
96
108
|
};
|
|
97
109
|
// For tests we only want proving enabled if specifically requested
|
|
98
|
-
|
|
110
|
+
PXEConfig.proverEnabled = !!opts.proverEnabled;
|
|
99
111
|
// If no data directory provided, create a temp directory and clean up afterwards
|
|
100
|
-
const configuredDataDirectory =
|
|
112
|
+
const configuredDataDirectory = PXEConfig.dataDirectory;
|
|
101
113
|
if (!configuredDataDirectory) {
|
|
102
|
-
|
|
114
|
+
PXEConfig.dataDirectory = path.join(tmpdir(), randomBytes(8).toString('hex'));
|
|
103
115
|
}
|
|
104
|
-
const
|
|
105
|
-
const
|
|
106
|
-
const simulatorWithRecorder = new SimulatorRecorderWrapper(simulator, recorder);
|
|
107
|
-
const pxe = await createPXEServiceWithSimulator(aztecNode, simulatorWithRecorder, pxeServiceConfig, {
|
|
116
|
+
const teardown = configuredDataDirectory ? ()=>Promise.resolve() : ()=>tryRmDir(PXEConfig.dataDirectory);
|
|
117
|
+
const wallet = await TestWallet.create(aztecNode, PXEConfig, {
|
|
108
118
|
useLogSuffix
|
|
109
119
|
});
|
|
110
|
-
const teardown = configuredDataDirectory ? ()=>Promise.resolve() : ()=>tryRmDir(pxeServiceConfig.dataDirectory);
|
|
111
120
|
return {
|
|
112
|
-
|
|
121
|
+
wallet,
|
|
113
122
|
logger,
|
|
114
123
|
teardown
|
|
115
124
|
};
|
|
@@ -127,44 +136,40 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
|
|
|
127
136
|
const aztecNodeUrl = getAztecUrl();
|
|
128
137
|
logger.verbose(`Creating Aztec Node client to remote host ${aztecNodeUrl}`);
|
|
129
138
|
const aztecNode = createAztecNodeClient(aztecNodeUrl);
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
3
|
|
135
|
-
], true));
|
|
136
|
-
await waitForPXE(pxeClient, logger);
|
|
137
|
-
logger.verbose('JSON RPC client connected to PXE');
|
|
138
|
-
logger.verbose(`Retrieving contract addresses from ${PXE_URL}`);
|
|
139
|
-
const { l1ContractAddresses, rollupVersion } = await pxeClient.getNodeInfo();
|
|
139
|
+
await waitForNode(aztecNode, logger);
|
|
140
|
+
logger.verbose('JSON RPC client connected to Aztec Node');
|
|
141
|
+
logger.verbose(`Retrieving contract addresses from ${aztecNodeUrl}`);
|
|
142
|
+
const { l1ContractAddresses, rollupVersion } = await aztecNode.getNodeInfo();
|
|
140
143
|
const l1Client = createExtendedL1Client(config.l1RpcUrls, account, foundry);
|
|
141
144
|
const deployL1ContractsValues = {
|
|
142
145
|
l1ContractAddresses,
|
|
143
146
|
l1Client,
|
|
144
147
|
rollupVersion
|
|
145
148
|
};
|
|
146
|
-
const ethCheatCodes = new EthCheatCodes(config.l1RpcUrls);
|
|
147
|
-
const
|
|
149
|
+
const ethCheatCodes = new EthCheatCodes(config.l1RpcUrls, new DateProvider());
|
|
150
|
+
const wallet = await TestWallet.create(aztecNode);
|
|
151
|
+
const cheatCodes = await CheatCodes.create(config.l1RpcUrls, aztecNode, new DateProvider());
|
|
148
152
|
const teardown = ()=>Promise.resolve();
|
|
149
|
-
logger.verbose('
|
|
150
|
-
const initialFundedAccounts = await
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
throw new Error(`Required ${numberOfAccounts} accounts. Found ${wallets.length}.`);
|
|
153
|
+
logger.verbose('Populating wallet from already registered accounts...');
|
|
154
|
+
const initialFundedAccounts = await getInitialTestAccountsData();
|
|
155
|
+
if (initialFundedAccounts.length < numberOfAccounts) {
|
|
156
|
+
throw new Error(`Required ${numberOfAccounts} accounts. Found ${initialFundedAccounts.length}.`);
|
|
154
157
|
// Deploy new accounts if there's a test that requires more funded accounts in the remote environment.
|
|
155
158
|
}
|
|
159
|
+
const testAccounts = await Promise.all(initialFundedAccounts.slice(0, numberOfAccounts).map(async (account)=>{
|
|
160
|
+
const accountManager = await wallet.createSchnorrAccount(account.secret, account.salt, account.signingKey);
|
|
161
|
+
return accountManager.address;
|
|
162
|
+
}));
|
|
156
163
|
return {
|
|
157
164
|
aztecNode,
|
|
158
165
|
aztecNodeAdmin: undefined,
|
|
159
166
|
sequencer: undefined,
|
|
160
167
|
proverNode: undefined,
|
|
161
|
-
pxe: pxeClient,
|
|
162
168
|
deployL1ContractsValues,
|
|
163
169
|
config,
|
|
164
170
|
initialFundedAccounts,
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
accounts: wallets.slice(0, numberOfAccounts).map((w)=>w.getAddress()),
|
|
171
|
+
wallet,
|
|
172
|
+
accounts: testAccounts,
|
|
168
173
|
logger,
|
|
169
174
|
cheatCodes,
|
|
170
175
|
ethCheatCodes,
|
|
@@ -182,9 +187,7 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
|
|
|
182
187
|
* @param numberOfAccounts - The number of new accounts to be created once the PXE is initiated.
|
|
183
188
|
* @param opts - Options to pass to the node initialization and to the setup script.
|
|
184
189
|
* @param pxeOpts - Options to pass to the PXE initialization.
|
|
185
|
-
*/ export async function setup(numberOfAccounts = 1, opts = {
|
|
186
|
-
customForwarderContractAddress: EthAddress.ZERO
|
|
187
|
-
}, pxeOpts = {}, chain = foundry) {
|
|
190
|
+
*/ export async function setup(numberOfAccounts = 1, opts = {}, pxeOpts = {}, chain = foundry) {
|
|
188
191
|
let anvil;
|
|
189
192
|
try {
|
|
190
193
|
opts.aztecTargetCommitteeSize ??= 0;
|
|
@@ -213,8 +216,8 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
|
|
|
213
216
|
if (!isAnvilTestChain(chain.id)) {
|
|
214
217
|
throw new Error(`No ETHEREUM_HOSTS set but non anvil chain requested`);
|
|
215
218
|
}
|
|
216
|
-
if (
|
|
217
|
-
throw new Error(`
|
|
219
|
+
if (AZTEC_NODE_URL) {
|
|
220
|
+
throw new Error(`AZTEC_NODE_URL provided but no ETHEREUM_HOSTS set. Refusing to run, please set both variables so tests can deploy L1 contracts to the same Anvil instance`);
|
|
218
221
|
}
|
|
219
222
|
const res = await startAnvil({
|
|
220
223
|
l1BlockTime: opts.ethereumSlotDuration,
|
|
@@ -232,7 +235,8 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
|
|
|
232
235
|
logger.info(`Logging metrics to ${filename}`);
|
|
233
236
|
setupMetricsLogger(filename);
|
|
234
237
|
}
|
|
235
|
-
const
|
|
238
|
+
const dateProvider = new TestDateProvider();
|
|
239
|
+
const ethCheatCodes = new EthCheatCodesWithState(config.l1RpcUrls, dateProvider);
|
|
236
240
|
if (opts.stateLoad) {
|
|
237
241
|
await ethCheatCodes.loadChainState(opts.stateLoad);
|
|
238
242
|
}
|
|
@@ -259,8 +263,10 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
|
|
|
259
263
|
new SecretValue(`0x${publisherPrivKey.toString('hex')}`)
|
|
260
264
|
];
|
|
261
265
|
}
|
|
262
|
-
config.coinbase
|
|
263
|
-
|
|
266
|
+
if (config.coinbase === undefined) {
|
|
267
|
+
config.coinbase = EthAddress.fromString(publisherHdAccount.address);
|
|
268
|
+
}
|
|
269
|
+
if (AZTEC_NODE_URL) {
|
|
264
270
|
// we are setting up against a remote environment, l1 contracts are assumed to already be deployed
|
|
265
271
|
return await setupWithRemoteEnvironment(publisherHdAccount, config, logger, numberOfAccounts);
|
|
266
272
|
}
|
|
@@ -284,7 +290,7 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
|
|
|
284
290
|
if (opts.fundRewardDistributor) {
|
|
285
291
|
// Mints block rewards for 10000 blocks to the rewardDistributor contract
|
|
286
292
|
const rollup = new RollupContract(deployL1ContractsValues.l1Client, deployL1ContractsValues.l1ContractAddresses.rollupAddress);
|
|
287
|
-
const blockReward = await rollup.
|
|
293
|
+
const blockReward = await rollup.getCheckpointReward();
|
|
288
294
|
const mintAmount = 10_000n * blockReward;
|
|
289
295
|
const feeJuice = getContract({
|
|
290
296
|
address: deployL1ContractsValues.l1ContractAddresses.feeJuiceAddress.toString(),
|
|
@@ -303,6 +309,7 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
|
|
|
303
309
|
if (enableAutomine) {
|
|
304
310
|
await ethCheatCodes.setAutomine(false);
|
|
305
311
|
await ethCheatCodes.setIntervalMining(config.ethereumSlotDuration);
|
|
312
|
+
dateProvider.setTime(await ethCheatCodes.timestamp() * 1000);
|
|
306
313
|
}
|
|
307
314
|
if (opts.l2StartTime) {
|
|
308
315
|
// This should only be used in synching test or when you need to have a stable
|
|
@@ -311,13 +318,11 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
|
|
|
311
318
|
resetBlockInterval: true
|
|
312
319
|
});
|
|
313
320
|
}
|
|
314
|
-
const
|
|
315
|
-
dateProvider.setTime(await ethCheatCodes.timestamp() * 1000);
|
|
316
|
-
const watcher = new AnvilTestWatcher(new EthCheatCodesWithState(config.l1RpcUrls), deployL1ContractsValues.l1ContractAddresses.rollupAddress, deployL1ContractsValues.l1Client, dateProvider);
|
|
321
|
+
const watcher = new AnvilTestWatcher(new EthCheatCodesWithState(config.l1RpcUrls, dateProvider), deployL1ContractsValues.l1ContractAddresses.rollupAddress, deployL1ContractsValues.l1Client, dateProvider);
|
|
317
322
|
if (!opts.disableAnvilTestWatcher) {
|
|
318
323
|
await watcher.start();
|
|
319
324
|
}
|
|
320
|
-
const telemetry = getTelemetryClient(opts.telemetryConfig);
|
|
325
|
+
const telemetry = await getTelemetryClient(opts.telemetryConfig);
|
|
321
326
|
// Blob sink service - blobs get posted here and served from here
|
|
322
327
|
const blobSinkPort = await getPort();
|
|
323
328
|
const blobSink = await createBlobSinkServer({
|
|
@@ -326,11 +331,11 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
|
|
|
326
331
|
l1Contracts: config.l1Contracts,
|
|
327
332
|
port: blobSinkPort,
|
|
328
333
|
dataDirectory: config.dataDirectory,
|
|
329
|
-
|
|
334
|
+
dataStoreMapSizeKb: config.dataStoreMapSizeKb
|
|
330
335
|
}, telemetry);
|
|
331
336
|
await blobSink.start();
|
|
332
337
|
config.blobSinkUrl = `http://localhost:${blobSinkPort}`;
|
|
333
|
-
logger.verbose('Creating and synching an aztec node
|
|
338
|
+
logger.verbose('Creating and synching an aztec node', config);
|
|
334
339
|
const acvmConfig = await getACVMConfig(logger);
|
|
335
340
|
if (acvmConfig) {
|
|
336
341
|
config.acvmWorkingDirectory = acvmConfig.acvmWorkingDirectory;
|
|
@@ -341,7 +346,6 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
|
|
|
341
346
|
config.bbBinaryPath = bbConfig.bbBinaryPath;
|
|
342
347
|
config.bbWorkingDirectory = bbConfig.bbWorkingDirectory;
|
|
343
348
|
}
|
|
344
|
-
config.l1PublishRetryIntervalMS = 100;
|
|
345
349
|
const blobSinkClient = createBlobSinkClient(config, {
|
|
346
350
|
logger: createLogger('node:blob-sink:client')
|
|
347
351
|
});
|
|
@@ -407,33 +411,31 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
|
|
|
407
411
|
proverNode = await createAndSyncProverNode(proverNodePrivateKeyHex, config, proverNodeConfig, aztecNode, prefilledPublicData);
|
|
408
412
|
}
|
|
409
413
|
logger.verbose('Creating a pxe...');
|
|
410
|
-
const {
|
|
411
|
-
const cheatCodes = await CheatCodes.create(config.l1RpcUrls,
|
|
414
|
+
const { wallet, teardown: pxeTeardown } = await setupPXEAndGetWallet(aztecNode, pxeOpts, logger);
|
|
415
|
+
const cheatCodes = await CheatCodes.create(config.l1RpcUrls, aztecNode, dateProvider);
|
|
412
416
|
if (opts.aztecTargetCommitteeSize && opts.aztecTargetCommitteeSize > 0 || opts.initialValidators && opts.initialValidators.length > 0) {
|
|
413
|
-
// We need to advance
|
|
414
|
-
|
|
415
|
-
await cheatCodes.rollup.advanceToEpoch(2n, {
|
|
416
|
-
updateDateProvider: dateProvider
|
|
417
|
-
});
|
|
417
|
+
// We need to advance such that the committee is set up.
|
|
418
|
+
await cheatCodes.rollup.advanceToEpoch(EpochNumber.fromBigInt(BigInt(await cheatCodes.rollup.getEpoch()) + BigInt(config.lagInEpochsForValidatorSet + 1)));
|
|
418
419
|
await cheatCodes.rollup.setupEpoch();
|
|
419
420
|
await cheatCodes.rollup.debugRollup();
|
|
420
421
|
}
|
|
422
|
+
let accounts = [];
|
|
421
423
|
// Below we continue with what we described in the long comment on line 571.
|
|
422
|
-
let accountManagers = [];
|
|
423
424
|
if (numberOfAccounts === 0) {
|
|
424
425
|
logger.info('No accounts are being deployed, waiting for an empty block 1 to be mined');
|
|
425
|
-
while(await
|
|
426
|
+
while(await aztecNode.getBlockNumber() === 0){
|
|
426
427
|
await sleep(2000);
|
|
427
428
|
}
|
|
428
429
|
} else {
|
|
429
430
|
logger.info(`${numberOfAccounts} accounts are being deployed. Reliably progressing past genesis by setting minTxsPerBlock to 1 and waiting for the accounts to be deployed`);
|
|
430
|
-
|
|
431
|
+
const accountsData = initialFundedAccounts.slice(0, numberOfAccounts);
|
|
432
|
+
const accountManagers = await deployFundedSchnorrAccounts(wallet, aztecNode, accountsData);
|
|
433
|
+
accounts = accountManagers.map((accountManager)=>accountManager.address);
|
|
431
434
|
}
|
|
432
435
|
// Now we restore the original minTxsPerBlock setting.
|
|
433
436
|
sequencerClient.getSequencer().updateConfig({
|
|
434
437
|
minTxsPerBlock: originalMinTxsPerBlock
|
|
435
438
|
});
|
|
436
|
-
const wallets = await Promise.all(accountManagers.map((account)=>account.getWallet()));
|
|
437
439
|
if (initialFundedAccounts.length < numberOfAccounts) {
|
|
438
440
|
// TODO: Create (numberOfAccounts - initialFundedAccounts.length) wallets without funds.
|
|
439
441
|
throw new Error(`Unable to deploy ${numberOfAccounts} accounts. Only ${initialFundedAccounts.length} accounts were funded.`);
|
|
@@ -471,13 +473,11 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
|
|
|
471
473
|
mockGossipSubNetwork,
|
|
472
474
|
prefilledPublicData,
|
|
473
475
|
proverNode,
|
|
474
|
-
pxe,
|
|
475
476
|
sequencer: sequencerClient,
|
|
476
477
|
teardown,
|
|
477
478
|
telemetryClient: telemetry,
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
accounts: wallets.map((w)=>w.getAddress()),
|
|
479
|
+
wallet,
|
|
480
|
+
accounts,
|
|
481
481
|
watcher
|
|
482
482
|
};
|
|
483
483
|
} catch (err) {
|
|
@@ -491,45 +491,28 @@ export const setupL1Contracts = async (l1RpcUrls, account, logger, args = {}, ch
|
|
|
491
491
|
* Use this when you need to make a public call to an account contract, such as for requesting a public authwit.
|
|
492
492
|
* @param sender - Wallet to send the deployment tx.
|
|
493
493
|
* @param accountsToDeploy - Which accounts to publicly deploy.
|
|
494
|
-
*/
|
|
495
|
-
export async function ensureAccountContractsPublished(sender, accountsToDeploy) {
|
|
494
|
+
*/ export async function ensureAccountContractsPublished(wallet, accountsToDeploy) {
|
|
496
495
|
// We have to check whether the accounts are already deployed. This can happen if the test runs against
|
|
497
|
-
// the
|
|
498
|
-
const accountsAndAddresses = await Promise.all(accountsToDeploy.map(async (
|
|
499
|
-
const address = account.getAddress();
|
|
496
|
+
// the local network and the test accounts exist
|
|
497
|
+
const accountsAndAddresses = await Promise.all(accountsToDeploy.map(async (address)=>{
|
|
500
498
|
return {
|
|
501
499
|
address,
|
|
502
|
-
deployed: (await
|
|
500
|
+
deployed: (await wallet.getContractMetadata(address)).isContractPublished
|
|
503
501
|
};
|
|
504
502
|
}));
|
|
505
|
-
const instances = (await Promise.all(accountsAndAddresses.filter(({ deployed })=>!deployed).map(({ address })=>
|
|
503
|
+
const instances = (await Promise.all(accountsAndAddresses.filter(({ deployed })=>!deployed).map(({ address })=>wallet.getContractMetadata(address)))).map((contractMetadata)=>contractMetadata.contractInstance);
|
|
506
504
|
const contractClass = await getContractClassFromArtifact(SchnorrAccountContractArtifact);
|
|
507
|
-
if (!(await
|
|
508
|
-
await (await publishContractClass(
|
|
509
|
-
from: accountsToDeploy[0]
|
|
505
|
+
if (!(await wallet.getContractClassMetadata(contractClass.id, true)).isContractClassPubliclyRegistered) {
|
|
506
|
+
await (await publishContractClass(wallet, SchnorrAccountContractArtifact)).send({
|
|
507
|
+
from: accountsToDeploy[0]
|
|
510
508
|
}).wait();
|
|
511
509
|
}
|
|
512
|
-
const requests = await Promise.all(instances.map(async (instance)=>await publishInstance(
|
|
513
|
-
const batch = new BatchCall(
|
|
510
|
+
const requests = await Promise.all(instances.map(async (instance)=>await publishInstance(wallet, instance)));
|
|
511
|
+
const batch = new BatchCall(wallet, requests);
|
|
514
512
|
await batch.send({
|
|
515
|
-
from: accountsToDeploy[0]
|
|
513
|
+
from: accountsToDeploy[0]
|
|
516
514
|
}).wait();
|
|
517
515
|
}
|
|
518
|
-
// docs:end:public_deploy_accounts
|
|
519
|
-
/**
|
|
520
|
-
* Sets the timestamp of the next block.
|
|
521
|
-
* @param rpcUrl - rpc url of the blockchain instance to connect to
|
|
522
|
-
* @param timestamp - the timestamp for the next block
|
|
523
|
-
*/ export async function setNextBlockTimestamp(rpcUrl, timestamp) {
|
|
524
|
-
const params = `[${timestamp}]`;
|
|
525
|
-
await fetch(rpcUrl, {
|
|
526
|
-
body: `{"jsonrpc":"2.0", "method": "evm_setNextBlockTimestamp", "params": ${params}, "id": 1}`,
|
|
527
|
-
method: 'POST',
|
|
528
|
-
headers: {
|
|
529
|
-
'Content-Type': 'application/json'
|
|
530
|
-
}
|
|
531
|
-
});
|
|
532
|
-
}
|
|
533
516
|
/** Returns the job name for the current test. */ function getJobName() {
|
|
534
517
|
return process.env.JOB_NAME ?? expect.getState().currentTestName?.split(' ')[0].replaceAll('/', '_') ?? 'unknown';
|
|
535
518
|
}
|
|
@@ -568,7 +551,7 @@ export async function expectMappingDelta(initialValues, fn, inputs, expectedDiff
|
|
|
568
551
|
expect(diffs).toEqual(expectedDiffs);
|
|
569
552
|
}
|
|
570
553
|
/**
|
|
571
|
-
* Computes the address of the "canonical"
|
|
554
|
+
* Computes the address of the "canonical" SponsoredFPCContract. This is not a protocol contract
|
|
572
555
|
* but by conventions its address is computed with a salt of 0.
|
|
573
556
|
* @returns The address of the sponsored FPC contract
|
|
574
557
|
*/ export function getSponsoredFPCInstance() {
|
|
@@ -577,7 +560,7 @@ export async function expectMappingDelta(initialValues, fn, inputs, expectedDiff
|
|
|
577
560
|
}));
|
|
578
561
|
}
|
|
579
562
|
/**
|
|
580
|
-
* Computes the address of the "canonical"
|
|
563
|
+
* Computes the address of the "canonical" SponsoredFPCContract. This is not a protocol contract
|
|
581
564
|
* but by conventions its address is computed with a salt of 0.
|
|
582
565
|
* @returns The address of the sponsored FPC contract
|
|
583
566
|
*/ export async function getSponsoredFPCAddress() {
|
|
@@ -586,25 +569,19 @@ export async function expectMappingDelta(initialValues, fn, inputs, expectedDiff
|
|
|
586
569
|
}
|
|
587
570
|
/**
|
|
588
571
|
* Deploy a sponsored FPC contract to a running instance.
|
|
589
|
-
*/ export async function setupSponsoredFPC(
|
|
572
|
+
*/ export async function setupSponsoredFPC(wallet) {
|
|
590
573
|
const instance = await getContractInstanceFromInstantiationParams(SponsoredFPCContract.artifact, {
|
|
591
574
|
salt: new Fr(SPONSORED_FPC_SALT)
|
|
592
575
|
});
|
|
593
|
-
await
|
|
594
|
-
instance,
|
|
595
|
-
artifact: SponsoredFPCContract.artifact
|
|
596
|
-
});
|
|
576
|
+
await wallet.registerContract(instance, SponsoredFPCContract.artifact);
|
|
597
577
|
getLogger().info(`SponsoredFPC: ${instance.address}`);
|
|
598
578
|
return instance;
|
|
599
579
|
}
|
|
600
580
|
/**
|
|
601
581
|
* Registers the SponsoredFPC in this PXE instance
|
|
602
|
-
* @param
|
|
603
|
-
*/ export async function registerSponsoredFPC(
|
|
604
|
-
await
|
|
605
|
-
instance: await getSponsoredFPCInstance(),
|
|
606
|
-
artifact: SponsoredFPCContract.artifact
|
|
607
|
-
});
|
|
582
|
+
* @param wallet - The wallet
|
|
583
|
+
*/ export async function registerSponsoredFPC(wallet) {
|
|
584
|
+
await wallet.registerContract(await getSponsoredFPCInstance(), SponsoredFPCContract.artifact);
|
|
608
585
|
}
|
|
609
586
|
export async function waitForProvenChain(node, targetBlock, timeoutSec = 60, intervalSec = 1) {
|
|
610
587
|
targetBlock ??= await node.getBlockNumber();
|
|
@@ -626,7 +603,8 @@ export function createAndSyncProverNode(proverNodePrivateKey, aztecNodeConfig, p
|
|
|
626
603
|
dataDirectory: proverNodeConfig.dataDirectory
|
|
627
604
|
};
|
|
628
605
|
const archiver = await createArchiver(archiverConfig, {
|
|
629
|
-
blobSinkClient
|
|
606
|
+
blobSinkClient,
|
|
607
|
+
dateProvider: proverNodeDeps.dateProvider
|
|
630
608
|
}, {
|
|
631
609
|
blockUntilSync: true
|
|
632
610
|
});
|
|
@@ -648,6 +626,7 @@ export function createAndSyncProverNode(proverNodePrivateKey, aztecNodeConfig, p
|
|
|
648
626
|
txGatheringTimeoutMs: 24_000,
|
|
649
627
|
proverNodeFailedEpochStore: undefined,
|
|
650
628
|
proverId: EthAddress.fromNumber(1),
|
|
629
|
+
proverNodeEpochProvingDelayMs: undefined,
|
|
651
630
|
...proverNodeConfig
|
|
652
631
|
};
|
|
653
632
|
const l1TxUtils = createDelayedL1TxUtils(aztecNodeConfig, proverNodePrivateKey, 'prover-node', proverNodeDeps.dateProvider);
|
|
@@ -662,7 +641,9 @@ export function createAndSyncProverNode(proverNodePrivateKey, aztecNodeConfig, p
|
|
|
662
641
|
getLogger().info(`Created and synced prover node`, {
|
|
663
642
|
publisherAddress: l1TxUtils.client.account.address
|
|
664
643
|
});
|
|
665
|
-
|
|
644
|
+
if (!proverNodeConfig.dontStart) {
|
|
645
|
+
await proverNode.start();
|
|
646
|
+
}
|
|
666
647
|
return proverNode;
|
|
667
648
|
});
|
|
668
649
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function createWeb3SignerKeystore(dir: string, ...privateKeys: string[]): Promise<void>;
|
|
2
|
+
export declare function refreshWeb3Signer(url: string, ...expectedAddresses: string[]): Promise<void>;
|
|
3
|
+
export declare function getWeb3SignerTestKeystoreDir(): string;
|
|
4
|
+
export declare function getWeb3SignerUrl(): string;
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViM3NpZ25lci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZpeHR1cmVzL3dlYjNzaWduZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0Esd0JBQXNCLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxXQUFXLEVBQUUsTUFBTSxFQUFFLGlCQWNuRjtBQUVELHdCQUFzQixpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLGlCQW9CbEY7QUFFRCx3QkFBZ0IsNEJBQTRCLElBQUksTUFBTSxDQU9yRDtBQUVELHdCQUFnQixnQkFBZ0IsSUFBSSxNQUFNLENBTXpDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web3signer.d.ts","sourceRoot":"","sources":["../../src/fixtures/web3signer.ts"],"names":[],"mappings":"AASA,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,MAAM,EAAE,iBAcnF;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,MAAM,EAAE,iBAoBlF;AAED,wBAAgB,4BAA4B,IAAI,MAAM,CAOrD;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAMzC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
2
|
+
import { retryUntil } from '@aztec/foundation/retry';
|
|
3
|
+
import { sleep } from '@aztec/foundation/sleep';
|
|
4
|
+
import { RemoteSigner } from '@aztec/node-keystore';
|
|
5
|
+
import { mkdirSync } from 'node:fs';
|
|
6
|
+
import { writeFile } from 'node:fs/promises';
|
|
7
|
+
import { join } from 'node:path';
|
|
8
|
+
export async function createWeb3SignerKeystore(dir, ...privateKeys) {
|
|
9
|
+
const yaml = privateKeys.map((pk)=>`\
|
|
10
|
+
type: file-raw
|
|
11
|
+
keyType: SECP256K1
|
|
12
|
+
privateKey: ${pk}`).join('\n---\n');
|
|
13
|
+
// NOTE: nodejs stdlib can only create temp directories, not temp files!
|
|
14
|
+
// this write uses wx (write-exclusive) so it'll throw if the file already exists
|
|
15
|
+
const path = join(dir, `keystore-${randomBytes(4).toString('hex')}.yaml`);
|
|
16
|
+
await writeFile(path, yaml, {
|
|
17
|
+
flag: 'wx'
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
export async function refreshWeb3Signer(url, ...expectedAddresses) {
|
|
21
|
+
await fetch(new URL('reload', url), {
|
|
22
|
+
method: 'POST'
|
|
23
|
+
});
|
|
24
|
+
if (expectedAddresses.length > 0) {
|
|
25
|
+
await retryUntil(async ()=>{
|
|
26
|
+
try {
|
|
27
|
+
await RemoteSigner.validateAccess(url, expectedAddresses);
|
|
28
|
+
return true;
|
|
29
|
+
} catch {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}, 'web3signer refresh', 10, 0.5);
|
|
33
|
+
} else {
|
|
34
|
+
await sleep(1000);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export function getWeb3SignerTestKeystoreDir() {
|
|
38
|
+
if (process.env.WEB3_SIGNER_TEST_KEYSTORE_DIR) {
|
|
39
|
+
mkdirSync(process.env.WEB3_SIGNER_TEST_KEYSTORE_DIR, {
|
|
40
|
+
recursive: true
|
|
41
|
+
});
|
|
42
|
+
return process.env.WEB3_SIGNER_TEST_KEYSTORE_DIR;
|
|
43
|
+
} else {
|
|
44
|
+
throw new Error('Web3signer not running');
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export function getWeb3SignerUrl() {
|
|
48
|
+
if (process.env.WEB3_SIGNER_URL) {
|
|
49
|
+
return process.env.WEB3_SIGNER_URL;
|
|
50
|
+
} else {
|
|
51
|
+
throw new Error('Web3signer not running');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
2
|
-
export declare function getEndToEndTestTelemetryClient(metricsPort?: number): TelemetryClient
|
|
3
|
-
//# sourceMappingURL=
|
|
2
|
+
export declare function getEndToEndTestTelemetryClient(metricsPort?: number): Promise<TelemetryClient>;
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aF90ZWxlbWV0cnlfdXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maXh0dXJlcy93aXRoX3RlbGVtZXRyeV91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsS0FBSyxlQUFlLEVBSXJCLE1BQU0seUJBQXlCLENBQUM7QUFHakMsd0JBQXNCLDhCQUE4QixDQUFDLFdBQVcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBTW5HIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"with_telemetry_utils.d.ts","sourceRoot":"","sources":["../../src/fixtures/with_telemetry_utils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,eAAe,EAIrB,MAAM,yBAAyB,CAAC;AAGjC,
|
|
1
|
+
{"version":3,"file":"with_telemetry_utils.d.ts","sourceRoot":"","sources":["../../src/fixtures/with_telemetry_utils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,eAAe,EAIrB,MAAM,yBAAyB,CAAC;AAGjC,wBAAsB,8BAA8B,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAMnG"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { levels, registerLoggingStream } from '@aztec/foundation/log';
|
|
2
2
|
import { getConfigEnvVars as getTelemetryConfig, initTelemetryClient } from '@aztec/telemetry-client';
|
|
3
3
|
import { OTelPinoStream } from '@aztec/telemetry-client/otel-pino-stream';
|
|
4
|
-
export function getEndToEndTestTelemetryClient(metricsPort) {
|
|
4
|
+
export async function getEndToEndTestTelemetryClient(metricsPort) {
|
|
5
5
|
if (metricsPort) {
|
|
6
6
|
const otelStream = new OTelPinoStream({
|
|
7
7
|
levels
|
|
8
8
|
});
|
|
9
9
|
registerLoggingStream(otelStream);
|
|
10
10
|
}
|
|
11
|
-
return initTelemetryClient(getEndToEndTestTelemetryConfig(metricsPort));
|
|
11
|
+
return await initTelemetryClient(getEndToEndTestTelemetryConfig(metricsPort));
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
14
|
* Utility functions for setting up end-to-end tests with telemetry.
|
package/dest/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './shared/index.js';
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxjQUFjLG1CQUFtQixDQUFDIn0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Logger } from '@aztec/aztec.js';
|
|
1
|
+
import type { Logger } from '@aztec/aztec.js/log';
|
|
2
2
|
export interface AlertConfig {
|
|
3
3
|
alert: string;
|
|
4
4
|
expr: string;
|
|
@@ -38,4 +38,4 @@ export declare class AlertChecker {
|
|
|
38
38
|
export declare class AlertTriggeredError extends Error {
|
|
39
39
|
name: string;
|
|
40
40
|
}
|
|
41
|
-
//# sourceMappingURL=
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnRfY2hlY2tlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1YWxpdHlfb2Zfc2VydmljZS9hbGVydF9jaGVja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBS2xELE1BQU0sV0FBVyxXQUFXO0lBQzFCLEtBQUssRUFBRSxNQUFNLENBQUM7SUFDZCxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ2IsS0FBSyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2YsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2IsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2QsR0FBRyxFQUFFLE1BQU0sQ0FBQztJQUNaLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLFdBQVcsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0NBQ3JDO0FBRUQsTUFBTSxXQUFXLGtCQUFrQjtJQUNqQyxlQUFlLEVBQUUsTUFBTSxDQUFDO0lBQ3hCLGtCQUFrQixFQUFFLE1BQU0sQ0FBQztDQUM1QjtBQVFELHFCQUFhLFlBQVk7SUFDdkIsT0FBTyxDQUFDLE1BQU0sQ0FBcUI7SUFDbkMsT0FBTyxDQUFDLE1BQU0sQ0FBUztJQUV2QixZQUFZLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBTSxFQUduRTtJQUVEOzs7T0FHRztJQUNILE9BQU8sQ0FBQyxnQkFBZ0I7WUFNVixZQUFZO1lBcUNaLFdBQVc7SUFxQnpCOzs7T0FHRztJQUNVLGFBQWEsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQVEvRDtJQUVEOzs7T0FHRztJQUNVLHlCQUF5QixDQUFDLFFBQVEsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUd0RTtDQUNGO0FBRUQscUJBQWEsbUJBQW9CLFNBQVEsS0FBSztJQUNuQyxJQUFJLFNBQXlCO0NBQ3ZDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert_checker.d.ts","sourceRoot":"","sources":["../../src/quality_of_service/alert_checker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"alert_checker.d.ts","sourceRoot":"","sources":["../../src/quality_of_service/alert_checker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAKlD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAQD,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,MAAM,CAAS;IAEvB,YAAY,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,CAAC,kBAAkB,CAAM,EAGnE;IAED;;;OAGG;IACH,OAAO,CAAC,gBAAgB;YAMV,YAAY;YAqCZ,WAAW;IAqBzB;;;OAGG;IACU,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ/D;IAED;;;OAGG;IACU,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGtE;CACF;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IACnC,IAAI,SAAyB;CACvC"}
|