@aztec/aztec 0.0.1-commit.03f7ef2 → 0.0.1-commit.04852196a
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/bin/index.js +9 -3
- package/dest/cli/admin_api_key_store.d.ts +45 -0
- package/dest/cli/admin_api_key_store.d.ts.map +1 -0
- package/dest/cli/admin_api_key_store.js +98 -0
- package/dest/cli/aztec_start_action.d.ts +1 -1
- package/dest/cli/aztec_start_action.d.ts.map +1 -1
- package/dest/cli/aztec_start_action.js +55 -12
- package/dest/cli/aztec_start_options.d.ts +1 -1
- package/dest/cli/aztec_start_options.d.ts.map +1 -1
- package/dest/cli/aztec_start_options.js +29 -11
- package/dest/cli/cli.d.ts +1 -1
- package/dest/cli/cli.d.ts.map +1 -1
- package/dest/cli/cli.js +4 -37
- package/dest/cli/cmds/compile.d.ts +4 -0
- package/dest/cli/cmds/compile.d.ts.map +1 -0
- package/dest/cli/cmds/compile.js +165 -0
- package/dest/cli/cmds/migrate_ha_db.d.ts +3 -0
- package/dest/cli/cmds/migrate_ha_db.d.ts.map +1 -0
- package/dest/cli/cmds/migrate_ha_db.js +27 -0
- package/dest/cli/cmds/profile.d.ts +4 -0
- package/dest/cli/cmds/profile.d.ts.map +1 -0
- package/dest/cli/cmds/profile.js +8 -0
- package/dest/cli/cmds/profile_flamegraph.d.ts +4 -0
- package/dest/cli/cmds/profile_flamegraph.d.ts.map +1 -0
- package/dest/cli/cmds/profile_flamegraph.js +51 -0
- package/dest/cli/cmds/profile_gates.d.ts +4 -0
- package/dest/cli/cmds/profile_gates.d.ts.map +1 -0
- package/dest/cli/cmds/profile_gates.js +57 -0
- package/dest/cli/cmds/profile_utils.d.ts +18 -0
- package/dest/cli/cmds/profile_utils.d.ts.map +1 -0
- package/dest/cli/cmds/profile_utils.js +50 -0
- package/dest/cli/cmds/standby.d.ts +27 -0
- package/dest/cli/cmds/standby.d.ts.map +1 -0
- package/dest/cli/cmds/standby.js +78 -0
- package/dest/cli/cmds/start_archiver.d.ts +2 -2
- package/dest/cli/cmds/start_archiver.d.ts.map +1 -1
- package/dest/cli/cmds/start_archiver.js +6 -8
- package/dest/cli/cmds/start_bot.d.ts +3 -3
- package/dest/cli/cmds/start_bot.d.ts.map +1 -1
- package/dest/cli/cmds/start_bot.js +9 -5
- package/dest/cli/cmds/start_node.d.ts +3 -2
- package/dest/cli/cmds/start_node.d.ts.map +1 -1
- package/dest/cli/cmds/start_node.js +77 -27
- package/dest/cli/cmds/start_p2p_bootstrap.d.ts +2 -2
- package/dest/cli/cmds/start_p2p_bootstrap.d.ts.map +1 -1
- package/dest/cli/cmds/start_p2p_bootstrap.js +1 -2
- package/dest/cli/cmds/start_prover_agent.d.ts +1 -1
- package/dest/cli/cmds/start_prover_agent.d.ts.map +1 -1
- package/dest/cli/cmds/start_prover_agent.js +3 -3
- package/dest/cli/cmds/start_prover_broker.d.ts +1 -1
- package/dest/cli/cmds/start_prover_broker.d.ts.map +1 -1
- package/dest/cli/cmds/start_prover_broker.js +8 -8
- package/dest/cli/cmds/utils/artifacts.d.ts +21 -0
- package/dest/cli/cmds/utils/artifacts.d.ts.map +1 -0
- package/dest/cli/cmds/utils/artifacts.js +24 -0
- package/dest/cli/cmds/utils/needs_recompile.d.ts +10 -0
- package/dest/cli/cmds/utils/needs_recompile.d.ts.map +1 -0
- package/dest/cli/cmds/utils/needs_recompile.js +124 -0
- package/dest/cli/cmds/utils/spawn.d.ts +3 -0
- package/dest/cli/cmds/utils/spawn.d.ts.map +1 -0
- package/dest/cli/cmds/utils/spawn.js +16 -0
- package/dest/cli/util.d.ts +7 -18
- package/dest/cli/util.d.ts.map +1 -1
- package/dest/cli/util.js +51 -87
- package/dest/examples/token.js +9 -9
- package/dest/local-network/banana_fpc.d.ts +1 -1
- package/dest/local-network/banana_fpc.d.ts.map +1 -1
- package/dest/local-network/banana_fpc.js +3 -3
- package/dest/local-network/local-network.d.ts +4 -3
- package/dest/local-network/local-network.d.ts.map +1 -1
- package/dest/local-network/local-network.js +69 -25
- package/dest/testing/anvil_test_watcher.d.ts +9 -1
- package/dest/testing/anvil_test_watcher.d.ts.map +1 -1
- package/dest/testing/anvil_test_watcher.js +52 -15
- package/dest/testing/cheat_codes.d.ts +3 -1
- package/dest/testing/cheat_codes.d.ts.map +1 -1
- package/dest/testing/epoch_test_settler.d.ts +19 -0
- package/dest/testing/epoch_test_settler.d.ts.map +1 -0
- package/dest/testing/epoch_test_settler.js +62 -0
- package/dest/testing/index.d.ts +3 -1
- package/dest/testing/index.d.ts.map +1 -1
- package/dest/testing/index.js +2 -0
- package/dest/testing/token_allowed_setup.d.ts +7 -0
- package/dest/testing/token_allowed_setup.d.ts.map +1 -0
- package/dest/testing/token_allowed_setup.js +20 -0
- package/package.json +36 -34
- package/scripts/add_crate.sh +102 -0
- package/scripts/aztec.sh +22 -9
- package/scripts/init.sh +23 -19
- package/scripts/new.sh +48 -24
- package/scripts/setup_workspace.sh +68 -0
- package/src/bin/index.ts +9 -3
- package/src/cli/admin_api_key_store.ts +128 -0
- package/src/cli/aztec_start_action.ts +58 -7
- package/src/cli/aztec_start_options.ts +30 -9
- package/src/cli/cli.ts +4 -37
- package/src/cli/cmds/compile.ts +190 -0
- package/src/cli/cmds/migrate_ha_db.ts +43 -0
- package/src/cli/cmds/profile.ts +25 -0
- package/src/cli/cmds/profile_flamegraph.ts +63 -0
- package/src/cli/cmds/profile_gates.ts +67 -0
- package/src/cli/cmds/profile_utils.ts +58 -0
- package/src/cli/cmds/standby.ts +111 -0
- package/src/cli/cmds/start_archiver.ts +3 -14
- package/src/cli/cmds/start_bot.ts +8 -5
- package/src/cli/cmds/start_node.ts +76 -33
- package/src/cli/cmds/start_p2p_bootstrap.ts +2 -2
- package/src/cli/cmds/start_prover_agent.ts +3 -11
- package/src/cli/cmds/start_prover_broker.ts +12 -15
- package/src/cli/cmds/utils/artifacts.ts +44 -0
- package/src/cli/cmds/utils/needs_recompile.ts +139 -0
- package/src/cli/cmds/utils/spawn.ts +16 -0
- package/src/cli/util.ts +58 -96
- package/src/examples/token.ts +10 -10
- package/src/local-network/banana_fpc.ts +11 -7
- package/src/local-network/local-network.ts +85 -30
- package/src/testing/anvil_test_watcher.ts +59 -15
- package/src/testing/epoch_test_settler.ts +71 -0
- package/src/testing/index.ts +2 -0
- package/src/testing/token_allowed_setup.ts +19 -0
- package/dest/cli/cmds/start_prover_node.d.ts +0 -7
- package/dest/cli/cmds/start_prover_node.d.ts.map +0 -1
- package/dest/cli/cmds/start_prover_node.js +0 -108
- package/dest/cli/release_version.d.ts +0 -2
- package/dest/cli/release_version.d.ts.map +0 -1
- package/dest/cli/release_version.js +0 -14
- package/scripts/compile.sh +0 -44
- package/scripts/extract_function.js +0 -47
- package/scripts/flamegraph.sh +0 -59
- package/scripts/setup_project.sh +0 -31
- package/src/cli/cmds/start_prover_node.ts +0 -124
- package/src/cli/release_version.ts +0 -21
package/dest/cli/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/cli/util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/cli/util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEjF,OAAO,EAAE,KAAK,KAAK,EAAgB,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAG9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,EAAE,KAAK,gBAAgB,EAAqB,MAAM,0BAA0B,CAAC;AAEpF,0BAAkB,QAAQ;IACxB,OAAO,IAAI;IACX,KAAK,IAAI;IACT,cAAc,KAAK;IACnB,eAAe,KAAK;IAEpB,MAAM,MAAM;IACZ,MAAM,MAAM;IACZ,OAAO,MAAM;IACb,OAAO,MAAM;CACd;AAGD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAgB1G;AAED,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED,eAAO,MAAM,qBAAqB,kEAajC,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,eAAe,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,cAAc,qBAyBhG;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;CAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAiB/F;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAKR;AAiCD,eAAO,MAAM,UAAU,qDAStB,CAAC;AAEF,eAAO,MAAM,uBAAuB,cAyBnC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,0EASpC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,wFAkCvC,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,EAAE,UAAU,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,EACnD,GAAG,EAAE,KAAK,GACT,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;;;GAIG;AACH,wBAAsB,kCAAkC,CACtD,EAAE,UAAU,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,EAChD,GAAG,EAAE,KAAK,GACT,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,YAAY,EACrB,sBAAsB,EAAE,OAAO,EAC/B,YAAY,EAAE,UAAU,EACxB,cAAc,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAC1C,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CA8Cf;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAItD"}
|
package/dest/cli/util.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import { getNetworkConfig } from '@aztec/cli/config';
|
|
2
|
+
import { RegistryContract } from '@aztec/ethereum/contracts';
|
|
3
|
+
import { jsonStringify } from '@aztec/foundation/json-rpc';
|
|
1
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
-
import {
|
|
5
|
+
import { getPackageVersion } from '@aztec/stdlib/update-checker';
|
|
3
6
|
import chalk from 'chalk';
|
|
4
7
|
import { aztecStartOptions } from './aztec_start_options.js';
|
|
5
8
|
export var ExitCode = /*#__PURE__*/ function(ExitCode) {
|
|
@@ -24,7 +27,7 @@ export function shutdown(logFn, exitCode, cb) {
|
|
|
24
27
|
exitCode
|
|
25
28
|
});
|
|
26
29
|
if (cb) {
|
|
27
|
-
shutdownPromise = Promise.allSettled(cb).then(()=>process.exit(exitCode));
|
|
30
|
+
shutdownPromise = Promise.allSettled(cb.map((fn)=>fn())).then(()=>process.exit(exitCode));
|
|
28
31
|
} else {
|
|
29
32
|
// synchronously shuts down the process
|
|
30
33
|
// no need to set shutdownPromise on this branch of the if statement because no more code will be executed
|
|
@@ -63,19 +66,20 @@ export const installSignalHandlers = (logFn, cb)=>{
|
|
|
63
66
|
/**
|
|
64
67
|
* Creates logs for the initial accounts
|
|
65
68
|
* @param accounts - The initial accounts
|
|
66
|
-
* @param wallet - A
|
|
69
|
+
* @param wallet - A EmbeddedWallet instance to get the registered accounts
|
|
67
70
|
* @returns A string array containing the initial accounts details
|
|
68
|
-
*/ export async function createAccountLogs(
|
|
71
|
+
*/ export async function createAccountLogs(accountManagers, wallet) {
|
|
69
72
|
const registeredAccounts = await wallet.getAccounts();
|
|
70
73
|
const accountLogStrings = [
|
|
71
74
|
`Initial Accounts:\n\n`
|
|
72
75
|
];
|
|
73
|
-
for (const
|
|
74
|
-
const
|
|
76
|
+
for (const accountManager of accountManagers){
|
|
77
|
+
const account = await accountManager.getAccount();
|
|
78
|
+
const completeAddress = account.getCompleteAddress();
|
|
75
79
|
if (registeredAccounts.find((a)=>a.item.equals(completeAddress.address))) {
|
|
76
80
|
accountLogStrings.push(` Address: ${completeAddress.address.toString()}\n`);
|
|
77
81
|
accountLogStrings.push(` Partial Address: ${completeAddress.partialAddress.toString()}\n`);
|
|
78
|
-
accountLogStrings.push(` Secret Key: ${
|
|
82
|
+
accountLogStrings.push(` Secret Key: ${account.getSecretKey().toString()}\n`);
|
|
79
83
|
accountLogStrings.push(` Master nullifier public key: ${completeAddress.publicKeys.masterNullifierPublicKey.toString()}\n`);
|
|
80
84
|
accountLogStrings.push(` Master incoming viewing public key: ${completeAddress.publicKeys.masterIncomingViewingPublicKey.toString()}\n\n`);
|
|
81
85
|
accountLogStrings.push(` Master outgoing viewing public key: ${completeAddress.publicKeys.masterOutgoingViewingPublicKey.toString()}\n\n`);
|
|
@@ -218,7 +222,7 @@ export const printAztecStartHelpText = ()=>{
|
|
|
218
222
|
const { Crs, GrumpkinCrs } = await import('@aztec/bb.js');
|
|
219
223
|
await Promise.all([
|
|
220
224
|
Crs.new(2 ** 1, undefined, log),
|
|
221
|
-
GrumpkinCrs.new(2 ** 16
|
|
225
|
+
GrumpkinCrs.new(2 ** 16, undefined, log)
|
|
222
226
|
]);
|
|
223
227
|
}
|
|
224
228
|
}
|
|
@@ -230,95 +234,55 @@ export const printAztecStartHelpText = ()=>{
|
|
|
230
234
|
if (realProofs) {
|
|
231
235
|
const { Crs, GrumpkinCrs } = await import('@aztec/bb.js');
|
|
232
236
|
await Promise.all([
|
|
233
|
-
Crs.new(2 ** 25
|
|
234
|
-
GrumpkinCrs.new(2 ** 18
|
|
237
|
+
Crs.new(2 ** 25, undefined, log),
|
|
238
|
+
GrumpkinCrs.new(2 ** 18, undefined, log)
|
|
235
239
|
]);
|
|
236
240
|
}
|
|
237
241
|
}
|
|
238
|
-
export async function
|
|
239
|
-
const
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
return;
|
|
254
|
-
}
|
|
255
|
-
if (autoUpdateMode === 'config' || autoUpdateMode === 'config-and-version') {
|
|
256
|
-
logger.info(`New rollup version detected. Please restart the node`, {
|
|
257
|
-
latestVersion,
|
|
258
|
-
currentVersion
|
|
259
|
-
});
|
|
260
|
-
await shutdown(logger.info, 78, signalHandlers);
|
|
261
|
-
} else if (autoUpdateMode === 'notify') {
|
|
262
|
-
logger.warn(`New rollup detected. Please restart the node`, {
|
|
263
|
-
latestVersion,
|
|
264
|
-
currentVersion
|
|
265
|
-
});
|
|
242
|
+
export async function setupVersionChecker(network, followsCanonicalRollup, publicClient, signalHandlers, cacheDir) {
|
|
243
|
+
const networkConfig = await getNetworkConfig(network, cacheDir);
|
|
244
|
+
if (!networkConfig) {
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
const { VersionChecker } = await import('@aztec/stdlib/update-checker');
|
|
248
|
+
const logger = createLogger('version_check');
|
|
249
|
+
const registry = new RegistryContract(publicClient, networkConfig.registryAddress);
|
|
250
|
+
const checks = [];
|
|
251
|
+
checks.push({
|
|
252
|
+
name: 'node',
|
|
253
|
+
currentVersion: getPackageVersion() ?? 'unknown',
|
|
254
|
+
getLatestVersion: async ()=>{
|
|
255
|
+
const cfg = await getNetworkConfig(network, cacheDir);
|
|
256
|
+
return cfg?.nodeVersion;
|
|
266
257
|
}
|
|
267
258
|
});
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
return;
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
} else if (autoUpdateMode === 'notify') {
|
|
280
|
-
logger.info(`New node version detected. Please update and restart the node`, {
|
|
281
|
-
latestVersion,
|
|
282
|
-
currentVersion
|
|
259
|
+
if (followsCanonicalRollup) {
|
|
260
|
+
const getLatestVersion = async ()=>{
|
|
261
|
+
const version = (await registry.getRollupVersions()).at(-1);
|
|
262
|
+
return version !== undefined ? String(version) : undefined;
|
|
263
|
+
};
|
|
264
|
+
const currentVersion = await getLatestVersion();
|
|
265
|
+
if (currentVersion !== undefined) {
|
|
266
|
+
checks.push({
|
|
267
|
+
name: 'rollup',
|
|
268
|
+
currentVersion,
|
|
269
|
+
getLatestVersion
|
|
283
270
|
});
|
|
284
271
|
}
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
checker.on('
|
|
272
|
+
}
|
|
273
|
+
const checker = new VersionChecker(checks, 600_000, logger);
|
|
274
|
+
checker.on('newVersion', ({ name, latestVersion, currentVersion })=>{
|
|
288
275
|
if (isShuttingDown()) {
|
|
289
276
|
return;
|
|
290
277
|
}
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
} catch (err) {
|
|
296
|
-
logger.warn('Failed to update config', {
|
|
297
|
-
err
|
|
298
|
-
});
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
// don't notify on these config changes
|
|
302
|
-
});
|
|
303
|
-
checker.on('updatePublicTelemetryConfig', (config)=>{
|
|
304
|
-
if (autoUpdateMode === 'config' || autoUpdateMode === 'config-and-version') {
|
|
305
|
-
logger.warn(`Public telemetry config change detected. Updating telemetry client`, config);
|
|
306
|
-
try {
|
|
307
|
-
const publicIncludeMetrics = config.publicIncludeMetrics;
|
|
308
|
-
if (Array.isArray(publicIncludeMetrics) && publicIncludeMetrics.every((m)=>typeof m === 'string')) {
|
|
309
|
-
getTelemetryClient().setExportedPublicTelemetry(publicIncludeMetrics);
|
|
310
|
-
}
|
|
311
|
-
const publicMetricsCollectFrom = config.publicMetricsCollectFrom;
|
|
312
|
-
if (Array.isArray(publicMetricsCollectFrom) && publicMetricsCollectFrom.every((m)=>typeof m === 'string')) {
|
|
313
|
-
getTelemetryClient().setPublicTelemetryCollectFrom(publicMetricsCollectFrom);
|
|
314
|
-
}
|
|
315
|
-
} catch (err) {
|
|
316
|
-
logger.warn('Failed to update config', {
|
|
317
|
-
err
|
|
318
|
-
});
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
// don't notify on these config changes
|
|
278
|
+
logger.warn(`New ${name} version available`, {
|
|
279
|
+
latestVersion,
|
|
280
|
+
currentVersion
|
|
281
|
+
});
|
|
322
282
|
});
|
|
323
283
|
checker.start();
|
|
284
|
+
signalHandlers.push(()=>checker.stop());
|
|
285
|
+
}
|
|
286
|
+
export function stringifyConfig(config) {
|
|
287
|
+
return Object.entries(config).map(([key, value])=>`${key}=${jsonStringify(value)}`).join(' ');
|
|
324
288
|
}
|
package/dest/examples/token.js
CHANGED
|
@@ -2,7 +2,7 @@ import { getInitialTestAccountsData } from '@aztec/accounts/testing';
|
|
|
2
2
|
import { createAztecNodeClient } from '@aztec/aztec.js/node';
|
|
3
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
5
|
-
import {
|
|
5
|
+
import { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
6
6
|
const logger = createLogger('example:token');
|
|
7
7
|
const nodeUrl = 'http://localhost:8080';
|
|
8
8
|
const node = createAztecNodeClient(nodeUrl);
|
|
@@ -12,7 +12,7 @@ const TRANSFER_AMOUNT = 33n;
|
|
|
12
12
|
* Main function.
|
|
13
13
|
*/ async function main() {
|
|
14
14
|
logger.info('Running token contract test on HTTP interface.');
|
|
15
|
-
const wallet = await
|
|
15
|
+
const wallet = await EmbeddedWallet.create(node);
|
|
16
16
|
// During local network setup we deploy a few accounts. Below we add them to our wallet.
|
|
17
17
|
const [aliceInitialAccountData, bobInitialAccountData] = await getInitialTestAccountsData();
|
|
18
18
|
await wallet.createSchnorrAccount(aliceInitialAccountData.secret, aliceInitialAccountData.salt);
|
|
@@ -21,17 +21,17 @@ const TRANSFER_AMOUNT = 33n;
|
|
|
21
21
|
const bob = bobInitialAccountData.address;
|
|
22
22
|
logger.info(`Fetched Alice and Bob accounts: ${alice.toString()}, ${bob.toString()}`);
|
|
23
23
|
logger.info('Deploying Token...');
|
|
24
|
-
const token = await TokenContract.deploy(wallet, alice, 'TokenName', 'TokenSymbol', 18).send({
|
|
24
|
+
const { contract: token } = await TokenContract.deploy(wallet, alice, 'TokenName', 'TokenSymbol', 18).send({
|
|
25
25
|
from: alice
|
|
26
|
-
})
|
|
26
|
+
});
|
|
27
27
|
logger.info('Token deployed');
|
|
28
28
|
// Mint tokens to Alice
|
|
29
29
|
logger.info(`Minting ${ALICE_MINT_BALANCE} more coins to Alice...`);
|
|
30
30
|
await token.methods.mint_to_private(alice, ALICE_MINT_BALANCE).send({
|
|
31
31
|
from: alice
|
|
32
|
-
})
|
|
32
|
+
});
|
|
33
33
|
logger.info(`${ALICE_MINT_BALANCE} tokens were successfully minted by Alice and transferred to private`);
|
|
34
|
-
const balanceAfterMint = await token.methods.balance_of_private(alice).simulate({
|
|
34
|
+
const { result: balanceAfterMint } = await token.methods.balance_of_private(alice).simulate({
|
|
35
35
|
from: alice
|
|
36
36
|
});
|
|
37
37
|
logger.info(`Tokens successfully minted. New Alice's balance: ${balanceAfterMint}`);
|
|
@@ -39,13 +39,13 @@ const TRANSFER_AMOUNT = 33n;
|
|
|
39
39
|
logger.info(`Transferring ${TRANSFER_AMOUNT} tokens from Alice to Bob...`);
|
|
40
40
|
await token.methods.transfer(bob, TRANSFER_AMOUNT).send({
|
|
41
41
|
from: alice
|
|
42
|
-
})
|
|
42
|
+
});
|
|
43
43
|
// Check the new balances
|
|
44
|
-
const aliceBalance = await token.methods.balance_of_private(alice).simulate({
|
|
44
|
+
const { result: aliceBalance } = await token.methods.balance_of_private(alice).simulate({
|
|
45
45
|
from: alice
|
|
46
46
|
});
|
|
47
47
|
logger.info(`Alice's balance ${aliceBalance}`);
|
|
48
|
-
const bobBalance = await token.methods.balance_of_private(bob).simulate({
|
|
48
|
+
const { result: bobBalance } = await token.methods.balance_of_private(bob).simulate({
|
|
49
49
|
from: bob
|
|
50
50
|
});
|
|
51
51
|
logger.info(`Bob's balance ${bobBalance}`);
|
|
@@ -7,4 +7,4 @@ export declare function getBananaFPCAddress(initialAccounts: InitialAccountData[
|
|
|
7
7
|
export declare function setupBananaFPC(initialAccounts: InitialAccountData[], wallet: Wallet, log: LogFn): Promise<void>;
|
|
8
8
|
export declare function registerDeployedBananaCoinInWalletAndGetAddress(wallet: Wallet): Promise<AztecAddress>;
|
|
9
9
|
export declare function registerDeployedBananaFPCInWalletAndGetAddress(wallet: Wallet): Promise<AztecAddress>;
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuYW5hX2ZwYy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvY2FsLW5ldHdvcmsvYmFuYW5hX2ZwYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxrQkFBa0IsRUFBOEIsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUduRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUF3QjNELHdCQUFzQixvQkFBb0IsQ0FBQyxlQUFlLEVBQUUsa0JBQWtCLEVBQUUseUJBRS9FO0FBV0Qsd0JBQXNCLG1CQUFtQixDQUFDLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSx5QkFFOUU7QUFFRCx3QkFBc0IsY0FBYyxDQUFDLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssaUJBa0JyRztBQUVELHdCQUFzQiwrQ0FBK0MsQ0FBQyxNQUFNLEVBQUUsTUFBTSx5QkFNbkY7QUFFRCx3QkFBc0IsOENBQThDLENBQUMsTUFBTSxFQUFFLE1BQU0seUJBTWxGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banana_fpc.d.ts","sourceRoot":"","sources":["../../src/local-network/banana_fpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAA8B,MAAM,yBAAyB,CAAC;AAC9F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAwB3D,wBAAsB,oBAAoB,CAAC,eAAe,EAAE,kBAAkB,EAAE,yBAE/E;AAWD,wBAAsB,mBAAmB,CAAC,eAAe,EAAE,kBAAkB,EAAE,yBAE9E;AAED,wBAAsB,cAAc,CAAC,eAAe,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"banana_fpc.d.ts","sourceRoot":"","sources":["../../src/local-network/banana_fpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAA8B,MAAM,yBAAyB,CAAC;AAC9F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAwB3D,wBAAsB,oBAAoB,CAAC,eAAe,EAAE,kBAAkB,EAAE,yBAE/E;AAWD,wBAAsB,mBAAmB,CAAC,eAAe,EAAE,kBAAkB,EAAE,yBAE9E;AAED,wBAAsB,cAAc,CAAC,eAAe,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,iBAkBrG;AAED,wBAAsB,+CAA+C,CAAC,MAAM,EAAE,MAAM,yBAMnF;AAED,wBAAsB,8CAA8C,CAAC,MAAM,EAAE,MAAM,yBAMlF"}
|
|
@@ -46,17 +46,17 @@ export async function getBananaFPCAddress(initialAccounts) {
|
|
|
46
46
|
export async function setupBananaFPC(initialAccounts, wallet, log) {
|
|
47
47
|
const bananaCoinAddress = await getBananaCoinAddress(initialAccounts);
|
|
48
48
|
const admin = getBananaAdmin(initialAccounts);
|
|
49
|
-
const [bananaCoin, fpc] = await Promise.all([
|
|
49
|
+
const [{ contract: bananaCoin }, { contract: fpc }] = await Promise.all([
|
|
50
50
|
TokenContract.deploy(wallet, admin, bananaCoinArgs.name, bananaCoinArgs.symbol, bananaCoinArgs.decimal).send({
|
|
51
51
|
from: admin,
|
|
52
52
|
contractAddressSalt: BANANA_COIN_SALT,
|
|
53
53
|
universalDeploy: true
|
|
54
|
-
})
|
|
54
|
+
}),
|
|
55
55
|
FPCContract.deploy(wallet, bananaCoinAddress, admin).send({
|
|
56
56
|
from: admin,
|
|
57
57
|
contractAddressSalt: BANANA_FPC_SALT,
|
|
58
58
|
universalDeploy: true
|
|
59
|
-
})
|
|
59
|
+
})
|
|
60
60
|
]);
|
|
61
61
|
log(`BananaCoin: ${bananaCoin.address}`);
|
|
62
62
|
log(`FPC: ${fpc.address}`);
|
|
@@ -6,6 +6,7 @@ import { type BlobClientInterface } from '@aztec/blob-client/client';
|
|
|
6
6
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
7
7
|
import type { LogFn } from '@aztec/foundation/log';
|
|
8
8
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
9
|
+
import type { ProvingJobBroker } from '@aztec/stdlib/interfaces/server';
|
|
9
10
|
import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
10
11
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
11
12
|
import { type Hex } from 'viem';
|
|
@@ -15,7 +16,6 @@ import { type Hex } from 'viem';
|
|
|
15
16
|
* @param hdAccount - Account for publishing L1 contracts
|
|
16
17
|
*/
|
|
17
18
|
export declare function deployContractsToL1(aztecNodeConfig: AztecNodeConfig, privateKey: Hex, opts?: {
|
|
18
|
-
assumeProvenThroughBlockNumber?: number;
|
|
19
19
|
genesisArchiveRoot?: Fr;
|
|
20
20
|
feeJuicePortalInitialBalance?: bigint;
|
|
21
21
|
}): Promise<{
|
|
@@ -39,7 +39,7 @@ export declare function deployContractsToL1(aztecNodeConfig: AztecNodeConfig, pr
|
|
|
39
39
|
dateGatedRelayerAddress?: EthAddress | undefined;
|
|
40
40
|
} & {
|
|
41
41
|
rollupAddress: EthAddress;
|
|
42
|
-
} & {
|
|
42
|
+
} & Pick<import("@aztec/ethereum/l1-contract-addresses").L1ContractAddresses, "rollupAddress"> & {
|
|
43
43
|
rollupAddress: EthAddress;
|
|
44
44
|
}>;
|
|
45
45
|
/** Local network settings. */
|
|
@@ -66,7 +66,8 @@ export declare function createAztecNode(config?: Partial<AztecNodeConfig>, deps?
|
|
|
66
66
|
telemetry?: TelemetryClient;
|
|
67
67
|
blobClient?: BlobClientInterface;
|
|
68
68
|
dateProvider?: DateProvider;
|
|
69
|
+
proverBroker?: ProvingJobBroker;
|
|
69
70
|
}, options?: {
|
|
70
71
|
prefilledPublicData?: PublicDataTreeLeaf[];
|
|
71
72
|
}): Promise<AztecNodeService>;
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtbmV0d29yay5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvY2FsLW5ldHdvcmsvbG9jYWwtbmV0d29yay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFvQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU1QyxPQUFPLEVBQUUsS0FBSyxtQkFBbUIsRUFBb0IsTUFBTSwyQkFBMkIsQ0FBQztBQVN2RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBb0IsTUFBTSx5QkFBeUIsQ0FBQztBQUt6RSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hFLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUQsT0FBTyxFQUNMLEtBQUssZUFBZSxFQUdyQixNQUFNLHlCQUF5QixDQUFDO0FBS2pDLE9BQU8sRUFBRSxLQUFLLEdBQUcsRUFBMkQsTUFBTSxNQUFNLENBQUM7QUFnQnpGOzs7O0dBSUc7QUFDSCx3QkFBc0IsbUJBQW1CLENBQ3ZDLGVBQWUsRUFBRSxlQUFlLEVBQ2hDLFVBQVUsRUFBRSxHQUFHLEVBQ2YsSUFBSSxHQUFFO0lBQ0osa0JBQWtCLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDeEIsNEJBQTRCLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDbEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JQO0FBRUQsOEJBQThCO0FBQzlCLE1BQU0sTUFBTSxrQkFBa0IsR0FBRyxlQUFlLEdBQUc7SUFDakQsMERBQTBEO0lBQzFELFVBQVUsRUFBRSxNQUFNLENBQUM7SUFDbkIsNkRBQTZEO0lBQzdELFlBQVksRUFBRSxPQUFPLENBQUM7Q0FDdkIsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCx3QkFBc0Isa0JBQWtCLENBQUMsTUFBTSx5Q0FBa0MsRUFBRSxPQUFPLEVBQUUsS0FBSzs7O0dBd0poRztBQUVEOzs7R0FHRztBQUNILHdCQUFzQixlQUFlLENBQ25DLE1BQU0sR0FBRSxPQUFPLENBQUMsZUFBZSxDQUFNLEVBQ3JDLElBQUksR0FBRTtJQUNKLFNBQVMsQ0FBQyxFQUFFLGVBQWUsQ0FBQztJQUM1QixVQUFVLENBQUMsRUFBRSxtQkFBbUIsQ0FBQztJQUNqQyxZQUFZLENBQUMsRUFBRSxZQUFZLENBQUM7SUFDNUIsWUFBWSxDQUFDLEVBQUUsZ0JBQWdCLENBQUM7Q0FDNUIsRUFDTixPQUFPLEdBQUU7SUFBRSxtQkFBbUIsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLENBQUE7Q0FBTyw2QkFlN0QifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-network.d.ts","sourceRoot":"","sources":["../../src/local-network/local-network.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,KAAK,eAAe,EAAoB,MAAM,0BAA0B,CAAC;AAClF,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAE5C,OAAO,EAAE,KAAK,mBAAmB,EAAoB,MAAM,2BAA2B,CAAC;AASvF,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAoB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"local-network.d.ts","sourceRoot":"","sources":["../../src/local-network/local-network.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,KAAK,eAAe,EAAoB,MAAM,0BAA0B,CAAC;AAClF,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAE5C,OAAO,EAAE,KAAK,mBAAmB,EAAoB,MAAM,2BAA2B,CAAC;AASvF,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAoB,MAAM,yBAAyB,CAAC;AAKzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EAAE,KAAK,GAAG,EAA2D,MAAM,MAAM,CAAC;AAgBzF;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,eAAe,EAAE,eAAe,EAChC,UAAU,EAAE,GAAG,EACf,IAAI,GAAE;IACJ,kBAAkB,CAAC,EAAE,EAAE,CAAC;IACxB,4BAA4B,CAAC,EAAE,MAAM,CAAC;CAClC;;;;;;;;;;;;;;;;;;;;;;;GAoBP;AAED,8BAA8B;AAC9B,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG;IACjD,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,yCAAkC,EAAE,OAAO,EAAE,KAAK;;;GAwJhG;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM,EACrC,IAAI,GAAE;IACJ,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,gBAAgB,CAAC;CAC5B,EACN,OAAO,GAAE;IAAE,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAAO,6BAe7D"}
|
|
@@ -17,8 +17,11 @@ import { EthAddress } from '@aztec/foundation/eth-address';
|
|
|
17
17
|
import { TestDateProvider } from '@aztec/foundation/timer';
|
|
18
18
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
19
19
|
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
20
|
+
import { SequencerState } from '@aztec/sequencer-client';
|
|
21
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
20
22
|
import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
|
|
21
|
-
import {
|
|
23
|
+
import { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
24
|
+
import { deployFundedSchnorrAccounts } from '@aztec/wallets/testing';
|
|
22
25
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
23
26
|
import { createPublicClient, fallback, http as httpViemTransport } from 'viem';
|
|
24
27
|
import { mnemonicToAccount, privateKeyToAddress } from 'viem/accounts';
|
|
@@ -26,6 +29,8 @@ import { foundry } from 'viem/chains';
|
|
|
26
29
|
import { createAccountLogs } from '../cli/util.js';
|
|
27
30
|
import { DefaultMnemonic } from '../mnemonic.js';
|
|
28
31
|
import { AnvilTestWatcher } from '../testing/anvil_test_watcher.js';
|
|
32
|
+
import { EpochTestSettler } from '../testing/epoch_test_settler.js';
|
|
33
|
+
import { getTokenAllowedSetupFunctions } from '../testing/token_allowed_setup.js';
|
|
29
34
|
import { getBananaFPCAddress, setupBananaFPC } from './banana_fpc.js';
|
|
30
35
|
import { getSponsoredFPCAddress } from './sponsored_fpc.js';
|
|
31
36
|
const logger = createLogger('local-network');
|
|
@@ -64,14 +69,21 @@ const localAnvil = foundry;
|
|
|
64
69
|
if ((config.l1RpcUrls?.length || 0) > 1) {
|
|
65
70
|
logger.warn(`Multiple L1 RPC URLs provided. Local networks will only use the first one: ${l1RpcUrl}`);
|
|
66
71
|
}
|
|
72
|
+
// The local network deploys a banana FPC with Token contracts, so include Token entries
|
|
73
|
+
// in the setup allowlist so FPC-based fee payments work out of the box.
|
|
74
|
+
const tokenAllowList = await getTokenAllowedSetupFunctions();
|
|
67
75
|
const aztecNodeConfig = {
|
|
68
76
|
...getConfigEnvVars(),
|
|
69
|
-
...config
|
|
77
|
+
...config,
|
|
78
|
+
txPublicSetupAllowListExtend: [
|
|
79
|
+
...tokenAllowList,
|
|
80
|
+
...config.txPublicSetupAllowListExtend ?? []
|
|
81
|
+
]
|
|
70
82
|
};
|
|
71
83
|
const hdAccount = mnemonicToAccount(config.l1Mnemonic || DefaultMnemonic);
|
|
72
|
-
if (aztecNodeConfig.
|
|
84
|
+
if (aztecNodeConfig.sequencerPublisherPrivateKeys == undefined || !aztecNodeConfig.sequencerPublisherPrivateKeys.length || aztecNodeConfig.sequencerPublisherPrivateKeys[0].getValue() === NULL_KEY) {
|
|
73
85
|
const privKey = hdAccount.getHdKey().privateKey;
|
|
74
|
-
aztecNodeConfig.
|
|
86
|
+
aztecNodeConfig.sequencerPublisherPrivateKeys = [
|
|
75
87
|
new SecretValue(`0x${Buffer.from(privKey).toString('hex')}`)
|
|
76
88
|
];
|
|
77
89
|
}
|
|
@@ -95,20 +107,25 @@ const localAnvil = foundry;
|
|
|
95
107
|
})();
|
|
96
108
|
const bananaFPC = await getBananaFPCAddress(initialAccounts);
|
|
97
109
|
const sponsoredFPC = await getSponsoredFPCAddress();
|
|
98
|
-
const
|
|
110
|
+
const prefundAddresses = (aztecNodeConfig.prefundAddresses ?? []).map((a)=>AztecAddress.fromString(a));
|
|
111
|
+
const fundedAddresses = [
|
|
99
112
|
...initialAccounts.map((a)=>a.address),
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
113
|
+
...initialAccounts.length ? [
|
|
114
|
+
bananaFPC,
|
|
115
|
+
sponsoredFPC
|
|
116
|
+
] : [],
|
|
117
|
+
...prefundAddresses
|
|
118
|
+
];
|
|
103
119
|
const { genesisArchiveRoot, prefilledPublicData, fundingNeeded } = await getGenesisValues(fundedAddresses);
|
|
104
|
-
let watcher = undefined;
|
|
105
120
|
const dateProvider = new TestDateProvider();
|
|
121
|
+
let cheatcodes;
|
|
122
|
+
let rollupAddress;
|
|
123
|
+
let watcher;
|
|
106
124
|
if (!aztecNodeConfig.p2pEnabled) {
|
|
107
|
-
|
|
108
|
-
assumeProvenThroughBlockNumber: Number.MAX_SAFE_INTEGER,
|
|
125
|
+
({ rollupAddress } = await deployContractsToL1(aztecNodeConfig, aztecNodeConfig.validatorPrivateKeys.getValue()[0], {
|
|
109
126
|
genesisArchiveRoot,
|
|
110
127
|
feeJuicePortalInitialBalance: fundingNeeded
|
|
111
|
-
});
|
|
128
|
+
}));
|
|
112
129
|
const chain = aztecNodeConfig.l1RpcUrls.length > 0 ? createEthereumChain([
|
|
113
130
|
l1RpcUrl
|
|
114
131
|
], aztecNodeConfig.l1ChainId) : {
|
|
@@ -120,10 +137,12 @@ const localAnvil = foundry;
|
|
|
120
137
|
httpViemTransport(l1RpcUrl)
|
|
121
138
|
])
|
|
122
139
|
});
|
|
123
|
-
|
|
140
|
+
cheatcodes = new EthCheatCodes([
|
|
124
141
|
l1RpcUrl
|
|
125
|
-
], dateProvider)
|
|
142
|
+
], dateProvider);
|
|
143
|
+
watcher = new AnvilTestWatcher(cheatcodes, rollupAddress, publicClient, dateProvider);
|
|
126
144
|
watcher.setisLocalNetwork(true);
|
|
145
|
+
watcher.setIsMarkingAsProven(false); // Do not mark as proven in the watcher. It's marked in the epochTestSettler after the out hash is set.
|
|
127
146
|
await watcher.start();
|
|
128
147
|
}
|
|
129
148
|
const telemetry = await initTelemetryClient(getTelemetryClientConfig());
|
|
@@ -136,18 +155,37 @@ const localAnvil = foundry;
|
|
|
136
155
|
}, {
|
|
137
156
|
prefilledPublicData
|
|
138
157
|
});
|
|
158
|
+
// Now that the node is up, let the watcher check for pending txs so it can skip unfilled slots faster when
|
|
159
|
+
// transactions are waiting in the mempool. Also let it check if the sequencer is actively building, to avoid
|
|
160
|
+
// warping time out from under an in-progress block.
|
|
161
|
+
watcher?.setGetPendingTxCount(()=>node.getPendingTxCount());
|
|
162
|
+
const sequencer = node.getSequencer()?.getSequencer();
|
|
163
|
+
if (sequencer) {
|
|
164
|
+
const idleStates = new Set([
|
|
165
|
+
SequencerState.STOPPED,
|
|
166
|
+
SequencerState.STOPPING,
|
|
167
|
+
SequencerState.IDLE,
|
|
168
|
+
SequencerState.SYNCHRONIZING
|
|
169
|
+
]);
|
|
170
|
+
watcher?.setIsSequencerBuilding(()=>!idleStates.has(sequencer.getState()));
|
|
171
|
+
}
|
|
172
|
+
let epochTestSettler;
|
|
173
|
+
if (!aztecNodeConfig.p2pEnabled) {
|
|
174
|
+
epochTestSettler = new EpochTestSettler(cheatcodes, rollupAddress, node.getBlockSource(), logger.createChild('epoch-settler'), {
|
|
175
|
+
pollingIntervalMs: 200
|
|
176
|
+
});
|
|
177
|
+
await epochTestSettler.start();
|
|
178
|
+
}
|
|
139
179
|
if (initialAccounts.length) {
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
180
|
+
const wallet = await EmbeddedWallet.create(node, {
|
|
181
|
+
pxeConfig: {
|
|
182
|
+
proverEnabled: aztecNodeConfig.realProofs
|
|
183
|
+
},
|
|
184
|
+
ephemeral: true
|
|
185
|
+
});
|
|
144
186
|
userLog('Setting up funded test accounts...');
|
|
145
|
-
const accountManagers = await deployFundedSchnorrAccounts(wallet,
|
|
146
|
-
const
|
|
147
|
-
account: manager,
|
|
148
|
-
secretKey: initialAccounts[i].secret
|
|
149
|
-
}));
|
|
150
|
-
const accLogs = await createAccountLogs(accountsWithSecrets, wallet);
|
|
187
|
+
const accountManagers = await deployFundedSchnorrAccounts(wallet, initialAccounts);
|
|
188
|
+
const accLogs = await createAccountLogs(accountManagers, wallet);
|
|
151
189
|
userLog(accLogs.join(''));
|
|
152
190
|
await setupBananaFPC(initialAccounts, wallet, userLog);
|
|
153
191
|
userLog(`SponsoredFPC: ${await getSponsoredFPCAddress()}`);
|
|
@@ -157,6 +195,7 @@ const localAnvil = foundry;
|
|
|
157
195
|
const stop = async ()=>{
|
|
158
196
|
await node.stop();
|
|
159
197
|
await watcher?.stop();
|
|
198
|
+
await epochTestSettler?.stop();
|
|
160
199
|
};
|
|
161
200
|
return {
|
|
162
201
|
node,
|
|
@@ -177,6 +216,11 @@ const localAnvil = foundry;
|
|
|
177
216
|
...config.l1Contracts
|
|
178
217
|
}
|
|
179
218
|
};
|
|
180
|
-
const node = await AztecNodeService.createAndSync(aztecNodeConfig,
|
|
219
|
+
const node = await AztecNodeService.createAndSync(aztecNodeConfig, {
|
|
220
|
+
...deps,
|
|
221
|
+
proverNodeDeps: {
|
|
222
|
+
broker: deps.proverBroker
|
|
223
|
+
}
|
|
224
|
+
}, options);
|
|
181
225
|
return node;
|
|
182
226
|
}
|
|
@@ -21,14 +21,22 @@ export declare class AnvilTestWatcher {
|
|
|
21
21
|
private markingAsProvenRunningPromise?;
|
|
22
22
|
private logger;
|
|
23
23
|
private isMarkingAsProven;
|
|
24
|
+
private getPendingTxCount?;
|
|
25
|
+
private isSequencerBuilding?;
|
|
26
|
+
private unfilledSlotFirstSeen?;
|
|
24
27
|
constructor(cheatcodes: EthCheatCodes, rollupAddress: EthAddress, l1Client: ViemClient, dateProvider?: TestDateProvider | undefined);
|
|
25
28
|
setIsMarkingAsProven(isMarkingAsProven: boolean): void;
|
|
26
29
|
setisLocalNetwork(isLocalNetwork: boolean): void;
|
|
30
|
+
/** Sets a callback to check for pending txs, used to skip unfilled slots faster when txs are waiting. */
|
|
31
|
+
setGetPendingTxCount(fn: () => Promise<number>): void;
|
|
32
|
+
/** Sets a callback to check if the sequencer is actively building, to avoid warping while it works. */
|
|
33
|
+
setIsSequencerBuilding(fn: () => boolean): void;
|
|
27
34
|
start(): Promise<void>;
|
|
28
35
|
stop(): Promise<void>;
|
|
29
36
|
trigger(): Promise<void>;
|
|
30
37
|
markAsProven(): Promise<void>;
|
|
31
38
|
syncDateProviderToL1IfBehind(): Promise<void>;
|
|
32
39
|
warpTimeIfNeeded(): Promise<void>;
|
|
40
|
+
private warpToTimestamp;
|
|
33
41
|
}
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW52aWxfdGVzdF93YXRjaGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGluZy9hbnZpbF90ZXN0X3dhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBb0IsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RCxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUdoRSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBS2hFOzs7Ozs7R0FNRztBQUNILHFCQUFhLGdCQUFnQjtJQXlCekIsT0FBTyxDQUFDLFVBQVU7SUFHbEIsT0FBTyxDQUFDLFlBQVksQ0FBQztJQTNCdkIsT0FBTyxDQUFDLGNBQWMsQ0FBa0I7SUFFeEMsT0FBTyxDQUFDLE1BQU0sQ0FBc0Q7SUFDcEUsT0FBTyxDQUFDLGdCQUFnQixDQUFtQjtJQUMzQyxPQUFPLENBQUMsY0FBYyxDQUFVO0lBRWhDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFpQjtJQUM5QyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBaUI7SUFDakQsT0FBTyxDQUFDLDZCQUE2QixDQUFDLENBQWlCO0lBRXZELE9BQU8sQ0FBQyxNQUFNLENBQWlEO0lBRS9ELE9BQU8sQ0FBQyxpQkFBaUIsQ0FBUTtJQUdqQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBd0I7SUFHbEQsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQWdCO0lBRzVDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFxQztJQUVuRSxZQUNVLFVBQVUsRUFBRSxhQUFhLEVBQ2pDLGFBQWEsRUFBRSxVQUFVLEVBQ3pCLFFBQVEsRUFBRSxVQUFVLEVBQ1osWUFBWSxDQUFDLDhCQUFrQixFQWF4QztJQUVELG9CQUFvQixDQUFDLGlCQUFpQixFQUFFLE9BQU8sUUFHOUM7SUFFRCxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsT0FBTyxRQUV4QztJQUVELHlHQUF5RztJQUN6RyxvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsTUFBTSxPQUFPLENBQUMsTUFBTSxDQUFDLFFBRTdDO0lBRUQsdUdBQXVHO0lBQ3ZHLHNCQUFzQixDQUFDLEVBQUUsRUFBRSxNQUFNLE9BQU8sUUFFdkM7SUFFSyxLQUFLLGtCQXlCVjtJQUVLLElBQUksa0JBSVQ7SUFFSyxPQUFPLGtCQUlaO0lBRUssWUFBWSxrQkFLakI7SUFFSyw0QkFBNEIsa0JBZWpDO0lBRUssZ0JBQWdCLGtCQXlEckI7WUFFYSxlQUFlO0NBTzlCIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anvil_test_watcher.d.ts","sourceRoot":"","sources":["../../src/testing/anvil_test_watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAoB,MAAM,sBAAsB,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKhE;;;;;;GAMG;AACH,qBAAa,gBAAgB;
|
|
1
|
+
{"version":3,"file":"anvil_test_watcher.d.ts","sourceRoot":"","sources":["../../src/testing/anvil_test_watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAoB,MAAM,sBAAsB,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKhE;;;;;;GAMG;AACH,qBAAa,gBAAgB;IAyBzB,OAAO,CAAC,UAAU;IAGlB,OAAO,CAAC,YAAY,CAAC;IA3BvB,OAAO,CAAC,cAAc,CAAkB;IAExC,OAAO,CAAC,MAAM,CAAsD;IACpE,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,cAAc,CAAU;IAEhC,OAAO,CAAC,oBAAoB,CAAC,CAAiB;IAC9C,OAAO,CAAC,uBAAuB,CAAC,CAAiB;IACjD,OAAO,CAAC,6BAA6B,CAAC,CAAiB;IAEvD,OAAO,CAAC,MAAM,CAAiD;IAE/D,OAAO,CAAC,iBAAiB,CAAQ;IAGjC,OAAO,CAAC,iBAAiB,CAAC,CAAwB;IAGlD,OAAO,CAAC,mBAAmB,CAAC,CAAgB;IAG5C,OAAO,CAAC,qBAAqB,CAAC,CAAqC;IAEnE,YACU,UAAU,EAAE,aAAa,EACjC,aAAa,EAAE,UAAU,EACzB,QAAQ,EAAE,UAAU,EACZ,YAAY,CAAC,8BAAkB,EAaxC;IAED,oBAAoB,CAAC,iBAAiB,EAAE,OAAO,QAG9C;IAED,iBAAiB,CAAC,cAAc,EAAE,OAAO,QAExC;IAED,yGAAyG;IACzG,oBAAoB,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,QAE7C;IAED,uGAAuG;IACvG,sBAAsB,CAAC,EAAE,EAAE,MAAM,OAAO,QAEvC;IAEK,KAAK,kBAyBV;IAEK,IAAI,kBAIT;IAEK,OAAO,kBAIZ;IAEK,YAAY,kBAKjB;IAEK,4BAA4B,kBAejC;IAEK,gBAAgB,kBAyDrB;YAEa,eAAe;CAO9B"}
|