@aztec/aztec 0.0.1-commit.c949de6bc → 0.0.1-commit.cbf2c2d5d

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.
Files changed (82) hide show
  1. package/dest/bin/index.js +2 -2
  2. package/dest/cli/aztec_start_action.d.ts +1 -1
  3. package/dest/cli/aztec_start_action.d.ts.map +1 -1
  4. package/dest/cli/aztec_start_action.js +16 -7
  5. package/dest/cli/aztec_start_options.d.ts +1 -1
  6. package/dest/cli/aztec_start_options.d.ts.map +1 -1
  7. package/dest/cli/aztec_start_options.js +2 -3
  8. package/dest/cli/cli.js +3 -3
  9. package/dest/cli/cmds/compile.d.ts +1 -1
  10. package/dest/cli/cmds/compile.d.ts.map +1 -1
  11. package/dest/cli/cmds/compile.js +7 -1
  12. package/dest/cli/cmds/profile_flamegraph.d.ts +1 -1
  13. package/dest/cli/cmds/profile_flamegraph.d.ts.map +1 -1
  14. package/dest/cli/cmds/profile_flamegraph.js +2 -1
  15. package/dest/cli/cmds/profile_gates.d.ts +1 -1
  16. package/dest/cli/cmds/profile_gates.d.ts.map +1 -1
  17. package/dest/cli/cmds/profile_gates.js +2 -1
  18. package/dest/cli/cmds/standby.d.ts +32 -0
  19. package/dest/cli/cmds/standby.d.ts.map +1 -0
  20. package/dest/cli/cmds/standby.js +97 -0
  21. package/dest/cli/cmds/start_archiver.d.ts +2 -2
  22. package/dest/cli/cmds/start_archiver.d.ts.map +1 -1
  23. package/dest/cli/cmds/start_archiver.js +1 -1
  24. package/dest/cli/cmds/start_node.d.ts +3 -2
  25. package/dest/cli/cmds/start_node.d.ts.map +1 -1
  26. package/dest/cli/cmds/start_node.js +21 -17
  27. package/dest/cli/cmds/start_prover_broker.d.ts +1 -1
  28. package/dest/cli/cmds/start_prover_broker.d.ts.map +1 -1
  29. package/dest/cli/cmds/start_prover_broker.js +12 -6
  30. package/dest/cli/cmds/utils/needs_recompile.d.ts +10 -0
  31. package/dest/cli/cmds/utils/needs_recompile.d.ts.map +1 -0
  32. package/dest/cli/cmds/utils/needs_recompile.js +134 -0
  33. package/dest/cli/util.d.ts +3 -5
  34. package/dest/cli/util.d.ts.map +1 -1
  35. package/dest/cli/util.js +37 -78
  36. package/dest/examples/token.js +4 -4
  37. package/dest/local-network/banana_fpc.js +1 -1
  38. package/dest/local-network/local-network.d.ts +1 -1
  39. package/dest/local-network/local-network.d.ts.map +1 -1
  40. package/dest/local-network/local-network.js +18 -5
  41. package/dest/testing/anvil_test_watcher.js +1 -1
  42. package/dest/testing/cheat_codes.js +1 -1
  43. package/dest/testing/epoch_test_settler.d.ts +1 -1
  44. package/dest/testing/epoch_test_settler.d.ts.map +1 -1
  45. package/dest/testing/epoch_test_settler.js +3 -4
  46. package/dest/testing/index.d.ts +2 -1
  47. package/dest/testing/index.d.ts.map +1 -1
  48. package/dest/testing/index.js +1 -0
  49. package/dest/testing/token_allowed_setup.d.ts +7 -0
  50. package/dest/testing/token_allowed_setup.d.ts.map +1 -0
  51. package/dest/testing/token_allowed_setup.js +20 -0
  52. package/package.json +34 -34
  53. package/scripts/add_crate.sh +102 -0
  54. package/scripts/aztec.sh +3 -0
  55. package/scripts/init.sh +15 -21
  56. package/scripts/new.sh +45 -22
  57. package/scripts/setup_workspace.sh +10 -66
  58. package/src/bin/index.ts +2 -2
  59. package/src/cli/aztec_start_action.ts +11 -7
  60. package/src/cli/aztec_start_options.ts +2 -3
  61. package/src/cli/cli.ts +3 -3
  62. package/src/cli/cmds/compile.ts +8 -1
  63. package/src/cli/cmds/profile_flamegraph.ts +2 -1
  64. package/src/cli/cmds/profile_gates.ts +2 -1
  65. package/src/cli/cmds/standby.ts +132 -0
  66. package/src/cli/cmds/start_archiver.ts +1 -1
  67. package/src/cli/cmds/start_node.ts +32 -24
  68. package/src/cli/cmds/start_prover_broker.ts +14 -14
  69. package/src/cli/cmds/utils/needs_recompile.ts +151 -0
  70. package/src/cli/util.ts +41 -74
  71. package/src/examples/token.ts +6 -4
  72. package/src/local-network/banana_fpc.ts +1 -1
  73. package/src/local-network/local-network.ts +13 -3
  74. package/src/testing/anvil_test_watcher.ts +1 -1
  75. package/src/testing/cheat_codes.ts +1 -1
  76. package/src/testing/epoch_test_settler.ts +3 -4
  77. package/src/testing/index.ts +1 -0
  78. package/src/testing/token_allowed_setup.ts +19 -0
  79. package/dest/cli/release_version.d.ts +0 -2
  80. package/dest/cli/release_version.d.ts.map +0 -1
  81. package/dest/cli/release_version.js +0 -14
  82. package/src/cli/release_version.ts +0 -21
