@aztec/aztec 4.0.0-devnet.2-patch.4 → 4.0.0-devnet.3-patch.1
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 +7 -3
- package/dest/cli/admin_api_key_store.d.ts +3 -3
- package/dest/cli/admin_api_key_store.d.ts.map +1 -1
- package/dest/cli/admin_api_key_store.js +3 -3
- 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 +13 -8
- package/dest/cli/aztec_start_options.js +5 -5
- package/dest/cli/cli.d.ts +1 -1
- package/dest/cli/cli.d.ts.map +1 -1
- package/dest/cli/cli.js +0 -1
- 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 +69 -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 +52 -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 +58 -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 +32 -0
- package/dest/cli/cmds/standby.d.ts.map +1 -0
- package/dest/cli/cmds/standby.js +97 -0
- 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 +24 -32
- 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 -15
- 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 +12 -6
- 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/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 +3 -5
- package/dest/cli/util.d.ts.map +1 -1
- package/dest/cli/util.js +37 -78
- package/dest/examples/token.js +4 -4
- package/dest/local-network/banana_fpc.js +1 -1
- package/dest/local-network/local-network.d.ts +1 -1
- package/dest/local-network/local-network.d.ts.map +1 -1
- package/dest/local-network/local-network.js +9 -1
- package/dest/testing/anvil_test_watcher.js +1 -1
- package/dest/testing/cheat_codes.js +1 -1
- package/dest/testing/epoch_test_settler.d.ts +1 -1
- package/dest/testing/epoch_test_settler.d.ts.map +1 -1
- package/dest/testing/epoch_test_settler.js +3 -4
- package/dest/testing/index.d.ts +2 -1
- package/dest/testing/index.d.ts.map +1 -1
- package/dest/testing/index.js +1 -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 +34 -34
- package/scripts/aztec.sh +6 -2
- package/src/bin/index.ts +7 -3
- package/src/cli/admin_api_key_store.ts +4 -4
- package/src/cli/aztec_start_action.ts +11 -8
- package/src/cli/aztec_start_options.ts +5 -5
- package/src/cli/cli.ts +0 -1
- package/src/cli/cmds/compile.ts +81 -0
- package/src/cli/cmds/profile.ts +25 -0
- package/src/cli/cmds/profile_flamegraph.ts +64 -0
- package/src/cli/cmds/profile_gates.ts +68 -0
- package/src/cli/cmds/profile_utils.ts +58 -0
- package/src/cli/cmds/standby.ts +132 -0
- package/src/cli/cmds/start_node.ts +39 -31
- package/src/cli/cmds/start_prover_agent.ts +3 -6
- package/src/cli/cmds/start_prover_broker.ts +14 -14
- package/src/cli/cmds/utils/artifacts.ts +44 -0
- package/src/cli/cmds/utils/spawn.ts +16 -0
- package/src/cli/util.ts +41 -74
- package/src/examples/token.ts +6 -4
- package/src/local-network/banana_fpc.ts +1 -1
- package/src/local-network/local-network.ts +6 -0
- package/src/testing/anvil_test_watcher.ts +1 -1
- package/src/testing/cheat_codes.ts +1 -1
- package/src/testing/epoch_test_settler.ts +3 -4
- package/src/testing/index.ts +1 -0
- package/src/testing/token_allowed_setup.ts +19 -0
- 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/src/cli/release_version.ts +0 -21
|
@@ -46,7 +46,7 @@ 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,
|
|
@@ -70,4 +70,4 @@ export declare function createAztecNode(config?: Partial<AztecNodeConfig>, deps?
|
|
|
70
70
|
}, options?: {
|
|
71
71
|
prefilledPublicData?: PublicDataTreeLeaf[];
|
|
72
72
|
}): Promise<AztecNodeService>;
|
|
73
|
-
//# 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;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;
|
|
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"}
|
|
@@ -30,6 +30,7 @@ import { createAccountLogs } from '../cli/util.js';
|
|
|
30
30
|
import { DefaultMnemonic } from '../mnemonic.js';
|
|
31
31
|
import { AnvilTestWatcher } from '../testing/anvil_test_watcher.js';
|
|
32
32
|
import { EpochTestSettler } from '../testing/epoch_test_settler.js';
|
|
33
|
+
import { getTokenAllowedSetupFunctions } from '../testing/token_allowed_setup.js';
|
|
33
34
|
import { getBananaFPCAddress, setupBananaFPC } from './banana_fpc.js';
|
|
34
35
|
import { getSponsoredFPCAddress } from './sponsored_fpc.js';
|
|
35
36
|
const logger = createLogger('local-network');
|
|
@@ -68,9 +69,16 @@ const localAnvil = foundry;
|
|
|
68
69
|
if ((config.l1RpcUrls?.length || 0) > 1) {
|
|
69
70
|
logger.warn(`Multiple L1 RPC URLs provided. Local networks will only use the first one: ${l1RpcUrl}`);
|
|
70
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();
|
|
71
75
|
const aztecNodeConfig = {
|
|
72
76
|
...getConfigEnvVars(),
|
|
73
|
-
...config
|
|
77
|
+
...config,
|
|
78
|
+
txPublicSetupAllowListExtend: [
|
|
79
|
+
...tokenAllowList,
|
|
80
|
+
...config.txPublicSetupAllowListExtend ?? []
|
|
81
|
+
]
|
|
74
82
|
};
|
|
75
83
|
const hdAccount = mnemonicToAccount(config.l1Mnemonic || DefaultMnemonic);
|
|
76
84
|
if (aztecNodeConfig.sequencerPublisherPrivateKeys == undefined || !aztecNodeConfig.sequencerPublisherPrivateKeys.length || aztecNodeConfig.sequencerPublisherPrivateKeys[0].getValue() === NULL_KEY) {
|
|
@@ -101,7 +101,7 @@ import { getAddress, getContract } from 'viem';
|
|
|
101
101
|
if (!this.dateProvider) {
|
|
102
102
|
return;
|
|
103
103
|
}
|
|
104
|
-
const l1Time = await this.cheatcodes.
|
|
104
|
+
const l1Time = await this.cheatcodes.lastBlockTimestamp() * 1000;
|
|
105
105
|
const wallTime = this.dateProvider.now();
|
|
106
106
|
if (l1Time > wallTime) {
|
|
107
107
|
this.logger.warn(`L1 is ahead of wall time. Syncing wall time to L1 time`);
|
|
@@ -55,7 +55,7 @@ import { retryUntil } from '@aztec/foundation/retry';
|
|
|
55
55
|
* @param node - The Aztec node used to query if a new block has been mined.
|
|
56
56
|
* @param duration - The duration to advance time by (in seconds)
|
|
57
57
|
*/ async warpL2TimeAtLeastBy(sequencerClient, node, duration) {
|
|
58
|
-
const currentTimestamp = await this.eth.
|
|
58
|
+
const currentTimestamp = await this.eth.lastBlockTimestamp();
|
|
59
59
|
const targetTimestamp = BigInt(currentTimestamp) + BigInt(duration);
|
|
60
60
|
await this.warpL2TimeAtLeastTo(sequencerClient, node, targetTimestamp);
|
|
61
61
|
}
|
|
@@ -16,4 +16,4 @@ export declare class EpochTestSettler {
|
|
|
16
16
|
stop(): Promise<void>;
|
|
17
17
|
handleEpochReadyToProve(epoch: EpochNumber): Promise<boolean>;
|
|
18
18
|
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2hfdGVzdF9zZXR0bGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGluZy9lcG9jaF90ZXN0X3NldHRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssYUFBYSxFQUFvQixNQUFNLHNCQUFzQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBYyxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdyRSxxQkFBYSxnQkFBZ0I7SUFPekIsT0FBTyxDQUFDLGFBQWE7SUFDckIsT0FBTyxDQUFDLEdBQUc7SUFDWCxPQUFPLENBQUMsT0FBTztJQVJqQixPQUFPLENBQUMsZ0JBQWdCLENBQW1CO0lBQzNDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBZTtJQUVwQyxZQUNFLFVBQVUsRUFBRSxhQUFhLEVBQ3pCLGFBQWEsRUFBRSxVQUFVLEVBQ2pCLGFBQWEsRUFBRSxhQUFhLEVBQzVCLEdBQUcsRUFBRSxNQUFNLEVBQ1gsT0FBTyxFQUFFO1FBQUUsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO1FBQUMsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFBO0tBQUUsRUFHeEU7SUFFSyxLQUFLLGtCQUlWO0lBRUssSUFBSSxrQkFFVDtJQUVLLHVCQUF1QixDQUFDLEtBQUssRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQW9DbEU7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epoch_test_settler.d.ts","sourceRoot":"","sources":["../../src/testing/epoch_test_settler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,KAAK,WAAW,EAAc,MAAM,iCAAiC,CAAC;AAC/E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGrE,qBAAa,gBAAgB;IAOzB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,OAAO;IARjB,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,YAAY,CAAC,CAAe;IAEpC,YACE,UAAU,EAAE,aAAa,EACzB,aAAa,EAAE,UAAU,EACjB,aAAa,EAAE,aAAa,EAC5B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,EAGxE;IAEK,KAAK,kBAIV;IAEK,IAAI,kBAET;IAEK,uBAAuB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"epoch_test_settler.d.ts","sourceRoot":"","sources":["../../src/testing/epoch_test_settler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,KAAK,WAAW,EAAc,MAAM,iCAAiC,CAAC;AAC/E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGrE,qBAAa,gBAAgB;IAOzB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,OAAO;IARjB,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,YAAY,CAAC,CAAe;IAEpC,YACE,UAAU,EAAE,aAAa,EACzB,aAAa,EAAE,UAAU,EACjB,aAAa,EAAE,aAAa,EAC5B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,EAGxE;IAEK,KAAK,kBAIV;IAEK,IAAI,kBAET;IAEK,uBAAuB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAoClE;CACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { RollupCheatCodes } from '@aztec/ethereum/test';
|
|
2
2
|
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
3
3
|
import { EpochMonitor } from '@aztec/prover-node';
|
|
4
|
-
import {
|
|
4
|
+
import { computeEpochOutHash } from '@aztec/stdlib/messaging';
|
|
5
5
|
export class EpochTestSettler {
|
|
6
6
|
l2BlockSource;
|
|
7
7
|
log;
|
|
@@ -44,9 +44,8 @@ export class EpochTestSettler {
|
|
|
44
44
|
}
|
|
45
45
|
messagesInEpoch[checkpointIndex].push(block.body.txEffects.map((txEffect)=>txEffect.l2ToL1Msgs));
|
|
46
46
|
}
|
|
47
|
-
const
|
|
48
|
-
if (
|
|
49
|
-
const { root: outHash } = computeL2ToL1MembershipWitnessFromMessagesInEpoch(messagesInEpoch, firstMessage);
|
|
47
|
+
const outHash = computeEpochOutHash(messagesInEpoch);
|
|
48
|
+
if (!outHash.isZero()) {
|
|
50
49
|
await this.rollupCheatCodes.insertOutbox(epoch, outHash.toBigInt());
|
|
51
50
|
} else {
|
|
52
51
|
this.log.info(`No L2 to L1 messages in epoch ${epoch}`);
|
package/dest/testing/index.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ export { AnvilTestWatcher } from './anvil_test_watcher.js';
|
|
|
2
2
|
export { EthCheatCodes, RollupCheatCodes } from '@aztec/ethereum/test';
|
|
3
3
|
export { CheatCodes } from './cheat_codes.js';
|
|
4
4
|
export { EpochTestSettler } from './epoch_test_settler.js';
|
|
5
|
-
|
|
5
|
+
export { getTokenAllowedSetupFunctions } from './token_allowed_setup.js';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0aW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMEJBQTBCLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC"}
|
package/dest/testing/index.js
CHANGED
|
@@ -2,3 +2,4 @@ export { AnvilTestWatcher } from './anvil_test_watcher.js';
|
|
|
2
2
|
export { EthCheatCodes, RollupCheatCodes } from '@aztec/ethereum/test';
|
|
3
3
|
export { CheatCodes } from './cheat_codes.js';
|
|
4
4
|
export { EpochTestSettler } from './epoch_test_settler.js';
|
|
5
|
+
export { getTokenAllowedSetupFunctions } from './token_allowed_setup.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AllowedElement } from '@aztec/stdlib/interfaces/server';
|
|
2
|
+
/**
|
|
3
|
+
* Returns Token-specific allowlist entries needed for FPC-based fee payments.
|
|
4
|
+
* These are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getTokenAllowedSetupFunctions(): Promise<AllowedElement[]>;
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fYWxsb3dlZF9zZXR1cC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3RpbmcvdG9rZW5fYWxsb3dlZF9zZXR1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUV0RTs7O0dBR0c7QUFDSCx3QkFBc0IsNkJBQTZCLElBQUksT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBUy9FIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token_allowed_setup.d.ts","sourceRoot":"","sources":["../../src/testing/token_allowed_setup.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE;;;GAGG;AACH,wBAAsB,6BAA6B,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAS/E"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { TokenContractArtifact } from '@aztec/noir-contracts.js/Token';
|
|
2
|
+
import { buildAllowedElement } from '@aztec/p2p/msg_validators';
|
|
3
|
+
import { getContractClassFromArtifact } from '@aztec/stdlib/contract';
|
|
4
|
+
/**
|
|
5
|
+
* Returns Token-specific allowlist entries needed for FPC-based fee payments.
|
|
6
|
+
* These are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
|
|
7
|
+
*/ export async function getTokenAllowedSetupFunctions() {
|
|
8
|
+
const tokenClassId = (await getContractClassFromArtifact(TokenContractArtifact)).id;
|
|
9
|
+
const target = {
|
|
10
|
+
classId: tokenClassId
|
|
11
|
+
};
|
|
12
|
+
return Promise.all([
|
|
13
|
+
// Token: needed for private transfers via FPC (transfer_to_public enqueues this)
|
|
14
|
+
buildAllowedElement(TokenContractArtifact, target, '_increase_public_balance', {
|
|
15
|
+
onlySelf: true
|
|
16
|
+
}),
|
|
17
|
+
// Token: needed for public transfers via FPC (fee_entrypoint_public enqueues this)
|
|
18
|
+
buildAllowedElement(TokenContractArtifact, target, 'transfer_in_public')
|
|
19
|
+
]);
|
|
20
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/aztec",
|
|
3
|
-
"version": "4.0.0-devnet.
|
|
3
|
+
"version": "4.0.0-devnet.3-patch.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -28,39 +28,39 @@
|
|
|
28
28
|
"../package.common.json"
|
|
29
29
|
],
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@aztec/accounts": "4.0.0-devnet.
|
|
32
|
-
"@aztec/archiver": "4.0.0-devnet.
|
|
33
|
-
"@aztec/aztec-faucet": "4.0.0-devnet.
|
|
34
|
-
"@aztec/aztec-node": "4.0.0-devnet.
|
|
35
|
-
"@aztec/aztec.js": "4.0.0-devnet.
|
|
36
|
-
"@aztec/bb-prover": "4.0.0-devnet.
|
|
37
|
-
"@aztec/bb.js": "4.0.0-devnet.
|
|
38
|
-
"@aztec/blob-client": "4.0.0-devnet.
|
|
39
|
-
"@aztec/bot": "4.0.0-devnet.
|
|
40
|
-
"@aztec/builder": "4.0.0-devnet.
|
|
41
|
-
"@aztec/cli": "4.0.0-devnet.
|
|
42
|
-
"@aztec/constants": "4.0.0-devnet.
|
|
43
|
-
"@aztec/entrypoints": "4.0.0-devnet.
|
|
44
|
-
"@aztec/ethereum": "4.0.0-devnet.
|
|
45
|
-
"@aztec/foundation": "4.0.0-devnet.
|
|
46
|
-
"@aztec/kv-store": "4.0.0-devnet.
|
|
47
|
-
"@aztec/l1-artifacts": "4.0.0-devnet.
|
|
48
|
-
"@aztec/node-lib": "4.0.0-devnet.
|
|
49
|
-
"@aztec/noir-contracts.js": "4.0.0-devnet.
|
|
50
|
-
"@aztec/noir-protocol-circuits-types": "4.0.0-devnet.
|
|
51
|
-
"@aztec/p2p": "4.0.0-devnet.
|
|
52
|
-
"@aztec/p2p-bootstrap": "4.0.0-devnet.
|
|
53
|
-
"@aztec/protocol-contracts": "4.0.0-devnet.
|
|
54
|
-
"@aztec/prover-client": "4.0.0-devnet.
|
|
55
|
-
"@aztec/prover-node": "4.0.0-devnet.
|
|
56
|
-
"@aztec/pxe": "4.0.0-devnet.
|
|
57
|
-
"@aztec/sequencer-client": "4.0.0-devnet.
|
|
58
|
-
"@aztec/stdlib": "4.0.0-devnet.
|
|
59
|
-
"@aztec/telemetry-client": "4.0.0-devnet.
|
|
60
|
-
"@aztec/txe": "4.0.0-devnet.
|
|
61
|
-
"@aztec/validator-ha-signer": "4.0.0-devnet.
|
|
62
|
-
"@aztec/wallets": "4.0.0-devnet.
|
|
63
|
-
"@aztec/world-state": "4.0.0-devnet.
|
|
31
|
+
"@aztec/accounts": "4.0.0-devnet.3-patch.1",
|
|
32
|
+
"@aztec/archiver": "4.0.0-devnet.3-patch.1",
|
|
33
|
+
"@aztec/aztec-faucet": "4.0.0-devnet.3-patch.1",
|
|
34
|
+
"@aztec/aztec-node": "4.0.0-devnet.3-patch.1",
|
|
35
|
+
"@aztec/aztec.js": "4.0.0-devnet.3-patch.1",
|
|
36
|
+
"@aztec/bb-prover": "4.0.0-devnet.3-patch.1",
|
|
37
|
+
"@aztec/bb.js": "4.0.0-devnet.3-patch.1",
|
|
38
|
+
"@aztec/blob-client": "4.0.0-devnet.3-patch.1",
|
|
39
|
+
"@aztec/bot": "4.0.0-devnet.3-patch.1",
|
|
40
|
+
"@aztec/builder": "4.0.0-devnet.3-patch.1",
|
|
41
|
+
"@aztec/cli": "4.0.0-devnet.3-patch.1",
|
|
42
|
+
"@aztec/constants": "4.0.0-devnet.3-patch.1",
|
|
43
|
+
"@aztec/entrypoints": "4.0.0-devnet.3-patch.1",
|
|
44
|
+
"@aztec/ethereum": "4.0.0-devnet.3-patch.1",
|
|
45
|
+
"@aztec/foundation": "4.0.0-devnet.3-patch.1",
|
|
46
|
+
"@aztec/kv-store": "4.0.0-devnet.3-patch.1",
|
|
47
|
+
"@aztec/l1-artifacts": "4.0.0-devnet.3-patch.1",
|
|
48
|
+
"@aztec/node-lib": "4.0.0-devnet.3-patch.1",
|
|
49
|
+
"@aztec/noir-contracts.js": "4.0.0-devnet.3-patch.1",
|
|
50
|
+
"@aztec/noir-protocol-circuits-types": "4.0.0-devnet.3-patch.1",
|
|
51
|
+
"@aztec/p2p": "4.0.0-devnet.3-patch.1",
|
|
52
|
+
"@aztec/p2p-bootstrap": "4.0.0-devnet.3-patch.1",
|
|
53
|
+
"@aztec/protocol-contracts": "4.0.0-devnet.3-patch.1",
|
|
54
|
+
"@aztec/prover-client": "4.0.0-devnet.3-patch.1",
|
|
55
|
+
"@aztec/prover-node": "4.0.0-devnet.3-patch.1",
|
|
56
|
+
"@aztec/pxe": "4.0.0-devnet.3-patch.1",
|
|
57
|
+
"@aztec/sequencer-client": "4.0.0-devnet.3-patch.1",
|
|
58
|
+
"@aztec/stdlib": "4.0.0-devnet.3-patch.1",
|
|
59
|
+
"@aztec/telemetry-client": "4.0.0-devnet.3-patch.1",
|
|
60
|
+
"@aztec/txe": "4.0.0-devnet.3-patch.1",
|
|
61
|
+
"@aztec/validator-ha-signer": "4.0.0-devnet.3-patch.1",
|
|
62
|
+
"@aztec/wallets": "4.0.0-devnet.3-patch.1",
|
|
63
|
+
"@aztec/world-state": "4.0.0-devnet.3-patch.1",
|
|
64
64
|
"@types/chalk": "^2.2.0",
|
|
65
65
|
"abitype": "^0.8.11",
|
|
66
66
|
"chalk": "^5.3.0",
|
package/scripts/aztec.sh
CHANGED
|
@@ -21,7 +21,7 @@ function aztec {
|
|
|
21
21
|
|
|
22
22
|
case $cmd in
|
|
23
23
|
test)
|
|
24
|
-
export LOG_LEVEL="${LOG_LEVEL:-error}"
|
|
24
|
+
export LOG_LEVEL="${LOG_LEVEL:-"error;trace:contract"}"
|
|
25
25
|
aztec start --txe --port 8081 &
|
|
26
26
|
server_pid=$!
|
|
27
27
|
trap 'kill $server_pid &>/dev/null || true' EXIT
|
|
@@ -54,9 +54,13 @@ case $cmd in
|
|
|
54
54
|
|
|
55
55
|
aztec start "$@"
|
|
56
56
|
;;
|
|
57
|
-
|
|
57
|
+
new|init)
|
|
58
58
|
$script_dir/${cmd}.sh "$@"
|
|
59
59
|
;;
|
|
60
|
+
flamegraph)
|
|
61
|
+
echo "Warning: 'aztec flamegraph' is deprecated. Use 'aztec profile flamegraph' instead." >&2
|
|
62
|
+
aztec profile flamegraph "$@"
|
|
63
|
+
;;
|
|
60
64
|
*)
|
|
61
65
|
aztec $cmd "$@"
|
|
62
66
|
;;
|
package/src/bin/index.ts
CHANGED
|
@@ -11,12 +11,14 @@ import { injectCommands as injectMiscCommands } from '@aztec/cli/misc';
|
|
|
11
11
|
import { injectCommands as injectValidatorKeysCommands } from '@aztec/cli/validator_keys';
|
|
12
12
|
import { getActiveNetworkName } from '@aztec/foundation/config';
|
|
13
13
|
import { createConsoleLogger, createLogger } from '@aztec/foundation/log';
|
|
14
|
+
import { getPackageVersion } from '@aztec/stdlib/update-checker';
|
|
14
15
|
|
|
15
16
|
import { Command } from 'commander';
|
|
16
17
|
|
|
18
|
+
import { injectCompileCommand } from '../cli/cmds/compile.js';
|
|
17
19
|
import { injectMigrateCommand } from '../cli/cmds/migrate_ha_db.js';
|
|
20
|
+
import { injectProfileCommand } from '../cli/cmds/profile.js';
|
|
18
21
|
import { injectAztecCommands } from '../cli/index.js';
|
|
19
|
-
import { getCliVersion } from '../cli/release_version.js';
|
|
20
22
|
|
|
21
23
|
const NETWORK_FLAG = 'network';
|
|
22
24
|
|
|
@@ -45,9 +47,9 @@ async function main() {
|
|
|
45
47
|
await enrichEnvironmentWithNetworkConfig(networkName);
|
|
46
48
|
enrichEnvironmentWithChainName(networkName);
|
|
47
49
|
|
|
48
|
-
const cliVersion =
|
|
50
|
+
const cliVersion = getPackageVersion() ?? 'unknown';
|
|
49
51
|
let program = new Command('aztec');
|
|
50
|
-
program.description('Aztec command line interface').version(cliVersion);
|
|
52
|
+
program.description('Aztec command line interface').version(cliVersion).enablePositionalOptions();
|
|
51
53
|
program = injectAztecCommands(program, userLog, debugLogger);
|
|
52
54
|
program = injectBuilderCommands(program);
|
|
53
55
|
program = injectContractCommands(program, userLog, debugLogger);
|
|
@@ -56,6 +58,8 @@ async function main() {
|
|
|
56
58
|
program = injectAztecNodeCommands(program, userLog, debugLogger);
|
|
57
59
|
program = injectMiscCommands(program, userLog);
|
|
58
60
|
program = injectValidatorKeysCommands(program, userLog);
|
|
61
|
+
program = injectCompileCommand(program, userLog);
|
|
62
|
+
program = injectProfileCommand(program, userLog);
|
|
59
63
|
program = injectMigrateCommand(program, userLog);
|
|
60
64
|
|
|
61
65
|
await program.parseAsync(process.argv);
|
|
@@ -28,7 +28,7 @@ export interface ResolveAdminApiKeyOptions {
|
|
|
28
28
|
/** SHA-256 hex hash of a pre-generated API key. When set, the node uses this hash directly. */
|
|
29
29
|
adminApiKeyHash?: string;
|
|
30
30
|
/** If true, disable admin API key auth entirely. */
|
|
31
|
-
|
|
31
|
+
disableAdminApiKey?: boolean;
|
|
32
32
|
/** If true, force-generate a new key even if one is already persisted. */
|
|
33
33
|
resetAdminApiKey?: boolean;
|
|
34
34
|
/** Root data directory for persistent storage. */
|
|
@@ -39,7 +39,7 @@ export interface ResolveAdminApiKeyOptions {
|
|
|
39
39
|
* Resolves the admin API key for the admin RPC endpoint.
|
|
40
40
|
*
|
|
41
41
|
* Strategy:
|
|
42
|
-
* 1. If opt-out flag is set (`
|
|
42
|
+
* 1. If opt-out flag is set (`disableAdminApiKey`), return undefined (no auth).
|
|
43
43
|
* 2. If a pre-generated hash is provided (`adminApiKeyHash`), use it directly.
|
|
44
44
|
* 3. If a data directory exists, look for a persisted hash file
|
|
45
45
|
* at `<dataDirectory>/admin/api_key_hash`:
|
|
@@ -58,8 +58,8 @@ export async function resolveAdminApiKey(
|
|
|
58
58
|
log: Logger,
|
|
59
59
|
): Promise<AdminApiKeyResolution | undefined> {
|
|
60
60
|
// Operator explicitly opted out of admin auth
|
|
61
|
-
if (options.
|
|
62
|
-
log.warn('Admin API key authentication is DISABLED (--
|
|
61
|
+
if (options.disableAdminApiKey) {
|
|
62
|
+
log.warn('Admin API key authentication is DISABLED (--disable-admin-api-key / AZTEC_DISABLE_ADMIN_API_KEY)');
|
|
63
63
|
return undefined;
|
|
64
64
|
}
|
|
65
65
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getActiveNetworkName } from '@aztec/foundation/config';
|
|
1
2
|
import {
|
|
2
3
|
type NamespacedApiHandlers,
|
|
3
4
|
createNamespacedSafeJsonRpcServer,
|
|
@@ -7,13 +8,13 @@ import {
|
|
|
7
8
|
import type { LogFn, Logger } from '@aztec/foundation/log';
|
|
8
9
|
import type { ChainConfig } from '@aztec/stdlib/config';
|
|
9
10
|
import { AztecNodeApiSchema } from '@aztec/stdlib/interfaces/client';
|
|
11
|
+
import { getPackageVersion } from '@aztec/stdlib/update-checker';
|
|
10
12
|
import { getVersioningMiddleware } from '@aztec/stdlib/versioning';
|
|
11
13
|
import { getOtelJsonRpcPropagationMiddleware } from '@aztec/telemetry-client';
|
|
12
14
|
|
|
13
15
|
import { createLocalNetwork } from '../local-network/index.js';
|
|
14
16
|
import { github, splash } from '../splash.js';
|
|
15
17
|
import { resolveAdminApiKey } from './admin_api_key_store.js';
|
|
16
|
-
import { getCliVersion } from './release_version.js';
|
|
17
18
|
import { extractNamespacedOptions, installSignalHandlers } from './util.js';
|
|
18
19
|
import { getVersions } from './versioning.js';
|
|
19
20
|
|
|
@@ -22,14 +23,14 @@ export async function aztecStart(options: any, userLog: LogFn, debugLogger: Logg
|
|
|
22
23
|
const signalHandlers: Array<() => Promise<void>> = [];
|
|
23
24
|
const services: NamespacedApiHandlers = {};
|
|
24
25
|
const adminServices: NamespacedApiHandlers = {};
|
|
26
|
+
const packageVersion = getPackageVersion();
|
|
25
27
|
let config: ChainConfig | undefined = undefined;
|
|
26
28
|
|
|
27
29
|
if (options.localNetwork) {
|
|
28
|
-
const cliVersion = getCliVersion();
|
|
29
30
|
const localNetwork = extractNamespacedOptions(options, 'local-network');
|
|
30
31
|
localNetwork.testAccounts = true;
|
|
31
32
|
userLog(`${splash}\n${github}\n\n`);
|
|
32
|
-
userLog(`Setting up Aztec local network ${
|
|
33
|
+
userLog(`Setting up Aztec local network ${packageVersion ?? 'unknown'}, please stand by...`);
|
|
33
34
|
|
|
34
35
|
const { node, stop } = await createLocalNetwork(
|
|
35
36
|
{
|
|
@@ -57,7 +58,8 @@ export async function aztecStart(options: any, userLog: LogFn, debugLogger: Logg
|
|
|
57
58
|
|
|
58
59
|
if (options.node) {
|
|
59
60
|
const { startNode } = await import('./cmds/start_node.js');
|
|
60
|
-
|
|
61
|
+
const networkName = getActiveNetworkName(options.network);
|
|
62
|
+
({ config } = await startNode(options, signalHandlers, services, adminServices, userLog, networkName));
|
|
61
63
|
} else if (options.bot) {
|
|
62
64
|
const { startBot } = await import('./cmds/start_bot.js');
|
|
63
65
|
await startBot(options, signalHandlers, services, userLog);
|
|
@@ -87,13 +89,14 @@ export async function aztecStart(options: any, userLog: LogFn, debugLogger: Logg
|
|
|
87
89
|
|
|
88
90
|
installSignalHandlers(debugLogger.info, signalHandlers);
|
|
89
91
|
const versions = getVersions(config);
|
|
92
|
+
const versioningOpts = { packageVersion };
|
|
90
93
|
|
|
91
94
|
// Start the main JSON-RPC server
|
|
92
95
|
if (Object.entries(services).length > 0) {
|
|
93
96
|
const rpcServer = createNamespacedSafeJsonRpcServer(services, {
|
|
94
97
|
http200OnError: false,
|
|
95
98
|
log: debugLogger,
|
|
96
|
-
middlewares: [getOtelJsonRpcPropagationMiddleware(), getVersioningMiddleware(versions)],
|
|
99
|
+
middlewares: [getOtelJsonRpcPropagationMiddleware(), getVersioningMiddleware(versions, versioningOpts)],
|
|
97
100
|
maxBatchSize: options.rpcMaxBatchSize,
|
|
98
101
|
maxBodySizeBytes: options.rpcMaxBodySize,
|
|
99
102
|
});
|
|
@@ -103,13 +106,13 @@ export async function aztecStart(options: any, userLog: LogFn, debugLogger: Logg
|
|
|
103
106
|
|
|
104
107
|
// If there are any admin services, start a separate JSON-RPC server for them
|
|
105
108
|
if (Object.entries(adminServices).length > 0) {
|
|
106
|
-
const adminMiddlewares = [getOtelJsonRpcPropagationMiddleware(), getVersioningMiddleware(versions)];
|
|
109
|
+
const adminMiddlewares = [getOtelJsonRpcPropagationMiddleware(), getVersioningMiddleware(versions, versioningOpts)];
|
|
107
110
|
|
|
108
111
|
// Resolve the admin API key (auto-generated and persisted, or opt-out)
|
|
109
112
|
const apiKeyResolution = await resolveAdminApiKey(
|
|
110
113
|
{
|
|
111
114
|
adminApiKeyHash: options.adminApiKeyHash,
|
|
112
|
-
|
|
115
|
+
disableAdminApiKey: options.disableAdminApiKey,
|
|
113
116
|
resetAdminApiKey: options.resetAdminApiKey,
|
|
114
117
|
dataDirectory: options.dataDirectory,
|
|
115
118
|
},
|
|
@@ -148,7 +151,7 @@ export async function aztecStart(options: any, userLog: LogFn, debugLogger: Logg
|
|
|
148
151
|
userLog(' The key hash has been persisted — on next restart, the same key will be used.');
|
|
149
152
|
}
|
|
150
153
|
userLog('');
|
|
151
|
-
userLog(' To disable admin auth: --
|
|
154
|
+
userLog(' To disable admin auth: --disable-admin-api-key or AZTEC_DISABLE_ADMIN_API_KEY=true');
|
|
152
155
|
userLog(separator);
|
|
153
156
|
userLog('');
|
|
154
157
|
}
|
|
@@ -105,8 +105,7 @@ export const aztecStartOptions: { [key: string]: AztecStartOption[] } = {
|
|
|
105
105
|
env: 'NETWORK',
|
|
106
106
|
},
|
|
107
107
|
|
|
108
|
-
configToFlag('--
|
|
109
|
-
configToFlag('--auto-update-url', sharedNodeConfigMappings.autoUpdateUrl),
|
|
108
|
+
configToFlag('--enable-version-check', sharedNodeConfigMappings.enableVersionCheck),
|
|
110
109
|
|
|
111
110
|
configToFlag('--sync-mode', sharedNodeConfigMappings.syncMode),
|
|
112
111
|
configToFlag('--snapshots-urls', sharedNodeConfigMappings.snapshotsUrls),
|
|
@@ -150,12 +149,13 @@ export const aztecStartOptions: { [key: string]: AztecStartOption[] } = {
|
|
|
150
149
|
env: 'AZTEC_ADMIN_API_KEY_HASH',
|
|
151
150
|
},
|
|
152
151
|
{
|
|
153
|
-
flag: '--
|
|
152
|
+
flag: '--disable-admin-api-key',
|
|
154
153
|
description:
|
|
155
154
|
'Disable API key authentication on the admin RPC endpoint. By default, a key is auto-generated, displayed once, and its hash is persisted.',
|
|
156
155
|
defaultValue: false,
|
|
157
|
-
env: '
|
|
158
|
-
|
|
156
|
+
env: 'AZTEC_DISABLE_ADMIN_API_KEY',
|
|
157
|
+
// undefined means the flag was passed without a value (boolean toggle), treat as true.
|
|
158
|
+
parseVal: val => val === undefined || val === 'true' || val === '1',
|
|
159
159
|
},
|
|
160
160
|
{
|
|
161
161
|
flag: '--reset-admin-api-key',
|
package/src/cli/cli.ts
CHANGED
|
@@ -39,7 +39,6 @@ Additional commands:
|
|
|
39
39
|
|
|
40
40
|
init [folder] [options] creates a new Aztec Noir project.
|
|
41
41
|
new <path> [options] creates a new Aztec Noir project in a new directory.
|
|
42
|
-
compile [options] compiles Aztec Noir contracts.
|
|
43
42
|
test [options] starts a TXE and runs "nargo test" using it as the oracle resolver.
|
|
44
43
|
`,
|
|
45
44
|
);
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { findBbBinary } from '@aztec/bb.js';
|
|
2
|
+
import type { LogFn } from '@aztec/foundation/log';
|
|
3
|
+
|
|
4
|
+
import { execFileSync } from 'child_process';
|
|
5
|
+
import type { Command } from 'commander';
|
|
6
|
+
import { readFile, writeFile } from 'fs/promises';
|
|
7
|
+
|
|
8
|
+
import { readArtifactFiles } from './utils/artifacts.js';
|
|
9
|
+
import { run } from './utils/spawn.js';
|
|
10
|
+
|
|
11
|
+
/** Returns paths to contract artifacts in the target directory. */
|
|
12
|
+
async function collectContractArtifacts(): Promise<string[]> {
|
|
13
|
+
let files;
|
|
14
|
+
try {
|
|
15
|
+
files = await readArtifactFiles('target');
|
|
16
|
+
} catch (err: any) {
|
|
17
|
+
if (err?.message?.includes('does not exist')) {
|
|
18
|
+
return [];
|
|
19
|
+
}
|
|
20
|
+
throw err;
|
|
21
|
+
}
|
|
22
|
+
return files.filter(f => Array.isArray(f.content.functions)).map(f => f.filePath);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** Strips the `__aztec_nr_internals__` prefix from function names in contract artifacts. */
|
|
26
|
+
async function stripInternalPrefixes(artifactPaths: string[]): Promise<void> {
|
|
27
|
+
for (const path of artifactPaths) {
|
|
28
|
+
const artifact = JSON.parse(await readFile(path, 'utf-8'));
|
|
29
|
+
for (const fn of artifact.functions) {
|
|
30
|
+
if (typeof fn.name === 'string') {
|
|
31
|
+
fn.name = fn.name.replace(/^__aztec_nr_internals__/, '');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
await writeFile(path, JSON.stringify(artifact, null, 2) + '\n');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** Compiles Aztec Noir contracts and postprocesses artifacts. */
|
|
39
|
+
async function compileAztecContract(nargoArgs: string[], log: LogFn): Promise<void> {
|
|
40
|
+
const nargo = process.env.NARGO ?? 'nargo';
|
|
41
|
+
const bb = process.env.BB ?? findBbBinary() ?? 'bb';
|
|
42
|
+
|
|
43
|
+
await run(nargo, ['compile', ...nargoArgs]);
|
|
44
|
+
|
|
45
|
+
const artifacts = await collectContractArtifacts();
|
|
46
|
+
|
|
47
|
+
if (artifacts.length > 0) {
|
|
48
|
+
log('Postprocessing contracts...');
|
|
49
|
+
const bbArgs = artifacts.flatMap(a => ['-i', a]);
|
|
50
|
+
await run(bb, ['aztec_process', ...bbArgs]);
|
|
51
|
+
|
|
52
|
+
// TODO: This should be part of bb aztec_process!
|
|
53
|
+
await stripInternalPrefixes(artifacts);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
log('Compilation complete!');
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export function injectCompileCommand(program: Command, log: LogFn): Command {
|
|
60
|
+
program
|
|
61
|
+
.command('compile')
|
|
62
|
+
.argument('[nargo-args...]')
|
|
63
|
+
.passThroughOptions()
|
|
64
|
+
.allowUnknownOption()
|
|
65
|
+
.description(
|
|
66
|
+
'Compile Aztec Noir contracts using nargo and postprocess them to generate transpiled artifacts and verification keys. All options are forwarded to nargo compile.',
|
|
67
|
+
)
|
|
68
|
+
.addHelpText('after', () => {
|
|
69
|
+
// Show nargo's own compile options so users see all available flags in one place.
|
|
70
|
+
const nargo = process.env.NARGO ?? 'nargo';
|
|
71
|
+
try {
|
|
72
|
+
const output = execFileSync(nargo, ['compile', '--help'], { encoding: 'utf-8' });
|
|
73
|
+
return `\nUnderlying nargo compile options:\n\n${output}`;
|
|
74
|
+
} catch {
|
|
75
|
+
return '\n(Run "nargo compile --help" to see available nargo options)';
|
|
76
|
+
}
|
|
77
|
+
})
|
|
78
|
+
.action((nargoArgs: string[]) => compileAztecContract(nargoArgs, log));
|
|
79
|
+
|
|
80
|
+
return program;
|
|
81
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { LogFn } from '@aztec/foundation/log';
|
|
2
|
+
|
|
3
|
+
import type { Command } from 'commander';
|
|
4
|
+
|
|
5
|
+
import { profileFlamegraph } from './profile_flamegraph.js';
|
|
6
|
+
import { profileGates } from './profile_gates.js';
|
|
7
|
+
|
|
8
|
+
export function injectProfileCommand(program: Command, log: LogFn): Command {
|
|
9
|
+
const profile = program.command('profile').description('Profile compiled Aztec artifacts.');
|
|
10
|
+
|
|
11
|
+
profile
|
|
12
|
+
.command('gates')
|
|
13
|
+
.argument('[target-dir]', 'Path to the compiled artifacts directory', './target')
|
|
14
|
+
.description('Display gate counts for all compiled Aztec artifacts in a target directory.')
|
|
15
|
+
.action((targetDir: string) => profileGates(targetDir, log));
|
|
16
|
+
|
|
17
|
+
profile
|
|
18
|
+
.command('flamegraph')
|
|
19
|
+
.argument('<contract-artifact>', 'Path to the compiled contract artifact JSON')
|
|
20
|
+
.argument('<function>', 'Name of the contract function to profile')
|
|
21
|
+
.description('Generate a gate count flamegraph SVG for a contract function.')
|
|
22
|
+
.action((artifactPath: string, functionName: string) => profileFlamegraph(artifactPath, functionName, log));
|
|
23
|
+
|
|
24
|
+
return program;
|
|
25
|
+
}
|