@aztec/end-to-end 0.0.1-commit.b655e406 → 0.0.1-commit.b6e433891
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/bench/client_flows/benchmark.d.ts +3 -2
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/benchmark.js +21 -1
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +22 -16
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +142 -124
- package/dest/bench/client_flows/config.d.ts +2 -2
- package/dest/bench/client_flows/config.d.ts.map +1 -1
- package/dest/bench/client_flows/config.js +18 -0
- package/dest/bench/client_flows/data_extractor.d.ts +1 -1
- package/dest/bench/client_flows/data_extractor.js +7 -27
- package/dest/bench/utils.d.ts +8 -7
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +31 -19
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +9 -8
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +107 -113
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +20 -14
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +92 -70
- package/dest/e2e_deploy_contract/deploy_test.d.ts +6 -5
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_deploy_contract/deploy_test.js +18 -13
- package/dest/e2e_epochs/epochs_test.d.ts +27 -15
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +107 -54
- package/dest/e2e_fees/bridging_race.notest.d.ts +1 -1
- package/dest/e2e_fees/bridging_race.notest.js +5 -7
- package/dest/e2e_fees/fees_test.d.ts +21 -17
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +138 -143
- package/dest/e2e_l1_publisher/write_json.d.ts +4 -3
- package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
- package/dest/e2e_l1_publisher/write_json.js +18 -19
- package/dest/e2e_multi_validator/utils.d.ts +1 -1
- package/dest/e2e_multi_validator/utils.js +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +6 -9
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +30 -39
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +3 -3
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
- package/dest/e2e_p2p/inactivity_slash_test.js +7 -6
- package/dest/e2e_p2p/p2p_network.d.ts +229 -21
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +142 -114
- package/dest/e2e_p2p/reqresp/utils.d.ts +22 -0
- package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -0
- package/dest/e2e_p2p/reqresp/utils.js +190 -0
- package/dest/e2e_p2p/shared.d.ts +31 -11
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +51 -22
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +2 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +1 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.js +184 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts +18 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +1 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.js +120 -0
- package/dest/e2e_token_contract/token_contract_test.d.ts +19 -10
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +100 -92
- package/dest/fixtures/authwit_proxy.d.ts +15 -0
- package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
- package/dest/fixtures/authwit_proxy.js +30 -0
- package/dest/fixtures/e2e_prover_test.d.ts +15 -21
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +123 -138
- package/dest/fixtures/elu_monitor.d.ts +21 -0
- package/dest/fixtures/elu_monitor.d.ts.map +1 -0
- package/dest/fixtures/elu_monitor.js +102 -0
- package/dest/fixtures/fixtures.d.ts +6 -3
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +8 -3
- package/dest/fixtures/get_acvm_config.d.ts +1 -1
- package/dest/fixtures/get_acvm_config.js +1 -1
- package/dest/fixtures/get_bb_config.d.ts +1 -1
- package/dest/fixtures/get_bb_config.d.ts.map +1 -1
- package/dest/fixtures/ha_setup.d.ts +71 -0
- package/dest/fixtures/ha_setup.d.ts.map +1 -0
- package/dest/fixtures/ha_setup.js +116 -0
- 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/l1_to_l2_messaging.d.ts +4 -3
- package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
- package/dest/fixtures/l1_to_l2_messaging.js +2 -2
- package/dest/fixtures/logging.d.ts +1 -1
- package/dest/fixtures/setup.d.ts +239 -0
- package/dest/fixtures/setup.d.ts.map +1 -0
- package/dest/fixtures/setup.js +606 -0
- package/dest/fixtures/setup_p2p_test.d.ts +17 -10
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +55 -36
- package/dest/fixtures/token_utils.d.ts +6 -3
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +17 -10
- package/dest/fixtures/utils.d.ts +5 -192
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +4 -648
- package/dest/fixtures/web3signer.d.ts +1 -1
- package/dest/fixtures/web3signer.js +1 -1
- package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
- package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
- package/dest/fixtures/with_telemetry_utils.js +2 -2
- package/dest/index.d.ts +1 -1
- package/dest/quality_of_service/grafana_client.d.ts +41 -0
- package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
- package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
- package/dest/quality_of_service/prometheus_client.d.ts +38 -0
- package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
- package/dest/quality_of_service/prometheus_client.js +67 -0
- package/dest/shared/cross_chain_test_harness.d.ts +7 -6
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +27 -27
- package/dest/shared/gas_portal_test_harness.d.ts +2 -2
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +4 -4
- package/dest/shared/index.d.ts +3 -2
- package/dest/shared/index.d.ts.map +1 -1
- package/dest/shared/index.js +1 -0
- package/dest/shared/jest_setup.d.ts +1 -1
- package/dest/shared/jest_setup.js +41 -1
- package/dest/shared/mock_state_view.d.ts +86 -0
- package/dest/shared/mock_state_view.d.ts.map +1 -0
- package/dest/shared/mock_state_view.js +186 -0
- package/dest/shared/submit-transactions.d.ts +4 -4
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +9 -11
- package/dest/shared/uniswap_l1_l2.d.ts +3 -27
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +58 -39
- package/dest/simulators/index.d.ts +1 -1
- package/dest/simulators/lending_simulator.d.ts +2 -2
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +8 -6
- package/dest/simulators/token_simulator.d.ts +1 -1
- package/dest/simulators/token_simulator.d.ts.map +1 -1
- package/dest/simulators/token_simulator.js +3 -24
- package/dest/spartan/setup_test_wallets.d.ts +18 -6
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +129 -24
- package/dest/spartan/tx_metrics.d.ts +88 -0
- package/dest/spartan/tx_metrics.d.ts.map +1 -0
- package/dest/spartan/tx_metrics.js +422 -0
- package/dest/spartan/utils/bot.d.ts +28 -0
- package/dest/spartan/utils/bot.d.ts.map +1 -0
- package/dest/spartan/utils/bot.js +142 -0
- package/dest/spartan/utils/chaos.d.ts +79 -0
- package/dest/spartan/utils/chaos.d.ts.map +1 -0
- package/dest/spartan/utils/chaos.js +142 -0
- package/dest/spartan/utils/clients.d.ts +39 -0
- package/dest/spartan/utils/clients.d.ts.map +1 -0
- package/dest/spartan/utils/clients.js +90 -0
- package/dest/spartan/utils/config.d.ts +45 -0
- package/dest/spartan/utils/config.d.ts.map +1 -0
- package/dest/spartan/utils/config.js +23 -0
- package/dest/spartan/utils/health.d.ts +63 -0
- package/dest/spartan/utils/health.d.ts.map +1 -0
- package/dest/spartan/utils/health.js +202 -0
- package/dest/spartan/utils/helm.d.ts +15 -0
- package/dest/spartan/utils/helm.d.ts.map +1 -0
- package/dest/spartan/utils/helm.js +47 -0
- package/dest/spartan/utils/index.d.ts +11 -0
- package/dest/spartan/utils/index.d.ts.map +1 -0
- package/dest/spartan/utils/index.js +22 -0
- package/dest/spartan/utils/k8s.d.ts +128 -0
- package/dest/spartan/utils/k8s.d.ts.map +1 -0
- package/dest/spartan/utils/k8s.js +381 -0
- package/dest/spartan/utils/nodes.d.ts +40 -0
- package/dest/spartan/utils/nodes.d.ts.map +1 -0
- package/dest/spartan/utils/nodes.js +461 -0
- package/dest/spartan/utils/pod_logs.d.ts +25 -0
- package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
- package/dest/spartan/utils/pod_logs.js +74 -0
- package/dest/spartan/utils/scripts.d.ts +30 -0
- package/dest/spartan/utils/scripts.d.ts.map +1 -0
- package/dest/spartan/utils/scripts.js +81 -0
- package/dest/spartan/utils.d.ts +2 -218
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +1 -749
- package/dest/test-wallet/test_wallet.d.ts +76 -0
- package/dest/test-wallet/test_wallet.d.ts.map +1 -0
- package/dest/test-wallet/test_wallet.js +214 -0
- package/dest/test-wallet/utils.d.ts +41 -0
- package/dest/test-wallet/utils.d.ts.map +1 -0
- package/dest/test-wallet/utils.js +71 -0
- package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
- package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
- package/dest/test-wallet/wallet_worker_script.js +48 -0
- package/dest/test-wallet/worker_wallet.d.ts +52 -0
- package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet.js +151 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts +274 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet_schema.js +10 -0
- package/package.json +49 -44
- package/src/bench/client_flows/benchmark.ts +24 -2
- package/src/bench/client_flows/client_flows_benchmark.ts +163 -177
- package/src/bench/client_flows/config.ts +9 -1
- package/src/bench/client_flows/data_extractor.ts +6 -28
- package/src/bench/utils.ts +36 -21
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +120 -145
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +140 -125
- package/src/e2e_deploy_contract/deploy_test.ts +23 -16
- package/src/e2e_epochs/epochs_test.ts +176 -114
- package/src/e2e_fees/bridging_race.notest.ts +6 -12
- package/src/e2e_fees/fees_test.ts +179 -226
- package/src/e2e_l1_publisher/write_json.ts +20 -19
- package/src/e2e_multi_validator/utils.ts +1 -1
- package/src/e2e_nested_contract/nested_contract_test.ts +35 -55
- package/src/e2e_p2p/inactivity_slash_test.ts +8 -7
- package/src/e2e_p2p/p2p_network.ts +205 -178
- package/src/e2e_p2p/reqresp/utils.ts +256 -0
- package/src/e2e_p2p/shared.ts +90 -29
- package/src/e2e_storage_proof/fixtures/storage_proof.json +915 -0
- package/src/e2e_storage_proof/fixtures/storage_proof_fetcher.ts +190 -0
- package/src/e2e_storage_proof/fixtures/storage_proof_fixture.ts +173 -0
- package/src/e2e_token_contract/token_contract_test.ts +121 -119
- package/src/fixtures/authwit_proxy.ts +50 -0
- package/src/fixtures/dumps/epoch_proof_result.json +1 -1
- package/src/fixtures/e2e_prover_test.ts +144 -186
- package/src/fixtures/elu_monitor.ts +126 -0
- package/src/fixtures/fixtures.ts +12 -5
- package/src/fixtures/get_acvm_config.ts +1 -1
- package/src/fixtures/ha_setup.ts +186 -0
- package/src/fixtures/index.ts +1 -0
- package/src/fixtures/l1_to_l2_messaging.ts +4 -2
- package/src/fixtures/setup.ts +903 -0
- package/src/fixtures/setup_p2p_test.ts +58 -48
- package/src/fixtures/token_utils.ts +12 -8
- package/src/fixtures/utils.ts +27 -947
- package/src/fixtures/web3signer.ts +1 -1
- package/src/fixtures/with_telemetry_utils.ts +2 -2
- package/src/guides/up_quick_start.sh +4 -4
- package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
- package/src/quality_of_service/prometheus_client.ts +113 -0
- package/src/shared/cross_chain_test_harness.ts +30 -43
- package/src/shared/gas_portal_test_harness.ts +4 -4
- package/src/shared/index.ts +2 -1
- package/src/shared/jest_setup.ts +51 -1
- package/src/shared/mock_state_view.ts +188 -0
- package/src/shared/submit-transactions.ts +11 -16
- package/src/shared/uniswap_l1_l2.ts +86 -102
- package/src/simulators/lending_simulator.ts +11 -7
- package/src/simulators/token_simulator.ts +6 -30
- package/src/spartan/DEVELOP.md +7 -0
- package/src/spartan/setup_test_wallets.ts +205 -29
- package/src/spartan/tx_metrics.ts +376 -0
- package/src/spartan/utils/bot.ts +188 -0
- package/src/spartan/utils/chaos.ts +253 -0
- package/src/spartan/utils/clients.ts +100 -0
- package/src/spartan/utils/config.ts +29 -0
- package/src/spartan/utils/health.ts +255 -0
- package/src/spartan/utils/helm.ts +84 -0
- package/src/spartan/utils/index.ts +71 -0
- package/src/spartan/utils/k8s.ts +535 -0
- package/src/spartan/utils/nodes.ts +543 -0
- package/src/spartan/utils/pod_logs.ts +99 -0
- package/src/spartan/utils/scripts.ts +99 -0
- package/src/spartan/utils.ts +1 -942
- package/src/test-wallet/test_wallet.ts +294 -0
- package/src/test-wallet/utils.ts +112 -0
- package/src/test-wallet/wallet_worker_script.ts +60 -0
- package/src/test-wallet/worker_wallet.ts +213 -0
- package/src/test-wallet/worker_wallet_schema.ts +13 -0
- package/dest/fixtures/setup_l1_contracts.d.ts +0 -6
- package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
- package/dest/fixtures/setup_l1_contracts.js +0 -17
- package/dest/fixtures/snapshot_manager.d.ts +0 -95
- package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
- package/dest/fixtures/snapshot_manager.js +0 -505
- package/dest/quality_of_service/alert_checker.d.ts +0 -41
- package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
- package/src/fixtures/setup_l1_contracts.ts +0 -26
- package/src/fixtures/snapshot_manager.ts +0 -665
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
-
import
|
|
2
|
+
import { NO_WAIT } from '@aztec/aztec.js/contracts';
|
|
3
3
|
import { Fr, GrumpkinScalar } from '@aztec/aztec.js/fields';
|
|
4
4
|
import type { Logger } from '@aztec/aztec.js/log';
|
|
5
|
-
import { TxStatus } from '@aztec/aztec.js/tx';
|
|
5
|
+
import { TxHash, type TxReceipt, TxStatus } from '@aztec/aztec.js/tx';
|
|
6
6
|
import { times } from '@aztec/foundation/collection';
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
import type { TestWallet } from '../test-wallet/test_wallet.js';
|
|
8
9
|
|
|
9
10
|
// submits a set of transactions to the provided Wallet
|
|
10
11
|
export const submitTxsTo = async (
|
|
@@ -12,26 +13,20 @@ export const submitTxsTo = async (
|
|
|
12
13
|
submitter: AztecAddress,
|
|
13
14
|
numTxs: number,
|
|
14
15
|
logger: Logger,
|
|
15
|
-
): Promise<
|
|
16
|
-
const
|
|
16
|
+
): Promise<TxHash[]> => {
|
|
17
|
+
const txHashes: TxHash[] = [];
|
|
17
18
|
await Promise.all(
|
|
18
19
|
times(numTxs, async () => {
|
|
19
20
|
const accountManager = await wallet.createSchnorrAccount(Fr.random(), Fr.random(), GrumpkinScalar.random());
|
|
20
21
|
const deployMethod = await accountManager.getDeployMethod();
|
|
21
|
-
const
|
|
22
|
-
const txHash = await tx.getTxHash();
|
|
22
|
+
const { txHash } = await deployMethod.send({ from: submitter, wait: NO_WAIT });
|
|
23
23
|
|
|
24
24
|
logger.info(`Tx sent with hash ${txHash}`);
|
|
25
|
-
const receipt = await
|
|
26
|
-
expect(receipt).
|
|
27
|
-
expect.objectContaining({
|
|
28
|
-
status: TxStatus.PENDING,
|
|
29
|
-
error: '',
|
|
30
|
-
}),
|
|
31
|
-
);
|
|
25
|
+
const receipt: TxReceipt = await wallet.getTxReceipt(txHash);
|
|
26
|
+
expect(receipt.status).toBe(TxStatus.PENDING);
|
|
32
27
|
logger.info(`Receipt received for ${txHash}`);
|
|
33
|
-
|
|
28
|
+
txHashes.push(txHash);
|
|
34
29
|
}),
|
|
35
30
|
);
|
|
36
|
-
return
|
|
31
|
+
return txHashes;
|
|
37
32
|
};
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
|
|
2
2
|
import { computeAuthWitMessageHash } from '@aztec/aztec.js/authorization';
|
|
3
|
+
import { waitForProven } from '@aztec/aztec.js/contracts';
|
|
3
4
|
import { generateClaimSecret } from '@aztec/aztec.js/ethereum';
|
|
4
5
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
5
6
|
import type { Logger } from '@aztec/aztec.js/log';
|
|
6
7
|
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
7
8
|
import { CheatCodes } from '@aztec/aztec/testing';
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
} from '@aztec/
|
|
15
|
-
import { sha256ToField } from '@aztec/foundation/crypto';
|
|
9
|
+
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
10
|
+
import type { DeployAztecL1ContractsReturnType } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
11
|
+
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
|
|
12
|
+
import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
|
|
13
|
+
import { extractEvent } from '@aztec/ethereum/utils';
|
|
14
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
15
|
+
import { sha256ToField } from '@aztec/foundation/crypto/sha256';
|
|
16
16
|
import { InboxAbi, UniswapPortalAbi, UniswapPortalBytecode } from '@aztec/l1-artifacts';
|
|
17
17
|
import { UniswapContract } from '@aztec/noir-contracts.js/Uniswap';
|
|
18
18
|
import { computeL2ToL1MessageHash } from '@aztec/stdlib/hash';
|
|
19
19
|
import { computeL2ToL1MembershipWitness } from '@aztec/stdlib/messaging';
|
|
20
|
-
import type { TestWallet } from '@aztec/test-wallet/server';
|
|
21
20
|
|
|
22
21
|
import { jest } from '@jest/globals';
|
|
23
22
|
import { type GetContractReturnType, getContract, parseEther, toFunctionSelector } from 'viem';
|
|
24
23
|
|
|
25
|
-
import { ensureAccountContractsPublished } from '../fixtures/utils.js';
|
|
24
|
+
import { type EndToEndContext, ensureAccountContractsPublished } from '../fixtures/utils.js';
|
|
25
|
+
import type { TestWallet } from '../test-wallet/test_wallet.js';
|
|
26
26
|
import { CrossChainTestHarness } from './cross_chain_test_harness.js';
|
|
27
27
|
|
|
28
28
|
// PSA: This tests works on forked mainnet. There is a dump of the data in `dumpedState` such that we
|
|
@@ -34,28 +34,8 @@ import { CrossChainTestHarness } from './cross_chain_test_harness.js';
|
|
|
34
34
|
|
|
35
35
|
const TIMEOUT = 360_000;
|
|
36
36
|
|
|
37
|
-
/** Objects to be returned by the uniswap setup function */
|
|
38
|
-
export type UniswapSetupContext = {
|
|
39
|
-
/** Aztec Node instance */
|
|
40
|
-
aztecNode: AztecNode;
|
|
41
|
-
/** Logger instance named as the current test. */
|
|
42
|
-
logger: Logger;
|
|
43
|
-
/** The L1 wallet client, extended with public actions. */
|
|
44
|
-
l1Client: ExtendedViemWalletClient;
|
|
45
|
-
/** The wallet. */
|
|
46
|
-
wallet: TestWallet;
|
|
47
|
-
/** The owner address. */
|
|
48
|
-
ownerAddress: AztecAddress;
|
|
49
|
-
/** The sponsor wallet. */
|
|
50
|
-
sponsorAddress: AztecAddress;
|
|
51
|
-
/** */
|
|
52
|
-
deployL1ContractsValues: DeployL1ContractsReturnType;
|
|
53
|
-
/** Cheat codes instance. */
|
|
54
|
-
cheatCodes: CheatCodes;
|
|
55
|
-
};
|
|
56
|
-
|
|
57
37
|
export const uniswapL1L2TestSuite = (
|
|
58
|
-
setup: () => Promise<
|
|
38
|
+
setup: () => Promise<EndToEndContext>,
|
|
59
39
|
cleanup: () => Promise<void>,
|
|
60
40
|
expectedForkBlockNumber = 17514288,
|
|
61
41
|
) => {
|
|
@@ -79,7 +59,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
79
59
|
let daiCrossChainHarness: CrossChainTestHarness;
|
|
80
60
|
let wethCrossChainHarness: CrossChainTestHarness;
|
|
81
61
|
|
|
82
|
-
let deployL1ContractsValues:
|
|
62
|
+
let deployL1ContractsValues: DeployAztecL1ContractsReturnType;
|
|
83
63
|
let rollup: RollupContract;
|
|
84
64
|
let uniswapPortal: GetContractReturnType<typeof UniswapPortalAbi, ExtendedViemWalletClient>;
|
|
85
65
|
let uniswapPortalAddress: EthAddress;
|
|
@@ -92,8 +72,19 @@ export const uniswapL1L2TestSuite = (
|
|
|
92
72
|
let cheatCodes: CheatCodes;
|
|
93
73
|
let version: number;
|
|
94
74
|
beforeAll(async () => {
|
|
95
|
-
|
|
96
|
-
|
|
75
|
+
const t = await setup();
|
|
76
|
+
({
|
|
77
|
+
aztecNode,
|
|
78
|
+
logger,
|
|
79
|
+
deployL1ContractsValues,
|
|
80
|
+
cheatCodes,
|
|
81
|
+
wallet,
|
|
82
|
+
accounts: [ownerAddress, sponsorAddress],
|
|
83
|
+
} = t);
|
|
84
|
+
|
|
85
|
+
l1Client = deployL1ContractsValues.l1Client;
|
|
86
|
+
|
|
87
|
+
t.watcher.setIsMarkingAsProven(false);
|
|
97
88
|
|
|
98
89
|
if (Number(await l1Client.getBlockNumber()) < expectedForkBlockNumber) {
|
|
99
90
|
throw new Error('This test must be run on a fork of mainnet with the expected fork block');
|
|
@@ -139,9 +130,9 @@ export const uniswapL1L2TestSuite = (
|
|
|
139
130
|
client: l1Client,
|
|
140
131
|
});
|
|
141
132
|
// deploy l2 uniswap contract and attach to portal
|
|
142
|
-
uniswapL2Contract = await UniswapContract.deploy(wallet, uniswapPortalAddress)
|
|
143
|
-
|
|
144
|
-
|
|
133
|
+
({ contract: uniswapL2Contract } = await UniswapContract.deploy(wallet, uniswapPortalAddress).send({
|
|
134
|
+
from: ownerAddress,
|
|
135
|
+
}));
|
|
145
136
|
|
|
146
137
|
const registryAddress = (await aztecNode.getNodeInfo()).l1ContractAddresses.registryAddress;
|
|
147
138
|
|
|
@@ -206,7 +197,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
206
197
|
logger.info('Withdrawing weth to L1 and sending message to swap to dai');
|
|
207
198
|
const [secretForDepositingSwappedDai, secretHashForDepositingSwappedDai] = await generateClaimSecret();
|
|
208
199
|
|
|
209
|
-
const l2UniswapInteractionReceipt = await uniswapL2Contract.methods
|
|
200
|
+
const { receipt: l2UniswapInteractionReceipt } = await uniswapL2Contract.methods
|
|
210
201
|
.swap_private(
|
|
211
202
|
wethCrossChainHarness.l2Token.address,
|
|
212
203
|
wethCrossChainHarness.l2Bridge.address,
|
|
@@ -218,8 +209,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
218
209
|
secretHashForDepositingSwappedDai,
|
|
219
210
|
ownerEthAddress,
|
|
220
211
|
)
|
|
221
|
-
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuhtwit] })
|
|
222
|
-
.wait();
|
|
212
|
+
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuhtwit] });
|
|
223
213
|
|
|
224
214
|
const swapPrivateFunction = 'swap_private(address,uint256,uint24,address,uint256,bytes32,address)';
|
|
225
215
|
const swapPrivateContent = sha256ToField([
|
|
@@ -261,33 +251,35 @@ export const uniswapL1L2TestSuite = (
|
|
|
261
251
|
// ensure that uniswap contract didn't eat the funds.
|
|
262
252
|
await wethCrossChainHarness.expectPublicBalanceOnL2(uniswapL2Contract.address, 0n);
|
|
263
253
|
|
|
264
|
-
// Since the outbox is only consumable when the
|
|
265
|
-
|
|
254
|
+
// Since the outbox is only consumable when the epoch is proven, we need to advance to the next epoch.
|
|
255
|
+
const swapResult = (await computeL2ToL1MembershipWitness(
|
|
256
|
+
aztecNode,
|
|
257
|
+
swapPrivateLeaf,
|
|
258
|
+
l2UniswapInteractionReceipt.txHash,
|
|
259
|
+
))!;
|
|
260
|
+
const { epochNumber: epoch } = swapResult;
|
|
261
|
+
await cheatCodes.rollup.advanceToEpoch(EpochNumber(epoch + 1));
|
|
262
|
+
await waitForProven(aztecNode, l2UniswapInteractionReceipt, { provenTimeout: 300 });
|
|
266
263
|
|
|
267
264
|
// 5. Consume L2 to L1 message by calling uniswapPortal.swap_private()
|
|
268
265
|
logger.info('Execute withdraw and swap on the uniswapPortal!');
|
|
269
266
|
const daiL1BalanceOfPortalBeforeSwap = await daiCrossChainHarness.getL1BalanceOf(
|
|
270
267
|
daiCrossChainHarness.tokenPortalAddress,
|
|
271
268
|
);
|
|
272
|
-
const
|
|
269
|
+
const withdrawResult = (await computeL2ToL1MembershipWitness(
|
|
273
270
|
aztecNode,
|
|
274
|
-
l2UniswapInteractionReceipt.blockNumber!,
|
|
275
|
-
swapPrivateLeaf,
|
|
276
|
-
);
|
|
277
|
-
const withdrawResult = await computeL2ToL1MembershipWitness(
|
|
278
|
-
aztecNode,
|
|
279
|
-
l2UniswapInteractionReceipt.blockNumber!,
|
|
280
271
|
withdrawLeaf,
|
|
281
|
-
|
|
272
|
+
l2UniswapInteractionReceipt.txHash,
|
|
273
|
+
))!;
|
|
282
274
|
|
|
283
|
-
const swapPrivateL2MessageIndex = swapResult
|
|
284
|
-
const swapPrivateSiblingPath = swapResult
|
|
275
|
+
const swapPrivateL2MessageIndex = swapResult.leafIndex;
|
|
276
|
+
const swapPrivateSiblingPath = swapResult.siblingPath;
|
|
285
277
|
|
|
286
|
-
const withdrawL2MessageIndex = withdrawResult
|
|
287
|
-
const withdrawSiblingPath = withdrawResult
|
|
278
|
+
const withdrawL2MessageIndex = withdrawResult.leafIndex;
|
|
279
|
+
const withdrawSiblingPath = withdrawResult.siblingPath;
|
|
288
280
|
|
|
289
281
|
const withdrawMessageMetadata = {
|
|
290
|
-
|
|
282
|
+
_epoch: BigInt(epoch),
|
|
291
283
|
_leafIndex: BigInt(withdrawL2MessageIndex),
|
|
292
284
|
_path: withdrawSiblingPath
|
|
293
285
|
.toBufferArray()
|
|
@@ -295,7 +287,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
295
287
|
};
|
|
296
288
|
|
|
297
289
|
const swapPrivateMessageMetadata = {
|
|
298
|
-
|
|
290
|
+
_epoch: BigInt(epoch),
|
|
299
291
|
_leafIndex: BigInt(swapPrivateL2MessageIndex),
|
|
300
292
|
_path: swapPrivateSiblingPath
|
|
301
293
|
.toBufferArray()
|
|
@@ -442,10 +434,10 @@ export const uniswapL1L2TestSuite = (
|
|
|
442
434
|
// ownerEthAddress,
|
|
443
435
|
// nonceForSwap,
|
|
444
436
|
// );
|
|
445
|
-
// await ownerWallet.setPublicAuthWit({ caller: sponsorAddress, action }, true).send()
|
|
437
|
+
// await ownerWallet.setPublicAuthWit({ caller: sponsorAddress, action }, true).send();
|
|
446
438
|
|
|
447
439
|
// // 4.2 Call swap_public from user2 on behalf of owner
|
|
448
|
-
// const uniswapL2Interaction = await action.send()
|
|
440
|
+
// const uniswapL2Interaction = await action.send();
|
|
449
441
|
|
|
450
442
|
// const swapPublicContent = sha256ToField([
|
|
451
443
|
// Buffer.from(
|
|
@@ -506,7 +498,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
506
498
|
// );
|
|
507
499
|
|
|
508
500
|
// const withdrawMessageMetadata = {
|
|
509
|
-
//
|
|
501
|
+
// _epoch: epoch,
|
|
510
502
|
// _leafIndex: BigInt(withdrawL2MessageIndex),
|
|
511
503
|
// _path: withdrawSiblingPath
|
|
512
504
|
// .toBufferArray()
|
|
@@ -514,7 +506,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
514
506
|
// };
|
|
515
507
|
|
|
516
508
|
// const swapPrivateMessageMetadata = {
|
|
517
|
-
//
|
|
509
|
+
// _epoch: epoch,
|
|
518
510
|
// _leafIndex: BigInt(swapPrivateL2MessageIndex),
|
|
519
511
|
// _path: swapPrivateSiblingPath
|
|
520
512
|
// .toBufferArray()
|
|
@@ -663,8 +655,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
663
655
|
Fr.random(),
|
|
664
656
|
ownerEthAddress,
|
|
665
657
|
)
|
|
666
|
-
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuthwith] })
|
|
667
|
-
.wait(),
|
|
658
|
+
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuthwith] }),
|
|
668
659
|
).rejects.toThrow('Assertion failed: input_asset address is not the same as seen in the bridge contract');
|
|
669
660
|
});
|
|
670
661
|
|
|
@@ -689,7 +680,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
689
680
|
},
|
|
690
681
|
true,
|
|
691
682
|
);
|
|
692
|
-
await validateActionInteraction.send()
|
|
683
|
+
await validateActionInteraction.send();
|
|
693
684
|
|
|
694
685
|
// No approval to call `swap` but should work even without it:
|
|
695
686
|
const [_, secretHashForDepositingSwappedDai] = await generateClaimSecret();
|
|
@@ -708,8 +699,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
708
699
|
ownerEthAddress,
|
|
709
700
|
Fr.ZERO, // nonce for swap -> doesn't matter
|
|
710
701
|
)
|
|
711
|
-
.send({ from: ownerAddress })
|
|
712
|
-
.wait();
|
|
702
|
+
.send({ from: ownerAddress });
|
|
713
703
|
// check weth balance of owner on L2 (we first bridged `wethAmountToBridge` into L2 and now withdrew it!)
|
|
714
704
|
await wethCrossChainHarness.expectPublicBalanceOnL2(ownerAddress, 0n);
|
|
715
705
|
});
|
|
@@ -739,7 +729,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
739
729
|
{ caller: approvedUser, action },
|
|
740
730
|
true,
|
|
741
731
|
);
|
|
742
|
-
await validateActionInteraction.send()
|
|
732
|
+
await validateActionInteraction.send();
|
|
743
733
|
|
|
744
734
|
await expect(action.simulate({ from: sponsorAddress })).rejects.toThrow(/unauthorized/);
|
|
745
735
|
});
|
|
@@ -761,7 +751,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
761
751
|
},
|
|
762
752
|
true,
|
|
763
753
|
);
|
|
764
|
-
await validateActionInteraction.send()
|
|
754
|
+
await validateActionInteraction.send();
|
|
765
755
|
|
|
766
756
|
await expect(
|
|
767
757
|
uniswapL2Contract.methods
|
|
@@ -806,7 +796,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
806
796
|
logger.info('Withdrawing weth to L1 and sending message to swap to dai');
|
|
807
797
|
|
|
808
798
|
const [, secretHashForDepositingSwappedDai] = await generateClaimSecret();
|
|
809
|
-
const withdrawReceipt = await uniswapL2Contract.methods
|
|
799
|
+
const { receipt: withdrawReceipt } = await uniswapL2Contract.methods
|
|
810
800
|
.swap_private(
|
|
811
801
|
wethCrossChainHarness.l2Token.address,
|
|
812
802
|
wethCrossChainHarness.l2Bridge.address,
|
|
@@ -818,8 +808,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
818
808
|
secretHashForDepositingSwappedDai,
|
|
819
809
|
ownerEthAddress,
|
|
820
810
|
)
|
|
821
|
-
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuhtwit] })
|
|
822
|
-
.wait();
|
|
811
|
+
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuhtwit] });
|
|
823
812
|
|
|
824
813
|
const swapPrivateContent = sha256ToField([
|
|
825
814
|
Buffer.from(
|
|
@@ -858,21 +847,18 @@ export const uniswapL1L2TestSuite = (
|
|
|
858
847
|
chainId: new Fr(l1Client.chain.id),
|
|
859
848
|
});
|
|
860
849
|
|
|
861
|
-
const swapResult = await computeL2ToL1MembershipWitness(aztecNode, withdrawReceipt.
|
|
862
|
-
const
|
|
863
|
-
|
|
864
|
-
withdrawReceipt.blockNumber!,
|
|
865
|
-
withdrawLeaf,
|
|
866
|
-
);
|
|
850
|
+
const swapResult = (await computeL2ToL1MembershipWitness(aztecNode, swapPrivateLeaf, withdrawReceipt.txHash))!;
|
|
851
|
+
const { epochNumber: epoch } = swapResult;
|
|
852
|
+
const withdrawResult = (await computeL2ToL1MembershipWitness(aztecNode, withdrawLeaf, withdrawReceipt.txHash))!;
|
|
867
853
|
|
|
868
|
-
const swapPrivateL2MessageIndex = swapResult
|
|
869
|
-
const swapPrivateSiblingPath = swapResult
|
|
854
|
+
const swapPrivateL2MessageIndex = swapResult.leafIndex;
|
|
855
|
+
const swapPrivateSiblingPath = swapResult.siblingPath;
|
|
870
856
|
|
|
871
|
-
const withdrawL2MessageIndex = withdrawResult
|
|
872
|
-
const withdrawSiblingPath = withdrawResult
|
|
857
|
+
const withdrawL2MessageIndex = withdrawResult.leafIndex;
|
|
858
|
+
const withdrawSiblingPath = withdrawResult.siblingPath;
|
|
873
859
|
|
|
874
860
|
const withdrawMessageMetadata = {
|
|
875
|
-
|
|
861
|
+
_epoch: BigInt(epoch),
|
|
876
862
|
_leafIndex: BigInt(withdrawL2MessageIndex),
|
|
877
863
|
_path: withdrawSiblingPath
|
|
878
864
|
.toBufferArray()
|
|
@@ -880,7 +866,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
880
866
|
};
|
|
881
867
|
|
|
882
868
|
const swapPrivateMessageMetadata = {
|
|
883
|
-
|
|
869
|
+
_epoch: BigInt(epoch),
|
|
884
870
|
_leafIndex: BigInt(swapPrivateL2MessageIndex),
|
|
885
871
|
_path: swapPrivateSiblingPath
|
|
886
872
|
.toBufferArray()
|
|
@@ -890,8 +876,9 @@ export const uniswapL1L2TestSuite = (
|
|
|
890
876
|
// ensure that user's funds were burnt
|
|
891
877
|
await wethCrossChainHarness.expectPrivateBalanceOnL2(ownerAddress, wethL2BalanceBeforeSwap - wethAmountToBridge);
|
|
892
878
|
|
|
893
|
-
// Since the outbox is only consumable when the
|
|
894
|
-
await cheatCodes.rollup.
|
|
879
|
+
// Since the outbox is only consumable when the epoch is proven, we need to advance to the next epoch.
|
|
880
|
+
await cheatCodes.rollup.advanceToEpoch(EpochNumber(epoch + 1));
|
|
881
|
+
await waitForProven(aztecNode, withdrawReceipt, { provenTimeout: 300 });
|
|
895
882
|
|
|
896
883
|
// On L1 call swap_public!
|
|
897
884
|
logger.info('call swap_public on L1');
|
|
@@ -932,11 +919,11 @@ export const uniswapL1L2TestSuite = (
|
|
|
932
919
|
},
|
|
933
920
|
true,
|
|
934
921
|
);
|
|
935
|
-
await validateActionInteraction.send()
|
|
922
|
+
await validateActionInteraction.send();
|
|
936
923
|
|
|
937
924
|
// Call swap_public on L2
|
|
938
925
|
const secretHashForDepositingSwappedDai = Fr.random();
|
|
939
|
-
const withdrawReceipt = await uniswapL2Contract.methods
|
|
926
|
+
const { receipt: withdrawReceipt } = await uniswapL2Contract.methods
|
|
940
927
|
.swap_public(
|
|
941
928
|
ownerAddress,
|
|
942
929
|
wethCrossChainHarness.l2Bridge.address,
|
|
@@ -950,8 +937,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
950
937
|
ownerEthAddress,
|
|
951
938
|
Fr.ZERO,
|
|
952
939
|
)
|
|
953
|
-
.send({ from: ownerAddress })
|
|
954
|
-
.wait();
|
|
940
|
+
.send({ from: ownerAddress });
|
|
955
941
|
|
|
956
942
|
const swapPublicContent = sha256ToField([
|
|
957
943
|
Buffer.from(
|
|
@@ -993,21 +979,18 @@ export const uniswapL1L2TestSuite = (
|
|
|
993
979
|
chainId: new Fr(l1Client.chain.id),
|
|
994
980
|
});
|
|
995
981
|
|
|
996
|
-
const swapResult = await computeL2ToL1MembershipWitness(aztecNode, withdrawReceipt.
|
|
997
|
-
const
|
|
998
|
-
|
|
999
|
-
withdrawReceipt.blockNumber!,
|
|
1000
|
-
withdrawLeaf,
|
|
1001
|
-
);
|
|
982
|
+
const swapResult = (await computeL2ToL1MembershipWitness(aztecNode, swapPublicLeaf, withdrawReceipt.txHash))!;
|
|
983
|
+
const { epochNumber: epoch } = swapResult;
|
|
984
|
+
const withdrawResult = (await computeL2ToL1MembershipWitness(aztecNode, withdrawLeaf, withdrawReceipt.txHash))!;
|
|
1002
985
|
|
|
1003
|
-
const swapPublicL2MessageIndex = swapResult
|
|
1004
|
-
const swapPublicSiblingPath = swapResult
|
|
986
|
+
const swapPublicL2MessageIndex = swapResult.leafIndex;
|
|
987
|
+
const swapPublicSiblingPath = swapResult.siblingPath;
|
|
1005
988
|
|
|
1006
|
-
const withdrawL2MessageIndex = withdrawResult
|
|
1007
|
-
const withdrawSiblingPath = withdrawResult
|
|
989
|
+
const withdrawL2MessageIndex = withdrawResult.leafIndex;
|
|
990
|
+
const withdrawSiblingPath = withdrawResult.siblingPath;
|
|
1008
991
|
|
|
1009
992
|
const withdrawMessageMetadata = {
|
|
1010
|
-
|
|
993
|
+
_epoch: BigInt(epoch),
|
|
1011
994
|
_leafIndex: BigInt(withdrawL2MessageIndex),
|
|
1012
995
|
_path: withdrawSiblingPath
|
|
1013
996
|
.toBufferArray()
|
|
@@ -1015,7 +998,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
1015
998
|
};
|
|
1016
999
|
|
|
1017
1000
|
const swapPublicMessageMetadata = {
|
|
1018
|
-
|
|
1001
|
+
_epoch: BigInt(epoch),
|
|
1019
1002
|
_leafIndex: BigInt(swapPublicL2MessageIndex),
|
|
1020
1003
|
_path: swapPublicSiblingPath
|
|
1021
1004
|
.toBufferArray()
|
|
@@ -1025,8 +1008,9 @@ export const uniswapL1L2TestSuite = (
|
|
|
1025
1008
|
// check weth balance of owner on L2 (we first bridged `wethAmountToBridge` into L2 and now withdrew it!)
|
|
1026
1009
|
await wethCrossChainHarness.expectPublicBalanceOnL2(ownerAddress, 0n);
|
|
1027
1010
|
|
|
1028
|
-
// Since the outbox is only consumable when the
|
|
1029
|
-
await cheatCodes.rollup.
|
|
1011
|
+
// Since the outbox is only consumable when the epoch is proven, we need to advance to the next epoch.
|
|
1012
|
+
await cheatCodes.rollup.advanceToEpoch(EpochNumber(epoch + 1));
|
|
1013
|
+
await waitForProven(aztecNode, withdrawReceipt, { provenTimeout: 300 });
|
|
1030
1014
|
|
|
1031
1015
|
// Call swap_private on L1
|
|
1032
1016
|
logger.info('Execute withdraw and swap on the uniswapPortal!');
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
3
3
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
4
4
|
import { CheatCodes } from '@aztec/aztec/testing';
|
|
5
|
-
import type { RollupContract } from '@aztec/ethereum';
|
|
6
|
-
import {
|
|
5
|
+
import type { RollupContract } from '@aztec/ethereum/contracts';
|
|
6
|
+
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
7
|
+
import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon';
|
|
7
8
|
import type { TestDateProvider } from '@aztec/foundation/timer';
|
|
8
9
|
import type { LendingContract } from '@aztec/noir-contracts.js/Lending';
|
|
9
10
|
|
|
@@ -28,7 +29,7 @@ export class LendingAccount {
|
|
|
28
29
|
* @returns Key in public space
|
|
29
30
|
*/
|
|
30
31
|
public key() {
|
|
31
|
-
return
|
|
32
|
+
return poseidon2Hash([this.address, this.secret]);
|
|
32
33
|
}
|
|
33
34
|
}
|
|
34
35
|
|
|
@@ -103,7 +104,8 @@ export class LendingSimulator {
|
|
|
103
104
|
}
|
|
104
105
|
|
|
105
106
|
const slot = await this.rollup.getSlotAt(BigInt(await this.cc.eth.timestamp()));
|
|
106
|
-
const
|
|
107
|
+
const targetSlot = SlotNumber(slot + diff);
|
|
108
|
+
const ts = Number(await this.rollup.getTimestampForSlot(targetSlot));
|
|
107
109
|
const timeDiff = ts - this.time;
|
|
108
110
|
this.time = ts;
|
|
109
111
|
|
|
@@ -112,7 +114,7 @@ export class LendingSimulator {
|
|
|
112
114
|
if (dateProvider) {
|
|
113
115
|
dateProvider.setTime(this.time * 1000);
|
|
114
116
|
}
|
|
115
|
-
await this.cc.rollup.markAsProven(await this.rollup.
|
|
117
|
+
await this.cc.rollup.markAsProven(await this.rollup.getCheckpointNumber());
|
|
116
118
|
this.accumulator = muldivDown(this.accumulator, computeMultiplier(this.rate, BigInt(timeDiff)), BASE);
|
|
117
119
|
}
|
|
118
120
|
|
|
@@ -184,14 +186,16 @@ export class LendingSimulator {
|
|
|
184
186
|
|
|
185
187
|
expect(this.borrowed).toEqual(this.stableCoin.totalSupply - this.mintedOutside);
|
|
186
188
|
|
|
187
|
-
const asset = await this.lendingContract.methods.get_asset(0).simulate({ from: this.account.address });
|
|
189
|
+
const { result: asset } = await this.lendingContract.methods.get_asset(0).simulate({ from: this.account.address });
|
|
188
190
|
|
|
189
191
|
const interestAccumulator = asset['interest_accumulator'];
|
|
190
192
|
expect(interestAccumulator).toEqual(this.accumulator);
|
|
191
193
|
expect(asset['last_updated_ts']).toEqual(BigInt(this.time));
|
|
192
194
|
|
|
193
195
|
for (const key of [this.account.address, AztecAddress.fromField(await this.account.key())]) {
|
|
194
|
-
const privatePos = await this.lendingContract.methods
|
|
196
|
+
const { result: privatePos } = await this.lendingContract.methods
|
|
197
|
+
.get_position(key)
|
|
198
|
+
.simulate({ from: this.account.address });
|
|
195
199
|
expect(new Fr(privatePos['collateral'])).toEqual(this.collateral[key.toString()] ?? Fr.ZERO);
|
|
196
200
|
expect(new Fr(privatePos['static_debt'])).toEqual(this.staticDebt[key.toString()] ?? Fr.ZERO);
|
|
197
201
|
expect(privatePos['debt']).toEqual(
|
|
@@ -109,7 +109,9 @@ export class TokenSimulator {
|
|
|
109
109
|
await Promise.all(
|
|
110
110
|
chunk(calls, 5).map(batch => new BatchCall(this.defaultWallet, batch).simulate({ from: this.defaultAddress })),
|
|
111
111
|
)
|
|
112
|
-
)
|
|
112
|
+
)
|
|
113
|
+
.flatMap(r => r.result)
|
|
114
|
+
.map(r => r.result);
|
|
113
115
|
expect(results[0]).toEqual(this.totalSupply);
|
|
114
116
|
|
|
115
117
|
// Check that all our balances match
|
|
@@ -119,39 +121,13 @@ export class TokenSimulator {
|
|
|
119
121
|
}
|
|
120
122
|
|
|
121
123
|
async checkPrivate() {
|
|
122
|
-
// Private calls
|
|
123
|
-
const defaultLookups = [];
|
|
124
|
-
const nonDefaultLookups = [];
|
|
125
|
-
|
|
126
124
|
for (const address of this.accounts) {
|
|
127
|
-
if (this.lookupProvider.has(address.toString())) {
|
|
128
|
-
nonDefaultLookups.push(address);
|
|
129
|
-
} else {
|
|
130
|
-
defaultLookups.push(address);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
const defaultCalls = defaultLookups.map(address => this.token.methods.balance_of_private(address));
|
|
135
|
-
const results = (
|
|
136
|
-
await Promise.all(
|
|
137
|
-
chunk(defaultCalls, 4).map(batch =>
|
|
138
|
-
new BatchCall(this.defaultWallet, batch).simulate({ from: this.defaultAddress }),
|
|
139
|
-
),
|
|
140
|
-
)
|
|
141
|
-
).flat();
|
|
142
|
-
for (let i = 0; i < defaultLookups.length; i++) {
|
|
143
|
-
expect(results[i]).toEqual(this.balanceOfPrivate(defaultLookups[i]));
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
// We are just running individual calls for the non-default lookups
|
|
147
|
-
// @todo We should also batch these
|
|
148
|
-
for (const address of nonDefaultLookups) {
|
|
149
125
|
const wallet = this.lookupProvider.get(address.toString());
|
|
150
126
|
const asset = wallet ? this.token.withWallet(wallet) : this.token;
|
|
151
127
|
|
|
152
|
-
const actualPrivateBalance = await asset.methods
|
|
153
|
-
.balance_of_private(
|
|
154
|
-
.simulate({ from:
|
|
128
|
+
const { result: actualPrivateBalance } = await asset.methods
|
|
129
|
+
.balance_of_private(address)
|
|
130
|
+
.simulate({ from: address });
|
|
155
131
|
expect(actualPrivateBalance).toEqual(this.balanceOfPrivate(address));
|
|
156
132
|
}
|
|
157
133
|
}
|
package/src/spartan/DEVELOP.md
CHANGED
|
@@ -61,10 +61,17 @@ The export is important there. The `AZTEC_DOCKER_IMAGE` env var is used as both:
|
|
|
61
61
|
- the containers for the aztec infrastructure (validators, provers, etc)
|
|
62
62
|
|
|
63
63
|
# Deploy Metrics
|
|
64
|
+
|
|
64
65
|
```bash
|
|
65
66
|
./spartan/bootstrap.sh metrics-kind
|
|
66
67
|
```
|
|
67
68
|
|
|
69
|
+
# Install Chaos Mesh
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
./spartan/bootstrap.sh chaos-mesh
|
|
73
|
+
```
|
|
74
|
+
|
|
68
75
|
# Deploy stuff
|
|
69
76
|
|
|
70
77
|
```bash
|