@@ -19,6 +19,7 @@ import { DateProvider, TestDateProvider } from '@aztec/foundation/timer';
19
19
  import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
20
20
  import { protocolContractsHash } from '@aztec/protocol-contracts';
21
21
  import { SequencerState } from '@aztec/sequencer-client';
22
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
22
23
  import type { ProvingJobBroker } from '@aztec/stdlib/interfaces/server';
23
24
  import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
24
25
  import {
@@ -38,6 +39,7 @@ import { createAccountLogs } from '../cli/util.js';
38
39
  import { DefaultMnemonic } from '../mnemonic.js';
39
40
  import { AnvilTestWatcher } from '../testing/anvil_test_watcher.js';
40
41
  import { EpochTestSettler } from '../testing/epoch_test_settler.js';
42
+ import { getTokenAllowedSetupFunctions } from '../testing/token_allowed_setup.js';
41
43
  import { getBananaFPCAddress, setupBananaFPC } from './banana_fpc.js';
42
44
  import { getSponsoredFPCAddress } from './sponsored_fpc.js';
43
45
 
@@ -101,9 +103,14 @@ export async function createLocalNetwork(config: Partial<LocalNetworkConfig> = {
101
103
  logger.warn(`Multiple L1 RPC URLs provided. Local networks will only use the first one: ${l1RpcUrl}`);
102
104
  }
103
105
 
106
+ // The local network deploys a banana FPC with Token contracts, so include Token entries
107
+ // in the setup allowlist so FPC-based fee payments work out of the box.
108
+ const tokenAllowList = await getTokenAllowedSetupFunctions();
109
+
104
110
  const aztecNodeConfig: AztecNodeConfig = {
105
111
  ...getConfigEnvVars(),
106
112
  ...config,
113
+ txPublicSetupAllowListExtend: [...tokenAllowList, ...(config.txPublicSetupAllowListExtend ?? [])],
107
114
  };
108
115
  const hdAccount = mnemonicToAccount(config.l1Mnemonic || DefaultMnemonic);
109
116
  if (
@@ -138,9 +145,12 @@ export async function createLocalNetwork(config: Partial<LocalNetworkConfig> = {
138
145
 
139
146
  const bananaFPC = await getBananaFPCAddress(initialAccounts);
140
147
  const sponsoredFPC = await getSponsoredFPCAddress();
141
- const fundedAddresses = initialAccounts.length
142
- ? [...initialAccounts.map(a => a.address), bananaFPC, sponsoredFPC]
143
- : [];
148
+ const prefundAddresses = (aztecNodeConfig.prefundAddresses ?? []).map(a => AztecAddress.fromString(a));
149
+ const fundedAddresses = [
150
+ ...initialAccounts.map(a => a.address),
151
+ ...(initialAccounts.length ? [bananaFPC, sponsoredFPC] : []),
152
+ ...prefundAddresses,
153
+ ];
144
154
  const { genesisArchiveRoot, prefilledPublicData, fundingNeeded } = await getGenesisValues(fundedAddresses);
145
155
 
146
156
  const dateProvider = new TestDateProvider();
@@ -130,7 +130,7 @@ export class AnvilTestWatcher {
130
130
  return;
131
131
  }
132
132
 
133
- const l1Time = (await this.cheatcodes.timestamp()) * 1000;
133
+ const l1Time = (await this.cheatcodes.lastBlockTimestamp()) * 1000;
134
134
  const wallTime = this.dateProvider.now();
135
135
  if (l1Time > wallTime) {
136
136
  this.logger.warn(`L1 is ahead of wall time. Syncing wall time to L1 time`);
@@ -72,7 +72,7 @@ export class CheatCodes {
72
72
  * @param duration - The duration to advance time by (in seconds)
73
73
  */
74
74
  async warpL2TimeAtLeastBy(sequencerClient: SequencerClient, node: AztecNode, duration: bigint | number) {
75
- const currentTimestamp = await this.eth.timestamp();
75
+ const currentTimestamp = await this.eth.lastBlockTimestamp();
76
76
  const targetTimestamp = BigInt(currentTimestamp) + BigInt(duration);
77
77
  await this.warpL2TimeAtLeastTo(sequencerClient, node, targetTimestamp);
78
78
  }
@@ -4,7 +4,7 @@ import { type EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
4
4
  import type { Logger } from '@aztec/foundation/log';
5
5
  import { EpochMonitor } from '@aztec/prover-node';
6
6
  import type { EthAddress, L2BlockSource } from '@aztec/stdlib/block';
7
- import { computeL2ToL1MembershipWitnessFromMessagesInEpoch } from '@aztec/stdlib/messaging';
7
+ import { computeEpochOutHash } from '@aztec/stdlib/messaging';
8
8
 
9
9
  export class EpochTestSettler {
10
10
  private rollupCheatCodes: RollupCheatCodes;
@@ -51,9 +51,8 @@ export class EpochTestSettler {
51
51
  messagesInEpoch[checkpointIndex].push(block.body.txEffects.map(txEffect => txEffect.l2ToL1Msgs));
52
52
  }
53
53
 
54
- const [firstMessage] = messagesInEpoch.flat(3);
55
- if (firstMessage) {
56
- const { root: outHash } = computeL2ToL1MembershipWitnessFromMessagesInEpoch(messagesInEpoch, firstMessage);
54
+ const outHash = computeEpochOutHash(messagesInEpoch);
55
+ if (!outHash.isZero()) {
57
56
  await this.rollupCheatCodes.insertOutbox(epoch, outHash.toBigInt());
58
57
  } else {
59
58
  this.log.info(`No L2 to L1 messages in epoch ${epoch}`);
@@ -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,19 @@
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
+ import type { AllowedElement } from '@aztec/stdlib/interfaces/server';
5
+
6
+ /**
7
+ * Returns Token-specific allowlist entries needed for FPC-based fee payments.
8
+ * These are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
9
+ */
10
+ export async function getTokenAllowedSetupFunctions(): Promise<AllowedElement[]> {
11
+ const tokenClassId = (await getContractClassFromArtifact(TokenContractArtifact)).id;
12
+ const target = { classId: tokenClassId };
13
+ return Promise.all([
14
+ // Token: needed for private transfers via FPC (transfer_to_public enqueues this)
15
+ buildAllowedElement(TokenContractArtifact, target, '_increase_public_balance', { onlySelf: true }),
16
+ // Token: needed for public transfers via FPC (fee_entrypoint_public enqueues this)
17
+ buildAllowedElement(TokenContractArtifact, target, 'transfer_in_public'),
18
+ ]);
19
+ }
@@ -1,2 +0,0 @@
1
- export declare const getCliVersion: () => any;
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsZWFzZV92ZXJzaW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL3JlbGVhc2VfdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxlQUFPLE1BQU0sYUFBYSxXQWV6QixDQUFDIn0=
@@ -1 +0,0 @@
1
- {"version":3,"file":"release_version.d.ts","sourceRoot":"","sources":["../../src/cli/release_version.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,aAAa,WAezB,CAAC"}
@@ -1,14 +0,0 @@
1
- import { fileURLToPath } from '@aztec/foundation/url';
2
- import { readFileSync } from 'fs';
3
- import { dirname, resolve } from 'path';
4
- export const getCliVersion = ()=>{
5
- const packageJsonPath = resolve(dirname(fileURLToPath(import.meta.url)), '../../package.json');
6
- const cliVersion = JSON.parse(readFileSync(packageJsonPath).toString()).version;
7
- // If the version is 0.1.0, this is a placeholder version and we are in a docker container; query release please for the latest version
8
- if (cliVersion === '0.1.0') {
9
- const releasePleasePath = resolve(dirname(fileURLToPath(import.meta.url)), '../../../../.release-please-manifest.json');
10
- const releaseVersion = JSON.parse(readFileSync(releasePleasePath).toString())['.'];
11
- return releaseVersion;
12
- }
13
- return cliVersion;
14
- };
@@ -1,21 +0,0 @@
1
- import { fileURLToPath } from '@aztec/foundation/url';
2
-
3
- import { readFileSync } from 'fs';
4
- import { dirname, resolve } from 'path';
5
-
6
- export const getCliVersion = () => {
7
- const packageJsonPath = resolve(dirname(fileURLToPath(import.meta.url)), '../../package.json');
8
- const cliVersion: string = JSON.parse(readFileSync(packageJsonPath).toString()).version;
9
-
10
- // If the version is 0.1.0, this is a placeholder version and we are in a docker container; query release please for the latest version
11
- if (cliVersion === '0.1.0') {
12
- const releasePleasePath = resolve(
13
- dirname(fileURLToPath(import.meta.url)),
14
- '../../../../.release-please-manifest.json',
15
- );
16
- const releaseVersion = JSON.parse(readFileSync(releasePleasePath).toString())['.'];
17
- return releaseVersion;
18
- }
19
-
20
- return cliVersion;
21
- };