@aztec/end-to-end 0.0.1-commit.03f7ef2 → 0.0.1-commit.04852196a
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 +13 -14
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +131 -138
- 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.js +3 -1
- package/dest/bench/utils.d.ts +9 -8
- 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 +16 -11
- 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 +90 -70
- package/dest/e2e_deploy_contract/deploy_test.d.ts +5 -4
- 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 +15 -7
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +87 -40
- package/dest/e2e_fees/bridging_race.notest.js +3 -5
- package/dest/e2e_fees/fees_test.d.ts +14 -14
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +134 -145
- 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 +14 -16
- 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 -40
- 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 +3 -3
- package/dest/e2e_p2p/p2p_network.d.ts +11 -9
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +133 -109
- 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 +177 -0
- package/dest/e2e_p2p/shared.d.ts +20 -6
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +42 -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 +11 -17
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +112 -128
- 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 -2
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +7 -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/setup.d.ts +234 -0
- package/dest/fixtures/setup.d.ts.map +1 -0
- package/dest/fixtures/setup.js +605 -0
- package/dest/fixtures/setup_p2p_test.d.ts +16 -9
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +40 -29
- package/dest/fixtures/token_utils.d.ts +2 -2
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +12 -8
- package/dest/fixtures/utils.d.ts +5 -194
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +4 -619
- 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 +16 -6
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +26 -26
- package/dest/shared/gas_portal_test_harness.d.ts +11 -1
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +3 -3
- 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.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 -28
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +57 -37
- package/dest/simulators/lending_simulator.d.ts +5 -1
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +4 -4
- 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 +12 -4
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +94 -36
- package/dest/spartan/tx_metrics.d.ts +51 -2
- package/dest/spartan/tx_metrics.d.ts.map +1 -1
- package/dest/spartan/tx_metrics.js +334 -7
- 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 +42 -0
- package/dest/spartan/utils/config.d.ts.map +1 -0
- package/dest/spartan/utils/config.js +22 -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 +10 -0
- package/dest/spartan/utils/index.d.ts.map +1 -0
- package/dest/spartan/utils/index.js +20 -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/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 -231
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +1 -853
- package/dest/test-wallet/test_wallet.d.ts +83 -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 +47 -43
- package/src/bench/client_flows/benchmark.ts +24 -2
- package/src/bench/client_flows/client_flows_benchmark.ts +149 -211
- package/src/bench/client_flows/config.ts +9 -1
- package/src/bench/client_flows/data_extractor.ts +1 -1
- 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 +127 -117
- package/src/e2e_deploy_contract/deploy_test.ts +22 -15
- package/src/e2e_epochs/epochs_test.ts +130 -94
- package/src/e2e_fees/bridging_race.notest.ts +4 -10
- package/src/e2e_fees/fees_test.ts +171 -227
- package/src/e2e_l1_publisher/write_json.ts +16 -16
- package/src/e2e_nested_contract/nested_contract_test.ts +35 -56
- package/src/e2e_p2p/inactivity_slash_test.ts +3 -3
- package/src/e2e_p2p/p2p_network.ts +197 -167
- package/src/e2e_p2p/reqresp/utils.ts +235 -0
- package/src/e2e_p2p/shared.ts +72 -28
- 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 +133 -172
- package/src/fixtures/elu_monitor.ts +126 -0
- package/src/fixtures/fixtures.ts +11 -1
- package/src/fixtures/ha_setup.ts +186 -0
- package/src/fixtures/index.ts +1 -0
- package/src/fixtures/setup.ts +897 -0
- package/src/fixtures/setup_p2p_test.ts +40 -44
- package/src/fixtures/token_utils.ts +10 -6
- package/src/fixtures/utils.ts +27 -907
- package/src/guides/up_quick_start.sh +3 -3
- 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 +27 -43
- package/src/shared/gas_portal_test_harness.ts +2 -2
- 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 +64 -83
- package/src/simulators/lending_simulator.ts +6 -4
- package/src/simulators/token_simulator.ts +6 -30
- package/src/spartan/setup_test_wallets.ts +128 -27
- package/src/spartan/tx_metrics.ts +256 -10
- 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 +28 -0
- package/src/spartan/utils/health.ts +255 -0
- package/src/spartan/utils/helm.ts +84 -0
- package/src/spartan/utils/index.ts +68 -0
- package/src/spartan/utils/k8s.ts +535 -0
- package/src/spartan/utils/nodes.ts +543 -0
- package/src/spartan/utils/scripts.ts +99 -0
- package/src/spartan/utils.ts +1 -1077
- package/src/test-wallet/test_wallet.ts +306 -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/snapshot_manager.d.ts +0 -93
- package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
- package/dest/fixtures/snapshot_manager.js +0 -493
- 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/snapshot_manager.ts +0 -651
|
@@ -1,5 +1,6 @@
|
|
|
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';
|
|
@@ -10,17 +11,18 @@ import type { DeployAztecL1ContractsReturnType } from '@aztec/ethereum/deploy-az
|
|
|
10
11
|
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
|
|
11
12
|
import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
|
|
12
13
|
import { extractEvent } from '@aztec/ethereum/utils';
|
|
14
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
13
15
|
import { sha256ToField } from '@aztec/foundation/crypto/sha256';
|
|
14
16
|
import { InboxAbi, UniswapPortalAbi, UniswapPortalBytecode } from '@aztec/l1-artifacts';
|
|
15
17
|
import { UniswapContract } from '@aztec/noir-contracts.js/Uniswap';
|
|
16
18
|
import { computeL2ToL1MessageHash } from '@aztec/stdlib/hash';
|
|
17
19
|
import { computeL2ToL1MembershipWitness } from '@aztec/stdlib/messaging';
|
|
18
|
-
import type { TestWallet } from '@aztec/test-wallet/server';
|
|
19
20
|
|
|
20
21
|
import { jest } from '@jest/globals';
|
|
21
22
|
import { type GetContractReturnType, getContract, parseEther, toFunctionSelector } from 'viem';
|
|
22
23
|
|
|
23
|
-
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';
|
|
24
26
|
import { CrossChainTestHarness } from './cross_chain_test_harness.js';
|
|
25
27
|
|
|
26
28
|
// PSA: This tests works on forked mainnet. There is a dump of the data in `dumpedState` such that we
|
|
@@ -32,28 +34,8 @@ import { CrossChainTestHarness } from './cross_chain_test_harness.js';
|
|
|
32
34
|
|
|
33
35
|
const TIMEOUT = 360_000;
|
|
34
36
|
|
|
35
|
-
/** Objects to be returned by the uniswap setup function */
|
|
36
|
-
export type UniswapSetupContext = {
|
|
37
|
-
/** Aztec Node instance */
|
|
38
|
-
aztecNode: AztecNode;
|
|
39
|
-
/** Logger instance named as the current test. */
|
|
40
|
-
logger: Logger;
|
|
41
|
-
/** The L1 wallet client, extended with public actions. */
|
|
42
|
-
l1Client: ExtendedViemWalletClient;
|
|
43
|
-
/** The wallet. */
|
|
44
|
-
wallet: TestWallet;
|
|
45
|
-
/** The owner address. */
|
|
46
|
-
ownerAddress: AztecAddress;
|
|
47
|
-
/** The sponsor wallet. */
|
|
48
|
-
sponsorAddress: AztecAddress;
|
|
49
|
-
/** */
|
|
50
|
-
deployL1ContractsValues: DeployAztecL1ContractsReturnType;
|
|
51
|
-
/** Cheat codes instance. */
|
|
52
|
-
cheatCodes: CheatCodes;
|
|
53
|
-
};
|
|
54
|
-
|
|
55
37
|
export const uniswapL1L2TestSuite = (
|
|
56
|
-
setup: () => Promise<
|
|
38
|
+
setup: () => Promise<EndToEndContext>,
|
|
57
39
|
cleanup: () => Promise<void>,
|
|
58
40
|
expectedForkBlockNumber = 17514288,
|
|
59
41
|
) => {
|
|
@@ -90,8 +72,19 @@ export const uniswapL1L2TestSuite = (
|
|
|
90
72
|
let cheatCodes: CheatCodes;
|
|
91
73
|
let version: number;
|
|
92
74
|
beforeAll(async () => {
|
|
93
|
-
|
|
94
|
-
|
|
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);
|
|
95
88
|
|
|
96
89
|
if (Number(await l1Client.getBlockNumber()) < expectedForkBlockNumber) {
|
|
97
90
|
throw new Error('This test must be run on a fork of mainnet with the expected fork block');
|
|
@@ -137,9 +130,9 @@ export const uniswapL1L2TestSuite = (
|
|
|
137
130
|
client: l1Client,
|
|
138
131
|
});
|
|
139
132
|
// deploy l2 uniswap contract and attach to portal
|
|
140
|
-
uniswapL2Contract = await UniswapContract.deploy(wallet, uniswapPortalAddress)
|
|
141
|
-
|
|
142
|
-
|
|
133
|
+
({ contract: uniswapL2Contract } = await UniswapContract.deploy(wallet, uniswapPortalAddress).send({
|
|
134
|
+
from: ownerAddress,
|
|
135
|
+
}));
|
|
143
136
|
|
|
144
137
|
const registryAddress = (await aztecNode.getNodeInfo()).l1ContractAddresses.registryAddress;
|
|
145
138
|
|
|
@@ -204,7 +197,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
204
197
|
logger.info('Withdrawing weth to L1 and sending message to swap to dai');
|
|
205
198
|
const [secretForDepositingSwappedDai, secretHashForDepositingSwappedDai] = await generateClaimSecret();
|
|
206
199
|
|
|
207
|
-
const l2UniswapInteractionReceipt = await uniswapL2Contract.methods
|
|
200
|
+
const { receipt: l2UniswapInteractionReceipt } = await uniswapL2Contract.methods
|
|
208
201
|
.swap_private(
|
|
209
202
|
wethCrossChainHarness.l2Token.address,
|
|
210
203
|
wethCrossChainHarness.l2Bridge.address,
|
|
@@ -216,8 +209,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
216
209
|
secretHashForDepositingSwappedDai,
|
|
217
210
|
ownerEthAddress,
|
|
218
211
|
)
|
|
219
|
-
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuhtwit] })
|
|
220
|
-
.wait();
|
|
212
|
+
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuhtwit] });
|
|
221
213
|
|
|
222
214
|
const swapPrivateFunction = 'swap_private(address,uint256,uint24,address,uint256,bytes32,address)';
|
|
223
215
|
const swapPrivateContent = sha256ToField([
|
|
@@ -259,24 +251,19 @@ export const uniswapL1L2TestSuite = (
|
|
|
259
251
|
// ensure that uniswap contract didn't eat the funds.
|
|
260
252
|
await wethCrossChainHarness.expectPublicBalanceOnL2(uniswapL2Contract.address, 0n);
|
|
261
253
|
|
|
262
|
-
// Since the outbox is only consumable when the
|
|
263
|
-
await
|
|
254
|
+
// Since the outbox is only consumable when the epoch is proven, we need to advance to the next epoch.
|
|
255
|
+
const block = await aztecNode.getBlock(l2UniswapInteractionReceipt.blockNumber!);
|
|
256
|
+
const epoch = await rollup.getEpochNumberForCheckpoint(block!.checkpointNumber);
|
|
257
|
+
await cheatCodes.rollup.advanceToEpoch(EpochNumber(epoch + 1));
|
|
258
|
+
await waitForProven(aztecNode, l2UniswapInteractionReceipt, { provenTimeout: 300 });
|
|
264
259
|
|
|
265
260
|
// 5. Consume L2 to L1 message by calling uniswapPortal.swap_private()
|
|
266
261
|
logger.info('Execute withdraw and swap on the uniswapPortal!');
|
|
267
262
|
const daiL1BalanceOfPortalBeforeSwap = await daiCrossChainHarness.getL1BalanceOf(
|
|
268
263
|
daiCrossChainHarness.tokenPortalAddress,
|
|
269
264
|
);
|
|
270
|
-
const swapResult = await computeL2ToL1MembershipWitness(
|
|
271
|
-
|
|
272
|
-
l2UniswapInteractionReceipt.blockNumber!,
|
|
273
|
-
swapPrivateLeaf,
|
|
274
|
-
);
|
|
275
|
-
const withdrawResult = await computeL2ToL1MembershipWitness(
|
|
276
|
-
aztecNode,
|
|
277
|
-
l2UniswapInteractionReceipt.blockNumber!,
|
|
278
|
-
withdrawLeaf,
|
|
279
|
-
);
|
|
265
|
+
const swapResult = await computeL2ToL1MembershipWitness(aztecNode, epoch, swapPrivateLeaf);
|
|
266
|
+
const withdrawResult = await computeL2ToL1MembershipWitness(aztecNode, epoch, withdrawLeaf);
|
|
280
267
|
|
|
281
268
|
const swapPrivateL2MessageIndex = swapResult!.leafIndex;
|
|
282
269
|
const swapPrivateSiblingPath = swapResult!.siblingPath;
|
|
@@ -285,7 +272,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
285
272
|
const withdrawSiblingPath = withdrawResult!.siblingPath;
|
|
286
273
|
|
|
287
274
|
const withdrawMessageMetadata = {
|
|
288
|
-
|
|
275
|
+
_epoch: BigInt(epoch),
|
|
289
276
|
_leafIndex: BigInt(withdrawL2MessageIndex),
|
|
290
277
|
_path: withdrawSiblingPath
|
|
291
278
|
.toBufferArray()
|
|
@@ -293,7 +280,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
293
280
|
};
|
|
294
281
|
|
|
295
282
|
const swapPrivateMessageMetadata = {
|
|
296
|
-
|
|
283
|
+
_epoch: BigInt(epoch),
|
|
297
284
|
_leafIndex: BigInt(swapPrivateL2MessageIndex),
|
|
298
285
|
_path: swapPrivateSiblingPath
|
|
299
286
|
.toBufferArray()
|
|
@@ -440,10 +427,10 @@ export const uniswapL1L2TestSuite = (
|
|
|
440
427
|
// ownerEthAddress,
|
|
441
428
|
// nonceForSwap,
|
|
442
429
|
// );
|
|
443
|
-
// await ownerWallet.setPublicAuthWit({ caller: sponsorAddress, action }, true).send()
|
|
430
|
+
// await ownerWallet.setPublicAuthWit({ caller: sponsorAddress, action }, true).send();
|
|
444
431
|
|
|
445
432
|
// // 4.2 Call swap_public from user2 on behalf of owner
|
|
446
|
-
// const uniswapL2Interaction = await action.send()
|
|
433
|
+
// const uniswapL2Interaction = await action.send();
|
|
447
434
|
|
|
448
435
|
// const swapPublicContent = sha256ToField([
|
|
449
436
|
// Buffer.from(
|
|
@@ -504,7 +491,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
504
491
|
// );
|
|
505
492
|
|
|
506
493
|
// const withdrawMessageMetadata = {
|
|
507
|
-
//
|
|
494
|
+
// _epoch: epoch,
|
|
508
495
|
// _leafIndex: BigInt(withdrawL2MessageIndex),
|
|
509
496
|
// _path: withdrawSiblingPath
|
|
510
497
|
// .toBufferArray()
|
|
@@ -512,7 +499,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
512
499
|
// };
|
|
513
500
|
|
|
514
501
|
// const swapPrivateMessageMetadata = {
|
|
515
|
-
//
|
|
502
|
+
// _epoch: epoch,
|
|
516
503
|
// _leafIndex: BigInt(swapPrivateL2MessageIndex),
|
|
517
504
|
// _path: swapPrivateSiblingPath
|
|
518
505
|
// .toBufferArray()
|
|
@@ -661,8 +648,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
661
648
|
Fr.random(),
|
|
662
649
|
ownerEthAddress,
|
|
663
650
|
)
|
|
664
|
-
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuthwith] })
|
|
665
|
-
.wait(),
|
|
651
|
+
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuthwith] }),
|
|
666
652
|
).rejects.toThrow('Assertion failed: input_asset address is not the same as seen in the bridge contract');
|
|
667
653
|
});
|
|
668
654
|
|
|
@@ -687,7 +673,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
687
673
|
},
|
|
688
674
|
true,
|
|
689
675
|
);
|
|
690
|
-
await validateActionInteraction.send()
|
|
676
|
+
await validateActionInteraction.send();
|
|
691
677
|
|
|
692
678
|
// No approval to call `swap` but should work even without it:
|
|
693
679
|
const [_, secretHashForDepositingSwappedDai] = await generateClaimSecret();
|
|
@@ -706,8 +692,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
706
692
|
ownerEthAddress,
|
|
707
693
|
Fr.ZERO, // nonce for swap -> doesn't matter
|
|
708
694
|
)
|
|
709
|
-
.send({ from: ownerAddress })
|
|
710
|
-
.wait();
|
|
695
|
+
.send({ from: ownerAddress });
|
|
711
696
|
// check weth balance of owner on L2 (we first bridged `wethAmountToBridge` into L2 and now withdrew it!)
|
|
712
697
|
await wethCrossChainHarness.expectPublicBalanceOnL2(ownerAddress, 0n);
|
|
713
698
|
});
|
|
@@ -737,7 +722,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
737
722
|
{ caller: approvedUser, action },
|
|
738
723
|
true,
|
|
739
724
|
);
|
|
740
|
-
await validateActionInteraction.send()
|
|
725
|
+
await validateActionInteraction.send();
|
|
741
726
|
|
|
742
727
|
await expect(action.simulate({ from: sponsorAddress })).rejects.toThrow(/unauthorized/);
|
|
743
728
|
});
|
|
@@ -759,7 +744,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
759
744
|
},
|
|
760
745
|
true,
|
|
761
746
|
);
|
|
762
|
-
await validateActionInteraction.send()
|
|
747
|
+
await validateActionInteraction.send();
|
|
763
748
|
|
|
764
749
|
await expect(
|
|
765
750
|
uniswapL2Contract.methods
|
|
@@ -804,7 +789,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
804
789
|
logger.info('Withdrawing weth to L1 and sending message to swap to dai');
|
|
805
790
|
|
|
806
791
|
const [, secretHashForDepositingSwappedDai] = await generateClaimSecret();
|
|
807
|
-
const withdrawReceipt = await uniswapL2Contract.methods
|
|
792
|
+
const { receipt: withdrawReceipt } = await uniswapL2Contract.methods
|
|
808
793
|
.swap_private(
|
|
809
794
|
wethCrossChainHarness.l2Token.address,
|
|
810
795
|
wethCrossChainHarness.l2Bridge.address,
|
|
@@ -816,8 +801,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
816
801
|
secretHashForDepositingSwappedDai,
|
|
817
802
|
ownerEthAddress,
|
|
818
803
|
)
|
|
819
|
-
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuhtwit] })
|
|
820
|
-
.wait();
|
|
804
|
+
.send({ from: ownerAddress, authWitnesses: [transferToPublicAuhtwit] });
|
|
821
805
|
|
|
822
806
|
const swapPrivateContent = sha256ToField([
|
|
823
807
|
Buffer.from(
|
|
@@ -856,12 +840,10 @@ export const uniswapL1L2TestSuite = (
|
|
|
856
840
|
chainId: new Fr(l1Client.chain.id),
|
|
857
841
|
});
|
|
858
842
|
|
|
859
|
-
const
|
|
860
|
-
const
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
withdrawLeaf,
|
|
864
|
-
);
|
|
843
|
+
const block = await aztecNode.getBlock(withdrawReceipt.blockNumber!);
|
|
844
|
+
const epoch = await rollup.getEpochNumberForCheckpoint(block!.checkpointNumber);
|
|
845
|
+
const swapResult = await computeL2ToL1MembershipWitness(aztecNode, epoch, swapPrivateLeaf);
|
|
846
|
+
const withdrawResult = await computeL2ToL1MembershipWitness(aztecNode, epoch, withdrawLeaf);
|
|
865
847
|
|
|
866
848
|
const swapPrivateL2MessageIndex = swapResult!.leafIndex;
|
|
867
849
|
const swapPrivateSiblingPath = swapResult!.siblingPath;
|
|
@@ -870,7 +852,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
870
852
|
const withdrawSiblingPath = withdrawResult!.siblingPath;
|
|
871
853
|
|
|
872
854
|
const withdrawMessageMetadata = {
|
|
873
|
-
|
|
855
|
+
_epoch: BigInt(epoch),
|
|
874
856
|
_leafIndex: BigInt(withdrawL2MessageIndex),
|
|
875
857
|
_path: withdrawSiblingPath
|
|
876
858
|
.toBufferArray()
|
|
@@ -878,7 +860,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
878
860
|
};
|
|
879
861
|
|
|
880
862
|
const swapPrivateMessageMetadata = {
|
|
881
|
-
|
|
863
|
+
_epoch: BigInt(epoch),
|
|
882
864
|
_leafIndex: BigInt(swapPrivateL2MessageIndex),
|
|
883
865
|
_path: swapPrivateSiblingPath
|
|
884
866
|
.toBufferArray()
|
|
@@ -888,8 +870,9 @@ export const uniswapL1L2TestSuite = (
|
|
|
888
870
|
// ensure that user's funds were burnt
|
|
889
871
|
await wethCrossChainHarness.expectPrivateBalanceOnL2(ownerAddress, wethL2BalanceBeforeSwap - wethAmountToBridge);
|
|
890
872
|
|
|
891
|
-
// Since the outbox is only consumable when the
|
|
892
|
-
await cheatCodes.rollup.
|
|
873
|
+
// Since the outbox is only consumable when the epoch is proven, we need to advance to the next epoch.
|
|
874
|
+
await cheatCodes.rollup.advanceToEpoch(EpochNumber(epoch + 1));
|
|
875
|
+
await waitForProven(aztecNode, withdrawReceipt, { provenTimeout: 300 });
|
|
893
876
|
|
|
894
877
|
// On L1 call swap_public!
|
|
895
878
|
logger.info('call swap_public on L1');
|
|
@@ -930,11 +913,11 @@ export const uniswapL1L2TestSuite = (
|
|
|
930
913
|
},
|
|
931
914
|
true,
|
|
932
915
|
);
|
|
933
|
-
await validateActionInteraction.send()
|
|
916
|
+
await validateActionInteraction.send();
|
|
934
917
|
|
|
935
918
|
// Call swap_public on L2
|
|
936
919
|
const secretHashForDepositingSwappedDai = Fr.random();
|
|
937
|
-
const withdrawReceipt = await uniswapL2Contract.methods
|
|
920
|
+
const { receipt: withdrawReceipt } = await uniswapL2Contract.methods
|
|
938
921
|
.swap_public(
|
|
939
922
|
ownerAddress,
|
|
940
923
|
wethCrossChainHarness.l2Bridge.address,
|
|
@@ -948,8 +931,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
948
931
|
ownerEthAddress,
|
|
949
932
|
Fr.ZERO,
|
|
950
933
|
)
|
|
951
|
-
.send({ from: ownerAddress })
|
|
952
|
-
.wait();
|
|
934
|
+
.send({ from: ownerAddress });
|
|
953
935
|
|
|
954
936
|
const swapPublicContent = sha256ToField([
|
|
955
937
|
Buffer.from(
|
|
@@ -991,12 +973,10 @@ export const uniswapL1L2TestSuite = (
|
|
|
991
973
|
chainId: new Fr(l1Client.chain.id),
|
|
992
974
|
});
|
|
993
975
|
|
|
994
|
-
const
|
|
995
|
-
const
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
withdrawLeaf,
|
|
999
|
-
);
|
|
976
|
+
const block = await aztecNode.getBlock(withdrawReceipt.blockNumber!);
|
|
977
|
+
const epoch = await rollup.getEpochNumberForCheckpoint(block!.checkpointNumber);
|
|
978
|
+
const swapResult = await computeL2ToL1MembershipWitness(aztecNode, epoch, swapPublicLeaf);
|
|
979
|
+
const withdrawResult = await computeL2ToL1MembershipWitness(aztecNode, epoch, withdrawLeaf);
|
|
1000
980
|
|
|
1001
981
|
const swapPublicL2MessageIndex = swapResult!.leafIndex;
|
|
1002
982
|
const swapPublicSiblingPath = swapResult!.siblingPath;
|
|
@@ -1005,7 +985,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
1005
985
|
const withdrawSiblingPath = withdrawResult!.siblingPath;
|
|
1006
986
|
|
|
1007
987
|
const withdrawMessageMetadata = {
|
|
1008
|
-
|
|
988
|
+
_epoch: BigInt(epoch),
|
|
1009
989
|
_leafIndex: BigInt(withdrawL2MessageIndex),
|
|
1010
990
|
_path: withdrawSiblingPath
|
|
1011
991
|
.toBufferArray()
|
|
@@ -1013,7 +993,7 @@ export const uniswapL1L2TestSuite = (
|
|
|
1013
993
|
};
|
|
1014
994
|
|
|
1015
995
|
const swapPublicMessageMetadata = {
|
|
1016
|
-
|
|
996
|
+
_epoch: BigInt(epoch),
|
|
1017
997
|
_leafIndex: BigInt(swapPublicL2MessageIndex),
|
|
1018
998
|
_path: swapPublicSiblingPath
|
|
1019
999
|
.toBufferArray()
|
|
@@ -1023,8 +1003,9 @@ export const uniswapL1L2TestSuite = (
|
|
|
1023
1003
|
// check weth balance of owner on L2 (we first bridged `wethAmountToBridge` into L2 and now withdrew it!)
|
|
1024
1004
|
await wethCrossChainHarness.expectPublicBalanceOnL2(ownerAddress, 0n);
|
|
1025
1005
|
|
|
1026
|
-
// Since the outbox is only consumable when the
|
|
1027
|
-
await cheatCodes.rollup.
|
|
1006
|
+
// Since the outbox is only consumable when the epoch is proven, we need to advance to the next epoch.
|
|
1007
|
+
await cheatCodes.rollup.advanceToEpoch(EpochNumber(epoch + 1));
|
|
1008
|
+
await waitForProven(aztecNode, withdrawReceipt, { provenTimeout: 300 });
|
|
1028
1009
|
|
|
1029
1010
|
// Call swap_private on L1
|
|
1030
1011
|
logger.info('Execute withdraw and swap on the uniswapPortal!');
|
|
@@ -4,7 +4,7 @@ import { Fr } from '@aztec/aztec.js/fields';
|
|
|
4
4
|
import { CheatCodes } from '@aztec/aztec/testing';
|
|
5
5
|
import type { RollupContract } from '@aztec/ethereum/contracts';
|
|
6
6
|
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
7
|
-
import {
|
|
7
|
+
import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon';
|
|
8
8
|
import type { TestDateProvider } from '@aztec/foundation/timer';
|
|
9
9
|
import type { LendingContract } from '@aztec/noir-contracts.js/Lending';
|
|
10
10
|
|
|
@@ -29,7 +29,7 @@ export class LendingAccount {
|
|
|
29
29
|
* @returns Key in public space
|
|
30
30
|
*/
|
|
31
31
|
public key() {
|
|
32
|
-
return
|
|
32
|
+
return poseidon2Hash([this.address, this.secret]);
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
|
|
@@ -186,14 +186,16 @@ export class LendingSimulator {
|
|
|
186
186
|
|
|
187
187
|
expect(this.borrowed).toEqual(this.stableCoin.totalSupply - this.mintedOutside);
|
|
188
188
|
|
|
189
|
-
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 });
|
|
190
190
|
|
|
191
191
|
const interestAccumulator = asset['interest_accumulator'];
|
|
192
192
|
expect(interestAccumulator).toEqual(this.accumulator);
|
|
193
193
|
expect(asset['last_updated_ts']).toEqual(BigInt(this.time));
|
|
194
194
|
|
|
195
195
|
for (const key of [this.account.address, AztecAddress.fromField(await this.account.key())]) {
|
|
196
|
-
const privatePos = await this.lendingContract.methods
|
|
196
|
+
const { result: privatePos } = await this.lendingContract.methods
|
|
197
|
+
.get_position(key)
|
|
198
|
+
.simulate({ from: this.account.address });
|
|
197
199
|
expect(new Fr(privatePos['collateral'])).toEqual(this.collateral[key.toString()] ?? Fr.ZERO);
|
|
198
200
|
expect(new Fr(privatePos['static_debt'])).toEqual(this.staticDebt[key.toString()] ?? Fr.ZERO);
|
|
199
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
|
+
.flat()
|
|
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
|
}
|