@aztec/aztec 3.0.3 → 4.0.0-devnet.1-patch.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/bin/index.js +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 -4
- 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 +9 -15
- package/dest/cli/cli.d.ts +1 -1
- package/dest/cli/cli.d.ts.map +1 -1
- package/dest/cli/cli.js +9 -53
- 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 +10 -12
- 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 +4 -2
- 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 +4 -14
- package/dest/cli/util.d.ts.map +1 -1
- package/dest/cli/util.js +7 -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 +4 -5
- package/dest/local-network/local-network.d.ts.map +1 -1
- package/dest/local-network/local-network.js +32 -22
- 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 +37 -35
- package/scripts/aztec.sh +63 -0
- package/scripts/compile.sh +44 -0
- package/scripts/extract_function.js +47 -0
- package/scripts/flamegraph.sh +59 -0
- package/scripts/init.sh +35 -0
- package/scripts/new.sh +59 -0
- package/scripts/setup_project.sh +31 -0
- package/src/bin/index.ts +2 -0
- package/src/cli/aztec_start_action.ts +5 -3
- package/src/cli/aztec_start_options.ts +8 -14
- package/src/cli/cli.ts +12 -56
- package/src/cli/cmds/migrate_ha_db.ts +43 -0
- package/src/cli/cmds/start_archiver.ts +6 -17
- package/src/cli/cmds/start_bot.ts +3 -3
- 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 +8 -20
- package/src/examples/token.ts +5 -7
- package/src/local-network/banana_fpc.ts +10 -6
- package/src/local-network/local-network.ts +41 -31
- package/src/testing/epoch_test_settler.ts +71 -0
- package/src/testing/index.ts +1 -0
- 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 -33
- package/src/cli/cmds/start_blob_sink.ts +0 -57
package/dest/examples/token.js
CHANGED
|
@@ -2,7 +2,7 @@ import { getInitialTestAccountsData } from '@aztec/accounts/testing';
|
|
|
2
2
|
import { createAztecNodeClient } from '@aztec/aztec.js/node';
|
|
3
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
5
|
-
import {
|
|
5
|
+
import { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
6
6
|
const logger = createLogger('example:token');
|
|
7
7
|
const nodeUrl = 'http://localhost:8080';
|
|
8
8
|
const node = createAztecNodeClient(nodeUrl);
|
|
@@ -12,7 +12,7 @@ const TRANSFER_AMOUNT = 33n;
|
|
|
12
12
|
* Main function.
|
|
13
13
|
*/ async function main() {
|
|
14
14
|
logger.info('Running token contract test on HTTP interface.');
|
|
15
|
-
const wallet = await
|
|
15
|
+
const wallet = await EmbeddedWallet.create(node);
|
|
16
16
|
// During local network setup we deploy a few accounts. Below we add them to our wallet.
|
|
17
17
|
const [aliceInitialAccountData, bobInitialAccountData] = await getInitialTestAccountsData();
|
|
18
18
|
await wallet.createSchnorrAccount(aliceInitialAccountData.secret, aliceInitialAccountData.salt);
|
|
@@ -23,13 +23,13 @@ const TRANSFER_AMOUNT = 33n;
|
|
|
23
23
|
logger.info('Deploying Token...');
|
|
24
24
|
const token = await TokenContract.deploy(wallet, alice, 'TokenName', 'TokenSymbol', 18).send({
|
|
25
25
|
from: alice
|
|
26
|
-
})
|
|
26
|
+
});
|
|
27
27
|
logger.info('Token deployed');
|
|
28
28
|
// Mint tokens to Alice
|
|
29
29
|
logger.info(`Minting ${ALICE_MINT_BALANCE} more coins to Alice...`);
|
|
30
30
|
await token.methods.mint_to_private(alice, ALICE_MINT_BALANCE).send({
|
|
31
31
|
from: alice
|
|
32
|
-
})
|
|
32
|
+
});
|
|
33
33
|
logger.info(`${ALICE_MINT_BALANCE} tokens were successfully minted by Alice and transferred to private`);
|
|
34
34
|
const balanceAfterMint = await token.methods.balance_of_private(alice).simulate({
|
|
35
35
|
from: alice
|
|
@@ -39,7 +39,7 @@ const TRANSFER_AMOUNT = 33n;
|
|
|
39
39
|
logger.info(`Transferring ${TRANSFER_AMOUNT} tokens from Alice to Bob...`);
|
|
40
40
|
await token.methods.transfer(bob, TRANSFER_AMOUNT).send({
|
|
41
41
|
from: alice
|
|
42
|
-
})
|
|
42
|
+
});
|
|
43
43
|
// Check the new balances
|
|
44
44
|
const aliceBalance = await token.methods.balance_of_private(alice).simulate({
|
|
45
45
|
from: alice
|
|
@@ -7,4 +7,4 @@ export declare function getBananaFPCAddress(initialAccounts: InitialAccountData[
|
|
|
7
7
|
export declare function setupBananaFPC(initialAccounts: InitialAccountData[], wallet: Wallet, log: LogFn): Promise<void>;
|
|
8
8
|
export declare function registerDeployedBananaCoinInWalletAndGetAddress(wallet: Wallet): Promise<AztecAddress>;
|
|
9
9
|
export declare function registerDeployedBananaFPCInWalletAndGetAddress(wallet: Wallet): Promise<AztecAddress>;
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuYW5hX2ZwYy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvY2FsLW5ldHdvcmsvYmFuYW5hX2ZwYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxrQkFBa0IsRUFBOEIsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUduRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUF3QjNELHdCQUFzQixvQkFBb0IsQ0FBQyxlQUFlLEVBQUUsa0JBQWtCLEVBQUUseUJBRS9FO0FBV0Qsd0JBQXNCLG1CQUFtQixDQUFDLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSx5QkFFOUU7QUFFRCx3QkFBc0IsY0FBYyxDQUFDLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssaUJBa0JyRztBQUVELHdCQUFzQiwrQ0FBK0MsQ0FBQyxNQUFNLEVBQUUsTUFBTSx5QkFNbkY7QUFFRCx3QkFBc0IsOENBQThDLENBQUMsTUFBTSxFQUFFLE1BQU0seUJBTWxGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banana_fpc.d.ts","sourceRoot":"","sources":["../../src/local-network/banana_fpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAA8B,MAAM,yBAAyB,CAAC;AAC9F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAwB3D,wBAAsB,oBAAoB,CAAC,eAAe,EAAE,kBAAkB,EAAE,yBAE/E;AAWD,wBAAsB,mBAAmB,CAAC,eAAe,EAAE,kBAAkB,EAAE,yBAE9E;AAED,wBAAsB,cAAc,CAAC,eAAe,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"banana_fpc.d.ts","sourceRoot":"","sources":["../../src/local-network/banana_fpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAA8B,MAAM,yBAAyB,CAAC;AAC9F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAwB3D,wBAAsB,oBAAoB,CAAC,eAAe,EAAE,kBAAkB,EAAE,yBAE/E;AAWD,wBAAsB,mBAAmB,CAAC,eAAe,EAAE,kBAAkB,EAAE,yBAE9E;AAED,wBAAsB,cAAc,CAAC,eAAe,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,iBAkBrG;AAED,wBAAsB,+CAA+C,CAAC,MAAM,EAAE,MAAM,yBAMnF;AAED,wBAAsB,8CAA8C,CAAC,MAAM,EAAE,MAAM,yBAMlF"}
|
|
@@ -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}`);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { AztecNodeService } from '@aztec/aztec-node';
|
|
3
3
|
import { type AztecNodeConfig } from '@aztec/aztec-node/config';
|
|
4
4
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
5
|
-
import { type
|
|
5
|
+
import { type BlobClientInterface } from '@aztec/blob-client/client';
|
|
6
6
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
7
7
|
import type { LogFn } from '@aztec/foundation/log';
|
|
8
8
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
@@ -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. */
|
|
@@ -64,9 +63,9 @@ export declare function createLocalNetwork(config: Partial<LocalNetworkConfig> |
|
|
|
64
63
|
*/
|
|
65
64
|
export declare function createAztecNode(config?: Partial<AztecNodeConfig>, deps?: {
|
|
66
65
|
telemetry?: TelemetryClient;
|
|
67
|
-
|
|
66
|
+
blobClient?: BlobClientInterface;
|
|
68
67
|
dateProvider?: DateProvider;
|
|
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,
|
|
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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env -S node --no-warnings
|
|
2
|
-
import { getInitialTestAccountsData } from '@aztec/accounts/testing
|
|
2
|
+
import { getInitialTestAccountsData } from '@aztec/accounts/testing';
|
|
3
3
|
import { AztecNodeService } from '@aztec/aztec-node';
|
|
4
4
|
import { getConfigEnvVars } from '@aztec/aztec-node/config';
|
|
5
5
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
6
6
|
import { createLogger } from '@aztec/aztec.js/log';
|
|
7
|
-
import {
|
|
7
|
+
import { createBlobClient } from '@aztec/blob-client/client';
|
|
8
8
|
import { GENESIS_ARCHIVE_ROOT } from '@aztec/constants';
|
|
9
9
|
import { createEthereumChain } from '@aztec/ethereum/chain';
|
|
10
10
|
import { waitForPublicClient } from '@aztec/ethereum/client';
|
|
@@ -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,34 +123,40 @@ 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());
|
|
130
|
-
// Create a local blob
|
|
131
|
-
const
|
|
135
|
+
// Create a local blob client client inside the local network, no http connectivity
|
|
136
|
+
const blobClient = createBlobClient();
|
|
132
137
|
const node = await createAztecNode(aztecNodeConfig, {
|
|
133
138
|
telemetry,
|
|
134
|
-
|
|
139
|
+
blobClient,
|
|
135
140
|
dateProvider
|
|
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,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/aztec",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0-devnet.1-patch.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
7
7
|
"./testing": "./dest/testing/index.js"
|
|
8
8
|
},
|
|
9
|
-
"bin": "./
|
|
9
|
+
"bin": "./scripts/aztec.sh",
|
|
10
10
|
"typedocOptions": {
|
|
11
11
|
"entryPoints": [
|
|
12
12
|
"./src/index.ts"
|
|
@@ -28,38 +28,39 @@
|
|
|
28
28
|
"../package.common.json"
|
|
29
29
|
],
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@aztec/accounts": "
|
|
32
|
-
"@aztec/archiver": "
|
|
33
|
-
"@aztec/aztec-faucet": "
|
|
34
|
-
"@aztec/aztec-node": "
|
|
35
|
-
"@aztec/aztec.js": "
|
|
36
|
-
"@aztec/bb-prover": "
|
|
37
|
-
"@aztec/bb.js": "
|
|
38
|
-
"@aztec/blob-
|
|
39
|
-
"@aztec/bot": "
|
|
40
|
-
"@aztec/builder": "
|
|
41
|
-
"@aztec/cli": "
|
|
42
|
-
"@aztec/constants": "
|
|
43
|
-
"@aztec/entrypoints": "
|
|
44
|
-
"@aztec/ethereum": "
|
|
45
|
-
"@aztec/foundation": "
|
|
46
|
-
"@aztec/kv-store": "
|
|
47
|
-
"@aztec/l1-artifacts": "
|
|
48
|
-
"@aztec/node-lib": "
|
|
49
|
-
"@aztec/noir-contracts.js": "
|
|
50
|
-
"@aztec/noir-protocol-circuits-types": "
|
|
51
|
-
"@aztec/p2p": "
|
|
52
|
-
"@aztec/p2p-bootstrap": "
|
|
53
|
-
"@aztec/protocol-contracts": "
|
|
54
|
-
"@aztec/prover-client": "
|
|
55
|
-
"@aztec/prover-node": "
|
|
56
|
-
"@aztec/pxe": "
|
|
57
|
-
"@aztec/sequencer-client": "
|
|
58
|
-
"@aztec/stdlib": "
|
|
59
|
-
"@aztec/telemetry-client": "
|
|
60
|
-
"@aztec/
|
|
61
|
-
"@aztec/
|
|
62
|
-
"@aztec/
|
|
31
|
+
"@aztec/accounts": "4.0.0-devnet.1-patch.1",
|
|
32
|
+
"@aztec/archiver": "4.0.0-devnet.1-patch.1",
|
|
33
|
+
"@aztec/aztec-faucet": "4.0.0-devnet.1-patch.1",
|
|
34
|
+
"@aztec/aztec-node": "4.0.0-devnet.1-patch.1",
|
|
35
|
+
"@aztec/aztec.js": "4.0.0-devnet.1-patch.1",
|
|
36
|
+
"@aztec/bb-prover": "4.0.0-devnet.1-patch.1",
|
|
37
|
+
"@aztec/bb.js": "4.0.0-devnet.1-patch.1",
|
|
38
|
+
"@aztec/blob-client": "4.0.0-devnet.1-patch.1",
|
|
39
|
+
"@aztec/bot": "4.0.0-devnet.1-patch.1",
|
|
40
|
+
"@aztec/builder": "4.0.0-devnet.1-patch.1",
|
|
41
|
+
"@aztec/cli": "4.0.0-devnet.1-patch.1",
|
|
42
|
+
"@aztec/constants": "4.0.0-devnet.1-patch.1",
|
|
43
|
+
"@aztec/entrypoints": "4.0.0-devnet.1-patch.1",
|
|
44
|
+
"@aztec/ethereum": "4.0.0-devnet.1-patch.1",
|
|
45
|
+
"@aztec/foundation": "4.0.0-devnet.1-patch.1",
|
|
46
|
+
"@aztec/kv-store": "4.0.0-devnet.1-patch.1",
|
|
47
|
+
"@aztec/l1-artifacts": "4.0.0-devnet.1-patch.1",
|
|
48
|
+
"@aztec/node-lib": "4.0.0-devnet.1-patch.1",
|
|
49
|
+
"@aztec/noir-contracts.js": "4.0.0-devnet.1-patch.1",
|
|
50
|
+
"@aztec/noir-protocol-circuits-types": "4.0.0-devnet.1-patch.1",
|
|
51
|
+
"@aztec/p2p": "4.0.0-devnet.1-patch.1",
|
|
52
|
+
"@aztec/p2p-bootstrap": "4.0.0-devnet.1-patch.1",
|
|
53
|
+
"@aztec/protocol-contracts": "4.0.0-devnet.1-patch.1",
|
|
54
|
+
"@aztec/prover-client": "4.0.0-devnet.1-patch.1",
|
|
55
|
+
"@aztec/prover-node": "4.0.0-devnet.1-patch.1",
|
|
56
|
+
"@aztec/pxe": "4.0.0-devnet.1-patch.1",
|
|
57
|
+
"@aztec/sequencer-client": "4.0.0-devnet.1-patch.1",
|
|
58
|
+
"@aztec/stdlib": "4.0.0-devnet.1-patch.1",
|
|
59
|
+
"@aztec/telemetry-client": "4.0.0-devnet.1-patch.1",
|
|
60
|
+
"@aztec/txe": "4.0.0-devnet.1-patch.1",
|
|
61
|
+
"@aztec/validator-ha-signer": "4.0.0-devnet.1-patch.1",
|
|
62
|
+
"@aztec/wallets": "4.0.0-devnet.1-patch.1",
|
|
63
|
+
"@aztec/world-state": "4.0.0-devnet.1-patch.1",
|
|
63
64
|
"@types/chalk": "^2.2.0",
|
|
64
65
|
"abitype": "^0.8.11",
|
|
65
66
|
"chalk": "^5.3.0",
|
|
@@ -70,6 +71,7 @@
|
|
|
70
71
|
},
|
|
71
72
|
"files": [
|
|
72
73
|
"dest",
|
|
74
|
+
"scripts",
|
|
73
75
|
"src",
|
|
74
76
|
"!*.test.*"
|
|
75
77
|
],
|
|
@@ -78,7 +80,7 @@
|
|
|
78
80
|
"@jest/globals": "^30.0.0",
|
|
79
81
|
"@types/jest": "^30.0.0",
|
|
80
82
|
"@types/koa": "^2.15.0",
|
|
81
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
83
|
+
"@typescript/native-preview": "7.0.0-dev.20260113.1",
|
|
82
84
|
"jest": "^30.0.0",
|
|
83
85
|
"ts-node": "^10.9.1",
|
|
84
86
|
"typescript": "^5.3.3"
|
package/scripts/aztec.sh
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
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
|
|
14
|
+
|
|
15
|
+
script_dir="$(dirname "$(realpath "$0")")"
|
|
16
|
+
|
|
17
|
+
function aztec {
|
|
18
|
+
export AZTEC_SHELL_WRAPPER=1
|
|
19
|
+
exec node --no-warnings $script_dir/../dest/bin/index.js "$@"
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
case $cmd in
|
|
23
|
+
test)
|
|
24
|
+
export LOG_LEVEL="${LOG_LEVEL:-error}"
|
|
25
|
+
aztec start --txe --port 8081 &
|
|
26
|
+
server_pid=$!
|
|
27
|
+
trap 'kill $server_pid &>/dev/null || true' EXIT
|
|
28
|
+
while ! nc -z 127.0.0.1 8081 &>/dev/null; do sleep 0.2; done
|
|
29
|
+
export NARGO_FOREIGN_CALL_TIMEOUT=300000
|
|
30
|
+
nargo test --silence-warnings --oracle-resolver http://127.0.0.1:8081 "$@"
|
|
31
|
+
;;
|
|
32
|
+
start)
|
|
33
|
+
if [ "${1:-}" == "--local-network" ]; then
|
|
34
|
+
# TODO: Can these just be set in TS?
|
|
35
|
+
export ARCHIVER_POLLING_INTERVAL_MS=500
|
|
36
|
+
export P2P_BLOCK_CHECK_INTERVAL_MS=500
|
|
37
|
+
export SEQ_TX_POLLING_INTERVAL_MS=500
|
|
38
|
+
export WS_BLOCK_CHECK_INTERVAL_MS=500
|
|
39
|
+
export ARCHIVER_VIEM_POLLING_INTERVAL_MS=500
|
|
40
|
+
export TEST_ACCOUNTS=${TEST_ACCOUNTS:-true}
|
|
41
|
+
export LOG_LEVEL=${LOG_LEVEL:-info;silent:sequencer;verbose:debug_log}
|
|
42
|
+
export DEPLOY_AZTEC_CONTRACTS_SALT=${DEPLOY_AZTEC_CONTRACTS_SALT:-$RANDOM}
|
|
43
|
+
|
|
44
|
+
ANVIL_PORT=${ANVIL_PORT:-8545}
|
|
45
|
+
|
|
46
|
+
export L1_CHAIN_ID=${L1_CHAIN_ID:-31337}
|
|
47
|
+
export ETHEREUM_HOSTS=${ETHEREUM_HOSTS:-"http://127.0.0.1:${ANVIL_PORT}"}
|
|
48
|
+
|
|
49
|
+
anvil --version
|
|
50
|
+
anvil --silent &
|
|
51
|
+
anvil_pid=$!
|
|
52
|
+
trap 'kill $anvil_pid &>/dev/null' EXIT
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
aztec start "$@"
|
|
56
|
+
;;
|
|
57
|
+
compile|new|init|flamegraph)
|
|
58
|
+
$script_dir/${cmd}.sh "$@"
|
|
59
|
+
;;
|
|
60
|
+
*)
|
|
61
|
+
aztec $cmd "$@"
|
|
62
|
+
;;
|
|
63
|
+
esac
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
NARGO=${NARGO:-nargo}
|
|
5
|
+
BB=${BB:-bb}
|
|
6
|
+
|
|
7
|
+
# If help is requested, show Aztec-specific info then run nargo compile help and then exit in order to not trigger
|
|
8
|
+
# transpilation
|
|
9
|
+
for arg in "$@"; do
|
|
10
|
+
if [ "$arg" == "--help" ] || [ "$arg" == "-h" ]; then
|
|
11
|
+
cat << 'EOF'
|
|
12
|
+
Aztec Compile - Compile Aztec Noir contracts
|
|
13
|
+
|
|
14
|
+
This command compiles Aztec Noir contracts using nargo and then automatically
|
|
15
|
+
postprocesses them to generate Aztec specific artifacts including:
|
|
16
|
+
- Transpiled contract artifacts
|
|
17
|
+
- Verification keys
|
|
18
|
+
|
|
19
|
+
The compiled contracts will be placed in the target/ directory by default.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
Underlying nargo compile options:
|
|
23
|
+
|
|
24
|
+
EOF
|
|
25
|
+
nargo compile --help
|
|
26
|
+
exit 0
|
|
27
|
+
fi
|
|
28
|
+
done
|
|
29
|
+
|
|
30
|
+
# Run nargo compile.
|
|
31
|
+
$NARGO compile "$@"
|
|
32
|
+
|
|
33
|
+
echo "Postprocessing contract..."
|
|
34
|
+
$BB aztec_process
|
|
35
|
+
|
|
36
|
+
# Strip internal prefixes from all compiled contract JSONs in target directory
|
|
37
|
+
# TODO: This should be part of bb aztec_process!
|
|
38
|
+
for json in target/*.json; do
|
|
39
|
+
temp_file="${json}.tmp"
|
|
40
|
+
jq '.functions |= map(.name |= sub("^__aztec_nr_internals__"; ""))' "$json" > "$temp_file"
|
|
41
|
+
mv "$temp_file" "$json"
|
|
42
|
+
done
|
|
43
|
+
|
|
44
|
+
echo "Compilation complete!"
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import fs from 'fs/promises';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
|
|
5
|
+
// Simple script to extract a contract function as a separate Noir artifact.
|
|
6
|
+
// We need to use this since the transpiling that we do on public functions make the contract artifacts
|
|
7
|
+
// unreadable by noir tooling, since they are no longer following the noir artifact format.
|
|
8
|
+
async function main() {
|
|
9
|
+
let [contractArtifactPath, functionName] = process.argv.slice(2);
|
|
10
|
+
if (!contractArtifactPath || !functionName) {
|
|
11
|
+
console.log('Usage: node extractFunctionAsNoirArtifact.js <contractArtifactPath> <functionName>');
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const contractArtifact = JSON.parse(await fs.readFile(contractArtifactPath, 'utf8'));
|
|
16
|
+
const func = contractArtifact.functions.find(f => f.name === functionName);
|
|
17
|
+
if (!func) {
|
|
18
|
+
console.error(`Function ${functionName} not found in ${contractArtifactPath}`);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const artifact = {
|
|
23
|
+
noir_version: contractArtifact.noir_version,
|
|
24
|
+
hash: 0,
|
|
25
|
+
abi: func.abi,
|
|
26
|
+
bytecode: func.bytecode,
|
|
27
|
+
debug_symbols: func.debug_symbols,
|
|
28
|
+
file_map: contractArtifact.file_map,
|
|
29
|
+
expression_width: {
|
|
30
|
+
Bounded: {
|
|
31
|
+
width: 4,
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const outputDir = path.dirname(contractArtifactPath);
|
|
37
|
+
const outputName = path.basename(contractArtifactPath, '.json') + `-${functionName}.json`;
|
|
38
|
+
|
|
39
|
+
const outPath = path.join(outputDir, outputName);
|
|
40
|
+
|
|
41
|
+
await fs.writeFile(outPath, JSON.stringify(artifact, null, 2));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
main().catch(err => {
|
|
45
|
+
console.error(err);
|
|
46
|
+
process.exit(1);
|
|
47
|
+
});
|