@aztec/aztec 0.0.1-commit.03f7ef2 → 0.0.1-commit.08c5969dc
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 +2 -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 +6 -1
- package/dest/cli/aztec_start_options.d.ts +1 -1
- package/dest/cli/aztec_start_options.d.ts.map +1 -1
- package/dest/cli/aztec_start_options.js +4 -2
- package/dest/cli/cli.d.ts +1 -1
- package/dest/cli/cli.d.ts.map +1 -1
- package/dest/cli/cli.js +5 -37
- 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/start_archiver.d.ts +1 -1
- package/dest/cli/cmds/start_archiver.d.ts.map +1 -1
- package/dest/cli/cmds/start_archiver.js +5 -7
- package/dest/cli/cmds/start_bot.d.ts +3 -3
- package/dest/cli/cmds/start_bot.d.ts.map +1 -1
- package/dest/cli/cmds/start_bot.js +9 -5
- package/dest/cli/cmds/start_node.js +4 -2
- package/dest/cli/cmds/start_p2p_bootstrap.d.ts +2 -2
- package/dest/cli/cmds/start_p2p_bootstrap.d.ts.map +1 -1
- package/dest/cli/cmds/start_p2p_bootstrap.js +1 -2
- package/dest/cli/cmds/start_prover_agent.d.ts +1 -1
- package/dest/cli/cmds/start_prover_agent.d.ts.map +1 -1
- package/dest/cli/cmds/start_prover_agent.js +3 -3
- package/dest/cli/cmds/start_prover_broker.d.ts +1 -1
- package/dest/cli/cmds/start_prover_broker.d.ts.map +1 -1
- package/dest/cli/cmds/start_prover_broker.js +2 -2
- package/dest/cli/util.d.ts +5 -14
- package/dest/cli/util.d.ts.map +1 -1
- package/dest/cli/util.js +11 -6
- package/dest/examples/token.js +5 -5
- package/dest/local-network/banana_fpc.d.ts +1 -1
- package/dest/local-network/banana_fpc.d.ts.map +1 -1
- package/dest/local-network/banana_fpc.js +2 -2
- package/dest/local-network/local-network.d.ts +2 -3
- package/dest/local-network/local-network.d.ts.map +1 -1
- package/dest/local-network/local-network.js +27 -17
- package/dest/testing/cheat_codes.d.ts +3 -1
- package/dest/testing/cheat_codes.d.ts.map +1 -1
- package/dest/testing/epoch_test_settler.d.ts +19 -0
- package/dest/testing/epoch_test_settler.d.ts.map +1 -0
- package/dest/testing/epoch_test_settler.js +62 -0
- package/dest/testing/index.d.ts +2 -1
- package/dest/testing/index.d.ts.map +1 -1
- package/dest/testing/index.js +1 -0
- package/package.json +35 -34
- package/scripts/aztec.sh +14 -7
- package/src/bin/index.ts +2 -0
- package/src/cli/aztec_start_action.ts +5 -0
- package/src/cli/aztec_start_options.ts +3 -1
- package/src/cli/cli.ts +5 -37
- package/src/cli/cmds/migrate_ha_db.ts +43 -0
- package/src/cli/cmds/start_archiver.ts +2 -13
- package/src/cli/cmds/start_bot.ts +8 -5
- package/src/cli/cmds/start_node.ts +2 -2
- package/src/cli/cmds/start_p2p_bootstrap.ts +2 -2
- package/src/cli/cmds/start_prover_agent.ts +3 -11
- package/src/cli/cmds/start_prover_broker.ts +5 -1
- package/src/cli/util.ts +15 -20
- package/src/examples/token.ts +5 -7
- package/src/local-network/banana_fpc.ts +10 -6
- package/src/local-network/local-network.ts +35 -21
- package/src/testing/epoch_test_settler.ts +71 -0
- package/src/testing/index.ts +1 -0
|
@@ -51,12 +51,12 @@ export async function setupBananaFPC(initialAccounts, wallet, log) {
|
|
|
51
51
|
from: admin,
|
|
52
52
|
contractAddressSalt: BANANA_COIN_SALT,
|
|
53
53
|
universalDeploy: true
|
|
54
|
-
})
|
|
54
|
+
}),
|
|
55
55
|
FPCContract.deploy(wallet, bananaCoinAddress, admin).send({
|
|
56
56
|
from: admin,
|
|
57
57
|
contractAddressSalt: BANANA_FPC_SALT,
|
|
58
58
|
universalDeploy: true
|
|
59
|
-
})
|
|
59
|
+
})
|
|
60
60
|
]);
|
|
61
61
|
log(`BananaCoin: ${bananaCoin.address}`);
|
|
62
62
|
log(`FPC: ${fpc.address}`);
|
|
@@ -15,7 +15,6 @@ import { type Hex } from 'viem';
|
|
|
15
15
|
* @param hdAccount - Account for publishing L1 contracts
|
|
16
16
|
*/
|
|
17
17
|
export declare function deployContractsToL1(aztecNodeConfig: AztecNodeConfig, privateKey: Hex, opts?: {
|
|
18
|
-
assumeProvenThroughBlockNumber?: number;
|
|
19
18
|
genesisArchiveRoot?: Fr;
|
|
20
19
|
feeJuicePortalInitialBalance?: bigint;
|
|
21
20
|
}): Promise<{
|
|
@@ -39,7 +38,7 @@ export declare function deployContractsToL1(aztecNodeConfig: AztecNodeConfig, pr
|
|
|
39
38
|
dateGatedRelayerAddress?: EthAddress | undefined;
|
|
40
39
|
} & {
|
|
41
40
|
rollupAddress: EthAddress;
|
|
42
|
-
} & {
|
|
41
|
+
} & Pick<import("@aztec/ethereum/l1-contract-addresses").L1ContractAddresses, "rollupAddress"> & {
|
|
43
42
|
rollupAddress: EthAddress;
|
|
44
43
|
}>;
|
|
45
44
|
/** Local network settings. */
|
|
@@ -69,4 +68,4 @@ export declare function createAztecNode(config?: Partial<AztecNodeConfig>, deps?
|
|
|
69
68
|
}, options?: {
|
|
70
69
|
prefilledPublicData?: PublicDataTreeLeaf[];
|
|
71
70
|
}): Promise<AztecNodeService>;
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtbmV0d29yay5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvY2FsLW5ldHdvcmsvbG9jYWwtbmV0d29yay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFvQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU1QyxPQUFPLEVBQUUsS0FBSyxtQkFBbUIsRUFBb0IsTUFBTSwyQkFBMkIsQ0FBQztBQVN2RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBb0IsTUFBTSx5QkFBeUIsQ0FBQztBQUd6RSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlELE9BQU8sRUFDTCxLQUFLLGVBQWUsRUFHckIsTUFBTSx5QkFBeUIsQ0FBQztBQUtqQyxPQUFPLEVBQUUsS0FBSyxHQUFHLEVBQTJELE1BQU0sTUFBTSxDQUFDO0FBZXpGOzs7O0dBSUc7QUFDSCx3QkFBc0IsbUJBQW1CLENBQ3ZDLGVBQWUsRUFBRSxlQUFlLEVBQ2hDLFVBQVUsRUFBRSxHQUFHLEVBQ2YsSUFBSSxHQUFFO0lBQ0osa0JBQWtCLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDeEIsNEJBQTRCLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDbEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JQO0FBRUQsOEJBQThCO0FBQzlCLE1BQU0sTUFBTSxrQkFBa0IsR0FBRyxlQUFlLEdBQUc7SUFDakQsMERBQTBEO0lBQzFELFVBQVUsRUFBRSxNQUFNLENBQUM7SUFDbkIsNkRBQTZEO0lBQzdELFlBQVksRUFBRSxPQUFPLENBQUM7Q0FDdkIsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCx3QkFBc0Isa0JBQWtCLENBQUMsTUFBTSx5Q0FBa0MsRUFBRSxPQUFPLEVBQUUsS0FBSzs7O0dBNEhoRztBQUVEOzs7R0FHRztBQUNILHdCQUFzQixlQUFlLENBQ25DLE1BQU0sR0FBRSxPQUFPLENBQUMsZUFBZSxDQUFNLEVBQ3JDLElBQUksR0FBRTtJQUFFLFNBQVMsQ0FBQyxFQUFFLGVBQWUsQ0FBQztJQUFDLFVBQVUsQ0FBQyxFQUFFLG1CQUFtQixDQUFDO0lBQUMsWUFBWSxDQUFDLEVBQUUsWUFBWSxDQUFBO0NBQU8sRUFDekcsT0FBTyxHQUFFO0lBQUUsbUJBQW1CLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxDQUFBO0NBQU8sNkJBVzdEIn0=
|
|
@@ -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;AAGzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"local-network.d.ts","sourceRoot":"","sources":["../../src/local-network/local-network.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,KAAK,eAAe,EAAoB,MAAM,0BAA0B,CAAC;AAClF,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAE5C,OAAO,EAAE,KAAK,mBAAmB,EAAoB,MAAM,2BAA2B,CAAC;AASvF,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAoB,MAAM,yBAAyB,CAAC;AAGzE,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;AAezF;;;;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;;;GA4HhG;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM,EACrC,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,eAAe,CAAC;IAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC;IAAC,YAAY,CAAC,EAAE,YAAY,CAAA;CAAO,EACzG,OAAO,GAAE;IAAE,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAAO,6BAW7D"}
|
|
@@ -18,7 +18,8 @@ import { TestDateProvider } from '@aztec/foundation/timer';
|
|
|
18
18
|
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
19
19
|
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
20
20
|
import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
|
|
21
|
-
import {
|
|
21
|
+
import { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
22
|
+
import { deployFundedSchnorrAccounts } from '@aztec/wallets/testing';
|
|
22
23
|
import { getGenesisValues } from '@aztec/world-state/testing';
|
|
23
24
|
import { createPublicClient, fallback, http as httpViemTransport } from 'viem';
|
|
24
25
|
import { mnemonicToAccount, privateKeyToAddress } from 'viem/accounts';
|
|
@@ -26,6 +27,7 @@ import { foundry } from 'viem/chains';
|
|
|
26
27
|
import { createAccountLogs } from '../cli/util.js';
|
|
27
28
|
import { DefaultMnemonic } from '../mnemonic.js';
|
|
28
29
|
import { AnvilTestWatcher } from '../testing/anvil_test_watcher.js';
|
|
30
|
+
import { EpochTestSettler } from '../testing/epoch_test_settler.js';
|
|
29
31
|
import { getBananaFPCAddress, setupBananaFPC } from './banana_fpc.js';
|
|
30
32
|
import { getSponsoredFPCAddress } from './sponsored_fpc.js';
|
|
31
33
|
const logger = createLogger('local-network');
|
|
@@ -101,14 +103,15 @@ const localAnvil = foundry;
|
|
|
101
103
|
sponsoredFPC
|
|
102
104
|
] : [];
|
|
103
105
|
const { genesisArchiveRoot, prefilledPublicData, fundingNeeded } = await getGenesisValues(fundedAddresses);
|
|
104
|
-
let watcher = undefined;
|
|
105
106
|
const dateProvider = new TestDateProvider();
|
|
107
|
+
let cheatcodes;
|
|
108
|
+
let rollupAddress;
|
|
109
|
+
let watcher;
|
|
106
110
|
if (!aztecNodeConfig.p2pEnabled) {
|
|
107
|
-
|
|
108
|
-
assumeProvenThroughBlockNumber: Number.MAX_SAFE_INTEGER,
|
|
111
|
+
({ rollupAddress } = await deployContractsToL1(aztecNodeConfig, aztecNodeConfig.validatorPrivateKeys.getValue()[0], {
|
|
109
112
|
genesisArchiveRoot,
|
|
110
113
|
feeJuicePortalInitialBalance: fundingNeeded
|
|
111
|
-
});
|
|
114
|
+
}));
|
|
112
115
|
const chain = aztecNodeConfig.l1RpcUrls.length > 0 ? createEthereumChain([
|
|
113
116
|
l1RpcUrl
|
|
114
117
|
], aztecNodeConfig.l1ChainId) : {
|
|
@@ -120,10 +123,12 @@ const localAnvil = foundry;
|
|
|
120
123
|
httpViemTransport(l1RpcUrl)
|
|
121
124
|
])
|
|
122
125
|
});
|
|
123
|
-
|
|
126
|
+
cheatcodes = new EthCheatCodes([
|
|
124
127
|
l1RpcUrl
|
|
125
|
-
], dateProvider)
|
|
128
|
+
], dateProvider);
|
|
129
|
+
watcher = new AnvilTestWatcher(cheatcodes, rollupAddress, publicClient, dateProvider);
|
|
126
130
|
watcher.setisLocalNetwork(true);
|
|
131
|
+
watcher.setIsMarkingAsProven(false); // Do not mark as proven in the watcher. It's marked in the epochTestSettler after the out hash is set.
|
|
127
132
|
await watcher.start();
|
|
128
133
|
}
|
|
129
134
|
const telemetry = await initTelemetryClient(getTelemetryClientConfig());
|
|
@@ -136,18 +141,22 @@ const localAnvil = foundry;
|
|
|
136
141
|
}, {
|
|
137
142
|
prefilledPublicData
|
|
138
143
|
});
|
|
144
|
+
let epochTestSettler;
|
|
145
|
+
if (!aztecNodeConfig.p2pEnabled) {
|
|
146
|
+
epochTestSettler = new EpochTestSettler(cheatcodes, rollupAddress, node.getBlockSource(), logger.createChild('epoch-settler'), {
|
|
147
|
+
pollingIntervalMs: 200
|
|
148
|
+
});
|
|
149
|
+
await epochTestSettler.start();
|
|
150
|
+
}
|
|
139
151
|
if (initialAccounts.length) {
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
152
|
+
const wallet = await EmbeddedWallet.create(node, {
|
|
153
|
+
pxeConfig: {
|
|
154
|
+
proverEnabled: aztecNodeConfig.realProofs
|
|
155
|
+
}
|
|
156
|
+
});
|
|
144
157
|
userLog('Setting up funded test accounts...');
|
|
145
|
-
const accountManagers = await deployFundedSchnorrAccounts(wallet,
|
|
146
|
-
const
|
|
147
|
-
account: manager,
|
|
148
|
-
secretKey: initialAccounts[i].secret
|
|
149
|
-
}));
|
|
150
|
-
const accLogs = await createAccountLogs(accountsWithSecrets, wallet);
|
|
158
|
+
const accountManagers = await deployFundedSchnorrAccounts(wallet, initialAccounts);
|
|
159
|
+
const accLogs = await createAccountLogs(accountManagers, wallet);
|
|
151
160
|
userLog(accLogs.join(''));
|
|
152
161
|
await setupBananaFPC(initialAccounts, wallet, userLog);
|
|
153
162
|
userLog(`SponsoredFPC: ${await getSponsoredFPCAddress()}`);
|
|
@@ -157,6 +166,7 @@ const localAnvil = foundry;
|
|
|
157
166
|
const stop = async ()=>{
|
|
158
167
|
await node.stop();
|
|
159
168
|
await watcher?.stop();
|
|
169
|
+
await epochTestSettler?.stop();
|
|
160
170
|
};
|
|
161
171
|
return {
|
|
162
172
|
node,
|
|
@@ -9,7 +9,9 @@ import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
|
9
9
|
* codes, please consider whether it makes sense to just introduce new utils in your tests instead.
|
|
10
10
|
*/
|
|
11
11
|
export declare class CheatCodes {
|
|
12
|
+
/** Cheat codes for L1.*/
|
|
12
13
|
eth: EthCheatCodes;
|
|
14
|
+
/** Cheat codes for the Aztec Rollup contract on L1. */
|
|
13
15
|
rollup: RollupCheatCodes;
|
|
14
16
|
constructor(
|
|
15
17
|
/** Cheat codes for L1.*/
|
|
@@ -38,4 +40,4 @@ export declare class CheatCodes {
|
|
|
38
40
|
*/
|
|
39
41
|
warpL2TimeAtLeastBy(sequencerClient: SequencerClient, node: AztecNode, duration: bigint | number): Promise<void>;
|
|
40
42
|
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlYXRfY29kZXMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0aW5nL2NoZWF0X2NvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd2RSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRTs7Ozs7R0FLRztBQUNILHFCQUFhLFVBQVU7SUFFbkIseUJBQXlCO0lBQ2xCLEdBQUcsRUFBRSxhQUFhO0lBQ3pCLHVEQUF1RDtJQUNoRCxNQUFNLEVBQUUsZ0JBQWdCO0lBSmpDO0lBQ0UseUJBQXlCO0lBQ2xCLEdBQUcsRUFBRSxhQUFhO0lBQ3pCLHVEQUF1RDtJQUNoRCxNQUFNLEVBQUUsZ0JBQWdCLEVBQzdCO0lBRUosT0FBYSxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBT3ZHO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDRyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sR0FBRyxNQUFNLGlCQXVCNUc7SUFFRDs7Ozs7Ozs7T0FRRztJQUNHLG1CQUFtQixDQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxHQUFHLE1BQU0saUJBSXJHO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cheat_codes.d.ts","sourceRoot":"","sources":["../../src/testing/cheat_codes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE;;;;;GAKG;AACH,qBAAa,UAAU;
|
|
1
|
+
{"version":3,"file":"cheat_codes.d.ts","sourceRoot":"","sources":["../../src/testing/cheat_codes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE;;;;;GAKG;AACH,qBAAa,UAAU;IAEnB,yBAAyB;IAClB,GAAG,EAAE,aAAa;IACzB,uDAAuD;IAChD,MAAM,EAAE,gBAAgB;IAJjC;IACE,yBAAyB;IAClB,GAAG,EAAE,aAAa;IACzB,uDAAuD;IAChD,MAAM,EAAE,gBAAgB,EAC7B;IAEJ,OAAa,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAOvG;IAED;;;;;;;;OAQG;IACG,mBAAmB,CAAC,eAAe,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,iBAuB5G;IAED;;;;;;;;OAQG;IACG,mBAAmB,CAAC,eAAe,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,iBAIrG;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type EthCheatCodes } from '@aztec/ethereum/test';
|
|
2
|
+
import { type EpochNumber } from '@aztec/foundation/branded-types';
|
|
3
|
+
import type { Logger } from '@aztec/foundation/log';
|
|
4
|
+
import type { EthAddress, L2BlockSource } from '@aztec/stdlib/block';
|
|
5
|
+
export declare class EpochTestSettler {
|
|
6
|
+
private l2BlockSource;
|
|
7
|
+
private log;
|
|
8
|
+
private options;
|
|
9
|
+
private rollupCheatCodes;
|
|
10
|
+
private epochMonitor?;
|
|
11
|
+
constructor(cheatcodes: EthCheatCodes, rollupAddress: EthAddress, l2BlockSource: L2BlockSource, log: Logger, options: {
|
|
12
|
+
pollingIntervalMs: number;
|
|
13
|
+
provingDelayMs?: number;
|
|
14
|
+
});
|
|
15
|
+
start(): Promise<void>;
|
|
16
|
+
stop(): Promise<void>;
|
|
17
|
+
handleEpochReadyToProve(epoch: EpochNumber): Promise<boolean>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2hfdGVzdF9zZXR0bGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGluZy9lcG9jaF90ZXN0X3NldHRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssYUFBYSxFQUFvQixNQUFNLHNCQUFzQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBYyxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdyRSxxQkFBYSxnQkFBZ0I7SUFPekIsT0FBTyxDQUFDLGFBQWE7SUFDckIsT0FBTyxDQUFDLEdBQUc7SUFDWCxPQUFPLENBQUMsT0FBTztJQVJqQixPQUFPLENBQUMsZ0JBQWdCLENBQW1CO0lBQzNDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBZTtJQUVwQyxZQUNFLFVBQVUsRUFBRSxhQUFhLEVBQ3pCLGFBQWEsRUFBRSxVQUFVLEVBQ2pCLGFBQWEsRUFBRSxhQUFhLEVBQzVCLEdBQUcsRUFBRSxNQUFNLEVBQ1gsT0FBTyxFQUFFO1FBQUUsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO1FBQUMsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFBO0tBQUUsRUFHeEU7SUFFSyxLQUFLLGtCQUlWO0lBRUssSUFBSSxrQkFFVDtJQUVLLHVCQUF1QixDQUFDLEtBQUssRUFBRSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQXFDbEU7Q0FDRiJ9
|
|
@@ -0,0 +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,CAqClE;CACF"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { RollupCheatCodes } from '@aztec/ethereum/test';
|
|
2
|
+
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
3
|
+
import { EpochMonitor } from '@aztec/prover-node';
|
|
4
|
+
import { computeL2ToL1MembershipWitnessFromMessagesInEpoch } from '@aztec/stdlib/messaging';
|
|
5
|
+
export class EpochTestSettler {
|
|
6
|
+
l2BlockSource;
|
|
7
|
+
log;
|
|
8
|
+
options;
|
|
9
|
+
rollupCheatCodes;
|
|
10
|
+
epochMonitor;
|
|
11
|
+
constructor(cheatcodes, rollupAddress, l2BlockSource, log, options){
|
|
12
|
+
this.l2BlockSource = l2BlockSource;
|
|
13
|
+
this.log = log;
|
|
14
|
+
this.options = options;
|
|
15
|
+
this.rollupCheatCodes = new RollupCheatCodes(cheatcodes, {
|
|
16
|
+
rollupAddress
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
async start() {
|
|
20
|
+
const { epochDuration } = await this.rollupCheatCodes.getConfig();
|
|
21
|
+
this.epochMonitor = new EpochMonitor(this.l2BlockSource, {
|
|
22
|
+
epochDuration: Number(epochDuration)
|
|
23
|
+
}, this.options);
|
|
24
|
+
this.epochMonitor.start(this);
|
|
25
|
+
}
|
|
26
|
+
async stop() {
|
|
27
|
+
await this.epochMonitor?.stop();
|
|
28
|
+
}
|
|
29
|
+
async handleEpochReadyToProve(epoch) {
|
|
30
|
+
const checkpointedBlocks = await this.l2BlockSource.getCheckpointedBlocksForEpoch(epoch);
|
|
31
|
+
const blocks = checkpointedBlocks.map((b)=>b.block);
|
|
32
|
+
this.log.info(`Settling epoch ${epoch} with blocks ${blocks[0]?.header.getBlockNumber()} to ${blocks.at(-1)?.header.getBlockNumber()}`, {
|
|
33
|
+
blocks: blocks.map((b)=>b.toBlockInfo())
|
|
34
|
+
});
|
|
35
|
+
const messagesInEpoch = [];
|
|
36
|
+
let previousSlotNumber = SlotNumber.ZERO;
|
|
37
|
+
let checkpointIndex = -1;
|
|
38
|
+
for (const block of blocks){
|
|
39
|
+
const slotNumber = block.header.globalVariables.slotNumber;
|
|
40
|
+
if (slotNumber !== previousSlotNumber) {
|
|
41
|
+
checkpointIndex++;
|
|
42
|
+
messagesInEpoch[checkpointIndex] = [];
|
|
43
|
+
previousSlotNumber = slotNumber;
|
|
44
|
+
}
|
|
45
|
+
messagesInEpoch[checkpointIndex].push(block.body.txEffects.map((txEffect)=>txEffect.l2ToL1Msgs));
|
|
46
|
+
}
|
|
47
|
+
const [firstMessage] = messagesInEpoch.flat(3);
|
|
48
|
+
if (firstMessage) {
|
|
49
|
+
const { root: outHash } = computeL2ToL1MembershipWitnessFromMessagesInEpoch(messagesInEpoch, firstMessage);
|
|
50
|
+
await this.rollupCheatCodes.insertOutbox(epoch, outHash.toBigInt());
|
|
51
|
+
} else {
|
|
52
|
+
this.log.info(`No L2 to L1 messages in epoch ${epoch}`);
|
|
53
|
+
}
|
|
54
|
+
const lastCheckpoint = checkpointedBlocks.at(-1)?.checkpointNumber;
|
|
55
|
+
if (lastCheckpoint !== undefined) {
|
|
56
|
+
await this.rollupCheatCodes.markAsProven(lastCheckpoint);
|
|
57
|
+
} else {
|
|
58
|
+
this.log.warn(`No checkpoint found for epoch ${epoch}`);
|
|
59
|
+
}
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
}
|
package/dest/testing/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
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
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0aW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUMifQ==
|
|
@@ -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"}
|
|
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"}
|
package/dest/testing/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/aztec",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.08c5969dc",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -28,38 +28,39 @@
|
|
|
28
28
|
"../package.common.json"
|
|
29
29
|
],
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@aztec/accounts": "0.0.1-commit.
|
|
32
|
-
"@aztec/archiver": "0.0.1-commit.
|
|
33
|
-
"@aztec/aztec-faucet": "0.0.1-commit.
|
|
34
|
-
"@aztec/aztec-node": "0.0.1-commit.
|
|
35
|
-
"@aztec/aztec.js": "0.0.1-commit.
|
|
36
|
-
"@aztec/bb-prover": "0.0.1-commit.
|
|
37
|
-
"@aztec/bb.js": "0.0.1-commit.
|
|
38
|
-
"@aztec/blob-client": "0.0.1-commit.
|
|
39
|
-
"@aztec/bot": "0.0.1-commit.
|
|
40
|
-
"@aztec/builder": "0.0.1-commit.
|
|
41
|
-
"@aztec/cli": "0.0.1-commit.
|
|
42
|
-
"@aztec/constants": "0.0.1-commit.
|
|
43
|
-
"@aztec/entrypoints": "0.0.1-commit.
|
|
44
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
45
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
46
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
47
|
-
"@aztec/l1-artifacts": "0.0.1-commit.
|
|
48
|
-
"@aztec/node-lib": "0.0.1-commit.
|
|
49
|
-
"@aztec/noir-contracts.js": "0.0.1-commit.
|
|
50
|
-
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.
|
|
51
|
-
"@aztec/p2p": "0.0.1-commit.
|
|
52
|
-
"@aztec/p2p-bootstrap": "0.0.1-commit.
|
|
53
|
-
"@aztec/protocol-contracts": "0.0.1-commit.
|
|
54
|
-
"@aztec/prover-client": "0.0.1-commit.
|
|
55
|
-
"@aztec/prover-node": "0.0.1-commit.
|
|
56
|
-
"@aztec/pxe": "0.0.1-commit.
|
|
57
|
-
"@aztec/sequencer-client": "0.0.1-commit.
|
|
58
|
-
"@aztec/stdlib": "0.0.1-commit.
|
|
59
|
-
"@aztec/telemetry-client": "0.0.1-commit.
|
|
60
|
-
"@aztec/
|
|
61
|
-
"@aztec/
|
|
62
|
-
"@aztec/
|
|
31
|
+
"@aztec/accounts": "0.0.1-commit.08c5969dc",
|
|
32
|
+
"@aztec/archiver": "0.0.1-commit.08c5969dc",
|
|
33
|
+
"@aztec/aztec-faucet": "0.0.1-commit.08c5969dc",
|
|
34
|
+
"@aztec/aztec-node": "0.0.1-commit.08c5969dc",
|
|
35
|
+
"@aztec/aztec.js": "0.0.1-commit.08c5969dc",
|
|
36
|
+
"@aztec/bb-prover": "0.0.1-commit.08c5969dc",
|
|
37
|
+
"@aztec/bb.js": "0.0.1-commit.08c5969dc",
|
|
38
|
+
"@aztec/blob-client": "0.0.1-commit.08c5969dc",
|
|
39
|
+
"@aztec/bot": "0.0.1-commit.08c5969dc",
|
|
40
|
+
"@aztec/builder": "0.0.1-commit.08c5969dc",
|
|
41
|
+
"@aztec/cli": "0.0.1-commit.08c5969dc",
|
|
42
|
+
"@aztec/constants": "0.0.1-commit.08c5969dc",
|
|
43
|
+
"@aztec/entrypoints": "0.0.1-commit.08c5969dc",
|
|
44
|
+
"@aztec/ethereum": "0.0.1-commit.08c5969dc",
|
|
45
|
+
"@aztec/foundation": "0.0.1-commit.08c5969dc",
|
|
46
|
+
"@aztec/kv-store": "0.0.1-commit.08c5969dc",
|
|
47
|
+
"@aztec/l1-artifacts": "0.0.1-commit.08c5969dc",
|
|
48
|
+
"@aztec/node-lib": "0.0.1-commit.08c5969dc",
|
|
49
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.08c5969dc",
|
|
50
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.08c5969dc",
|
|
51
|
+
"@aztec/p2p": "0.0.1-commit.08c5969dc",
|
|
52
|
+
"@aztec/p2p-bootstrap": "0.0.1-commit.08c5969dc",
|
|
53
|
+
"@aztec/protocol-contracts": "0.0.1-commit.08c5969dc",
|
|
54
|
+
"@aztec/prover-client": "0.0.1-commit.08c5969dc",
|
|
55
|
+
"@aztec/prover-node": "0.0.1-commit.08c5969dc",
|
|
56
|
+
"@aztec/pxe": "0.0.1-commit.08c5969dc",
|
|
57
|
+
"@aztec/sequencer-client": "0.0.1-commit.08c5969dc",
|
|
58
|
+
"@aztec/stdlib": "0.0.1-commit.08c5969dc",
|
|
59
|
+
"@aztec/telemetry-client": "0.0.1-commit.08c5969dc",
|
|
60
|
+
"@aztec/txe": "0.0.1-commit.08c5969dc",
|
|
61
|
+
"@aztec/validator-ha-signer": "0.0.1-commit.08c5969dc",
|
|
62
|
+
"@aztec/wallets": "0.0.1-commit.08c5969dc",
|
|
63
|
+
"@aztec/world-state": "0.0.1-commit.08c5969dc",
|
|
63
64
|
"@types/chalk": "^2.2.0",
|
|
64
65
|
"abitype": "^0.8.11",
|
|
65
66
|
"chalk": "^5.3.0",
|
|
@@ -79,7 +80,7 @@
|
|
|
79
80
|
"@jest/globals": "^30.0.0",
|
|
80
81
|
"@types/jest": "^30.0.0",
|
|
81
82
|
"@types/koa": "^2.15.0",
|
|
82
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
83
|
+
"@typescript/native-preview": "7.0.0-dev.20260113.1",
|
|
83
84
|
"jest": "^30.0.0",
|
|
84
85
|
"ts-node": "^10.9.1",
|
|
85
86
|
"typescript": "^5.3.3"
|
package/scripts/aztec.sh
CHANGED
|
@@ -1,26 +1,33 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
set -euo pipefail
|
|
3
|
+
shopt -s inherit_errexit
|
|
4
|
+
|
|
5
|
+
# Re-execute using correct version if we have an .aztecrc file.
|
|
6
|
+
if [ "${AZTEC_VERSIONED:-0}" -eq 0 ] && [ -f .aztecrc ] && command -v aztec-up &>/dev/null; then
|
|
7
|
+
env_setup=$(aztec-up env)
|
|
8
|
+
eval "$env_setup"
|
|
9
|
+
AZTEC_VERSIONED=1 exec aztec "$@"
|
|
10
|
+
fi
|
|
11
|
+
|
|
12
|
+
cmd=${1:-}
|
|
13
|
+
[ -n "$cmd" ] && shift
|
|
3
14
|
|
|
4
15
|
script_dir="$(dirname "$(realpath "$0")")"
|
|
5
16
|
|
|
6
17
|
function aztec {
|
|
18
|
+
export AZTEC_SHELL_WRAPPER=1
|
|
7
19
|
exec node --no-warnings $script_dir/../dest/bin/index.js "$@"
|
|
8
20
|
}
|
|
9
21
|
|
|
10
|
-
cmd=${1:-}
|
|
11
|
-
[ -n "$cmd" ] && shift
|
|
12
|
-
|
|
13
|
-
export AZTEC_SHELL_WRAPPER=1
|
|
14
|
-
|
|
15
22
|
case $cmd in
|
|
16
23
|
test)
|
|
17
|
-
export LOG_LEVEL="${LOG_LEVEL:-
|
|
24
|
+
export LOG_LEVEL="${LOG_LEVEL:-error}"
|
|
18
25
|
aztec start --txe --port 8081 &
|
|
19
26
|
server_pid=$!
|
|
20
27
|
trap 'kill $server_pid &>/dev/null || true' EXIT
|
|
21
28
|
while ! nc -z 127.0.0.1 8081 &>/dev/null; do sleep 0.2; done
|
|
22
29
|
export NARGO_FOREIGN_CALL_TIMEOUT=300000
|
|
23
|
-
nargo test --silence-warnings
|
|
30
|
+
nargo test --silence-warnings --oracle-resolver http://127.0.0.1:8081 "$@"
|
|
24
31
|
;;
|
|
25
32
|
start)
|
|
26
33
|
if [ "${1:-}" == "--local-network" ]; then
|
package/src/bin/index.ts
CHANGED
|
@@ -14,6 +14,7 @@ import { createConsoleLogger, createLogger } from '@aztec/foundation/log';
|
|
|
14
14
|
|
|
15
15
|
import { Command } from 'commander';
|
|
16
16
|
|
|
17
|
+
import { injectMigrateCommand } from '../cli/cmds/migrate_ha_db.js';
|
|
17
18
|
import { injectAztecCommands } from '../cli/index.js';
|
|
18
19
|
import { getCliVersion } from '../cli/release_version.js';
|
|
19
20
|
|
|
@@ -55,6 +56,7 @@ async function main() {
|
|
|
55
56
|
program = injectAztecNodeCommands(program, userLog, debugLogger);
|
|
56
57
|
program = injectMiscCommands(program, userLog);
|
|
57
58
|
program = injectValidatorKeysCommands(program, userLog);
|
|
59
|
+
program = injectMigrateCommand(program, userLog);
|
|
58
60
|
|
|
59
61
|
await program.parseAsync(process.argv);
|
|
60
62
|
}
|
|
@@ -35,6 +35,11 @@ export async function aztecStart(options: any, userLog: LogFn, debugLogger: Logg
|
|
|
35
35
|
l1RpcUrls: options.l1RpcUrls,
|
|
36
36
|
testAccounts: localNetwork.testAccounts,
|
|
37
37
|
realProofs: false,
|
|
38
|
+
// Setting the epoch duration to 4 by default for local network. This allows the epoch to be "proven" faster, so
|
|
39
|
+
// the users can consume out hash without having to wait for a long time.
|
|
40
|
+
// Note: We are not proving anything in the local network (realProofs == false). But in `createLocalNetwork`,
|
|
41
|
+
// the EpochTestSettler will set the out hash to the outbox when an epoch is complete.
|
|
42
|
+
aztecEpochDuration: 4,
|
|
38
43
|
},
|
|
39
44
|
userLog,
|
|
40
45
|
);
|
|
@@ -19,7 +19,7 @@ import { proverAgentConfigMappings, proverBrokerConfigMappings } from '@aztec/pr
|
|
|
19
19
|
import { proverNodeConfigMappings } from '@aztec/prover-node/config';
|
|
20
20
|
import { allPxeConfigMappings } from '@aztec/pxe/config';
|
|
21
21
|
import { sequencerClientConfigMappings } from '@aztec/sequencer-client/config';
|
|
22
|
-
import { chainConfigMappings } from '@aztec/stdlib/config';
|
|
22
|
+
import { chainConfigMappings, nodeRpcConfigMappings } from '@aztec/stdlib/config';
|
|
23
23
|
import { telemetryClientConfigMappings } from '@aztec/telemetry-client/config';
|
|
24
24
|
import { worldStateConfigMappings } from '@aztec/world-state/config';
|
|
25
25
|
|
|
@@ -148,6 +148,8 @@ export const aztecStartOptions: { [key: string]: AztecStartOption[] } = {
|
|
|
148
148
|
defaultValue: '',
|
|
149
149
|
env: 'API_PREFIX',
|
|
150
150
|
},
|
|
151
|
+
configToFlag('--rpcMaxBatchSize', nodeRpcConfigMappings.rpcMaxBatchSize),
|
|
152
|
+
configToFlag('--rpcMaxBodySize', nodeRpcConfigMappings.rpcMaxBodySize),
|
|
151
153
|
],
|
|
152
154
|
ETHEREUM: [
|
|
153
155
|
configToFlag('--l1-chain-id', l1ReaderConfigMappings.l1ChainId),
|
package/src/cli/cli.ts
CHANGED
|
@@ -35,44 +35,12 @@ export function injectAztecCommands(program: Command, userLog: LogFn, debugLogge
|
|
|
35
35
|
program.addHelpText(
|
|
36
36
|
'after',
|
|
37
37
|
`
|
|
38
|
+
Additional commands:
|
|
38
39
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
--name <name> Name of the package
|
|
44
|
-
--contract Use a contract template (default)
|
|
45
|
-
--lib Use a library template
|
|
46
|
-
--bin Use a binary template
|
|
47
|
-
Examples:
|
|
48
|
-
$ aztec init # creates a contract project in current directory
|
|
49
|
-
$ aztec init --lib # creates a library project
|
|
50
|
-
|
|
51
|
-
new <path> [options]: creates a new Noir project in a new directory
|
|
52
|
-
Options:
|
|
53
|
-
--name <name> Name of the package
|
|
54
|
-
--contract Use a contract template (default)
|
|
55
|
-
--lib Use a library template
|
|
56
|
-
--bin Use a binary template
|
|
57
|
-
Examples:
|
|
58
|
-
$ aztec new my-project # creates a contract project in ./my-project
|
|
59
|
-
$ aztec new my-lib --lib # creates a library project in ./my-lib
|
|
60
|
-
|
|
61
|
-
compile [options]: compiles Aztec Noir contracts
|
|
62
|
-
Compiles contracts with nargo compile and then postprocesses them to generate Aztec-specific artifacts including:
|
|
63
|
-
- Transpiled contract artifacts
|
|
64
|
-
- Verification keys
|
|
65
|
-
The compiled contracts will be placed in the target/ directory by default.
|
|
66
|
-
Supports standard nargo compile options.
|
|
67
|
-
|
|
68
|
-
test [options]: starts a dockerized TXE node via
|
|
69
|
-
$ aztec start --txe
|
|
70
|
-
then runs
|
|
71
|
-
$ aztec test --silence-warnings --oracle-resolver=<TXE_ADDRESS> [options]
|
|
72
|
-
|
|
73
|
-
preload-crs: Downloads and caches the Common Reference String (CRS) data required for zero-knowledge proofs.
|
|
74
|
-
Example:
|
|
75
|
-
$ aztec preload-crs # preloads CRS data
|
|
40
|
+
init [folder] [options] creates a new Aztec Noir project.
|
|
41
|
+
new <path> [options] creates a new Aztec Noir project in a new directory.
|
|
42
|
+
compile [options] compiles Aztec Noir contracts.
|
|
43
|
+
test [options] starts a TXE and runs "nargo test" using it as the oracle resolver.
|
|
76
44
|
`,
|
|
77
45
|
);
|
|
78
46
|
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { runMigrations } from '@aztec/validator-ha-signer/migrations';
|
|
2
|
+
|
|
3
|
+
import type { Command } from 'commander';
|
|
4
|
+
|
|
5
|
+
export function injectMigrateCommand(program: Command, log: (msg: string) => void): Command {
|
|
6
|
+
const migrateCommand = program.command('migrate-ha-db').description('Run validator-ha-signer database migrations');
|
|
7
|
+
|
|
8
|
+
migrateCommand
|
|
9
|
+
.command('up')
|
|
10
|
+
.description('Apply pending migrations')
|
|
11
|
+
.requiredOption('--database-url <string>', 'PostgreSQL connection string', process.env.DATABASE_URL)
|
|
12
|
+
.option('--verbose', 'Enable verbose output', false)
|
|
13
|
+
.action(async options => {
|
|
14
|
+
const migrations = await runMigrations(options.databaseUrl, {
|
|
15
|
+
direction: 'up',
|
|
16
|
+
verbose: options.verbose,
|
|
17
|
+
});
|
|
18
|
+
if (migrations.length > 0) {
|
|
19
|
+
log(`Applied migrations: ${migrations.join(', ')}`);
|
|
20
|
+
} else {
|
|
21
|
+
log('No migrations to apply - schema is up to date');
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
migrateCommand
|
|
26
|
+
.command('down')
|
|
27
|
+
.description('Rollback the last migration')
|
|
28
|
+
.requiredOption('--database-url <string>', 'PostgreSQL connection string', process.env.DATABASE_URL)
|
|
29
|
+
.option('--verbose', 'Enable verbose output', false)
|
|
30
|
+
.action(async options => {
|
|
31
|
+
const migrations = await runMigrations(options.databaseUrl, {
|
|
32
|
+
direction: 'down',
|
|
33
|
+
verbose: options.verbose,
|
|
34
|
+
});
|
|
35
|
+
if (migrations.length > 0) {
|
|
36
|
+
log(`Rolled back migrations: ${migrations.join(', ')}`);
|
|
37
|
+
} else {
|
|
38
|
+
log('No migrations to rollback');
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
return program;
|
|
43
|
+
}
|
|
@@ -1,16 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Archiver,
|
|
3
|
-
type ArchiverConfig,
|
|
4
|
-
KVArchiverDataStore,
|
|
5
|
-
archiverConfigMappings,
|
|
6
|
-
getArchiverConfigFromEnv,
|
|
7
|
-
} from '@aztec/archiver';
|
|
1
|
+
import { type ArchiverConfig, archiverConfigMappings, createArchiver, getArchiverConfigFromEnv } from '@aztec/archiver';
|
|
8
2
|
import { createLogger } from '@aztec/aztec.js/log';
|
|
9
3
|
import { type BlobClientConfig, blobClientConfigMapping, createBlobClient } from '@aztec/blob-client/client';
|
|
10
4
|
import { getL1Config } from '@aztec/cli/config';
|
|
11
5
|
import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
|
|
12
6
|
import { type DataStoreConfig, dataConfigMappings } from '@aztec/kv-store/config';
|
|
13
|
-
import { createStore } from '@aztec/kv-store/lmdb-v2';
|
|
14
7
|
import { ArchiverApiSchema } from '@aztec/stdlib/interfaces/server';
|
|
15
8
|
import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
|
|
16
9
|
|
|
@@ -47,13 +40,9 @@ export async function startArchiver(
|
|
|
47
40
|
archiverConfig.l1Contracts = addresses;
|
|
48
41
|
archiverConfig = { ...archiverConfig, ...l1Config };
|
|
49
42
|
|
|
50
|
-
const storeLog = createLogger('archiver:lmdb');
|
|
51
|
-
const store = await createStore('archiver', KVArchiverDataStore.SCHEMA_VERSION, archiverConfig, storeLog);
|
|
52
|
-
const archiverStore = new KVArchiverDataStore(store, archiverConfig.maxLogs);
|
|
53
|
-
|
|
54
43
|
const telemetry = await initTelemetryClient(getTelemetryClientConfig());
|
|
55
44
|
const blobClient = createBlobClient(archiverConfig, { logger: createLogger('archiver:blob-client:client') });
|
|
56
|
-
const archiver = await
|
|
45
|
+
const archiver = await createArchiver(archiverConfig, { telemetry, blobClient }, { blockUntilSync: true });
|
|
57
46
|
services.archiver = [archiver, ArchiverApiSchema];
|
|
58
47
|
signalHandlers.push(archiver.stop);
|
|
59
48
|
|
|
@@ -10,9 +10,9 @@ import {
|
|
|
10
10
|
initTelemetryClient,
|
|
11
11
|
makeTracedFetch,
|
|
12
12
|
} from '@aztec/telemetry-client';
|
|
13
|
-
import {
|
|
13
|
+
import { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
14
14
|
|
|
15
|
-
import { extractRelevantOptions } from '../util.js';
|
|
15
|
+
import { extractRelevantOptions, stringifyConfig } from '../util.js';
|
|
16
16
|
import { getVersions } from '../versioning.js';
|
|
17
17
|
|
|
18
18
|
export async function startBot(
|
|
@@ -38,22 +38,25 @@ export async function startBot(
|
|
|
38
38
|
const aztecNode = createAztecNodeClient(config.nodeUrl, getVersions(), fetch);
|
|
39
39
|
|
|
40
40
|
const pxeConfig = extractRelevantOptions<PXEConfig & CliPXEOptions>(options, allPxeConfigMappings, 'pxe');
|
|
41
|
-
|
|
41
|
+
userLog(`Creating bot wallet with config ${stringifyConfig(pxeConfig)}`);
|
|
42
|
+
const wallet = await EmbeddedWallet.create(aztecNode, { pxeConfig });
|
|
42
43
|
|
|
43
44
|
const telemetry = await initTelemetryClient(getTelemetryClientConfig());
|
|
44
|
-
await addBot(options, signalHandlers, services, wallet, aztecNode, telemetry, undefined);
|
|
45
|
+
await addBot(options, signalHandlers, services, wallet, aztecNode, telemetry, undefined, userLog);
|
|
45
46
|
}
|
|
46
47
|
|
|
47
48
|
export async function addBot(
|
|
48
49
|
options: any,
|
|
49
50
|
signalHandlers: (() => Promise<void>)[],
|
|
50
51
|
services: NamespacedApiHandlers,
|
|
51
|
-
wallet:
|
|
52
|
+
wallet: EmbeddedWallet,
|
|
52
53
|
aztecNode: AztecNode,
|
|
53
54
|
telemetry: TelemetryClient,
|
|
54
55
|
aztecNodeAdmin?: AztecNodeAdmin,
|
|
56
|
+
userLog?: LogFn,
|
|
55
57
|
) {
|
|
56
58
|
const config = extractRelevantOptions<BotConfig>(options, botConfigMappings, 'bot');
|
|
59
|
+
userLog?.(`Starting bot with config ${stringifyConfig(config)}`);
|
|
57
60
|
|
|
58
61
|
const db = await (config.dataDirectory
|
|
59
62
|
? createStore('bot', BotStore.SCHEMA_VERSION, config)
|