@aztec/end-to-end 5.0.0-rc.1 → 5.0.0
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 +215 -27
- package/dest/automine/automine_test_context.d.ts +85 -0
- package/dest/automine/automine_test_context.d.ts.map +1 -0
- package/dest/automine/automine_test_context.js +98 -0
- package/dest/automine/contracts/fixtures/storage_proof_fetcher.d.ts +2 -0
- package/dest/automine/contracts/fixtures/storage_proof_fetcher.d.ts.map +1 -0
- package/dest/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fixture.d.ts +1 -1
- package/dest/automine/contracts/fixtures/storage_proof_fixture.d.ts.map +1 -0
- package/dest/automine/delivery/interactive_handshake_responder.d.ts +48 -0
- package/dest/automine/delivery/interactive_handshake_responder.d.ts.map +1 -0
- package/dest/automine/delivery/interactive_handshake_responder.js +76 -0
- package/dest/automine/delivery/onchain_delivery_harness.d.ts +19 -0
- package/dest/automine/delivery/onchain_delivery_harness.d.ts.map +1 -0
- package/dest/automine/delivery/onchain_delivery_harness.js +141 -0
- package/dest/automine/token/blacklist_token_contract_test.d.ts +49 -0
- package/dest/automine/token/blacklist_token_contract_test.d.ts.map +1 -0
- package/dest/{e2e_blacklist_token_contract → automine/token}/blacklist_token_contract_test.js +17 -24
- package/dest/automine/token/token_contract_test.d.ts +40 -0
- package/dest/automine/token/token_contract_test.d.ts.map +1 -0
- package/dest/{e2e_token_contract → automine/token}/token_contract_test.js +22 -28
- package/dest/automine/token/token_test_helpers.d.ts +73 -0
- package/dest/automine/token/token_test_helpers.d.ts.map +1 -0
- package/dest/automine/token/token_test_helpers.js +97 -0
- package/dest/bench/client_flows/benchmark.d.ts +1 -1
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/benchmark.js +3 -1
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +4 -4
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +25 -10
- package/dest/bench/utils.d.ts +1 -1
- package/dest/composed/ha/ha_full_setup.d.ts +77 -0
- package/dest/composed/ha/ha_full_setup.d.ts.map +1 -0
- package/dest/composed/ha/ha_full_setup.js +383 -0
- package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts +12 -0
- package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts.map +1 -0
- package/dest/fixtures/e2e_prover_test.d.ts +10 -7
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +33 -14
- package/dest/fixtures/fixtures.d.ts +8 -5
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +12 -4
- package/dest/fixtures/ha_setup.d.ts +3 -3
- package/dest/fixtures/ha_setup.d.ts.map +1 -1
- package/dest/fixtures/ha_setup.js +4 -1
- package/dest/fixtures/index.d.ts +2 -1
- package/dest/fixtures/index.d.ts.map +1 -1
- package/dest/fixtures/index.js +1 -0
- package/dest/fixtures/setup.d.ts +35 -9
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +175 -142
- package/dest/fixtures/setup_p2p_test.d.ts +1 -1
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +3 -3
- package/dest/fixtures/standard_contracts_genesis.d.ts +16 -0
- package/dest/fixtures/standard_contracts_genesis.d.ts.map +1 -0
- package/dest/fixtures/standard_contracts_genesis.js +25 -0
- package/dest/fixtures/timing.d.ts +42 -0
- package/dest/fixtures/timing.d.ts.map +1 -0
- package/dest/fixtures/timing.js +72 -0
- package/dest/fixtures/token_utils.d.ts +22 -4
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +21 -1
- package/dest/fixtures/wait_helpers.d.ts +135 -0
- package/dest/fixtures/wait_helpers.d.ts.map +1 -0
- package/dest/fixtures/wait_helpers.js +154 -0
- package/dest/forward-compatibility/wallet_service.js +1 -1
- package/dest/multi-node/block-production/setup.d.ts +97 -0
- package/dest/multi-node/block-production/setup.d.ts.map +1 -0
- package/dest/multi-node/block-production/setup.js +158 -0
- package/dest/multi-node/governance/setup.d.ts +67 -0
- package/dest/multi-node/governance/setup.d.ts.map +1 -0
- package/dest/multi-node/governance/setup.js +126 -0
- package/dest/multi-node/multi_node_test_context.d.ts +212 -0
- package/dest/multi-node/multi_node_test_context.d.ts.map +1 -0
- package/dest/multi-node/multi_node_test_context.js +347 -0
- package/dest/multi-node/slashing/inactivity_setup.d.ts +27 -0
- package/dest/multi-node/slashing/inactivity_setup.d.ts.map +1 -0
- package/dest/multi-node/slashing/inactivity_setup.js +111 -0
- package/dest/multi-node/slashing/setup.d.ts +167 -0
- package/dest/multi-node/slashing/setup.d.ts.map +1 -0
- package/dest/multi-node/slashing/setup.js +275 -0
- package/dest/{e2e_p2p → p2p}/p2p_network.d.ts +10 -2
- package/dest/p2p/p2p_network.d.ts.map +1 -0
- package/dest/{e2e_p2p → p2p}/p2p_network.js +36 -9
- package/dest/p2p/reqresp/utils.d.ts +19 -0
- package/dest/p2p/reqresp/utils.d.ts.map +1 -0
- package/dest/{e2e_p2p → p2p}/reqresp/utils.js +4 -15
- package/dest/p2p/shared.d.ts +72 -0
- package/dest/p2p/shared.d.ts.map +1 -0
- package/dest/p2p/shared.js +212 -0
- package/dest/shared/cross_chain_test_harness.d.ts +3 -3
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +24 -16
- package/dest/shared/gas_portal_test_harness.d.ts +1 -1
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +8 -5
- package/dest/shared/submit-transactions.d.ts +1 -1
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +12 -5
- package/dest/shared/timing_env.d.js +5 -0
- package/dest/shared/timing_env.js +365 -0
- package/dest/shared/wait_for_l1_to_l2_message.js +1 -1
- package/dest/simulators/lending_simulator.js +1 -1
- package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts +75 -0
- package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts.map +1 -0
- package/dest/{e2e_cross_chain_messaging → single-node/cross-chain}/cross_chain_messaging_test.js +77 -27
- package/dest/single-node/cross-chain/message_test_helpers.d.ts +38 -0
- package/dest/single-node/cross-chain/message_test_helpers.d.ts.map +1 -0
- package/dest/single-node/cross-chain/message_test_helpers.js +70 -0
- package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.d.ts +1 -1
- package/dest/single-node/fees/bridging_race.notest.d.ts.map +1 -0
- package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.js +17 -4
- package/dest/single-node/fees/fees_test.d.ts +95 -0
- package/dest/single-node/fees/fees_test.d.ts.map +1 -0
- package/dest/{e2e_fees → single-node/fees}/fees_test.js +124 -46
- package/dest/single-node/l1-reorgs/setup.d.ts +42 -0
- package/dest/single-node/l1-reorgs/setup.d.ts.map +1 -0
- package/dest/single-node/l1-reorgs/setup.js +57 -0
- package/dest/single-node/partial-proofs/setup.d.ts +5 -0
- package/dest/single-node/partial-proofs/setup.d.ts.map +1 -0
- package/dest/single-node/partial-proofs/setup.js +5 -0
- package/dest/single-node/proving/setup.d.ts +5 -0
- package/dest/single-node/proving/setup.d.ts.map +1 -0
- package/dest/single-node/proving/setup.js +5 -0
- package/dest/single-node/recovery/setup.d.ts +5 -0
- package/dest/single-node/recovery/setup.d.ts.map +1 -0
- package/dest/single-node/recovery/setup.js +5 -0
- package/dest/single-node/setup.d.ts +49 -0
- package/dest/single-node/setup.d.ts.map +1 -0
- package/dest/single-node/setup.js +56 -0
- package/dest/single-node/single_node_test_context.d.ts +373 -0
- package/dest/single-node/single_node_test_context.d.ts.map +1 -0
- package/dest/single-node/single_node_test_context.js +845 -0
- package/dest/spartan/setup_test_wallets.d.ts +1 -1
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +18 -8
- package/dest/spartan/tx_metrics.d.ts +10 -1
- package/dest/spartan/tx_metrics.d.ts.map +1 -1
- package/dest/spartan/tx_metrics.js +32 -0
- package/dest/test-wallet/test_wallet.d.ts +23 -4
- package/dest/test-wallet/test_wallet.d.ts.map +1 -1
- package/dest/test-wallet/test_wallet.js +20 -4
- package/dest/test-wallet/utils.d.ts +36 -1
- package/dest/test-wallet/utils.d.ts.map +1 -1
- package/dest/test-wallet/utils.js +64 -4
- package/dest/test-wallet/wallet_worker_script.js +5 -2
- package/dest/test-wallet/worker_wallet.d.ts +5 -5
- package/dest/test-wallet/worker_wallet.d.ts.map +1 -1
- package/dest/test-wallet/worker_wallet.js +2 -2
- package/dest/test-wallet/worker_wallet_schema.js +2 -1
- package/package.json +41 -41
- package/src/automine/README.md +60 -0
- package/src/automine/automine_test_context.ts +153 -0
- package/src/automine/delivery/interactive_handshake_responder.ts +125 -0
- package/src/automine/delivery/onchain_delivery_harness.ts +213 -0
- package/src/{e2e_blacklist_token_contract → automine/token}/blacklist_token_contract_test.ts +19 -39
- package/src/{e2e_token_contract → automine/token}/token_contract_test.ts +24 -43
- package/src/automine/token/token_test_helpers.ts +138 -0
- package/src/bench/client_flows/benchmark.ts +3 -1
- package/src/bench/client_flows/client_flows_benchmark.ts +39 -12
- package/src/composed/ha/ha_full_setup.ts +466 -0
- package/src/fixtures/e2e_prover_test.ts +40 -23
- package/src/fixtures/fixtures.ts +14 -4
- package/src/fixtures/ha_setup.ts +7 -3
- package/src/fixtures/index.ts +1 -0
- package/src/fixtures/setup.ts +217 -146
- package/src/fixtures/setup_p2p_test.ts +3 -3
- package/src/fixtures/standard_contracts_genesis.ts +28 -0
- package/src/fixtures/timing.ts +97 -0
- package/src/fixtures/token_utils.ts +39 -4
- package/src/fixtures/wait_helpers.ts +333 -0
- package/src/forward-compatibility/wallet_service.ts +2 -2
- package/src/guides/up_quick_start.sh +5 -0
- package/src/infra/README.md +12 -0
- package/src/multi-node/README.md +96 -0
- package/src/multi-node/block-production/setup.ts +272 -0
- package/src/multi-node/governance/setup.ts +172 -0
- package/src/multi-node/multi_node_test_context.ts +447 -0
- package/src/multi-node/slashing/inactivity_setup.ts +139 -0
- package/src/multi-node/slashing/setup.ts +433 -0
- package/src/p2p/README.md +78 -0
- package/src/{e2e_p2p → p2p}/p2p_network.ts +36 -7
- package/src/{e2e_p2p → p2p}/reqresp/utils.ts +5 -14
- package/src/p2p/shared.ts +329 -0
- package/src/shared/cross_chain_test_harness.ts +22 -13
- package/src/shared/gas_portal_test_harness.ts +13 -5
- package/src/shared/submit-transactions.ts +13 -5
- package/src/shared/timing_env.d.mts +39 -0
- package/src/shared/timing_env.mjs +363 -0
- package/src/shared/wait_for_l1_to_l2_message.ts +1 -1
- package/src/simulators/lending_simulator.ts +1 -1
- package/src/single-node/README.md +66 -0
- package/src/{e2e_cross_chain_messaging → single-node/cross-chain}/cross_chain_messaging_test.ts +110 -39
- package/src/single-node/cross-chain/message_test_helpers.ts +125 -0
- package/src/{e2e_fees → single-node/fees}/bridging_race.notest.ts +19 -5
- package/src/{e2e_fees → single-node/fees}/fees_test.ts +141 -48
- package/src/single-node/l1-reorgs/setup.ts +93 -0
- package/src/single-node/partial-proofs/setup.ts +8 -0
- package/src/single-node/proving/setup.ts +15 -0
- package/src/single-node/recovery/setup.ts +8 -0
- package/src/single-node/setup.ts +63 -0
- package/src/single-node/single_node_test_context.ts +1054 -0
- package/src/spartan/setup_test_wallets.ts +23 -8
- package/src/spartan/tx_metrics.ts +26 -0
- package/src/test-wallet/test_wallet.ts +28 -6
- package/src/test-wallet/utils.ts +102 -5
- package/src/test-wallet/wallet_worker_script.ts +6 -3
- package/src/test-wallet/worker_wallet.ts +5 -9
- package/src/test-wallet/worker_wallet_schema.ts +1 -1
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +0 -56
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +0 -1
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +0 -58
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +0 -1
- package/dest/e2e_deploy_contract/deploy_test.d.ts +0 -36
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +0 -1
- package/dest/e2e_deploy_contract/deploy_test.js +0 -42
- package/dest/e2e_epochs/epochs_test.d.ts +0 -137
- package/dest/e2e_epochs/epochs_test.d.ts.map +0 -1
- package/dest/e2e_epochs/epochs_test.js +0 -485
- package/dest/e2e_fees/bridging_race.notest.d.ts.map +0 -1
- package/dest/e2e_fees/fees_test.d.ts +0 -89
- package/dest/e2e_fees/fees_test.d.ts.map +0 -1
- package/dest/e2e_l1_publisher/write_json.d.ts +0 -11
- package/dest/e2e_l1_publisher/write_json.d.ts.map +0 -1
- package/dest/e2e_l1_publisher/write_json.js +0 -56
- package/dest/e2e_multi_validator/utils.d.ts +0 -12
- package/dest/e2e_multi_validator/utils.d.ts.map +0 -1
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +0 -22
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +0 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +0 -40
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +0 -31
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +0 -1
- package/dest/e2e_p2p/inactivity_slash_test.js +0 -138
- package/dest/e2e_p2p/p2p_network.d.ts.map +0 -1
- package/dest/e2e_p2p/reqresp/utils.d.ts +0 -22
- package/dest/e2e_p2p/reqresp/utils.d.ts.map +0 -1
- package/dest/e2e_p2p/shared.d.ts +0 -75
- package/dest/e2e_p2p/shared.d.ts.map +0 -1
- package/dest/e2e_p2p/shared.js +0 -217
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +0 -2
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +0 -1
- package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +0 -1
- package/dest/e2e_token_contract/token_contract_test.d.ts +0 -44
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +0 -1
- package/src/e2e_deploy_contract/deploy_test.ts +0 -73
- package/src/e2e_epochs/epochs_test.ts +0 -596
- package/src/e2e_l1_publisher/write_json.ts +0 -77
- package/src/e2e_nested_contract/nested_contract_test.ts +0 -51
- package/src/e2e_p2p/inactivity_slash_test.ts +0 -181
- package/src/e2e_p2p/shared.ts +0 -332
- /package/dest/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fetcher.js +0 -0
- /package/dest/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fixture.js +0 -0
- /package/dest/{e2e_multi_validator/utils.js → composed/web3signer/multi_validator_keystore_utils.js} +0 -0
- /package/src/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof.json +0 -0
- /package/src/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fetcher.ts +0 -0
- /package/src/{e2e_storage_proof → automine/contracts}/fixtures/storage_proof_fixture.ts +0 -0
- /package/src/{e2e_multi_validator/utils.ts → composed/web3signer/multi_validator_keystore_utils.ts} +0 -0
|
@@ -2,12 +2,12 @@ import type { CallIntent, IntentInnerHash } from '@aztec/aztec.js/authorization'
|
|
|
2
2
|
import type { InteractionWaitOptions, SendReturn } from '@aztec/aztec.js/contracts';
|
|
3
3
|
import type { Aliased, AppCapabilities, BatchResults, BatchedMethod, ContractClassMetadata, ContractMetadata, ExecuteUtilityOptions, PrivateEvent, PrivateEventFilter, ProfileOptions, SendOptions, SimulateOptions, TxSimulationResultWithAppOffset, Wallet, WalletCapabilities } from '@aztec/aztec.js/wallet';
|
|
4
4
|
import type { ChainInfo } from '@aztec/entrypoints/interfaces';
|
|
5
|
-
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
|
+
import type { Fq, Fr } from '@aztec/foundation/curves/bn254';
|
|
6
6
|
import type { PXEConfig } from '@aztec/pxe/config';
|
|
7
7
|
import type { ContractArtifact, EventMetadataDefinition, FunctionCall } from '@aztec/stdlib/abi';
|
|
8
8
|
import type { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
9
9
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
10
|
-
import type {
|
|
10
|
+
import type { ContractInstancePreimage } from '@aztec/stdlib/contract';
|
|
11
11
|
import type { ExecutionPayload, TxProfileResult, UtilityExecutionResult } from '@aztec/stdlib/tx';
|
|
12
12
|
import { Tx } from '@aztec/stdlib/tx';
|
|
13
13
|
/**
|
|
@@ -35,7 +35,7 @@ export declare class WorkerWallet implements Wallet {
|
|
|
35
35
|
registerSender(address: AztecAddress, alias?: string): Promise<AztecAddress>;
|
|
36
36
|
getAddressBook(): Promise<Aliased<AztecAddress>[]>;
|
|
37
37
|
getAccounts(): Promise<Aliased<AztecAddress>[]>;
|
|
38
|
-
registerContract(instance:
|
|
38
|
+
registerContract(instance: ContractInstancePreimage, artifact?: ContractArtifact, secretKey?: Fr): Promise<void>;
|
|
39
39
|
registerContractClass(artifact: ContractArtifact): Promise<void>;
|
|
40
40
|
simulateTx(exec: ExecutionPayload, opts: SimulateOptions): Promise<TxSimulationResultWithAppOffset>;
|
|
41
41
|
executeUtility(call: FunctionCall, opts: ExecuteUtilityOptions): Promise<UtilityExecutionResult>;
|
|
@@ -43,11 +43,11 @@ export declare class WorkerWallet implements Wallet {
|
|
|
43
43
|
sendTx<W extends InteractionWaitOptions = undefined>(exec: ExecutionPayload, opts: SendOptions<W>): Promise<SendReturn<W>>;
|
|
44
44
|
proveTx(exec: ExecutionPayload, opts: Omit<SendOptions, 'wait'>): Promise<Tx>;
|
|
45
45
|
/** Registers an account inside the worker's TestWallet, populating its accounts map. */
|
|
46
|
-
registerAccount(secret: Fr, salt: Fr): Promise<AztecAddress>;
|
|
46
|
+
registerAccount(secret: Fr, salt: Fr, signingKey: Fq): Promise<AztecAddress>;
|
|
47
47
|
createAuthWit(from: AztecAddress, messageHashOrIntent: IntentInnerHash | CallIntent): Promise<AuthWitness>;
|
|
48
48
|
requestCapabilities(manifest: AppCapabilities): Promise<WalletCapabilities>;
|
|
49
49
|
batch<const T extends readonly BatchedMethod[]>(methods: T): Promise<BatchResults<T>>;
|
|
50
50
|
/** Shuts down the worker thread and closes the transport. */
|
|
51
51
|
stop(): Promise<void>;
|
|
52
52
|
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyX3dhbGxldC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3Qtd2FsbGV0L3dvcmtlcl93YWxsZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BGLE9BQU8sS0FBSyxFQUNWLE9BQU8sRUFDUCxlQUFlLEVBQ2YsWUFBWSxFQUNaLGFBQWEsRUFDYixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxXQUFXLEVBQ1gsZUFBZSxFQUNmLCtCQUErQixFQUMvQixNQUFNLEVBQ04sa0JBQWtCLEVBQ25CLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBTzdELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pHLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkUsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker_wallet.d.ts","sourceRoot":"","sources":["../../src/test-wallet/worker_wallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,KAAK,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,KAAK,EACV,OAAO,EACP,eAAe,EACf,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,eAAe,EACf,+BAA+B,EAC/B,MAAM,EACN,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"worker_wallet.d.ts","sourceRoot":"","sources":["../../src/test-wallet/worker_wallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -136,8 +136,8 @@ const WORKER_READY_TIMEOUT_MS = 120_000;
|
|
|
136
136
|
proveTx(exec, opts) {
|
|
137
137
|
return this.call('proveTx', exec, opts);
|
|
138
138
|
}
|
|
139
|
-
/** Registers an account inside the worker's TestWallet, populating its accounts map. */ registerAccount(secret, salt) {
|
|
140
|
-
return this.call('registerAccount', secret, salt);
|
|
139
|
+
/** Registers an account inside the worker's TestWallet, populating its accounts map. */ registerAccount(secret, salt, signingKey) {
|
|
140
|
+
return this.call('registerAccount', secret, salt, signingKey);
|
|
141
141
|
}
|
|
142
142
|
createAuthWit(from, messageHashOrIntent) {
|
|
143
143
|
return this.call('createAuthWit', from, messageHashOrIntent);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/end-to-end",
|
|
3
|
-
"version": "5.0.0
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -29,45 +29,45 @@
|
|
|
29
29
|
"formatting": "run -T prettier --check ./src && run -T eslint ./src"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@aztec/accounts": "5.0.0
|
|
33
|
-
"@aztec/archiver": "5.0.0
|
|
34
|
-
"@aztec/aztec": "5.0.0
|
|
35
|
-
"@aztec/aztec-node": "5.0.0
|
|
36
|
-
"@aztec/aztec.js": "5.0.0
|
|
37
|
-
"@aztec/bb-prover": "5.0.0
|
|
38
|
-
"@aztec/bb.js": "5.0.0
|
|
39
|
-
"@aztec/blob-client": "5.0.0
|
|
40
|
-
"@aztec/blob-lib": "5.0.0
|
|
41
|
-
"@aztec/bot": "5.0.0
|
|
42
|
-
"@aztec/cli": "5.0.0
|
|
43
|
-
"@aztec/constants": "5.0.0
|
|
44
|
-
"@aztec/entrypoints": "5.0.0
|
|
45
|
-
"@aztec/epoch-cache": "5.0.0
|
|
46
|
-
"@aztec/ethereum": "5.0.0
|
|
47
|
-
"@aztec/foundation": "5.0.0
|
|
48
|
-
"@aztec/kv-store": "5.0.0
|
|
49
|
-
"@aztec/l1-artifacts": "5.0.0
|
|
50
|
-
"@aztec/node-keystore": "5.0.0
|
|
51
|
-
"@aztec/noir-contracts.js": "5.0.0
|
|
52
|
-
"@aztec/noir-noirc_abi": "5.0.0
|
|
53
|
-
"@aztec/noir-protocol-circuits-types": "5.0.0
|
|
54
|
-
"@aztec/noir-test-contracts.js": "5.0.0
|
|
55
|
-
"@aztec/p2p": "5.0.0
|
|
56
|
-
"@aztec/protocol-contracts": "5.0.0
|
|
57
|
-
"@aztec/prover-client": "5.0.0
|
|
58
|
-
"@aztec/prover-node": "5.0.0
|
|
59
|
-
"@aztec/pxe": "5.0.0
|
|
60
|
-
"@aztec/sequencer-client": "5.0.0
|
|
61
|
-
"@aztec/simulator": "5.0.0
|
|
62
|
-
"@aztec/slasher": "5.0.0
|
|
63
|
-
"@aztec/standard-contracts": "5.0.0
|
|
64
|
-
"@aztec/stdlib": "5.0.0
|
|
65
|
-
"@aztec/telemetry-client": "5.0.0
|
|
66
|
-
"@aztec/validator-client": "5.0.0
|
|
67
|
-
"@aztec/validator-ha-signer": "5.0.0
|
|
68
|
-
"@aztec/wallet-sdk": "5.0.0
|
|
69
|
-
"@aztec/wallets": "5.0.0
|
|
70
|
-
"@aztec/world-state": "5.0.0
|
|
32
|
+
"@aztec/accounts": "5.0.0",
|
|
33
|
+
"@aztec/archiver": "5.0.0",
|
|
34
|
+
"@aztec/aztec": "5.0.0",
|
|
35
|
+
"@aztec/aztec-node": "5.0.0",
|
|
36
|
+
"@aztec/aztec.js": "5.0.0",
|
|
37
|
+
"@aztec/bb-prover": "5.0.0",
|
|
38
|
+
"@aztec/bb.js": "5.0.0",
|
|
39
|
+
"@aztec/blob-client": "5.0.0",
|
|
40
|
+
"@aztec/blob-lib": "5.0.0",
|
|
41
|
+
"@aztec/bot": "5.0.0",
|
|
42
|
+
"@aztec/cli": "5.0.0",
|
|
43
|
+
"@aztec/constants": "5.0.0",
|
|
44
|
+
"@aztec/entrypoints": "5.0.0",
|
|
45
|
+
"@aztec/epoch-cache": "5.0.0",
|
|
46
|
+
"@aztec/ethereum": "5.0.0",
|
|
47
|
+
"@aztec/foundation": "5.0.0",
|
|
48
|
+
"@aztec/kv-store": "5.0.0",
|
|
49
|
+
"@aztec/l1-artifacts": "5.0.0",
|
|
50
|
+
"@aztec/node-keystore": "5.0.0",
|
|
51
|
+
"@aztec/noir-contracts.js": "5.0.0",
|
|
52
|
+
"@aztec/noir-noirc_abi": "5.0.0",
|
|
53
|
+
"@aztec/noir-protocol-circuits-types": "5.0.0",
|
|
54
|
+
"@aztec/noir-test-contracts.js": "5.0.0",
|
|
55
|
+
"@aztec/p2p": "5.0.0",
|
|
56
|
+
"@aztec/protocol-contracts": "5.0.0",
|
|
57
|
+
"@aztec/prover-client": "5.0.0",
|
|
58
|
+
"@aztec/prover-node": "5.0.0",
|
|
59
|
+
"@aztec/pxe": "5.0.0",
|
|
60
|
+
"@aztec/sequencer-client": "5.0.0",
|
|
61
|
+
"@aztec/simulator": "5.0.0",
|
|
62
|
+
"@aztec/slasher": "5.0.0",
|
|
63
|
+
"@aztec/standard-contracts": "5.0.0",
|
|
64
|
+
"@aztec/stdlib": "5.0.0",
|
|
65
|
+
"@aztec/telemetry-client": "5.0.0",
|
|
66
|
+
"@aztec/validator-client": "5.0.0",
|
|
67
|
+
"@aztec/validator-ha-signer": "5.0.0",
|
|
68
|
+
"@aztec/wallet-sdk": "5.0.0",
|
|
69
|
+
"@aztec/wallets": "5.0.0",
|
|
70
|
+
"@aztec/world-state": "5.0.0",
|
|
71
71
|
"@iarna/toml": "^2.2.5",
|
|
72
72
|
"@jest/globals": "^30.0.0",
|
|
73
73
|
"@noble/curves": "=1.0.0",
|
|
@@ -170,6 +170,6 @@
|
|
|
170
170
|
"setupFiles": [
|
|
171
171
|
"../../foundation/src/jest/setup.mjs"
|
|
172
172
|
],
|
|
173
|
-
"testEnvironment": "
|
|
173
|
+
"testEnvironment": "./shared/timing_env.mjs"
|
|
174
174
|
}
|
|
175
175
|
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# `automine` e2e test category
|
|
2
|
+
|
|
3
|
+
Automine tests run a single Aztec node driving the deterministic `AutomineSequencer`: one block per
|
|
4
|
+
submitted transaction, synchronous L1 publish, no committee, no prover, and no validator client. The
|
|
5
|
+
node opts into this topology through the `AUTOMINE_E2E_OPTS` preset (`fixtures/fixtures.ts`), which the
|
|
6
|
+
base context applies by default. This is the fast, deterministic counterpart to the `single-node`
|
|
7
|
+
category, whose node runs the production sequencer with interval block production. A test belongs here
|
|
8
|
+
when it exercises contract or protocol behavior that does not depend on real block-building or consensus
|
|
9
|
+
(token transfers, nested calls, note discovery, tx semantics); it belongs in `single-node` when it
|
|
10
|
+
asserts on sequencer, proving, or reorg behavior.
|
|
11
|
+
|
|
12
|
+
## Base class
|
|
13
|
+
|
|
14
|
+
All tests use `AutomineTestContext` (`automine_test_context.ts`), which owns:
|
|
15
|
+
|
|
16
|
+
- The environment: an in-process anvil in automine mode plus the L1 contract deploy, wrapping
|
|
17
|
+
`fixtures/setup.ts:setup()` with `AUTOMINE_E2E_OPTS` and `fundSponsoredFPC` as defaults.
|
|
18
|
+
- The common handles: `context`, `wallet`, `aztecNode`, `aztecNodeAdmin`, `cheatCodes`, `sequencer`,
|
|
19
|
+
`accounts`, `defaultAccountAddress`, `logger`.
|
|
20
|
+
- `markProvenAndWarp(seconds)`: marks pending checkpoints proven before warping the L2 clock, so a long
|
|
21
|
+
warp does not trip the rollup's pruning window (see the method's doc comment).
|
|
22
|
+
- `registerContract(...)`: computes and registers a contract instance without an on-chain deploy.
|
|
23
|
+
- `applyManualParentChild()`: deploys a Parent and Child contract for the nested-call tests.
|
|
24
|
+
|
|
25
|
+
Tests call the static `AutomineTestContext.setup({ numberOfAccounts })` factory (or `new` plus `setup()`
|
|
26
|
+
for the harness subclasses), passing `numberOfAccounts` rather than spreading `AUTOMINE_E2E_OPTS`.
|
|
27
|
+
|
|
28
|
+
## Harnesses
|
|
29
|
+
|
|
30
|
+
Two domain harnesses extend `AutomineTestContext` and run their domain setup after `super.setup()`:
|
|
31
|
+
|
|
32
|
+
- `token/token_contract_test.ts` — a `TokenSimulator` plus opt-in base/mint snapshots for the Token
|
|
33
|
+
contract tests.
|
|
34
|
+
- `token/blacklist_token_contract_test.ts` — a `TokenSimulator`, the `Role` helper, and the
|
|
35
|
+
role-change-delay warp (via `markProvenAndWarp`) for the TokenBlacklist tests.
|
|
36
|
+
|
|
37
|
+
## Organizing principle
|
|
38
|
+
|
|
39
|
+
The top level groups tests by node topology (automine); the second level names the primary behavior
|
|
40
|
+
under test rather than the shared setup. Each file has a single top-level `describe` named to match its
|
|
41
|
+
path. A `.parallel` suffix marks files with more than one top-level `it`; CI splits each `it` into its
|
|
42
|
+
own job.
|
|
43
|
+
|
|
44
|
+
## Subfolders
|
|
45
|
+
|
|
46
|
+
A second-level folder is created only when it earns its keep: a shared harness, an existing sub-hierarchy,
|
|
47
|
+
or a coherent domain of several files. The remaining miscellaneous protocol/execution behaviors live as flat
|
|
48
|
+
files directly under `automine/` — smoke, tx ordering/double-spend/phase checks, mempool limits, the app demos
|
|
49
|
+
(card game, private voting), and the timestamp/PXE tests.
|
|
50
|
+
|
|
51
|
+
| Path | Contents |
|
|
52
|
+
|---|---|
|
|
53
|
+
| `token/` | Token-economics tests on the two token harnesses plus the `TokenSimulator`/`LendingSimulator`-adjacent DeFi tests: token transfers/minting/burning/access-control, the blacklist token suite, AMM, lending, NFT, orderbook, crowdfunding, and escrow. |
|
|
54
|
+
| `contracts/` | Contract lifecycle and cross-contract behavior. `deploy/` (class registration, deploy method, legacy deploy, private initialization), `nested/` (importer and the manual private/public nested-call patterns), plus contract updates, storage proofs, static calls, nested utility calls, and the ABI/storage-surface tests (ABI types, option params, state variables). |
|
|
55
|
+
| `accounts/` | Account and key behavior: account contracts, keys, multiple accounts sharing an encryption key, two-PXE interop, authwit, and scope isolation. |
|
|
56
|
+
| `effects/` | Note discovery, events, and offchain effects: note getters, pending note hashes, partial notes, event logs, event-only notes, offchain effects and payments, large public events, custom messages, the tx-effect oracle, and note rediscovery after pruned blocks. |
|
|
57
|
+
| `simulation/` | Circuit simulation surface: the AVM simulator, kernelless simulation, and the circuit recorder. |
|
|
58
|
+
|
|
59
|
+
The `simulation/avm_simulator` file is a genuine outlier: it dumps AVM circuit inputs for the downstream
|
|
60
|
+
`avm_check_circuit` CI job, so it has a bespoke CI line and is excluded from the generic `simulation/` glob.
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import type { ContractArtifact } from '@aztec/aztec.js/abi';
|
|
2
|
+
import type { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
3
|
+
import { type ContractBase, getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
|
|
4
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
5
|
+
import type { PublicKeys } from '@aztec/aztec.js/keys';
|
|
6
|
+
import type { Logger } from '@aztec/aztec.js/log';
|
|
7
|
+
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
8
|
+
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
9
|
+
import type { CheatCodes } from '@aztec/aztec/testing';
|
|
10
|
+
import { ChildContract } from '@aztec/noir-test-contracts.js/Child';
|
|
11
|
+
import { ParentContract } from '@aztec/noir-test-contracts.js/Parent';
|
|
12
|
+
import type { StatefulTestContract } from '@aztec/noir-test-contracts.js/StatefulTest';
|
|
13
|
+
import type { PXEConfig } from '@aztec/pxe/config';
|
|
14
|
+
import type { SequencerClient } from '@aztec/sequencer-client';
|
|
15
|
+
import type { AztecNodeAdmin, AztecNodeDebug } from '@aztec/stdlib/interfaces/client';
|
|
16
|
+
|
|
17
|
+
import { AUTOMINE_E2E_OPTS } from '../fixtures/fixtures.js';
|
|
18
|
+
import { type EndToEndContext, type SetupOptions, setup, teardown } from '../fixtures/setup.js';
|
|
19
|
+
import type { TestWallet } from '../test-wallet/test_wallet.js';
|
|
20
|
+
|
|
21
|
+
export type AutomineTestOpts = Partial<SetupOptions> & {
|
|
22
|
+
/** Number of accounts to create and deploy during setup. */
|
|
23
|
+
numberOfAccounts?: number;
|
|
24
|
+
/** Options forwarded to PXE creation. */
|
|
25
|
+
pxeOpts?: Partial<PXEConfig>;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Base class for the automine-sequencer test topology: a single in-process node running the
|
|
30
|
+
* deterministic {@link AUTOMINE_E2E_OPTS} preset (one block per submitted tx, synchronous L1 publish,
|
|
31
|
+
* no committee, no prover, no validator client). Owns the environment (in-proc anvil in automine mode
|
|
32
|
+
* plus the L1 deploy) and exposes the handles every automine test uses (`wallet`, `aztecNode`,
|
|
33
|
+
* `cheatCodes`, `sequencer`, `accounts`, `logger`).
|
|
34
|
+
*
|
|
35
|
+
* The sibling of {@link SingleNodeTestContext}: both wrap the same underlying `fixtures/setup.ts:setup()`
|
|
36
|
+
* but fix opposite sequencer topologies. Making {@link AUTOMINE_E2E_OPTS} the base default removes the
|
|
37
|
+
* per-test-file spread every automine test would otherwise repeat.
|
|
38
|
+
*
|
|
39
|
+
* Domain harnesses (the token simulators) compose on top by extending this base and overriding
|
|
40
|
+
* {@link setup} to run their domain steps after `super.setup()`.
|
|
41
|
+
*/
|
|
42
|
+
export class AutomineTestContext {
|
|
43
|
+
public context!: EndToEndContext;
|
|
44
|
+
public logger!: Logger;
|
|
45
|
+
public wallet!: TestWallet;
|
|
46
|
+
public aztecNode!: AztecNode & AztecNodeDebug;
|
|
47
|
+
public aztecNodeAdmin!: AztecNodeAdmin;
|
|
48
|
+
public cheatCodes!: CheatCodes;
|
|
49
|
+
public sequencer!: SequencerClient;
|
|
50
|
+
public accounts!: AztecAddress[];
|
|
51
|
+
public defaultAccountAddress!: AztecAddress;
|
|
52
|
+
|
|
53
|
+
public parentContract!: ParentContract;
|
|
54
|
+
public childContract!: ChildContract;
|
|
55
|
+
|
|
56
|
+
public static async setup<T extends AutomineTestContext>(this: new () => T, opts: AutomineTestOpts = {}): Promise<T> {
|
|
57
|
+
const test = new this();
|
|
58
|
+
await test.setup(opts);
|
|
59
|
+
return test;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
public async setup(opts: AutomineTestOpts = {}): Promise<void> {
|
|
63
|
+
const { numberOfAccounts = 1, pxeOpts, ...setupOpts } = opts;
|
|
64
|
+
const context = await setup(
|
|
65
|
+
numberOfAccounts,
|
|
66
|
+
{
|
|
67
|
+
...AUTOMINE_E2E_OPTS,
|
|
68
|
+
fundSponsoredFPC: true,
|
|
69
|
+
...setupOpts,
|
|
70
|
+
},
|
|
71
|
+
pxeOpts,
|
|
72
|
+
);
|
|
73
|
+
await this.hydrateFromContext(context);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Populates the context-derived handles from an already-built {@link EndToEndContext}. Split out of
|
|
78
|
+
* {@link setup} so domain harnesses that build the environment with their own bespoke `setup(...)`
|
|
79
|
+
* opts can still reuse the shared handle wiring.
|
|
80
|
+
*/
|
|
81
|
+
protected hydrateFromContext(context: EndToEndContext): Promise<void> {
|
|
82
|
+
this.context = context;
|
|
83
|
+
this.logger = context.logger;
|
|
84
|
+
this.wallet = context.wallet;
|
|
85
|
+
this.aztecNode = context.aztecNodeService;
|
|
86
|
+
this.aztecNodeAdmin = context.aztecNodeService;
|
|
87
|
+
this.cheatCodes = context.cheatCodes;
|
|
88
|
+
this.sequencer = context.sequencer!;
|
|
89
|
+
this.accounts = context.accounts;
|
|
90
|
+
this.defaultAccountAddress = context.accounts[0];
|
|
91
|
+
return Promise.resolve();
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
public async teardown(): Promise<void> {
|
|
95
|
+
await teardown(this.context);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Marks the current pending checkpoints as proven, then warps the L2 clock forward by `seconds`.
|
|
100
|
+
*
|
|
101
|
+
* Under {@link AUTOMINE_E2E_OPTS} a long warp crosses many epochs with no proofs being submitted, so
|
|
102
|
+
* without a prior `markAsProven()` the rollup contract's pruning window resets the chain tip to genesis
|
|
103
|
+
* and the warp's own empty-checkpoint propose fails with `Rollup__InvalidArchive`. Marking proven before
|
|
104
|
+
* warping keeps the pending chain alive. Composes the existing `cheatCodes.rollup.markAsProven` and
|
|
105
|
+
* `warpL2TimeAtLeastBy` with that required ordering.
|
|
106
|
+
*/
|
|
107
|
+
public async markProvenAndWarp(seconds: number | bigint): Promise<void> {
|
|
108
|
+
await this.cheatCodes.rollup.markAsProven();
|
|
109
|
+
await this.cheatCodes.warpL2TimeAtLeastBy(this.aztecNode, seconds);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/** Computes and registers a contract instance in the wallet without deploying it on-chain. */
|
|
113
|
+
public async registerContract<T extends ContractBase>(
|
|
114
|
+
wallet: Wallet,
|
|
115
|
+
contractArtifact: ContractArtifactClass<T>,
|
|
116
|
+
opts: {
|
|
117
|
+
salt?: Fr;
|
|
118
|
+
publicKeys?: PublicKeys;
|
|
119
|
+
initArgs?: any[];
|
|
120
|
+
constructorName?: string;
|
|
121
|
+
deployer?: AztecAddress;
|
|
122
|
+
} = {},
|
|
123
|
+
): Promise<T> {
|
|
124
|
+
const { salt, publicKeys, initArgs, constructorName, deployer } = opts;
|
|
125
|
+
const instance = await getContractInstanceFromInstantiationParams(contractArtifact.artifact, {
|
|
126
|
+
constructorArgs: initArgs ?? [],
|
|
127
|
+
constructorArtifact: constructorName,
|
|
128
|
+
salt: salt ?? Fr.random(),
|
|
129
|
+
publicKeys,
|
|
130
|
+
deployer,
|
|
131
|
+
});
|
|
132
|
+
await wallet.registerContract(instance, contractArtifact.artifact);
|
|
133
|
+
return contractArtifact.at(instance.address, wallet);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/** Deploys a Parent and a Child contract from the default account for the nested-call tests. */
|
|
137
|
+
public async applyManualParentChild(): Promise<void> {
|
|
138
|
+
this.logger.info('Deploying parent and child contracts');
|
|
139
|
+
({ contract: this.parentContract } = await ParentContract.deploy(this.wallet).send({
|
|
140
|
+
from: this.defaultAccountAddress,
|
|
141
|
+
}));
|
|
142
|
+
({ contract: this.childContract } = await ChildContract.deploy(this.wallet).send({
|
|
143
|
+
from: this.defaultAccountAddress,
|
|
144
|
+
}));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export type StatefulContractCtorArgs = Parameters<StatefulTestContract['methods']['constructor']>;
|
|
149
|
+
|
|
150
|
+
export type ContractArtifactClass<T extends ContractBase> = {
|
|
151
|
+
at(address: AztecAddress, wallet: Wallet): T;
|
|
152
|
+
artifact: ContractArtifact;
|
|
153
|
+
};
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { AztecAddress, type CompleteAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
+
import { DomainSeparator } from '@aztec/constants';
|
|
3
|
+
import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
|
|
4
|
+
import { Schnorr, type SchnorrSignature } from '@aztec/foundation/crypto/schnorr';
|
|
5
|
+
import { Fq, Fr } from '@aztec/foundation/curves/bn254';
|
|
6
|
+
import type { GrumpkinScalar } from '@aztec/foundation/curves/grumpkin';
|
|
7
|
+
import type { CustomRequest } from '@aztec/pxe/config';
|
|
8
|
+
import {
|
|
9
|
+
INTERACTIVE_HANDSHAKE_REQUEST_KIND,
|
|
10
|
+
STANDARD_HANDSHAKE_REGISTRY_ADDRESS,
|
|
11
|
+
} from '@aztec/standard-contracts/handshake-registry/constants';
|
|
12
|
+
import { type PublicKeys, derivePublicKeyFromSecretKey } from '@aztec/stdlib/keys';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The decoded payload of the registry's interactive-handshake signature request. Note it never carries the sender,
|
|
16
|
+
* so the recipient authorizes the handshake without learning who initiated it.
|
|
17
|
+
*/
|
|
18
|
+
export type InteractiveHandshakeRequest = {
|
|
19
|
+
/** The account whose authorization is being requested. */
|
|
20
|
+
recipient: AztecAddress;
|
|
21
|
+
chainId: Fr;
|
|
22
|
+
version: Fr;
|
|
23
|
+
/** The x-coordinate of the handshake's ephemeral public key (its y-coordinate is positive by construction). */
|
|
24
|
+
ephPkX: Fr;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* The recipient's signed authorization for an interactive handshake. Mirrors the registry contract's
|
|
29
|
+
* `RecipientSignature` struct field for field.
|
|
30
|
+
*/
|
|
31
|
+
export type RecipientSignature = {
|
|
32
|
+
/** The recipient's master public keys, bound in-circuit to the recipient's address via `partialAddress`. */
|
|
33
|
+
publicKeys: PublicKeys;
|
|
34
|
+
partialAddress: Fr;
|
|
35
|
+
/** The x-coordinate of the recipient's master message-signing public key. */
|
|
36
|
+
mspkX: Fr;
|
|
37
|
+
/** Whether that key's y-coordinate is positive, so the circuit can reconstruct the point from `mspkX`. */
|
|
38
|
+
mspkYIsPositive: boolean;
|
|
39
|
+
/** The schnorr signature over the handshake message. */
|
|
40
|
+
signature: SchnorrSignature;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Parses and validates the registry's interactive-handshake signature request.
|
|
45
|
+
*
|
|
46
|
+
* @throws If the request kind is not {@link INTERACTIVE_HANDSHAKE_REQUEST_KIND}, the issuing contract is not the
|
|
47
|
+
* standard HandshakeRegistry, or the payload does not have the expected shape.
|
|
48
|
+
*/
|
|
49
|
+
export function parseInteractiveHandshakeRequest(request: CustomRequest): InteractiveHandshakeRequest {
|
|
50
|
+
if (!request.kind.equals(INTERACTIVE_HANDSHAKE_REQUEST_KIND)) {
|
|
51
|
+
throw new Error(`Not an interactive-handshake signature request: unexpected kind ${request.kind}`);
|
|
52
|
+
}
|
|
53
|
+
if (!request.contractAddress.equals(STANDARD_HANDSHAKE_REGISTRY_ADDRESS)) {
|
|
54
|
+
throw new Error(
|
|
55
|
+
`Interactive-handshake signature request issued by ${request.contractAddress}, expected the standard HandshakeRegistry at ${STANDARD_HANDSHAKE_REGISTRY_ADDRESS}`,
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
if (request.payload.length !== 4) {
|
|
59
|
+
throw new Error(`Interactive-handshake signature request payload has ${request.payload.length} fields, expected 4`);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const [recipient, chainId, version, ephPkX] = request.payload;
|
|
63
|
+
return { recipient: new AztecAddress(recipient), chainId, version, ephPkX };
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Produces the recipient's signed authorization for an interactive handshake, signing with the master
|
|
68
|
+
* message-signing secret key.
|
|
69
|
+
*/
|
|
70
|
+
export async function signInteractiveHandshake(
|
|
71
|
+
request: InteractiveHandshakeRequest,
|
|
72
|
+
completeAddress: CompleteAddress,
|
|
73
|
+
masterMessageSigningSecretKey: GrumpkinScalar,
|
|
74
|
+
): Promise<RecipientSignature> {
|
|
75
|
+
const mspk = await derivePublicKeyFromSecretKey(masterMessageSigningSecretKey);
|
|
76
|
+
const [mspkX, mspkYIsPositive] = mspk.toXAndSign();
|
|
77
|
+
|
|
78
|
+
const message = await computeInteractiveHandshakeSignatureMessage({
|
|
79
|
+
chainId: request.chainId,
|
|
80
|
+
version: request.version,
|
|
81
|
+
registry: STANDARD_HANDSHAKE_REGISTRY_ADDRESS,
|
|
82
|
+
ephPkX: request.ephPkX,
|
|
83
|
+
});
|
|
84
|
+
const signature = await new Schnorr().constructSignature(message, masterMessageSigningSecretKey);
|
|
85
|
+
|
|
86
|
+
return {
|
|
87
|
+
publicKeys: completeAddress.publicKeys,
|
|
88
|
+
partialAddress: completeAddress.partialAddress,
|
|
89
|
+
mspkX,
|
|
90
|
+
mspkYIsPositive,
|
|
91
|
+
signature,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/** Serializes a {@link RecipientSignature} to the field layout the registry's in-circuit deserialization expects. */
|
|
96
|
+
export function recipientSignatureToFields(recipientSignature: RecipientSignature): Fr[] {
|
|
97
|
+
const s = Fq.fromBuffer(recipientSignature.signature.s);
|
|
98
|
+
const e = Fq.fromBuffer(recipientSignature.signature.e);
|
|
99
|
+
return [
|
|
100
|
+
...recipientSignature.publicKeys.toFields(),
|
|
101
|
+
recipientSignature.partialAddress,
|
|
102
|
+
recipientSignature.mspkX,
|
|
103
|
+
new Fr(recipientSignature.mspkYIsPositive),
|
|
104
|
+
s.lo,
|
|
105
|
+
s.hi,
|
|
106
|
+
e.lo,
|
|
107
|
+
e.hi,
|
|
108
|
+
];
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* The message an interactive-handshake authorization signs: the handshake's ephemeral key and chain context under
|
|
113
|
+
* `DomainSeparator.INTERACTIVE_HANDSHAKE_SIGNATURE`, exactly as the registry recomputes it in-circuit.
|
|
114
|
+
*/
|
|
115
|
+
function computeInteractiveHandshakeSignatureMessage(args: {
|
|
116
|
+
chainId: Fr;
|
|
117
|
+
version: Fr;
|
|
118
|
+
registry: AztecAddress;
|
|
119
|
+
ephPkX: Fr;
|
|
120
|
+
}): Promise<Fr> {
|
|
121
|
+
return poseidon2HashWithSeparator(
|
|
122
|
+
[args.chainId, args.version, args.registry, args.ephPkX],
|
|
123
|
+
DomainSeparator.INTERACTIVE_HANDSHAKE_SIGNATURE,
|
|
124
|
+
);
|
|
125
|
+
}
|