@aztec/aztec 0.0.0-test.0 → 0.0.1-commit.001888fc
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/README.md +1 -1
- package/dest/bin/index.d.ts +1 -1
- package/dest/bin/index.js +28 -13
- 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 +89 -44
- package/dest/cli/aztec_start_options.d.ts +5 -3
- package/dest/cli/aztec_start_options.d.ts.map +1 -1
- package/dest/cli/aztec_start_options.js +157 -220
- package/dest/cli/cli.d.ts +1 -1
- package/dest/cli/cli.d.ts.map +1 -1
- package/dest/cli/cli.js +11 -7
- 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 +166 -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 +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_archiver.d.ts +2 -2
- package/dest/cli/cmds/start_archiver.d.ts.map +1 -1
- package/dest/cli/cmds/start_archiver.js +25 -19
- package/dest/cli/cmds/start_bot.d.ts +4 -7
- package/dest/cli/cmds/start_bot.d.ts.map +1 -1
- package/dest/cli/cmds/start_bot.js +29 -14
- 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 +128 -85
- 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 +10 -6
- 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 +35 -6
- 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 +17 -5
- package/dest/cli/cmds/start_txe.d.ts +1 -1
- 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 +134 -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/index.d.ts +1 -1
- package/dest/cli/preload_crs.d.ts +3 -0
- package/dest/cli/preload_crs.d.ts.map +1 -0
- package/dest/cli/preload_crs.js +6 -0
- package/dest/cli/util.d.ts +37 -17
- package/dest/cli/util.d.ts.map +1 -1
- package/dest/cli/util.js +165 -31
- package/dest/cli/versioning.d.ts +1 -1
- package/dest/cli/versioning.js +3 -3
- package/dest/examples/token.d.ts +1 -1
- package/dest/examples/token.js +31 -18
- package/dest/examples/util.d.ts +5 -6
- package/dest/examples/util.d.ts.map +1 -1
- package/dest/examples/util.js +5 -6
- package/dest/index.d.ts +2 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -1
- package/dest/local-network/banana_fpc.d.ts +10 -0
- package/dest/local-network/banana_fpc.d.ts.map +1 -0
- package/dest/{sandbox → local-network}/banana_fpc.js +23 -25
- package/dest/local-network/index.d.ts +4 -0
- package/dest/local-network/index.d.ts.map +1 -0
- package/dest/local-network/index.js +3 -0
- package/dest/local-network/local-network.d.ts +73 -0
- package/dest/local-network/local-network.d.ts.map +1 -0
- package/dest/local-network/local-network.js +226 -0
- package/dest/local-network/sponsored_fpc.d.ts +5 -0
- package/dest/local-network/sponsored_fpc.d.ts.map +1 -0
- package/dest/local-network/sponsored_fpc.js +18 -0
- package/dest/mnemonic.d.ts +1 -1
- package/dest/splash.d.ts +1 -1
- package/dest/testing/anvil_test_watcher.d.ts +42 -0
- package/dest/testing/anvil_test_watcher.d.ts.map +1 -0
- package/dest/testing/anvil_test_watcher.js +181 -0
- package/dest/testing/cheat_codes.d.ts +43 -0
- package/dest/testing/cheat_codes.d.ts.map +1 -0
- package/dest/testing/cheat_codes.js +62 -0
- 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 +61 -0
- package/dest/testing/index.d.ts +6 -0
- package/dest/testing/index.d.ts.map +1 -0
- package/dest/testing/index.js +5 -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 +55 -45
- package/scripts/add_crate.sh +102 -0
- package/scripts/aztec.sh +69 -0
- package/scripts/init.sh +39 -0
- package/scripts/new.sh +83 -0
- package/scripts/setup_workspace.sh +68 -0
- package/src/bin/index.ts +33 -13
- package/src/cli/admin_api_key_store.ts +128 -0
- package/src/cli/aztec_start_action.ts +87 -41
- package/src/cli/aztec_start_options.ts +176 -218
- package/src/cli/cli.ts +19 -11
- package/src/cli/cmds/compile.ts +191 -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 +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_archiver.ts +16 -21
- package/src/cli/cmds/start_bot.ts +40 -14
- package/src/cli/cmds/start_node.ts +146 -91
- package/src/cli/cmds/start_p2p_bootstrap.ts +14 -6
- package/src/cli/cmds/start_prover_agent.ts +26 -14
- package/src/cli/cmds/start_prover_broker.ts +28 -4
- package/src/cli/cmds/utils/artifacts.ts +44 -0
- package/src/cli/cmds/utils/needs_recompile.ts +151 -0
- package/src/cli/cmds/utils/spawn.ts +16 -0
- package/src/cli/preload_crs.ts +7 -0
- package/src/cli/util.ts +186 -50
- package/src/cli/versioning.ts +3 -3
- package/src/examples/token.ts +23 -19
- package/src/examples/util.ts +6 -8
- package/src/index.ts +5 -6
- package/src/{sandbox → local-network}/banana_fpc.ts +28 -29
- package/src/local-network/index.ts +7 -0
- package/src/local-network/local-network.ts +277 -0
- package/src/local-network/sponsored_fpc.ts +26 -0
- package/src/testing/anvil_test_watcher.ts +210 -0
- package/src/testing/cheat_codes.ts +79 -0
- package/src/testing/epoch_test_settler.ts +70 -0
- package/src/testing/index.ts +5 -0
- package/src/testing/token_allowed_setup.ts +19 -0
- package/dest/cli/chain_l2_config.d.ts +0 -19
- package/dest/cli/chain_l2_config.d.ts.map +0 -1
- package/dest/cli/chain_l2_config.js +0 -56
- package/dest/cli/cmds/start_blob_sink.d.ts +0 -3
- package/dest/cli/cmds/start_blob_sink.d.ts.map +0 -1
- package/dest/cli/cmds/start_blob_sink.js +0 -17
- package/dest/cli/cmds/start_faucet.d.ts +0 -4
- package/dest/cli/cmds/start_faucet.d.ts.map +0 -1
- package/dest/cli/cmds/start_faucet.js +0 -20
- 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 -110
- package/dest/cli/cmds/start_pxe.d.ts +0 -16
- package/dest/cli/cmds/start_pxe.d.ts.map +0 -1
- package/dest/cli/cmds/start_pxe.js +0 -95
- package/dest/cli/get_l1_config.d.ts +0 -7
- package/dest/cli/get_l1_config.d.ts.map +0 -1
- package/dest/cli/get_l1_config.js +0 -13
- package/dest/sandbox/banana_fpc.d.ts +0 -11
- package/dest/sandbox/banana_fpc.d.ts.map +0 -1
- package/dest/sandbox/index.d.ts +0 -5
- package/dest/sandbox/index.d.ts.map +0 -1
- package/dest/sandbox/index.js +0 -4
- package/dest/sandbox/sandbox.d.ts +0 -76
- package/dest/sandbox/sandbox.d.ts.map +0 -1
- package/dest/sandbox/sandbox.js +0 -181
- package/dest/sandbox/sponsored_fee_payment_method.d.ts +0 -23
- package/dest/sandbox/sponsored_fee_payment_method.d.ts.map +0 -1
- package/dest/sandbox/sponsored_fee_payment_method.js +0 -36
- package/dest/sandbox/sponsored_fpc.d.ts +0 -6
- package/dest/sandbox/sponsored_fpc.d.ts.map +0 -1
- package/dest/sandbox/sponsored_fpc.js +0 -26
- package/src/cli/chain_l2_config.ts +0 -74
- package/src/cli/cmds/start_blob_sink.ts +0 -31
- package/src/cli/cmds/start_faucet.ts +0 -34
- package/src/cli/cmds/start_prover_node.ts +0 -121
- package/src/cli/cmds/start_pxe.ts +0 -129
- package/src/cli/get_l1_config.ts +0 -18
- package/src/sandbox/index.ts +0 -5
- package/src/sandbox/sandbox.ts +0 -229
- package/src/sandbox/sponsored_fee_payment_method.ts +0 -46
- package/src/sandbox/sponsored_fpc.ts +0 -38
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { EthCheatCodes, RollupCheatCodes } from '@aztec/ethereum/test';
|
|
2
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
3
|
+
import { retryUntil } from '@aztec/foundation/retry';
|
|
4
|
+
import type { DateProvider } from '@aztec/foundation/timer';
|
|
5
|
+
import type { SequencerClient } from '@aztec/sequencer-client';
|
|
6
|
+
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* A class that provides utility functions for interacting with the chain.
|
|
10
|
+
* @deprecated There used to be 3 kinds of cheat codes: eth, rollup and aztec. We have nuked the Aztec ones because
|
|
11
|
+
* they became unused (we now have better testing tools). If you are introducing a new functionality to the cheat
|
|
12
|
+
* codes, please consider whether it makes sense to just introduce new utils in your tests instead.
|
|
13
|
+
*/
|
|
14
|
+
export class CheatCodes {
|
|
15
|
+
constructor(
|
|
16
|
+
/** Cheat codes for L1.*/
|
|
17
|
+
public eth: EthCheatCodes,
|
|
18
|
+
/** Cheat codes for the Aztec Rollup contract on L1. */
|
|
19
|
+
public rollup: RollupCheatCodes,
|
|
20
|
+
) {}
|
|
21
|
+
|
|
22
|
+
static async create(rpcUrls: string[], node: AztecNode, dateProvider: DateProvider): Promise<CheatCodes> {
|
|
23
|
+
const ethCheatCodes = new EthCheatCodes(rpcUrls, dateProvider);
|
|
24
|
+
const rollupCheatCodes = new RollupCheatCodes(
|
|
25
|
+
ethCheatCodes,
|
|
26
|
+
await node.getNodeInfo().then(n => n.l1ContractAddresses),
|
|
27
|
+
);
|
|
28
|
+
return new CheatCodes(ethCheatCodes, rollupCheatCodes);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Warps the L1 timestamp to a target timestamp and mines an L2 block that advances the L2 timestamp to at least
|
|
33
|
+
* the target timestamp. L2 timestamp is not advanced exactly to the target timestamp because it is determined
|
|
34
|
+
* by the slot number, which advances in fixed intervals.
|
|
35
|
+
* This is useful for testing time-dependent contract behavior.
|
|
36
|
+
* @param sequencerClient - The sequencer client to use to force an empty block to be mined.
|
|
37
|
+
* @param node - The Aztec node used to query if a new block has been mined.
|
|
38
|
+
* @param targetTimestamp - The target timestamp to warp to (in seconds)
|
|
39
|
+
*/
|
|
40
|
+
async warpL2TimeAtLeastTo(sequencerClient: SequencerClient, node: AztecNode, targetTimestamp: bigint | number) {
|
|
41
|
+
const currentL2BlockNumber: BlockNumber = await node.getBlockNumber();
|
|
42
|
+
|
|
43
|
+
// We warp the L1 timestamp
|
|
44
|
+
await this.eth.warp(targetTimestamp, { resetBlockInterval: true });
|
|
45
|
+
|
|
46
|
+
// Wait until an L2 block is mined
|
|
47
|
+
const sequencer = sequencerClient.getSequencer();
|
|
48
|
+
const minTxsPerBlock = sequencer.getConfig().minTxsPerBlock;
|
|
49
|
+
sequencer.updateConfig({ minTxsPerBlock: 0 });
|
|
50
|
+
|
|
51
|
+
await retryUntil(
|
|
52
|
+
async () => {
|
|
53
|
+
const newL2BlockNumber: BlockNumber = await node.getBlockNumber();
|
|
54
|
+
return newL2BlockNumber > currentL2BlockNumber;
|
|
55
|
+
},
|
|
56
|
+
'new block after warping L2 time',
|
|
57
|
+
36,
|
|
58
|
+
1,
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
// Restore original minTxsPerBlock
|
|
62
|
+
sequencer.updateConfig({ minTxsPerBlock });
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Warps the L1 timestamp forward by a specified duration and mines an L2 block that advances the L2 timestamp at
|
|
67
|
+
* least by the duration. L2 timestamp is not advanced exactly by the duration because it is determined by the slot
|
|
68
|
+
* number, which advances in fixed intervals.
|
|
69
|
+
* This is useful for testing time-dependent contract behavior.
|
|
70
|
+
* @param sequencerClient - The sequencer client to use to force an empty block to be mined.
|
|
71
|
+
* @param node - The Aztec node used to query if a new block has been mined.
|
|
72
|
+
* @param duration - The duration to advance time by (in seconds)
|
|
73
|
+
*/
|
|
74
|
+
async warpL2TimeAtLeastBy(sequencerClient: SequencerClient, node: AztecNode, duration: bigint | number) {
|
|
75
|
+
const currentTimestamp = await this.eth.timestamp();
|
|
76
|
+
const targetTimestamp = BigInt(currentTimestamp) + BigInt(duration);
|
|
77
|
+
await this.warpL2TimeAtLeastTo(sequencerClient, node, targetTimestamp);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
2
|
+
import { type EthCheatCodes, RollupCheatCodes } from '@aztec/ethereum/test';
|
|
3
|
+
import { type EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
4
|
+
import type { Logger } from '@aztec/foundation/log';
|
|
5
|
+
import { EpochMonitor } from '@aztec/prover-node';
|
|
6
|
+
import type { EthAddress, L2BlockSource } from '@aztec/stdlib/block';
|
|
7
|
+
import { computeEpochOutHash } from '@aztec/stdlib/messaging';
|
|
8
|
+
|
|
9
|
+
export class EpochTestSettler {
|
|
10
|
+
private rollupCheatCodes: RollupCheatCodes;
|
|
11
|
+
private epochMonitor?: EpochMonitor;
|
|
12
|
+
|
|
13
|
+
constructor(
|
|
14
|
+
cheatcodes: EthCheatCodes,
|
|
15
|
+
rollupAddress: EthAddress,
|
|
16
|
+
private l2BlockSource: L2BlockSource,
|
|
17
|
+
private log: Logger,
|
|
18
|
+
private options: { pollingIntervalMs: number; provingDelayMs?: number },
|
|
19
|
+
) {
|
|
20
|
+
this.rollupCheatCodes = new RollupCheatCodes(cheatcodes, { rollupAddress });
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
async start() {
|
|
24
|
+
const { epochDuration } = await this.rollupCheatCodes.getConfig();
|
|
25
|
+
this.epochMonitor = new EpochMonitor(this.l2BlockSource, { epochDuration: Number(epochDuration) }, this.options);
|
|
26
|
+
this.epochMonitor.start(this);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
async stop() {
|
|
30
|
+
await this.epochMonitor?.stop();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
async handleEpochReadyToProve(epoch: EpochNumber): Promise<boolean> {
|
|
34
|
+
const checkpointedBlocks = await this.l2BlockSource.getCheckpointedBlocksForEpoch(epoch);
|
|
35
|
+
const blocks = checkpointedBlocks.map(b => b.block);
|
|
36
|
+
this.log.info(
|
|
37
|
+
`Settling epoch ${epoch} with blocks ${blocks[0]?.header.getBlockNumber()} to ${blocks.at(-1)?.header.getBlockNumber()}`,
|
|
38
|
+
{ blocks: blocks.map(b => b.toBlockInfo()) },
|
|
39
|
+
);
|
|
40
|
+
const messagesInEpoch: Fr[][][][] = [];
|
|
41
|
+
let previousSlotNumber = SlotNumber.ZERO;
|
|
42
|
+
let checkpointIndex = -1;
|
|
43
|
+
|
|
44
|
+
for (const block of blocks) {
|
|
45
|
+
const slotNumber = block.header.globalVariables.slotNumber;
|
|
46
|
+
if (slotNumber !== previousSlotNumber) {
|
|
47
|
+
checkpointIndex++;
|
|
48
|
+
messagesInEpoch[checkpointIndex] = [];
|
|
49
|
+
previousSlotNumber = slotNumber;
|
|
50
|
+
}
|
|
51
|
+
messagesInEpoch[checkpointIndex].push(block.body.txEffects.map(txEffect => txEffect.l2ToL1Msgs));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const outHash = computeEpochOutHash(messagesInEpoch);
|
|
55
|
+
if (!outHash.isZero()) {
|
|
56
|
+
await this.rollupCheatCodes.insertOutbox(epoch, outHash.toBigInt());
|
|
57
|
+
} else {
|
|
58
|
+
this.log.info(`No L2 to L1 messages in epoch ${epoch}`);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const lastCheckpoint = checkpointedBlocks.at(-1)?.checkpointNumber;
|
|
62
|
+
if (lastCheckpoint !== undefined) {
|
|
63
|
+
await this.rollupCheatCodes.markAsProven(lastCheckpoint);
|
|
64
|
+
} else {
|
|
65
|
+
this.log.warn(`No checkpoint found for epoch ${epoch}`);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { AnvilTestWatcher } from './anvil_test_watcher.js';
|
|
2
|
+
export { EthCheatCodes, RollupCheatCodes } from '@aztec/ethereum/test';
|
|
3
|
+
export { CheatCodes } from './cheat_codes.js';
|
|
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,19 +0,0 @@
|
|
|
1
|
-
export type NetworkNames = 'testnet-ignition';
|
|
2
|
-
export type L2ChainConfig = {
|
|
3
|
-
l1ChainId: number;
|
|
4
|
-
ethereumSlotDuration: number;
|
|
5
|
-
aztecSlotDuration: number;
|
|
6
|
-
aztecEpochDuration: number;
|
|
7
|
-
aztecProofSubmissionWindow: number;
|
|
8
|
-
testAccounts: boolean;
|
|
9
|
-
p2pEnabled: boolean;
|
|
10
|
-
p2pBootstrapNodes: string[];
|
|
11
|
-
registryAddress: string;
|
|
12
|
-
seqMinTxsPerBlock: number;
|
|
13
|
-
seqMaxTxsPerBlock: number;
|
|
14
|
-
};
|
|
15
|
-
export declare const testnetIgnitionL2ChainConfig: L2ChainConfig;
|
|
16
|
-
export declare function getBootnodes(networkName: NetworkNames): Promise<any>;
|
|
17
|
-
export declare function getL2ChainConfig(networkName: NetworkNames): Promise<L2ChainConfig | undefined>;
|
|
18
|
-
export declare function enrichEnvironmentWithChainConfig(networkName: NetworkNames): Promise<void>;
|
|
19
|
-
//# sourceMappingURL=chain_l2_config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chain_l2_config.d.ts","sourceRoot":"","sources":["../../src/cli/chain_l2_config.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAE9C,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0BAA0B,EAAE,MAAM,CAAC;IACnC,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,aAY1C,CAAC;AAEF,wBAAsB,YAAY,CAAC,WAAW,EAAE,YAAY,gBAQ3D;AAED,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAOpG;AAUD,wBAAsB,gCAAgC,CAAC,WAAW,EAAE,YAAY,iBAgB/E"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
export const testnetIgnitionL2ChainConfig = {
|
|
2
|
-
l1ChainId: 11155111,
|
|
3
|
-
ethereumSlotDuration: 12,
|
|
4
|
-
aztecSlotDuration: 36,
|
|
5
|
-
aztecEpochDuration: 32,
|
|
6
|
-
aztecProofSubmissionWindow: 64,
|
|
7
|
-
testAccounts: true,
|
|
8
|
-
p2pEnabled: true,
|
|
9
|
-
p2pBootstrapNodes: [],
|
|
10
|
-
registryAddress: '0x12b3ebc176a1646b911391eab3760764f2e05fe3',
|
|
11
|
-
seqMinTxsPerBlock: 0,
|
|
12
|
-
seqMaxTxsPerBlock: 0
|
|
13
|
-
};
|
|
14
|
-
export async function getBootnodes(networkName) {
|
|
15
|
-
const url = `http://static.aztec.network/${networkName}/bootnodes.json`;
|
|
16
|
-
const response = await fetch(url);
|
|
17
|
-
if (!response.ok) {
|
|
18
|
-
throw new Error(`Failed to fetch basic contract addresses from ${url}`);
|
|
19
|
-
}
|
|
20
|
-
const json = await response.json();
|
|
21
|
-
return json['bootnodes'];
|
|
22
|
-
}
|
|
23
|
-
export async function getL2ChainConfig(networkName) {
|
|
24
|
-
if (networkName === 'testnet-ignition') {
|
|
25
|
-
const config = {
|
|
26
|
-
...testnetIgnitionL2ChainConfig
|
|
27
|
-
};
|
|
28
|
-
config.p2pBootstrapNodes = await getBootnodes(networkName);
|
|
29
|
-
return config;
|
|
30
|
-
}
|
|
31
|
-
return undefined;
|
|
32
|
-
}
|
|
33
|
-
function enrichVar(envVar, value) {
|
|
34
|
-
// Don't override
|
|
35
|
-
if (process.env[envVar]) {
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
process.env[envVar] = value;
|
|
39
|
-
}
|
|
40
|
-
export async function enrichEnvironmentWithChainConfig(networkName) {
|
|
41
|
-
const config = await getL2ChainConfig(networkName);
|
|
42
|
-
if (!config) {
|
|
43
|
-
throw new Error(`Unknown network name: ${networkName}`);
|
|
44
|
-
}
|
|
45
|
-
enrichVar('ETHEREUM_SLOT_DURATION', config.ethereumSlotDuration.toString());
|
|
46
|
-
enrichVar('AZTEC_SLOT_DURATION', config.aztecSlotDuration.toString());
|
|
47
|
-
enrichVar('AZTEC_EPOCH_DURATION', config.aztecEpochDuration.toString());
|
|
48
|
-
enrichVar('AZTEC_PROOF_SUBMISSION_WINDOW', config.aztecProofSubmissionWindow.toString());
|
|
49
|
-
enrichVar('P2P_BOOTSTRAP_NODES', config.p2pBootstrapNodes.join(','));
|
|
50
|
-
enrichVar('TEST_ACCOUNTS', config.testAccounts.toString());
|
|
51
|
-
enrichVar('P2P_ENABLED', config.p2pEnabled.toString());
|
|
52
|
-
enrichVar('L1_CHAIN_ID', config.l1ChainId.toString());
|
|
53
|
-
enrichVar('REGISTRY_CONTRACT_ADDRESS', config.registryAddress);
|
|
54
|
-
enrichVar('SEQ_MIN_TX_PER_BLOCK', config.seqMinTxsPerBlock.toString());
|
|
55
|
-
enrichVar('SEQ_MAX_TX_PER_BLOCK', config.seqMaxTxsPerBlock.toString());
|
|
56
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"start_blob_sink.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_blob_sink.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAKnD,wBAAsB,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,iBAmBxG"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { blobSinkConfigMappings, createBlobSinkServer, getBlobSinkConfigFromEnv } from '@aztec/blob-sink/server';
|
|
2
|
-
import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
|
|
3
|
-
import { extractRelevantOptions } from '../util.js';
|
|
4
|
-
export async function startBlobSink(options, signalHandlers, userLog) {
|
|
5
|
-
if (options.prover || options.node || options.sequencer || options.pxe || options.p2pBootstrap || options.txe) {
|
|
6
|
-
userLog(`Starting a blob sink with --node, --sequencer, --pxe, --p2p-bootstrap, --prover or --txe is not supported.`);
|
|
7
|
-
process.exit(1);
|
|
8
|
-
}
|
|
9
|
-
const blobSinkConfig = {
|
|
10
|
-
...getBlobSinkConfigFromEnv(),
|
|
11
|
-
...extractRelevantOptions(options, blobSinkConfigMappings, 'blobSink')
|
|
12
|
-
};
|
|
13
|
-
const telemetry = initTelemetryClient(getTelemetryClientConfig());
|
|
14
|
-
const blobSink = await createBlobSinkServer(blobSinkConfig, telemetry);
|
|
15
|
-
signalHandlers.push(blobSink.stop.bind(blobSink));
|
|
16
|
-
await blobSink.start();
|
|
17
|
-
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
|
|
2
|
-
import type { LogFn } from '@aztec/foundation/log';
|
|
3
|
-
export declare function startFaucet(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, log: LogFn): Promise<void>;
|
|
4
|
-
//# sourceMappingURL=start_faucet.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"start_faucet.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_faucet.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAInD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,GAAG,EAAE,KAAK,iBAiBX"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Faucet, FaucetSchema, createFaucetHttpServer, faucetConfigMapping, getFaucetConfigFromEnv } from '@aztec/aztec-faucet';
|
|
2
|
-
import { extractNamespacedOptions, extractRelevantOptions } from '../util.js';
|
|
3
|
-
export async function startFaucet(options, signalHandlers, services, log) {
|
|
4
|
-
const faucetOptions = extractNamespacedOptions(options, 'faucet');
|
|
5
|
-
const config = {
|
|
6
|
-
...getFaucetConfigFromEnv(),
|
|
7
|
-
...extractRelevantOptions(options, faucetConfigMapping, 'faucet')
|
|
8
|
-
};
|
|
9
|
-
const faucet = await Faucet.create(config);
|
|
10
|
-
if (faucetOptions.apiServer) {
|
|
11
|
-
const httpServer = createFaucetHttpServer(faucet);
|
|
12
|
-
httpServer.listen(faucetOptions.apiServerPort);
|
|
13
|
-
signalHandlers.push(()=>new Promise((res)=>httpServer.close(()=>res())));
|
|
14
|
-
log(`Faucet now running on port: ${faucetOptions.apiServerPort}`);
|
|
15
|
-
}
|
|
16
|
-
services.faucet = [
|
|
17
|
-
faucet,
|
|
18
|
-
FaucetSchema
|
|
19
|
-
];
|
|
20
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
|
|
2
|
-
import type { LogFn } from '@aztec/foundation/log';
|
|
3
|
-
import { type ProverNodeConfig } from '@aztec/prover-node';
|
|
4
|
-
export declare function startProverNode(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, userLog: LogFn): Promise<{
|
|
5
|
-
config: ProverNodeConfig;
|
|
6
|
-
}>;
|
|
7
|
-
//# sourceMappingURL=start_prover_node.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"start_prover_node.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_node.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EACL,KAAK,gBAAgB,EAItB,MAAM,oBAAoB,CAAC;AAa5B,wBAAsB,eAAe,CACnC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,gBAAgB,CAAA;CAAE,CAAC,CA2FvC"}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { getInitialTestAccounts } from '@aztec/accounts/testing';
|
|
2
|
-
import { NULL_KEY } from '@aztec/ethereum';
|
|
3
|
-
import { Agent, makeUndiciFetch } from '@aztec/foundation/json-rpc/undici';
|
|
4
|
-
import { ProvingJobConsumerSchema, createProvingJobBrokerClient } from '@aztec/prover-client/broker';
|
|
5
|
-
import { createProverNode, getProverNodeConfigFromEnv, proverNodeConfigMappings } from '@aztec/prover-node';
|
|
6
|
-
import { createAztecNodeClient } from '@aztec/stdlib/interfaces/client';
|
|
7
|
-
import { P2PApiSchema, ProverNodeApiSchema } from '@aztec/stdlib/interfaces/server';
|
|
8
|
-
import { initTelemetryClient, makeTracedFetch, telemetryClientConfigMappings } from '@aztec/telemetry-client';
|
|
9
|
-
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
10
|
-
import { mnemonicToAccount } from 'viem/accounts';
|
|
11
|
-
import { getL1Config } from '../get_l1_config.js';
|
|
12
|
-
import { extractRelevantOptions } from '../util.js';
|
|
13
|
-
import { getVersions } from '../versioning.js';
|
|
14
|
-
import { startProverBroker } from './start_prover_broker.js';
|
|
15
|
-
export async function startProverNode(options, signalHandlers, services, userLog) {
|
|
16
|
-
if (options.node || options.sequencer || options.pxe || options.p2pBootstrap || options.txe) {
|
|
17
|
-
userLog(`Starting a prover-node with --node, --sequencer, --pxe, --p2p-bootstrap, or --txe is not supported.`);
|
|
18
|
-
process.exit(1);
|
|
19
|
-
}
|
|
20
|
-
let proverConfig = {
|
|
21
|
-
...getProverNodeConfigFromEnv(),
|
|
22
|
-
...extractRelevantOptions(options, proverNodeConfigMappings, 'proverNode')
|
|
23
|
-
};
|
|
24
|
-
if (!options.archiver && !proverConfig.archiverUrl) {
|
|
25
|
-
userLog('--archiver.archiverUrl is required to start a Prover Node without --archiver option');
|
|
26
|
-
process.exit(1);
|
|
27
|
-
}
|
|
28
|
-
if (!proverConfig.publisherPrivateKey || proverConfig.publisherPrivateKey === NULL_KEY) {
|
|
29
|
-
if (!options.l1Mnemonic) {
|
|
30
|
-
userLog(`--l1-mnemonic is required to start a Prover Node without --node.publisherPrivateKey`);
|
|
31
|
-
process.exit(1);
|
|
32
|
-
}
|
|
33
|
-
const hdAccount = mnemonicToAccount(options.l1Mnemonic);
|
|
34
|
-
const privKey = hdAccount.getHdKey().privateKey;
|
|
35
|
-
proverConfig.publisherPrivateKey = `0x${Buffer.from(privKey).toString('hex')}`;
|
|
36
|
-
}
|
|
37
|
-
// TODO(palla/prover-node) L1 contract addresses should not silently default to zero,
|
|
38
|
-
// they should be undefined if not set and fail loudly.
|
|
39
|
-
// Load l1 contract addresses from aztec node if not set.
|
|
40
|
-
const isRollupAddressSet = proverConfig.l1Contracts?.rollupAddress && !proverConfig.l1Contracts.rollupAddress.isZero();
|
|
41
|
-
const nodeUrl = proverConfig.nodeUrl ?? proverConfig.proverCoordinationNodeUrl;
|
|
42
|
-
if (nodeUrl && !isRollupAddressSet) {
|
|
43
|
-
userLog(`Loading L1 contract addresses from aztec node at ${nodeUrl}`);
|
|
44
|
-
proverConfig.l1Contracts = await createAztecNodeClient(nodeUrl).getL1ContractAddresses();
|
|
45
|
-
}
|
|
46
|
-
// If we create an archiver here, validate the L1 config
|
|
47
|
-
if (options.archiver) {
|
|
48
|
-
if (!proverConfig.l1Contracts.registryAddress || proverConfig.l1Contracts.registryAddress.isZero()) {
|
|
49
|
-
throw new Error('L1 registry address is required to start a Prover Node with --archiver option');
|
|
50
|
-
}
|
|
51
|
-
const { addresses, config } = await getL1Config(proverConfig.l1Contracts.registryAddress, proverConfig.l1RpcUrls, proverConfig.l1ChainId);
|
|
52
|
-
proverConfig.l1Contracts = addresses;
|
|
53
|
-
proverConfig = {
|
|
54
|
-
...proverConfig,
|
|
55
|
-
...config
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
const telemetry = initTelemetryClient(extractRelevantOptions(options, telemetryClientConfigMappings, 'tel'));
|
|
59
|
-
let broker;
|
|
60
|
-
if (proverConfig.proverBrokerUrl) {
|
|
61
|
-
// at 1TPS we'd enqueue ~1k tube proofs and ~1k AVM proofs immediately
|
|
62
|
-
// set a lower connectio limit such that we don't overload the server
|
|
63
|
-
const fetch = makeTracedFetch([
|
|
64
|
-
1,
|
|
65
|
-
2,
|
|
66
|
-
3
|
|
67
|
-
], false, makeUndiciFetch(new Agent({
|
|
68
|
-
connections: 100
|
|
69
|
-
})));
|
|
70
|
-
broker = createProvingJobBrokerClient(proverConfig.proverBrokerUrl, getVersions(proverConfig), fetch);
|
|
71
|
-
} else if (options.proverBroker) {
|
|
72
|
-
({ broker } = await startProverBroker(options, signalHandlers, services, userLog));
|
|
73
|
-
} else {
|
|
74
|
-
userLog(`--prover-broker-url or --prover-broker is required to start a Prover Node`);
|
|
75
|
-
process.exit(1);
|
|
76
|
-
}
|
|
77
|
-
if (proverConfig.proverAgentCount === 0) {
|
|
78
|
-
userLog(`Running prover node without local prover agent. Connect one or more prover agents to this node or pass --proverAgent.proverAgentCount`);
|
|
79
|
-
}
|
|
80
|
-
const initialFundedAccounts = proverConfig.testAccounts ? await getInitialTestAccounts() : [];
|
|
81
|
-
const { prefilledPublicData } = await getGenesisValues(initialFundedAccounts.map((a)=>a.address));
|
|
82
|
-
const proverNode = await createProverNode(proverConfig, {
|
|
83
|
-
telemetry,
|
|
84
|
-
broker
|
|
85
|
-
}, {
|
|
86
|
-
prefilledPublicData
|
|
87
|
-
});
|
|
88
|
-
services.proverNode = [
|
|
89
|
-
proverNode,
|
|
90
|
-
ProverNodeApiSchema
|
|
91
|
-
];
|
|
92
|
-
const p2p = proverNode.getP2P();
|
|
93
|
-
if (p2p) {
|
|
94
|
-
services.p2p = [
|
|
95
|
-
proverNode.getP2P(),
|
|
96
|
-
P2PApiSchema
|
|
97
|
-
];
|
|
98
|
-
}
|
|
99
|
-
if (!proverConfig.proverBrokerUrl) {
|
|
100
|
-
services.provingJobSource = [
|
|
101
|
-
proverNode.getProver().getProvingJobSource(),
|
|
102
|
-
ProvingJobConsumerSchema
|
|
103
|
-
];
|
|
104
|
-
}
|
|
105
|
-
signalHandlers.push(proverNode.stop.bind(proverNode));
|
|
106
|
-
proverNode.start();
|
|
107
|
-
return {
|
|
108
|
-
config: proverConfig
|
|
109
|
-
};
|
|
110
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
|
|
2
|
-
import type { LogFn } from '@aztec/foundation/log';
|
|
3
|
-
import { type CliPXEOptions, type PXEService, type PXEServiceConfig } from '@aztec/pxe/server';
|
|
4
|
-
import { type AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
5
|
-
export type { PXEServiceConfig, CliPXEOptions };
|
|
6
|
-
export declare function startPXE(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, userLog: LogFn): Promise<{
|
|
7
|
-
pxe: PXEService;
|
|
8
|
-
config: PXEServiceConfig & CliPXEOptions;
|
|
9
|
-
}>;
|
|
10
|
-
export declare function addPXE(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, userLog: LogFn, deps?: {
|
|
11
|
-
node?: AztecNode;
|
|
12
|
-
}): Promise<{
|
|
13
|
-
pxe: PXEService;
|
|
14
|
-
config: PXEServiceConfig & CliPXEOptions;
|
|
15
|
-
}>;
|
|
16
|
-
//# sourceMappingURL=start_pxe.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"start_pxe.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_pxe.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,gBAAgB,EAGtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,SAAS,EAAoC,MAAM,iCAAiC,CAAC;AAOnG,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC;AAIhD,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK,GACb,OAAO,CAAC;IAAE,GAAG,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,gBAAgB,GAAG,aAAa,CAAA;CAAE,CAAC,CAExE;AAcD,wBAAsB,MAAM,CAC1B,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK,EACd,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,SAAS,CAAA;CAAO,GAC9B,OAAO,CAAC;IAAE,GAAG,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,gBAAgB,GAAG,aAAa,CAAA;CAAE,CAAC,CAwExE"}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { AztecAddress, Fr, PublicKeys, getContractClassFromArtifact } from '@aztec/aztec.js';
|
|
2
|
-
import { getContractArtifact } from '@aztec/cli/cli-utils';
|
|
3
|
-
import { allPxeConfigMappings, createPXEService } from '@aztec/pxe/server';
|
|
4
|
-
import { PXESchema, createAztecNodeClient } from '@aztec/stdlib/interfaces/client';
|
|
5
|
-
import { L2BasicContractsMap, Network } from '@aztec/stdlib/network';
|
|
6
|
-
import { makeTracedFetch } from '@aztec/telemetry-client';
|
|
7
|
-
import { extractRelevantOptions } from '../util.js';
|
|
8
|
-
import { getVersions } from '../versioning.js';
|
|
9
|
-
const contractAddressesUrl = 'http://static.aztec.network';
|
|
10
|
-
export async function startPXE(options, signalHandlers, services, userLog) {
|
|
11
|
-
return await addPXE(options, signalHandlers, services, userLog, {});
|
|
12
|
-
}
|
|
13
|
-
function isValidNetwork(value) {
|
|
14
|
-
return Object.values(Network).includes(value);
|
|
15
|
-
}
|
|
16
|
-
async function fetchBasicContractAddresses(url) {
|
|
17
|
-
const response = await fetch(url);
|
|
18
|
-
if (!response.ok) {
|
|
19
|
-
throw new Error(`Failed to fetch basic contract addresses from ${url}`);
|
|
20
|
-
}
|
|
21
|
-
return response.json();
|
|
22
|
-
}
|
|
23
|
-
export async function addPXE(options, signalHandlers, services, userLog, deps = {}) {
|
|
24
|
-
const pxeConfig = extractRelevantOptions(options, allPxeConfigMappings, 'pxe');
|
|
25
|
-
let nodeUrl;
|
|
26
|
-
if (pxeConfig.network) {
|
|
27
|
-
if (isValidNetwork(pxeConfig.network)) {
|
|
28
|
-
if (!pxeConfig.apiKey && !pxeConfig.nodeUrl) {
|
|
29
|
-
userLog(`API Key or Aztec Node URL is required to connect to ${pxeConfig.network}`);
|
|
30
|
-
process.exit(1);
|
|
31
|
-
} else if (pxeConfig.apiKey) {
|
|
32
|
-
nodeUrl = `https://api.aztec.network/${pxeConfig.network}/aztec-node-1/${pxeConfig.apiKey}`;
|
|
33
|
-
} else if (pxeConfig.nodeUrl) {
|
|
34
|
-
nodeUrl = pxeConfig.nodeUrl;
|
|
35
|
-
}
|
|
36
|
-
} else {
|
|
37
|
-
userLog(`Network ${pxeConfig.network} is not supported`);
|
|
38
|
-
process.exit(1);
|
|
39
|
-
}
|
|
40
|
-
} else {
|
|
41
|
-
nodeUrl = pxeConfig.nodeUrl;
|
|
42
|
-
}
|
|
43
|
-
if (!nodeUrl && !deps.node && !pxeConfig.network) {
|
|
44
|
-
userLog('Aztec Node URL (nodeUrl | AZTEC_NODE_URL) option is required to start PXE without --node option');
|
|
45
|
-
process.exit(1);
|
|
46
|
-
}
|
|
47
|
-
const node = deps.node ?? createAztecNodeClient(nodeUrl, getVersions(pxeConfig), makeTracedFetch([
|
|
48
|
-
1,
|
|
49
|
-
2,
|
|
50
|
-
3
|
|
51
|
-
], true));
|
|
52
|
-
const pxe = await createPXEService(node, pxeConfig);
|
|
53
|
-
// register basic contracts
|
|
54
|
-
if (pxeConfig.network) {
|
|
55
|
-
userLog(`Registering basic contracts for ${pxeConfig.network}`);
|
|
56
|
-
const basicContractsInfo = await fetchBasicContractAddresses(`${contractAddressesUrl}/${pxeConfig.network}/basic_contracts.json`);
|
|
57
|
-
const l2Contracts = {};
|
|
58
|
-
for (const [key, artifactName] of Object.entries(L2BasicContractsMap[pxeConfig.network])){
|
|
59
|
-
l2Contracts[key] = {
|
|
60
|
-
name: key,
|
|
61
|
-
address: AztecAddress.fromString(basicContractsInfo[key].address),
|
|
62
|
-
initHash: Fr.fromHexString(basicContractsInfo[key].initHash),
|
|
63
|
-
salt: Fr.fromHexString(basicContractsInfo[key].salt),
|
|
64
|
-
artifact: await getContractArtifact(artifactName, userLog)
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
await Promise.all(Object.values(l2Contracts).map(async ({ name, address, artifact, initHash, salt })=>{
|
|
68
|
-
const contractClass = await getContractClassFromArtifact(artifact);
|
|
69
|
-
const instance = {
|
|
70
|
-
version: 1,
|
|
71
|
-
salt,
|
|
72
|
-
initializationHash: initHash,
|
|
73
|
-
address,
|
|
74
|
-
deployer: AztecAddress.ZERO,
|
|
75
|
-
currentContractClassId: contractClass.id,
|
|
76
|
-
originalContractClassId: contractClass.id,
|
|
77
|
-
publicKeys: PublicKeys.default()
|
|
78
|
-
};
|
|
79
|
-
userLog(`Registering ${name} at ${address.toString()}`);
|
|
80
|
-
await pxe.registerContract({
|
|
81
|
-
artifact,
|
|
82
|
-
instance
|
|
83
|
-
});
|
|
84
|
-
}));
|
|
85
|
-
}
|
|
86
|
-
// Add PXE to services list
|
|
87
|
-
services.pxe = [
|
|
88
|
-
pxe,
|
|
89
|
-
PXESchema
|
|
90
|
-
];
|
|
91
|
-
return {
|
|
92
|
-
pxe,
|
|
93
|
-
config: pxeConfig
|
|
94
|
-
};
|
|
95
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { type L1ContractAddresses, getL1ContractsConfig } from '@aztec/ethereum';
|
|
2
|
-
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
|
-
export declare function getL1Config(registryAddress: EthAddress, l1RpcUrls: string[], l1ChainId: number): Promise<{
|
|
4
|
-
addresses: L1ContractAddresses;
|
|
5
|
-
config: Awaited<ReturnType<typeof getL1ContractsConfig>>;
|
|
6
|
-
}>;
|
|
7
|
-
//# sourceMappingURL=get_l1_config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get_l1_config.d.ts","sourceRoot":"","sources":["../../src/cli/get_l1_config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAoB,oBAAoB,EAAmB,MAAM,iBAAiB,CAAC;AACpH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,wBAAsB,WAAW,CAC/B,eAAe,EAAE,UAAU,EAC3B,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,SAAS,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAA;CAAE,CAAC,CAUvG"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { RegistryContract, getL1ContractsConfig, getPublicClient } from '@aztec/ethereum';
|
|
2
|
-
export async function getL1Config(registryAddress, l1RpcUrls, l1ChainId) {
|
|
3
|
-
const publicClient = getPublicClient({
|
|
4
|
-
l1RpcUrls,
|
|
5
|
-
l1ChainId
|
|
6
|
-
});
|
|
7
|
-
const addresses = await RegistryContract.collectAddresses(publicClient, registryAddress, 'canonical');
|
|
8
|
-
const config = await getL1ContractsConfig(publicClient, addresses);
|
|
9
|
-
return {
|
|
10
|
-
addresses,
|
|
11
|
-
config
|
|
12
|
-
};
|
|
13
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { type InitialAccountData } from '@aztec/accounts/testing';
|
|
2
|
-
import type { Wallet } from '@aztec/aztec.js';
|
|
3
|
-
import type { LogFn } from '@aztec/foundation/log';
|
|
4
|
-
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
|
-
import type { PXE } from '@aztec/stdlib/interfaces/client';
|
|
6
|
-
export declare function getBananaCoinAddress(initialAccounts: InitialAccountData[]): Promise<AztecAddress>;
|
|
7
|
-
export declare function getBananaFPCAddress(initialAccounts: InitialAccountData[]): Promise<AztecAddress>;
|
|
8
|
-
export declare function setupBananaFPC(initialAccounts: InitialAccountData[], deployer: Wallet, log: LogFn): Promise<void>;
|
|
9
|
-
export declare function getDeployedBananaCoinAddress(pxe: PXE): Promise<AztecAddress>;
|
|
10
|
-
export declare function getDeployedBananaFPCAddress(pxe: PXE): Promise<AztecAddress>;
|
|
11
|
-
//# sourceMappingURL=banana_fpc.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"banana_fpc.d.ts","sourceRoot":"","sources":["../../src/sandbox/banana_fpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAA0B,MAAM,yBAAyB,CAAC;AAC1F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAC;AAuB3D,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,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,iBAcvG;AAED,wBAAsB,4BAA4B,CAAC,GAAG,EAAE,GAAG,yBAQ1D;AAED,wBAAsB,2BAA2B,CAAC,GAAG,EAAE,GAAG,yBAQzD"}
|
package/dest/sandbox/index.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export * from './sandbox.js';
|
|
2
|
-
export { getDeployedBananaCoinAddress, getDeployedBananaFPCAddress } from './banana_fpc.js';
|
|
3
|
-
export { getDeployedSponsoredFPCAddress } from './sponsored_fpc.js';
|
|
4
|
-
export { SponsoredFeePaymentMethod } from './sponsored_fee_payment_method.js';
|
|
5
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sandbox/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAE7B,OAAO,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC"}
|
package/dest/sandbox/index.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export * from './sandbox.js';
|
|
2
|
-
export { getDeployedBananaCoinAddress, getDeployedBananaFPCAddress } from './banana_fpc.js';
|
|
3
|
-
export { getDeployedSponsoredFPCAddress } from './sponsored_fpc.js';
|
|
4
|
-
export { SponsoredFeePaymentMethod } from './sponsored_fee_payment_method.js';
|