@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup_p2p_test.d.ts","sourceRoot":"","sources":["../../src/fixtures/setup_p2p_test.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"setup_p2p_test.d.ts","sourceRoot":"","sources":["../../src/fixtures/setup_p2p_test.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAK3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAoB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AASrD,eAAO,MAAM,iCAAiC,IAAI,CAAC;AAEnD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,EAAE,CAO7F;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,eAAe,GAAG;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,EAC1D,YAAY,EAAE,YAAY,EAC1B,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,EAC1C,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,EACpB,WAAW,SAAI,EACf,iBAAiB,SAAI,GACpB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAyC7B;AAED,4EAA4E;AAC5E,wBAAsB,UAAU,CAC9B,MAAM,EAAE,eAAe,GAAG;IAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,EAC1D,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,EAC/B,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,EAC1C,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,6BAY5C;AAED,+EAA+E;AAC/E,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,eAAe,EAC3B,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,EAC1C,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,6BAc5C;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,EAC/E,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,EAC1C,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,oDAwB5C;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,eAAe,EACvB,gBAAgB,CAAC,EAAE,MAAM,EACzB,IAAI,CAAC,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,MAAM,4BAgBvB;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,eAAe,EACvB,gBAAgB,CAAC,EAAE,MAAM,EACzB,IAAI,CAAC,EAAE,MAAM,EACb,YAAY,GAAE,MAAM,GAAG,MAAM,EAAM,EACnC,aAAa,CAAC,EAAE,MAAM,4BAmBvB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Test fixtures and utilities to set up and run a test using multiple validators
|
|
3
3
|
*/ import { AztecNodeService } from '@aztec/aztec-node';
|
|
4
|
+
import { range } from '@aztec/foundation/array';
|
|
4
5
|
import { SecretValue } from '@aztec/foundation/config';
|
|
5
6
|
import { addLogNameHandler, removeLogNameHandler } from '@aztec/foundation/log';
|
|
6
7
|
import { bufferToHex } from '@aztec/foundation/string';
|
|
@@ -21,7 +22,7 @@ export function generatePrivateKeys(startIndex, numberOfKeys) {
|
|
|
21
22
|
}
|
|
22
23
|
return privateKeys;
|
|
23
24
|
}
|
|
24
|
-
export async function createNodes(config, dateProvider, bootstrapNodeEnr, numNodes, bootNodePort, prefilledPublicData, dataDirectory, metricsPort, indexOffset = 0) {
|
|
25
|
+
export async function createNodes(config, dateProvider, bootstrapNodeEnr, numNodes, bootNodePort, prefilledPublicData, dataDirectory, metricsPort, indexOffset = 0, validatorsPerNode = 1) {
|
|
25
26
|
const nodePromises = [];
|
|
26
27
|
const loggerIdStorage = new AsyncLocalStorage();
|
|
27
28
|
const logNameHandler = (module)=>loggerIdStorage.getStore() ? `${module}:${loggerIdStorage.getStore()}` : module;
|
|
@@ -30,8 +31,11 @@ export async function createNodes(config, dateProvider, bootstrapNodeEnr, numNod
|
|
|
30
31
|
const index = indexOffset + i;
|
|
31
32
|
// We run on ports from the bootnode upwards
|
|
32
33
|
const port = bootNodePort + 1 + index;
|
|
34
|
+
// Determine validator indices for this node
|
|
35
|
+
const validatorIndices = validatorsPerNode === 1 ? index : range(validatorsPerNode, validatorsPerNode * index);
|
|
36
|
+
// Assign data directory
|
|
33
37
|
const dataDir = dataDirectory ? `${dataDirectory}-${index}` : undefined;
|
|
34
|
-
const nodePromise = createNode(config, dateProvider, port, bootstrapNodeEnr,
|
|
38
|
+
const nodePromise = createNode(config, dateProvider, port, bootstrapNodeEnr, validatorIndices, prefilledPublicData, dataDir, metricsPort, loggerIdStorage);
|
|
35
39
|
nodePromises.push(nodePromise);
|
|
36
40
|
}
|
|
37
41
|
const nodes = await Promise.all(nodePromises);
|
|
@@ -43,14 +47,33 @@ export async function createNodes(config, dateProvider, bootstrapNodeEnr, numNod
|
|
|
43
47
|
removeLogNameHandler(logNameHandler);
|
|
44
48
|
return nodes;
|
|
45
49
|
}
|
|
46
|
-
|
|
47
|
-
export async function createNode(config, dateProvider, tcpPort, bootstrapNode, addressIndex, prefilledPublicData, dataDirectory, metricsPort, loggerIdStorage) {
|
|
50
|
+
/** Creates a P2P enabled instance of Aztec Node Service with a validator */ export async function createNode(config, dateProvider, tcpPort, bootstrapNode, addressIndex, prefilledPublicData, dataDirectory, metricsPort, loggerIdStorage) {
|
|
48
51
|
const createNode = async ()=>{
|
|
49
52
|
const validatorConfig = await createValidatorConfig(config, bootstrapNode, tcpPort, addressIndex, dataDirectory);
|
|
50
|
-
const telemetry = getEndToEndTestTelemetryClient(metricsPort);
|
|
53
|
+
const telemetry = await getEndToEndTestTelemetryClient(metricsPort);
|
|
51
54
|
return await AztecNodeService.createAndSync(validatorConfig, {
|
|
52
55
|
telemetry,
|
|
53
56
|
dateProvider
|
|
57
|
+
}, {
|
|
58
|
+
prefilledPublicData,
|
|
59
|
+
dontStartSequencer: config.dontStartSequencer
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
return loggerIdStorage ? await loggerIdStorage.run(tcpPort.toString(), createNode) : createNode();
|
|
63
|
+
}
|
|
64
|
+
/** Creates a P2P enabled instance of Aztec Node Service without a validator */ export async function createNonValidatorNode(baseConfig, dateProvider, tcpPort, bootstrapNode, prefilledPublicData, dataDirectory, metricsPort, loggerIdStorage) {
|
|
65
|
+
const createNode = async ()=>{
|
|
66
|
+
const p2pConfig = await createP2PConfig(baseConfig, bootstrapNode, tcpPort, dataDirectory);
|
|
67
|
+
const config = {
|
|
68
|
+
...p2pConfig,
|
|
69
|
+
disableValidator: true,
|
|
70
|
+
validatorPrivateKeys: undefined,
|
|
71
|
+
publisherPrivateKeys: []
|
|
72
|
+
};
|
|
73
|
+
const telemetry = await getEndToEndTestTelemetryClient(metricsPort);
|
|
74
|
+
return await AztecNodeService.createAndSync(config, {
|
|
75
|
+
telemetry,
|
|
76
|
+
dateProvider
|
|
54
77
|
}, {
|
|
55
78
|
prefilledPublicData
|
|
56
79
|
});
|
|
@@ -60,17 +83,8 @@ export async function createNode(config, dateProvider, tcpPort, bootstrapNode, a
|
|
|
60
83
|
export async function createProverNode(config, tcpPort, bootstrapNode, addressIndex, proverNodeDeps, prefilledPublicData, dataDirectory, metricsPort, loggerIdStorage) {
|
|
61
84
|
const createProverNode = async ()=>{
|
|
62
85
|
const proverNodePrivateKey = getPrivateKeyFromIndex(ATTESTER_PRIVATE_KEYS_START_INDEX + addressIndex);
|
|
63
|
-
const telemetry = getEndToEndTestTelemetryClient(metricsPort);
|
|
64
|
-
const proverConfig =
|
|
65
|
-
p2pIp: `127.0.0.1`,
|
|
66
|
-
p2pPort: tcpPort ?? await getPort(),
|
|
67
|
-
p2pEnabled: true,
|
|
68
|
-
peerCheckIntervalMS: TEST_PEER_CHECK_INTERVAL_MS,
|
|
69
|
-
blockCheckIntervalMS: 1000,
|
|
70
|
-
bootstrapNodes: bootstrapNode ? [
|
|
71
|
-
bootstrapNode
|
|
72
|
-
] : []
|
|
73
|
-
};
|
|
86
|
+
const telemetry = await getEndToEndTestTelemetryClient(metricsPort);
|
|
87
|
+
const proverConfig = await createP2PConfig(config, bootstrapNode, tcpPort, dataDirectory);
|
|
74
88
|
const aztecNodeRpcTxProvider = undefined;
|
|
75
89
|
return await createAndSyncProverNode(bufferToHex(proverNodePrivateKey), config, {
|
|
76
90
|
...proverConfig,
|
|
@@ -82,15 +96,8 @@ export async function createProverNode(config, tcpPort, bootstrapNode, addressIn
|
|
|
82
96
|
};
|
|
83
97
|
return loggerIdStorage ? await loggerIdStorage.run(tcpPort.toString(), createProverNode) : createProverNode();
|
|
84
98
|
}
|
|
85
|
-
export async function
|
|
99
|
+
export async function createP2PConfig(config, bootstrapNodeEnr, port, dataDirectory) {
|
|
86
100
|
port = port ?? await getPort();
|
|
87
|
-
const attesterPrivateKey = bufferToHex(getPrivateKeyFromIndex(ATTESTER_PRIVATE_KEYS_START_INDEX + addressIndex));
|
|
88
|
-
config.validatorPrivateKeys = new SecretValue([
|
|
89
|
-
attesterPrivateKey
|
|
90
|
-
]);
|
|
91
|
-
config.publisherPrivateKeys = [
|
|
92
|
-
new SecretValue(attesterPrivateKey)
|
|
93
|
-
];
|
|
94
101
|
const nodeConfig = {
|
|
95
102
|
...config,
|
|
96
103
|
p2pIp: `127.0.0.1`,
|
|
@@ -105,3 +112,22 @@ export async function createValidatorConfig(config, bootstrapNodeEnr, port, addr
|
|
|
105
112
|
};
|
|
106
113
|
return nodeConfig;
|
|
107
114
|
}
|
|
115
|
+
export async function createValidatorConfig(config, bootstrapNodeEnr, port, addressIndex = 1, dataDirectory) {
|
|
116
|
+
const addressIndices = Array.isArray(addressIndex) ? addressIndex : [
|
|
117
|
+
addressIndex
|
|
118
|
+
];
|
|
119
|
+
if (addressIndices.length === 0) {
|
|
120
|
+
throw new Error('At least one address index must be provided to create a validator config');
|
|
121
|
+
}
|
|
122
|
+
const attesterPrivateKeys = addressIndices.map((index)=>bufferToHex(getPrivateKeyFromIndex(ATTESTER_PRIVATE_KEYS_START_INDEX + index)));
|
|
123
|
+
const p2pConfig = await createP2PConfig(config, bootstrapNodeEnr, port, dataDirectory);
|
|
124
|
+
const nodeConfig = {
|
|
125
|
+
...config,
|
|
126
|
+
...p2pConfig,
|
|
127
|
+
validatorPrivateKeys: new SecretValue(attesterPrivateKeys),
|
|
128
|
+
publisherPrivateKeys: [
|
|
129
|
+
new SecretValue(attesterPrivateKeys[0])
|
|
130
|
+
]
|
|
131
|
+
};
|
|
132
|
+
return nodeConfig;
|
|
133
|
+
}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { type InitialAccountData } from '@aztec/accounts/testing';
|
|
2
2
|
import { type AztecNodeConfig, AztecNodeService } from '@aztec/aztec-node';
|
|
3
|
-
import {
|
|
3
|
+
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
4
|
+
import type { Logger } from '@aztec/aztec.js/log';
|
|
5
|
+
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
6
|
+
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
4
7
|
import { AnvilTestWatcher, CheatCodes } from '@aztec/aztec/testing';
|
|
5
8
|
import { type BlobSinkServer } from '@aztec/blob-sink/server';
|
|
6
|
-
import {
|
|
9
|
+
import type { DeployL1ContractsArgs, DeployL1ContractsReturnType } from '@aztec/ethereum/deploy-l1-contracts';
|
|
7
10
|
import { TestDateProvider } from '@aztec/foundation/timer';
|
|
8
11
|
import type { ProverNode } from '@aztec/prover-node';
|
|
9
|
-
import { type PXEService } from '@aztec/pxe/server';
|
|
10
12
|
import type { SequencerClient } from '@aztec/sequencer-client';
|
|
13
|
+
import { TestWallet } from '@aztec/test-wallet/server';
|
|
11
14
|
import type { Anvil } from '@viem/anvil';
|
|
12
15
|
import { type SetupOptions } from './utils.js';
|
|
13
16
|
export type SubsystemsContext = {
|
|
@@ -16,7 +19,7 @@ export type SubsystemsContext = {
|
|
|
16
19
|
bbConfig: any;
|
|
17
20
|
aztecNode: AztecNodeService;
|
|
18
21
|
aztecNodeConfig: AztecNodeConfig;
|
|
19
|
-
|
|
22
|
+
wallet: TestWallet;
|
|
20
23
|
deployL1ContractsValues: DeployL1ContractsReturnType;
|
|
21
24
|
proverNode?: ProverNode;
|
|
22
25
|
watcher: AnvilTestWatcher;
|
|
@@ -27,7 +30,7 @@ export type SubsystemsContext = {
|
|
|
27
30
|
initialFundedAccounts: InitialAccountData[];
|
|
28
31
|
directoryToCleanup?: string;
|
|
29
32
|
};
|
|
30
|
-
export declare function createSnapshotManager(testName: string, dataPath?: string, config?: Partial<SetupOptions>, deployL1ContractsArgs?: Partial<DeployL1ContractsArgs>):
|
|
33
|
+
export declare function createSnapshotManager(testName: string, dataPath?: string, config?: Partial<SetupOptions>, deployL1ContractsArgs?: Partial<DeployL1ContractsArgs>): MockSnapshotManager | SnapshotManager;
|
|
31
34
|
export interface ISnapshotManager {
|
|
32
35
|
snapshot<T>(name: string, apply: (context: SubsystemsContext) => Promise<T>, restore?: (snapshotData: T, context: SubsystemsContext) => Promise<void>): Promise<void>;
|
|
33
36
|
setup(): Promise<SubsystemsContext>;
|
|
@@ -73,8 +76,8 @@ declare class SnapshotManager implements ISnapshotManager {
|
|
|
73
76
|
* Snapshot 'apply' helper function to add accounts.
|
|
74
77
|
* The 'restore' function is not provided, as it must be a closure within the test context to capture the results.
|
|
75
78
|
*/
|
|
76
|
-
export declare const deployAccounts: (numberOfAccounts: number, logger: Logger
|
|
77
|
-
|
|
79
|
+
export declare const deployAccounts: (numberOfAccounts: number, logger: Logger) => ({ wallet, initialFundedAccounts }: {
|
|
80
|
+
wallet: TestWallet;
|
|
78
81
|
initialFundedAccounts: InitialAccountData[];
|
|
79
82
|
}) => Promise<{
|
|
80
83
|
deployedAccounts: InitialAccountData[];
|
|
@@ -85,8 +88,8 @@ export declare const deployAccounts: (numberOfAccounts: number, logger: Logger,
|
|
|
85
88
|
* @param sender - Wallet to send the deployment tx.
|
|
86
89
|
* @param accountsToDeploy - Which accounts to publicly deploy.
|
|
87
90
|
* @param waitUntilProven - Whether to wait for the tx to be proven.
|
|
88
|
-
* @param
|
|
91
|
+
* @param node - AztecNode used to wait for proven tx.
|
|
89
92
|
*/
|
|
90
|
-
export declare function publicDeployAccounts(
|
|
93
|
+
export declare function publicDeployAccounts(wallet: Wallet, accountsToDeploy: AztecAddress[], waitUntilProven?: boolean, node?: AztecNode): Promise<void>;
|
|
91
94
|
export {};
|
|
92
|
-
//# sourceMappingURL=
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcHNob3RfbWFuYWdlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZpeHR1cmVzL3NuYXBzaG90X21hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssa0JBQWtCLEVBQTJCLE1BQU0seUJBQXlCLENBQUM7QUFDM0YsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFFLGdCQUFnQixFQUFvQixNQUFNLG1CQUFtQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxZQUFZLEVBQWMsTUFBTSwyQkFBMkIsQ0FBQztBQUlyRSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEUsT0FBTyxFQUFFLEtBQUssY0FBYyxFQUF3QixNQUFNLHlCQUF5QixDQUFDO0FBSXBGLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLDJCQUEyQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFROUcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFckQsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3ZELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQWV6QyxPQUFPLEVBQ0wsS0FBSyxZQUFZLEVBS2xCLE1BQU0sWUFBWSxDQUFDO0FBR3BCLE1BQU0sTUFBTSxpQkFBaUIs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot_manager.d.ts","sourceRoot":"","sources":["../../src/fixtures/snapshot_manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,kBAAkB,
|
|
1
|
+
{"version":3,"file":"snapshot_manager.d.ts","sourceRoot":"","sources":["../../src/fixtures/snapshot_manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,kBAAkB,EAA2B,MAAM,yBAAyB,CAAC;AAC3F,OAAO,EAAE,KAAK,eAAe,EAAE,gBAAgB,EAAoB,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAc,MAAM,2BAA2B,CAAC;AAIrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,KAAK,cAAc,EAAwB,MAAM,yBAAyB,CAAC;AAIpF,OAAO,KAAK,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAQ9G,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAGvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAezC,OAAO,EACL,KAAK,YAAY,EAKlB,MAAM,YAAY,CAAC;AAGpB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,GAAG,CAAC;IAChB,QAAQ,EAAE,GAAG,CAAC;IACd,SAAS,EAAE,gBAAgB,CAAC;IAC5B,eAAe,EAAE,eAAe,CAAC;IACjC,MAAM,EAAE,UAAU,CAAC;IACnB,uBAAuB,EAAE,2BAA2B,CAAC;IACrD,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,eAAe,CAAC;IAC3B,YAAY,EAAE,gBAAgB,CAAC;IAC/B,QAAQ,EAAE,cAAc,CAAC;IACzB,qBAAqB,EAAE,kBAAkB,EAAE,CAAC;IAC5C,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AASF,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM,EAClC,qBAAqB,GAAE,OAAO,CAAC,qBAAqB,CAEnD,yCAKF;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,CAAC,EACR,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,EACjD,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,GACvE,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,KAAK,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEpC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,qIAAqI;AACrI,cAAM,mBAAoB,YAAW,gBAAgB;IAMjD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,qBAAqB;IAN/B,OAAO,CAAC,OAAO,CAAC,CAAoB;IACpC,OAAO,CAAC,MAAM,CAAS;IAEvB,YACE,QAAQ,EAAE,MAAM,EACR,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM,EACrC,qBAAqB,GAAE,OAAO,CAAC,qBAAqB,CAAM,EAInE;IAEY,QAAQ,CAAC,CAAC,EACrB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,EACjD,OAAO,GAAE,CAAC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAA2B,iBAUlG;IAEY,KAAK,+BAKjB;IAEY,QAAQ,kBAGpB;CACF;AAED;;;GAGG;AACH,cAAM,eAAgB,YAAW,gBAAgB;IAQ7C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,qBAAqB;IAT/B,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,OAAO,CAAC,CAAoB;IACpC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;IAEvB,YACE,QAAQ,EAAE,MAAM,EACR,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM,EAClC,qBAAqB,GAAE,OAAO,CAAC,qBAAqB,CAAM,EAInE;IAEY,QAAQ,CAAC,CAAC,EACrB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,EACjD,OAAO,GAAE,CAAC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAA2B,iBA0ClG;IAED;;;;OAIG;IACU,KAAK,+BAwBjB;IAED;;OAEG;IACU,QAAQ,kBAIpB;CACF;AAmVD;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;EA0BxB,CAAC;AAEJ;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,YAAY,EAAE,EAChC,eAAe,UAAQ,EACvB,IAAI,CAAC,EAAE,SAAS,iBAwBjB"}
|
|
@@ -1,22 +1,27 @@
|
|
|
1
1
|
import { SchnorrAccountContractArtifact } from '@aztec/accounts/schnorr';
|
|
2
|
-
import {
|
|
2
|
+
import { generateSchnorrAccounts } from '@aztec/accounts/testing';
|
|
3
3
|
import { AztecNodeService, getConfigEnvVars } from '@aztec/aztec-node';
|
|
4
|
-
import {
|
|
4
|
+
import { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
|
|
5
|
+
import { getContractClassFromArtifact } from '@aztec/aztec.js/contracts';
|
|
6
|
+
import { BatchCall, waitForProven } from '@aztec/aztec.js/contracts';
|
|
5
7
|
import { publishContractClass, publishInstance } from '@aztec/aztec.js/deployment';
|
|
6
8
|
import { AnvilTestWatcher, CheatCodes } from '@aztec/aztec/testing';
|
|
7
9
|
import { createBlobSinkServer } from '@aztec/blob-sink/server';
|
|
8
|
-
import { createExtendedL1Client
|
|
10
|
+
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
11
|
+
import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
|
|
12
|
+
import { deployMulticall3 } from '@aztec/ethereum/contracts';
|
|
9
13
|
import { EthCheatCodesWithState, startAnvil } from '@aztec/ethereum/test';
|
|
10
14
|
import { asyncMap } from '@aztec/foundation/async-map';
|
|
11
15
|
import { SecretValue } from '@aztec/foundation/config';
|
|
12
|
-
import { randomBytes } from '@aztec/foundation/crypto';
|
|
16
|
+
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
13
17
|
import { tryRmDir } from '@aztec/foundation/fs';
|
|
14
18
|
import { createLogger } from '@aztec/foundation/log';
|
|
15
19
|
import { resolver, reviver } from '@aztec/foundation/serialize';
|
|
16
20
|
import { TestDateProvider } from '@aztec/foundation/timer';
|
|
17
|
-
import {
|
|
21
|
+
import { getPXEConfig } from '@aztec/pxe/server';
|
|
18
22
|
import { tryStop } from '@aztec/stdlib/interfaces/server';
|
|
19
23
|
import { getConfigEnvVars as getTelemetryConfig, initTelemetryClient } from '@aztec/telemetry-client';
|
|
24
|
+
import { TestWallet } from '@aztec/test-wallet/server';
|
|
20
25
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
21
26
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
22
27
|
import { copySync, removeSync } from 'fs-extra/esm';
|
|
@@ -118,7 +123,7 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
|
|
|
118
123
|
// Execute the restoration function.
|
|
119
124
|
await restore(snapshotData, context);
|
|
120
125
|
// Save the snapshot data.
|
|
121
|
-
const ethCheatCodes = new EthCheatCodesWithState(context.aztecNodeConfig.l1RpcUrls);
|
|
126
|
+
const ethCheatCodes = new EthCheatCodesWithState(context.aztecNodeConfig.l1RpcUrls, context.dateProvider);
|
|
122
127
|
const anvilStateFile = `${this.livePath}/anvil.dat`;
|
|
123
128
|
await ethCheatCodes.dumpChainState(anvilStateFile);
|
|
124
129
|
writeFileSync(`${this.livePath}/${name}.json`, JSON.stringify(snapshotData || {}, resolver));
|
|
@@ -234,17 +239,6 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
|
|
|
234
239
|
aztecNodeConfig.dataDirectory = statePath;
|
|
235
240
|
}
|
|
236
241
|
aztecNodeConfig.blobSinkUrl = `http://127.0.0.1:${blobSinkPort}`;
|
|
237
|
-
// Start anvil. We go via a wrapper script to ensure if the parent dies, anvil dies.
|
|
238
|
-
logger.verbose('Starting anvil...');
|
|
239
|
-
const res = await startAnvil({
|
|
240
|
-
l1BlockTime: opts.ethereumSlotDuration
|
|
241
|
-
});
|
|
242
|
-
const anvil = res.anvil;
|
|
243
|
-
aztecNodeConfig.l1RpcUrls = [
|
|
244
|
-
res.rpcUrl
|
|
245
|
-
];
|
|
246
|
-
// Deploy our L1 contracts.
|
|
247
|
-
logger.verbose('Deploying L1 contracts...');
|
|
248
242
|
const hdAccount = mnemonicToAccount(MNEMONIC, {
|
|
249
243
|
addressIndex: 0
|
|
250
244
|
});
|
|
@@ -262,7 +256,20 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
|
|
|
262
256
|
`0x${validatorPrivKey.toString('hex')}`
|
|
263
257
|
]);
|
|
264
258
|
aztecNodeConfig.coinbase = opts.coinbase ?? EthAddress.fromString(`${hdAccount.address}`);
|
|
265
|
-
|
|
259
|
+
logger.info(`Setting up environment with config`, aztecNodeConfig);
|
|
260
|
+
// Start anvil. We go via a wrapper script to ensure if the parent dies, anvil dies.
|
|
261
|
+
logger.verbose('Starting anvil...');
|
|
262
|
+
const res = await startAnvil({
|
|
263
|
+
l1BlockTime: opts.ethereumSlotDuration
|
|
264
|
+
});
|
|
265
|
+
const anvil = res.anvil;
|
|
266
|
+
aztecNodeConfig.l1RpcUrls = [
|
|
267
|
+
res.rpcUrl
|
|
268
|
+
];
|
|
269
|
+
const dateProvider = new TestDateProvider();
|
|
270
|
+
const ethCheatCodes = new EthCheatCodesWithState(aztecNodeConfig.l1RpcUrls, dateProvider);
|
|
271
|
+
// Deploy our L1 contracts.
|
|
272
|
+
logger.verbose('Deploying L1 contracts...');
|
|
266
273
|
if (opts.l1StartTime) {
|
|
267
274
|
await ethCheatCodes.warp(opts.l1StartTime, {
|
|
268
275
|
resetBlockInterval: true
|
|
@@ -282,9 +289,7 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
|
|
|
282
289
|
});
|
|
283
290
|
aztecNodeConfig.l1Contracts = deployL1ContractsValues.l1ContractAddresses;
|
|
284
291
|
aztecNodeConfig.rollupVersion = deployL1ContractsValues.rollupVersion;
|
|
285
|
-
aztecNodeConfig.
|
|
286
|
-
const dateProvider = new TestDateProvider();
|
|
287
|
-
const watcher = new AnvilTestWatcher(new EthCheatCodesWithState(aztecNodeConfig.l1RpcUrls), deployL1ContractsValues.l1ContractAddresses.rollupAddress, deployL1ContractsValues.l1Client, dateProvider);
|
|
292
|
+
const watcher = new AnvilTestWatcher(new EthCheatCodesWithState(aztecNodeConfig.l1RpcUrls, dateProvider), deployL1ContractsValues.l1ContractAddresses.rollupAddress, deployL1ContractsValues.l1Client, dateProvider);
|
|
288
293
|
await watcher.start();
|
|
289
294
|
const acvmConfig = await getACVMConfig(logger);
|
|
290
295
|
if (acvmConfig) {
|
|
@@ -296,7 +301,7 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
|
|
|
296
301
|
aztecNodeConfig.bbBinaryPath = bbConfig.bbBinaryPath;
|
|
297
302
|
aztecNodeConfig.bbWorkingDirectory = bbConfig.bbWorkingDirectory;
|
|
298
303
|
}
|
|
299
|
-
const telemetry = getEndToEndTestTelemetryClient(opts.metricsPort);
|
|
304
|
+
const telemetry = await getEndToEndTestTelemetryClient(opts.metricsPort);
|
|
300
305
|
// Setup blob sink service
|
|
301
306
|
const blobSink = await createBlobSinkServer({
|
|
302
307
|
l1ChainId: aztecNodeConfig.l1ChainId,
|
|
@@ -304,7 +309,7 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
|
|
|
304
309
|
l1Contracts: aztecNodeConfig.l1Contracts,
|
|
305
310
|
port: blobSinkPort,
|
|
306
311
|
dataDirectory: aztecNodeConfig.dataDirectory,
|
|
307
|
-
|
|
312
|
+
dataStoreMapSizeKb: aztecNodeConfig.dataStoreMapSizeKb
|
|
308
313
|
}, telemetry);
|
|
309
314
|
await blobSink.start();
|
|
310
315
|
logger.info('Creating and synching an aztec node...');
|
|
@@ -318,17 +323,18 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
|
|
|
318
323
|
if (opts.startProverNode) {
|
|
319
324
|
logger.verbose('Creating and syncing a simulated prover node with p2p disabled...');
|
|
320
325
|
proverNode = await createAndSyncProverNode(`0x${proverNodePrivateKey.toString('hex')}`, aztecNodeConfig, {
|
|
326
|
+
...aztecNodeConfig.proverNodeConfig,
|
|
321
327
|
dataDirectory: path.join(directoryToCleanup, randomBytes(8).toString('hex')),
|
|
322
328
|
p2pEnabled: false
|
|
323
329
|
}, aztecNode, prefilledPublicData);
|
|
324
330
|
}
|
|
325
331
|
logger.verbose('Creating pxe...');
|
|
326
|
-
const pxeConfig =
|
|
332
|
+
const pxeConfig = getPXEConfig();
|
|
327
333
|
pxeConfig.dataDirectory = statePath ?? path.join(directoryToCleanup, randomBytes(8).toString('hex'));
|
|
328
334
|
// Only enable proving if specifically requested.
|
|
329
335
|
pxeConfig.proverEnabled = !!opts.realProofs;
|
|
330
|
-
const
|
|
331
|
-
const cheatCodes = await CheatCodes.create(aztecNodeConfig.l1RpcUrls,
|
|
336
|
+
const wallet = await TestWallet.create(aztecNode, pxeConfig);
|
|
337
|
+
const cheatCodes = await CheatCodes.create(aztecNodeConfig.l1RpcUrls, aztecNode, dateProvider);
|
|
332
338
|
if (statePath) {
|
|
333
339
|
writeFileSync(`${statePath}/aztec_node_config.json`, JSON.stringify(aztecNodeConfig, resolver));
|
|
334
340
|
writeFileSync(`${statePath}/accounts.json`, JSON.stringify(initialFundedAccounts, resolver));
|
|
@@ -337,7 +343,7 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
|
|
|
337
343
|
aztecNodeConfig,
|
|
338
344
|
anvil,
|
|
339
345
|
aztecNode,
|
|
340
|
-
|
|
346
|
+
wallet,
|
|
341
347
|
sequencer: aztecNode.getSequencer(),
|
|
342
348
|
acvmConfig,
|
|
343
349
|
bbConfig,
|
|
@@ -375,7 +381,8 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
|
|
|
375
381
|
];
|
|
376
382
|
// Load anvil state.
|
|
377
383
|
const anvilStateFile = `${statePath}/anvil.dat`;
|
|
378
|
-
const
|
|
384
|
+
const dateProvider = new TestDateProvider();
|
|
385
|
+
const ethCheatCodes = new EthCheatCodesWithState(aztecNodeConfig.l1RpcUrls, dateProvider);
|
|
379
386
|
await ethCheatCodes.loadChainState(anvilStateFile);
|
|
380
387
|
// TODO: Encapsulate this in a NativeAcvm impl.
|
|
381
388
|
const acvmConfig = await getACVMConfig(logger);
|
|
@@ -390,17 +397,16 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
|
|
|
390
397
|
}
|
|
391
398
|
logger.verbose('Creating ETH clients...');
|
|
392
399
|
const l1Client = createExtendedL1Client(aztecNodeConfig.l1RpcUrls, mnemonicToAccount(MNEMONIC));
|
|
393
|
-
const
|
|
394
|
-
const watcher = new AnvilTestWatcher(new EthCheatCodesWithState(aztecNodeConfig.l1RpcUrls), aztecNodeConfig.l1Contracts.rollupAddress, l1Client, dateProvider);
|
|
400
|
+
const watcher = new AnvilTestWatcher(ethCheatCodes, aztecNodeConfig.l1Contracts.rollupAddress, l1Client, dateProvider);
|
|
395
401
|
await watcher.start();
|
|
396
|
-
const telemetry = initTelemetryClient(getTelemetryConfig());
|
|
402
|
+
const telemetry = await initTelemetryClient(getTelemetryConfig());
|
|
397
403
|
const blobSink = await createBlobSinkServer({
|
|
398
404
|
l1ChainId: aztecNodeConfig.l1ChainId,
|
|
399
405
|
l1RpcUrls: aztecNodeConfig.l1RpcUrls,
|
|
400
406
|
l1Contracts: aztecNodeConfig.l1Contracts,
|
|
401
407
|
port: blobSinkPort,
|
|
402
408
|
dataDirectory: statePath,
|
|
403
|
-
|
|
409
|
+
dataStoreMapSizeKb: aztecNodeConfig.dataStoreMapSizeKb
|
|
404
410
|
}, telemetry);
|
|
405
411
|
await blobSink.start();
|
|
406
412
|
logger.verbose('Creating aztec node...');
|
|
@@ -416,19 +422,21 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
|
|
|
416
422
|
const proverNodePrivateKey = getPrivateKeyFromIndex(2);
|
|
417
423
|
const proverNodePrivateKeyHex = `0x${proverNodePrivateKey.toString('hex')}`;
|
|
418
424
|
proverNode = await createAndSyncProverNode(proverNodePrivateKeyHex, aztecNodeConfig, {
|
|
419
|
-
|
|
425
|
+
...aztecNodeConfig.proverNodeConfig,
|
|
426
|
+
dataDirectory: path.join(directoryToCleanup, randomBytes(8).toString('hex')),
|
|
427
|
+
p2pEnabled: false
|
|
420
428
|
}, aztecNode, prefilledPublicData);
|
|
421
429
|
}
|
|
422
430
|
logger.verbose('Creating pxe...');
|
|
423
|
-
const pxeConfig =
|
|
431
|
+
const pxeConfig = getPXEConfig();
|
|
424
432
|
pxeConfig.dataDirectory = statePath;
|
|
425
|
-
const
|
|
426
|
-
const cheatCodes = await CheatCodes.create(aztecNodeConfig.l1RpcUrls,
|
|
433
|
+
const wallet = await TestWallet.create(aztecNode, pxeConfig);
|
|
434
|
+
const cheatCodes = await CheatCodes.create(aztecNodeConfig.l1RpcUrls, aztecNode, dateProvider);
|
|
427
435
|
return {
|
|
428
436
|
aztecNodeConfig,
|
|
429
437
|
anvil,
|
|
430
438
|
aztecNode,
|
|
431
|
-
|
|
439
|
+
wallet,
|
|
432
440
|
sequencer: aztecNode.getSequencer(),
|
|
433
441
|
acvmConfig,
|
|
434
442
|
bbConfig,
|
|
@@ -449,13 +457,21 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
|
|
|
449
457
|
/**
|
|
450
458
|
* Snapshot 'apply' helper function to add accounts.
|
|
451
459
|
* The 'restore' function is not provided, as it must be a closure within the test context to capture the results.
|
|
452
|
-
*/ export const deployAccounts = (numberOfAccounts, logger
|
|
460
|
+
*/ export const deployAccounts = (numberOfAccounts, logger)=>async ({ wallet, initialFundedAccounts })=>{
|
|
453
461
|
if (initialFundedAccounts.length < numberOfAccounts) {
|
|
454
462
|
throw new Error(`Cannot deploy more than ${initialFundedAccounts.length} initial accounts.`);
|
|
455
463
|
}
|
|
456
464
|
logger.verbose('Deploying accounts funded with fee juice...');
|
|
457
465
|
const deployedAccounts = initialFundedAccounts.slice(0, numberOfAccounts);
|
|
458
|
-
|
|
466
|
+
// Serial due to https://github.com/AztecProtocol/aztec-packages/issues/12045
|
|
467
|
+
for(let i = 0; i < deployedAccounts.length; i++){
|
|
468
|
+
const accountManager = await wallet.createSchnorrAccount(deployedAccounts[i].secret, deployedAccounts[i].salt, deployedAccounts[i].signingKey);
|
|
469
|
+
const deployMethod = await accountManager.getDeployMethod();
|
|
470
|
+
await deployMethod.send({
|
|
471
|
+
from: AztecAddress.ZERO,
|
|
472
|
+
skipClassPublication: i !== 0
|
|
473
|
+
}).wait();
|
|
474
|
+
}
|
|
459
475
|
return {
|
|
460
476
|
deployedAccounts
|
|
461
477
|
};
|
|
@@ -466,27 +482,26 @@ export function createSnapshotManager(testName, dataPath, config = {}, deployL1C
|
|
|
466
482
|
* @param sender - Wallet to send the deployment tx.
|
|
467
483
|
* @param accountsToDeploy - Which accounts to publicly deploy.
|
|
468
484
|
* @param waitUntilProven - Whether to wait for the tx to be proven.
|
|
469
|
-
* @param
|
|
470
|
-
*/ export async function publicDeployAccounts(
|
|
471
|
-
const
|
|
472
|
-
const instances = (await Promise.all(accountAddressesToDeploy.map((account)=>sender.getContractMetadata(account)))).map((metadata)=>metadata.contractInstance);
|
|
485
|
+
* @param node - AztecNode used to wait for proven tx.
|
|
486
|
+
*/ export async function publicDeployAccounts(wallet, accountsToDeploy, waitUntilProven = false, node) {
|
|
487
|
+
const instances = (await Promise.all(accountsToDeploy.map((account)=>wallet.getContractMetadata(account)))).map((metadata)=>metadata.contractInstance);
|
|
473
488
|
const contractClass = await getContractClassFromArtifact(SchnorrAccountContractArtifact);
|
|
474
|
-
const alreadyRegistered = (await
|
|
489
|
+
const alreadyRegistered = (await wallet.getContractClassMetadata(contractClass.id)).isContractClassPubliclyRegistered;
|
|
475
490
|
const calls = await Promise.all([
|
|
476
491
|
...!alreadyRegistered ? [
|
|
477
|
-
publishContractClass(
|
|
492
|
+
publishContractClass(wallet, SchnorrAccountContractArtifact)
|
|
478
493
|
] : [],
|
|
479
|
-
...instances.map((instance)=>publishInstance(
|
|
494
|
+
...instances.map((instance)=>publishInstance(wallet, instance))
|
|
480
495
|
]);
|
|
481
|
-
const batch = new BatchCall(
|
|
496
|
+
const batch = new BatchCall(wallet, calls);
|
|
482
497
|
const txReceipt = await batch.send({
|
|
483
|
-
from:
|
|
498
|
+
from: accountsToDeploy[0]
|
|
484
499
|
}).wait();
|
|
485
500
|
if (waitUntilProven) {
|
|
486
|
-
if (!
|
|
487
|
-
throw new Error('Need to provide
|
|
501
|
+
if (!node) {
|
|
502
|
+
throw new Error('Need to provide an AztecNode to wait for proven.');
|
|
488
503
|
} else {
|
|
489
|
-
await waitForProven(
|
|
504
|
+
await waitForProven(node, txReceipt);
|
|
490
505
|
}
|
|
491
506
|
}
|
|
492
507
|
}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
+
import type { Logger } from '@aztec/aztec.js/log';
|
|
3
|
+
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
2
4
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
3
|
-
export declare function deployToken(
|
|
4
|
-
|
|
5
|
+
export declare function deployToken(wallet: Wallet, admin: AztecAddress, initialAdminBalance: bigint, logger: Logger): Promise<{
|
|
6
|
+
contract: TokenContract;
|
|
7
|
+
instance: import("@aztec/aztec.js/contracts").ContractInstanceWithAddress;
|
|
8
|
+
}>;
|
|
9
|
+
export declare function mintTokensToPrivate(token: TokenContract, minter: AztecAddress, recipient: AztecAddress, amount: bigint): Promise<void>;
|
|
5
10
|
export declare function expectTokenBalance(wallet: Wallet, token: TokenContract, owner: AztecAddress, expectedBalance: bigint, logger: Logger): Promise<void>;
|
|
6
|
-
export declare function mintNotes(
|
|
7
|
-
//# sourceMappingURL=
|
|
11
|
+
export declare function mintNotes(wallet: Wallet, minter: AztecAddress, recipient: AztecAddress, asset: TokenContract, noteAmounts: bigint[]): Promise<bigint>;
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fdXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maXh0dXJlcy90b2tlbl91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU5RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFL0Qsd0JBQXNCLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNOzs7R0Fhakg7QUFFRCx3QkFBc0IsbUJBQW1CLENBQ3ZDLEtBQUssRUFBRSxhQUFhLEVBQ3BCLE1BQU0sRUFBRSxZQUFZLEVBQ3BCLFNBQVMsRUFBRSxZQUFZLEVBQ3ZCLE1BQU0sRUFBRSxNQUFNLGlCQUdmO0FBRUQsd0JBQXNCLGtCQUFrQixDQUN0QyxNQUFNLEVBQUUsTUFBTSxFQUNkLEtBQUssRUFBRSxhQUFhLEVBQ3BCLEtBQUssRUFBRSxZQUFZLEVBQ25CLGVBQWUsRUFBRSxNQUFNLEVBQ3ZCLE1BQU0sRUFBRSxNQUFNLGlCQU9mO0FBRUQsd0JBQXNCLFNBQVMsQ0FDN0IsTUFBTSxFQUFFLE1BQU0sRUFDZCxNQUFNLEVBQUUsWUFBWSxFQUNwQixTQUFTLEVBQUUsWUFBWSxFQUN2QixLQUFLLEVBQUUsYUFBYSxFQUNwQixXQUFXLEVBQUUsTUFBTSxFQUFFLEdBQ3BCLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FXakIifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token_utils.d.ts","sourceRoot":"","sources":["../../src/fixtures/token_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"token_utils.d.ts","sourceRoot":"","sources":["../../src/fixtures/token_utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;GAajH;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,YAAY,EACvB,MAAM,EAAE,MAAM,iBAGf;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,iBAOf;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,YAAY,EACvB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,MAAM,CAAC,CAWjB"}
|
|
@@ -1,42 +1,41 @@
|
|
|
1
|
-
import { BatchCall } from '@aztec/aztec.js';
|
|
1
|
+
import { BatchCall } from '@aztec/aztec.js/contracts';
|
|
2
2
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
3
|
-
|
|
4
|
-
export async function deployToken(adminWallet, deployerAddress, initialAdminBalance, logger) {
|
|
3
|
+
export async function deployToken(wallet, admin, initialAdminBalance, logger) {
|
|
5
4
|
logger.info(`Deploying Token contract...`);
|
|
6
|
-
const contract = await TokenContract.deploy(
|
|
7
|
-
from:
|
|
8
|
-
}).
|
|
5
|
+
const { contract, instance } = await TokenContract.deploy(wallet, admin, 'TokenName', 'TokenSymbol', 18).send({
|
|
6
|
+
from: admin
|
|
7
|
+
}).wait();
|
|
9
8
|
if (initialAdminBalance > 0n) {
|
|
10
|
-
|
|
11
|
-
await mintTokensToPrivate(contract, deployerAddress, adminWallet, deployerAddress, initialAdminBalance);
|
|
9
|
+
await mintTokensToPrivate(contract, admin, admin, initialAdminBalance);
|
|
12
10
|
}
|
|
13
11
|
logger.info('L2 contract deployed');
|
|
14
|
-
return
|
|
12
|
+
return {
|
|
13
|
+
contract,
|
|
14
|
+
instance
|
|
15
|
+
};
|
|
15
16
|
}
|
|
16
|
-
export async function mintTokensToPrivate(token, minter,
|
|
17
|
-
|
|
18
|
-
await tokenAsMinter.methods.mint_to_private(recipient, amount).send({
|
|
17
|
+
export async function mintTokensToPrivate(token, minter, recipient, amount) {
|
|
18
|
+
await token.methods.mint_to_private(recipient, amount).send({
|
|
19
19
|
from: minter
|
|
20
20
|
}).wait();
|
|
21
21
|
}
|
|
22
|
-
// docs:end:token_utils
|
|
23
22
|
export async function expectTokenBalance(wallet, token, owner, expectedBalance, logger) {
|
|
24
23
|
// Then check the balance
|
|
25
|
-
const contractWithWallet =
|
|
24
|
+
const contractWithWallet = TokenContract.at(token.address, wallet);
|
|
26
25
|
const balance = await contractWithWallet.methods.balance_of_private(owner).simulate({
|
|
27
26
|
from: owner
|
|
28
27
|
});
|
|
29
28
|
logger.info(`Account ${owner} balance: ${balance}`);
|
|
30
29
|
expect(balance).toBe(expectedBalance);
|
|
31
30
|
}
|
|
32
|
-
export async function mintNotes(
|
|
33
|
-
// We can only mint
|
|
31
|
+
export async function mintNotes(wallet, minter, recipient, asset, noteAmounts) {
|
|
32
|
+
// We can only mint 5 notes at a time, since that's the maximum number of calls our entrypoints allow
|
|
34
33
|
// TODO(#13024): mint as many notes as possible in a single tx
|
|
35
|
-
const notesPerIteration =
|
|
34
|
+
const notesPerIteration = 5;
|
|
36
35
|
for(let mintedNotes = 0; mintedNotes < noteAmounts.length; mintedNotes += notesPerIteration){
|
|
37
36
|
const toMint = noteAmounts.slice(mintedNotes, mintedNotes + notesPerIteration);
|
|
38
37
|
const actions = toMint.map((amt)=>asset.methods.mint_to_private(recipient, amt));
|
|
39
|
-
await new BatchCall(
|
|
38
|
+
await new BatchCall(wallet, actions).send({
|
|
40
39
|
from: minter
|
|
41
40
|
}).wait();
|
|
42
41
|
}
|