@aztec/end-to-end 0.0.1-commit.b655e406 → 0.0.1-commit.c7c42ec
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 +1 -1
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +10 -3
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +58 -33
- package/dest/bench/client_flows/config.d.ts +1 -1
- package/dest/bench/client_flows/data_extractor.d.ts +1 -1
- package/dest/bench/client_flows/data_extractor.js +5 -27
- package/dest/bench/utils.d.ts +3 -3
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +10 -6
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +1 -1
- 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 +2 -2
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +5 -4
- 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 +6 -4
- package/dest/e2e_deploy_contract/deploy_test.d.ts +2 -2
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.d.ts +11 -9
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +17 -14
- package/dest/e2e_fees/bridging_race.notest.d.ts +1 -1
- package/dest/e2e_fees/bridging_race.notest.js +2 -2
- package/dest/e2e_fees/fees_test.d.ts +8 -4
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +16 -10
- package/dest/e2e_l1_publisher/write_json.d.ts +1 -1
- package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
- package/dest/e2e_l1_publisher/write_json.js +5 -4
- 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 +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +4 -3
- 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 +4 -3
- package/dest/e2e_p2p/p2p_network.d.ts +219 -13
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +15 -11
- package/dest/e2e_p2p/shared.d.ts +6 -6
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +6 -5
- package/dest/e2e_token_contract/token_contract_test.d.ts +1 -1
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +2 -2
- package/dest/fixtures/e2e_prover_test.d.ts +5 -5
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +23 -22
- package/dest/fixtures/fixtures.d.ts +2 -3
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +2 -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/index.d.ts +1 -1
- 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_p2p_test.d.ts +4 -4
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +18 -10
- package/dest/fixtures/snapshot_manager.d.ts +6 -8
- package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
- package/dest/fixtures/snapshot_manager.js +34 -46
- package/dest/fixtures/token_utils.d.ts +5 -2
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +7 -4
- package/dest/fixtures/utils.d.ts +21 -19
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +56 -85
- 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/alert_checker.d.ts +1 -1
- package/dest/quality_of_service/alert_checker.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.d.ts +5 -14
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +1 -1
- package/dest/shared/gas_portal_test_harness.d.ts +2 -12
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +1 -1
- package/dest/shared/index.d.ts +1 -1
- package/dest/shared/jest_setup.d.ts +1 -1
- package/dest/shared/submit-transactions.d.ts +1 -1
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.d.ts +4 -3
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +15 -13
- package/dest/simulators/index.d.ts +1 -1
- package/dest/simulators/lending_simulator.d.ts +2 -6
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +5 -3
- package/dest/simulators/token_simulator.d.ts +1 -1
- package/dest/simulators/token_simulator.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.d.ts +5 -3
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +45 -10
- package/dest/spartan/tx_metrics.d.ts +39 -0
- package/dest/spartan/tx_metrics.d.ts.map +1 -0
- package/dest/spartan/tx_metrics.js +95 -0
- package/dest/spartan/utils.d.ts +55 -20
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +203 -60
- package/package.json +42 -40
- package/src/bench/client_flows/client_flows_benchmark.ts +82 -34
- package/src/bench/client_flows/data_extractor.ts +6 -28
- package/src/bench/utils.ts +11 -7
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +2 -2
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +17 -12
- package/src/e2e_deploy_contract/deploy_test.ts +1 -1
- package/src/e2e_epochs/epochs_test.ts +37 -23
- package/src/e2e_fees/bridging_race.notest.ts +2 -2
- package/src/e2e_fees/fees_test.ts +22 -13
- package/src/e2e_l1_publisher/write_json.ts +5 -4
- package/src/e2e_multi_validator/utils.ts +1 -1
- package/src/e2e_nested_contract/nested_contract_test.ts +4 -3
- package/src/e2e_p2p/inactivity_slash_test.ts +5 -4
- package/src/e2e_p2p/p2p_network.ts +16 -19
- package/src/e2e_p2p/shared.ts +13 -6
- package/src/e2e_token_contract/token_contract_test.ts +2 -2
- package/src/fixtures/e2e_prover_test.ts +22 -25
- package/src/fixtures/fixtures.ts +2 -5
- package/src/fixtures/get_acvm_config.ts +1 -1
- package/src/fixtures/l1_to_l2_messaging.ts +4 -2
- package/src/fixtures/setup_p2p_test.ts +23 -9
- package/src/fixtures/snapshot_manager.ts +51 -65
- package/src/fixtures/token_utils.ts +4 -4
- package/src/fixtures/utils.ts +91 -131
- package/src/fixtures/web3signer.ts +1 -1
- package/src/fixtures/with_telemetry_utils.ts +2 -2
- package/src/guides/up_quick_start.sh +1 -1
- package/src/shared/cross_chain_test_harness.ts +5 -2
- package/src/shared/gas_portal_test_harness.ts +2 -2
- package/src/shared/uniswap_l1_l2.ts +19 -21
- package/src/simulators/lending_simulator.ts +6 -4
- package/src/spartan/DEVELOP.md +7 -0
- package/src/spartan/setup_test_wallets.ts +49 -12
- package/src/spartan/tx_metrics.ts +130 -0
- package/src/spartan/utils.ts +267 -51
- 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/src/fixtures/setup_l1_contracts.ts +0 -26
|
@@ -2,8 +2,10 @@ import { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
|
|
|
2
2
|
import { computeAuthWitMessageHash } from '@aztec/aztec.js/authorization';
|
|
3
3
|
import { generateClaimSecret } from '@aztec/aztec.js/ethereum';
|
|
4
4
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
5
|
-
import { RollupContract
|
|
6
|
-
import {
|
|
5
|
+
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
6
|
+
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
|
|
7
|
+
import { extractEvent } from '@aztec/ethereum/utils';
|
|
8
|
+
import { sha256ToField } from '@aztec/foundation/crypto/sha256';
|
|
7
9
|
import { InboxAbi, UniswapPortalAbi, UniswapPortalBytecode } from '@aztec/l1-artifacts';
|
|
8
10
|
import { UniswapContract } from '@aztec/noir-contracts.js/Uniswap';
|
|
9
11
|
import { computeL2ToL1MessageHash } from '@aztec/stdlib/hash';
|
|
@@ -159,7 +161,7 @@ export const uniswapL1L2TestSuite = (setup, cleanup, expectedForkBlockNumber = 1
|
|
|
159
161
|
// ensure that uniswap contract didn't eat the funds.
|
|
160
162
|
await wethCrossChainHarness.expectPublicBalanceOnL2(uniswapL2Contract.address, 0n);
|
|
161
163
|
// Since the outbox is only consumable when the block is proven, we need to set the block to be proven
|
|
162
|
-
await cheatCodes.rollup.markAsProven(await rollup.
|
|
164
|
+
await cheatCodes.rollup.markAsProven(await rollup.getCheckpointNumber());
|
|
163
165
|
// 5. Consume L2 to L1 message by calling uniswapPortal.swap_private()
|
|
164
166
|
logger.info('Execute withdraw and swap on the uniswapPortal!');
|
|
165
167
|
const daiL1BalanceOfPortalBeforeSwap = await daiCrossChainHarness.getL1BalanceOf(daiCrossChainHarness.tokenPortalAddress);
|
|
@@ -170,12 +172,12 @@ export const uniswapL1L2TestSuite = (setup, cleanup, expectedForkBlockNumber = 1
|
|
|
170
172
|
const withdrawL2MessageIndex = withdrawResult.leafIndex;
|
|
171
173
|
const withdrawSiblingPath = withdrawResult.siblingPath;
|
|
172
174
|
const withdrawMessageMetadata = {
|
|
173
|
-
|
|
175
|
+
_checkpointNumber: BigInt(l2UniswapInteractionReceipt.blockNumber),
|
|
174
176
|
_leafIndex: BigInt(withdrawL2MessageIndex),
|
|
175
177
|
_path: withdrawSiblingPath.toBufferArray().map((buf)=>`0x${buf.toString('hex')}`)
|
|
176
178
|
};
|
|
177
179
|
const swapPrivateMessageMetadata = {
|
|
178
|
-
|
|
180
|
+
_checkpointNumber: BigInt(l2UniswapInteractionReceipt.blockNumber),
|
|
179
181
|
_leafIndex: BigInt(swapPrivateL2MessageIndex),
|
|
180
182
|
_path: swapPrivateSiblingPath.toBufferArray().map((buf)=>`0x${buf.toString('hex')}`)
|
|
181
183
|
};
|
|
@@ -357,14 +359,14 @@ export const uniswapL1L2TestSuite = (setup, cleanup, expectedForkBlockNumber = 1
|
|
|
357
359
|
// withdrawLeaf,
|
|
358
360
|
// );
|
|
359
361
|
// const withdrawMessageMetadata = {
|
|
360
|
-
//
|
|
362
|
+
// _checkpointNumber: BigInt(uniswapL2Interaction.blockNumber!),
|
|
361
363
|
// _leafIndex: BigInt(withdrawL2MessageIndex),
|
|
362
364
|
// _path: withdrawSiblingPath
|
|
363
365
|
// .toBufferArray()
|
|
364
366
|
// .map((buf: Buffer) => `0x${buf.toString('hex')}`) as readonly `0x${string}`[],
|
|
365
367
|
// };
|
|
366
368
|
// const swapPrivateMessageMetadata = {
|
|
367
|
-
//
|
|
369
|
+
// _checkpointNumber: BigInt(uniswapL2Interaction.blockNumber!),
|
|
368
370
|
// _leafIndex: BigInt(swapPrivateL2MessageIndex),
|
|
369
371
|
// _path: swapPrivateSiblingPath
|
|
370
372
|
// .toBufferArray()
|
|
@@ -569,19 +571,19 @@ export const uniswapL1L2TestSuite = (setup, cleanup, expectedForkBlockNumber = 1
|
|
|
569
571
|
const withdrawL2MessageIndex = withdrawResult.leafIndex;
|
|
570
572
|
const withdrawSiblingPath = withdrawResult.siblingPath;
|
|
571
573
|
const withdrawMessageMetadata = {
|
|
572
|
-
|
|
574
|
+
_checkpointNumber: BigInt(withdrawReceipt.blockNumber),
|
|
573
575
|
_leafIndex: BigInt(withdrawL2MessageIndex),
|
|
574
576
|
_path: withdrawSiblingPath.toBufferArray().map((buf)=>`0x${buf.toString('hex')}`)
|
|
575
577
|
};
|
|
576
578
|
const swapPrivateMessageMetadata = {
|
|
577
|
-
|
|
579
|
+
_checkpointNumber: BigInt(withdrawReceipt.blockNumber),
|
|
578
580
|
_leafIndex: BigInt(swapPrivateL2MessageIndex),
|
|
579
581
|
_path: swapPrivateSiblingPath.toBufferArray().map((buf)=>`0x${buf.toString('hex')}`)
|
|
580
582
|
};
|
|
581
583
|
// ensure that user's funds were burnt
|
|
582
584
|
await wethCrossChainHarness.expectPrivateBalanceOnL2(ownerAddress, wethL2BalanceBeforeSwap - wethAmountToBridge);
|
|
583
585
|
// Since the outbox is only consumable when the block is proven, we need to set the block to be proven
|
|
584
|
-
await cheatCodes.rollup.markAsProven(await rollup.
|
|
586
|
+
await cheatCodes.rollup.markAsProven(await rollup.getCheckpointNumber());
|
|
585
587
|
// On L1 call swap_public!
|
|
586
588
|
logger.info('call swap_public on L1');
|
|
587
589
|
const swapArgs = [
|
|
@@ -655,19 +657,19 @@ export const uniswapL1L2TestSuite = (setup, cleanup, expectedForkBlockNumber = 1
|
|
|
655
657
|
const withdrawL2MessageIndex = withdrawResult.leafIndex;
|
|
656
658
|
const withdrawSiblingPath = withdrawResult.siblingPath;
|
|
657
659
|
const withdrawMessageMetadata = {
|
|
658
|
-
|
|
660
|
+
_checkpointNumber: BigInt(withdrawReceipt.blockNumber),
|
|
659
661
|
_leafIndex: BigInt(withdrawL2MessageIndex),
|
|
660
662
|
_path: withdrawSiblingPath.toBufferArray().map((buf)=>`0x${buf.toString('hex')}`)
|
|
661
663
|
};
|
|
662
664
|
const swapPublicMessageMetadata = {
|
|
663
|
-
|
|
665
|
+
_checkpointNumber: BigInt(withdrawReceipt.blockNumber),
|
|
664
666
|
_leafIndex: BigInt(swapPublicL2MessageIndex),
|
|
665
667
|
_path: swapPublicSiblingPath.toBufferArray().map((buf)=>`0x${buf.toString('hex')}`)
|
|
666
668
|
};
|
|
667
669
|
// check weth balance of owner on L2 (we first bridged `wethAmountToBridge` into L2 and now withdrew it!)
|
|
668
670
|
await wethCrossChainHarness.expectPublicBalanceOnL2(ownerAddress, 0n);
|
|
669
671
|
// Since the outbox is only consumable when the block is proven, we need to set the block to be proven
|
|
670
|
-
await cheatCodes.rollup.markAsProven(await rollup.
|
|
672
|
+
await cheatCodes.rollup.markAsProven(await rollup.getCheckpointNumber());
|
|
671
673
|
// Call swap_private on L1
|
|
672
674
|
logger.info('Execute withdraw and swap on the uniswapPortal!');
|
|
673
675
|
const swapArgs = [
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export * from './lending_simulator.js';
|
|
2
2
|
export * from './token_simulator.js';
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaW11bGF0b3JzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxzQkFBc0IsQ0FBQyJ9
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
2
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
3
3
|
import { CheatCodes } from '@aztec/aztec/testing';
|
|
4
|
-
import type { RollupContract } from '@aztec/ethereum';
|
|
4
|
+
import type { RollupContract } from '@aztec/ethereum/contracts';
|
|
5
5
|
import type { TestDateProvider } from '@aztec/foundation/timer';
|
|
6
6
|
import type { LendingContract } from '@aztec/noir-contracts.js/Lending';
|
|
7
7
|
import type { TokenSimulator } from './token_simulator.js';
|
|
@@ -28,13 +28,9 @@ export declare class LendingSimulator {
|
|
|
28
28
|
private account;
|
|
29
29
|
private rate;
|
|
30
30
|
private ethereumSlotDuration;
|
|
31
|
-
/** the rollup contract */
|
|
32
31
|
rollup: RollupContract;
|
|
33
|
-
/** the lending contract */
|
|
34
32
|
lendingContract: LendingContract;
|
|
35
|
-
/** the collateral asset used in the lending contract */
|
|
36
33
|
collateralAsset: TokenSimulator;
|
|
37
|
-
/** the stable-coin borrowed in the lending contract */
|
|
38
34
|
stableCoin: TokenSimulator;
|
|
39
35
|
/** interest rate accumulator */
|
|
40
36
|
accumulator: bigint;
|
|
@@ -66,4 +62,4 @@ export declare class LendingSimulator {
|
|
|
66
62
|
mintStableCoinOutsideLoan(recipient: AztecAddress, amount: bigint, priv?: boolean): void;
|
|
67
63
|
check(): Promise<void>;
|
|
68
64
|
}
|
|
69
|
-
//# sourceMappingURL=
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVuZGluZ19zaW11bGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaW11bGF0b3JzL2xlbmRpbmdfc2ltdWxhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR2hFLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFeEUsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFM0Q7O0dBRUc7QUFDSCxxQkFBYSxjQUFjO0lBQ3pCLHlDQUF5QztJQUN6QyxTQUFnQixPQUFPLEVBQUUsWUFBWSxDQUFDO0lBQ3RDLDJDQUEyQztJQUMzQyxTQUFnQixNQUFNLEVBQUUsRUFBRSxDQUFDO0lBRTNCLFlBQVksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUc1QztJQUVEOzs7T0FHRztJQUNJLEdBQUcsZ0JBRVQ7Q0FDRjtBQWdDRDs7R0FFRztBQUNILHFCQUFhLGdCQUFnQjtJQVl6QixPQUFPLENBQUMsRUFBRTtJQUNWLE9BQU8sQ0FBQyxPQUFPO0lBQ2YsT0FBTyxDQUFDLElBQUk7SUFDWixPQUFPLENBQUMsb0JBQW9CO0lBRXJCLE1BQU0sRUFBRSxjQUFjO0lBRXRCLGVBQWUsRUFBRSxlQUFlO0lBRWhDLGVBQWUsRUFBRSxjQUFjO0lBRS9CLFVBQVUsRUFBRSxjQUFjO0lBdEJuQyxnQ0FBZ0M7SUFDekIsV0FBVyxFQUFFLE1BQU0sQ0FBTTtJQUNoQyxvQ0FBb0M7SUFDN0IsSUFBSSxFQUFFLE1BQU0sQ0FBSztJQUV4QixPQUFPLENBQUMsVUFBVSxDQUE2QjtJQUMvQyxPQUFPLENBQUMsVUFBVSxDQUE2QjtJQUMvQyxPQUFPLENBQUMsUUFBUSxDQUFjO0lBQzlCLE9BQU8sQ0FBQyxhQUFhLENBQWM7SUFFbkMsWUFDVSxFQUFFLEVBQUUsVUFBVSxFQUNkLE9BQU8sRUFBRSxjQUFjLEVBQ3ZCLElBQUksRUFBRSxNQUFNLEVBQ1osb0JBQW9CLEVBQUUsTUFBTTtJQUNwQywwQkFBMEI7SUFDbkIsTUFBTSxFQUFFLGNBQWM7SUFDN0IsMkJBQTJCO0lBQ3BCLGVBQWUsRUFBRSxlQUFlO0lBQ3ZDLHdEQUF3RDtJQUNqRCxlQUFlLEVBQUUsY0FBYztJQUN0Qyx1REFBdUQ7SUFDaEQsVUFBVSxFQUFFLGNBQWMsRUFDL0I7SUFFRSxPQUFPLGtCQUlaO0lBRUssYUFBYSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLEVBQUUsZ0JBQWdCLGlCQWtCaEU7SUFFRCxjQUFjLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBR2hFO0lBRUQsYUFBYSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUcvRDtJQUVELE9BQU8sQ0FBQyxPQUFPO0lBS2YsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUkxRDtJQUVELE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFPeEQ7SUFFRCxZQUFZLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBRzlEO0lBRUQsV0FBVyxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUc3RDtJQUVELE9BQU8sQ0FBQyxLQUFLO0lBUWIseUJBQXlCLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksVUFBUSxRQU85RTtJQUVLLEtBQUssa0JBeUJWO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lending_simulator.d.ts","sourceRoot":"","sources":["../../src/simulators/lending_simulator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"lending_simulator.d.ts","sourceRoot":"","sources":["../../src/simulators/lending_simulator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAGhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;GAEG;AACH,qBAAa,cAAc;IACzB,yCAAyC;IACzC,SAAgB,OAAO,EAAE,YAAY,CAAC;IACtC,2CAA2C;IAC3C,SAAgB,MAAM,EAAE,EAAE,CAAC;IAE3B,YAAY,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAG5C;IAED;;;OAGG;IACI,GAAG,gBAET;CACF;AAgCD;;GAEG;AACH,qBAAa,gBAAgB;IAYzB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,oBAAoB;IAErB,MAAM,EAAE,cAAc;IAEtB,eAAe,EAAE,eAAe;IAEhC,eAAe,EAAE,cAAc;IAE/B,UAAU,EAAE,cAAc;IAtBnC,gCAAgC;IACzB,WAAW,EAAE,MAAM,CAAM;IAChC,oCAAoC;IAC7B,IAAI,EAAE,MAAM,CAAK;IAExB,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,aAAa,CAAc;IAEnC,YACU,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,EACZ,oBAAoB,EAAE,MAAM;IACpC,0BAA0B;IACnB,MAAM,EAAE,cAAc;IAC7B,2BAA2B;IACpB,eAAe,EAAE,eAAe;IACvC,wDAAwD;IACjD,eAAe,EAAE,cAAc;IACtC,uDAAuD;IAChD,UAAU,EAAE,cAAc,EAC/B;IAEE,OAAO,kBAIZ;IAEK,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,gBAAgB,iBAkBhE;IAED,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAGhE;IAED,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAG/D;IAED,OAAO,CAAC,OAAO;IAKf,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,QAI1D;IAED,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,QAOxD;IAED,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAG9D;IAED,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAG7D;IAED,OAAO,CAAC,KAAK;IAQb,yBAAyB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,UAAQ,QAO9E;IAEK,KAAK,kBAyBV;CACF"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// Convenience struct to hold an account's address and secret that can easily be passed around.
|
|
2
2
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
3
3
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
4
|
-
import {
|
|
4
|
+
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
5
|
+
import { pedersenHash } from '@aztec/foundation/crypto/pedersen';
|
|
5
6
|
/**
|
|
6
7
|
* Contains utilities to compute the "key" for private holdings in the public state.
|
|
7
8
|
*/ export class LendingAccount {
|
|
@@ -85,7 +86,8 @@ const computeMultiplier = (rate, dt)=>{
|
|
|
85
86
|
return;
|
|
86
87
|
}
|
|
87
88
|
const slot = await this.rollup.getSlotAt(BigInt(await this.cc.eth.timestamp()));
|
|
88
|
-
const
|
|
89
|
+
const targetSlot = SlotNumber(slot + diff);
|
|
90
|
+
const ts = Number(await this.rollup.getTimestampForSlot(targetSlot));
|
|
89
91
|
const timeDiff = ts - this.time;
|
|
90
92
|
this.time = ts;
|
|
91
93
|
// Mine ethereum blocks such that the next block will be in a new slot
|
|
@@ -93,7 +95,7 @@ const computeMultiplier = (rate, dt)=>{
|
|
|
93
95
|
if (dateProvider) {
|
|
94
96
|
dateProvider.setTime(this.time * 1000);
|
|
95
97
|
}
|
|
96
|
-
await this.cc.rollup.markAsProven(await this.rollup.
|
|
98
|
+
await this.cc.rollup.markAsProven(await this.rollup.getCheckpointNumber());
|
|
97
99
|
this.accumulator = muldivDown(this.accumulator, computeMultiplier(this.rate, BigInt(timeDiff)), BASE);
|
|
98
100
|
}
|
|
99
101
|
depositPrivate(from, onBehalfOf, amount) {
|
|
@@ -29,4 +29,4 @@ export declare class TokenSimulator {
|
|
|
29
29
|
checkPrivate(): Promise<void>;
|
|
30
30
|
check(): Promise<void>;
|
|
31
31
|
}
|
|
32
|
-
//# sourceMappingURL=
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fc2ltdWxhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2ltdWxhdG9ycy90b2tlbl9zaW11bGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFOUQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFJcEUscUJBQWEsY0FBYztJQVF2QixTQUFTLENBQUMsS0FBSyxFQUFFLGFBQWE7SUFDOUIsU0FBUyxDQUFDLGFBQWEsRUFBRSxNQUFNO0lBQy9CLFNBQVMsQ0FBQyxjQUFjLEVBQUUsWUFBWTtJQUN0QyxTQUFTLENBQUMsTUFBTSxFQUFFLE1BQU07SUFDeEIsU0FBUyxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUU7SUFYcEMsT0FBTyxDQUFDLGVBQWUsQ0FBa0M7SUFDekQsT0FBTyxDQUFDLGFBQWEsQ0FBa0M7SUFDaEQsV0FBVyxFQUFFLE1BQU0sQ0FBTTtJQUVoQyxPQUFPLENBQUMsY0FBYyxDQUFrQztJQUV4RCxZQUNZLEtBQUssRUFBRSxhQUFhLEVBQ3BCLGFBQWEsRUFBRSxNQUFNLEVBQ3JCLGNBQWMsRUFBRSxZQUFZLEVBQzVCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsUUFBUSxFQUFFLFlBQVksRUFBRSxFQUNoQztJQUVHLFVBQVUsQ0FBQyxPQUFPLEVBQUUsWUFBWSxRQUV0QztJQUVNLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFFN0Q7SUFFTSxXQUFXLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUdsRDtJQUVNLFVBQVUsQ0FBQyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBSWpEO0lBRU0sY0FBYyxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxRQU96RTtJQUVNLGVBQWUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFPMUU7SUFFTSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFNNUU7SUFFTSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFNM0U7SUFFTSxXQUFXLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxRQU1wRDtJQUVNLFVBQVUsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBTW5EO0lBRU0sZUFBZSxDQUFDLE9BQU8sRUFBRSxZQUFZLFVBRTNDO0lBRU0sZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFlBQVksVUFFNUM7SUFFSyxXQUFXLGtCQWtCaEI7SUFFSyxZQUFZLGtCQW9DakI7SUFFWSxLQUFLLGtCQUdqQjtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token_simulator.d.ts","sourceRoot":"","sources":["../../src/simulators/token_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAIpE,qBAAa,cAAc;IAQvB,SAAS,CAAC,KAAK,EAAE,aAAa;IAC9B,SAAS,CAAC,aAAa,EAAE,MAAM;IAC/B,SAAS,CAAC,cAAc,EAAE,YAAY;IACtC,SAAS,CAAC,MAAM,EAAE,MAAM;IACxB,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE;IAXpC,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,aAAa,CAAkC;IAChD,WAAW,EAAE,MAAM,CAAM;IAEhC,OAAO,CAAC,cAAc,CAAkC;
|
|
1
|
+
{"version":3,"file":"token_simulator.d.ts","sourceRoot":"","sources":["../../src/simulators/token_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAIpE,qBAAa,cAAc;IAQvB,SAAS,CAAC,KAAK,EAAE,aAAa;IAC9B,SAAS,CAAC,aAAa,EAAE,MAAM;IAC/B,SAAS,CAAC,cAAc,EAAE,YAAY;IACtC,SAAS,CAAC,MAAM,EAAE,MAAM;IACxB,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE;IAXpC,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,aAAa,CAAkC;IAChD,WAAW,EAAE,MAAM,CAAM;IAEhC,OAAO,CAAC,cAAc,CAAkC;IAExD,YACY,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,YAAY,EAC5B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,YAAY,EAAE,EAChC;IAEG,UAAU,CAAC,OAAO,EAAE,YAAY,QAEtC;IAEM,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,QAE7D;IAEM,WAAW,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,QAGlD;IAEM,UAAU,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,QAIjD;IAEM,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,QAOzE;IAEM,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,QAO1E;IAEM,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,QAM5E;IAEM,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,QAM3E;IAEM,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,QAMpD;IAEM,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,QAMnD;IAEM,eAAe,CAAC,OAAO,EAAE,YAAY,UAE3C;IAEM,gBAAgB,CAAC,OAAO,EAAE,YAAY,UAE5C;IAEK,WAAW,kBAkBhB;IAEK,YAAY,kBAoCjB;IAEY,KAAK,kBAGjB;CACF"}
|
|
@@ -14,10 +14,12 @@ export interface TestAccounts {
|
|
|
14
14
|
recipientAddress: AztecAddress;
|
|
15
15
|
tokenAddress: AztecAddress;
|
|
16
16
|
}
|
|
17
|
+
export type TestAccountsWithoutTokens = Omit<TestAccounts, 'tokenAddress' | 'tokenContract' | 'tokenName' | 'tokenAdminAddress'>;
|
|
17
18
|
export declare function setupTestAccountsWithTokens(nodeUrl: string, mintAmount: bigint, logger: Logger): Promise<TestAccounts>;
|
|
18
|
-
export declare function
|
|
19
|
+
export declare function deploySponsoredTestAccountsWithTokens(wallet: TestWallet, aztecNode: AztecNode, mintAmount: bigint, logger: Logger, numberOfFundedWallets?: number): Promise<TestAccounts>;
|
|
20
|
+
export declare function deploySponsoredTestAccounts(wallet: TestWallet, aztecNode: AztecNode, logger: Logger, numberOfFundedWallets?: number): Promise<TestAccountsWithoutTokens>;
|
|
19
21
|
export declare function deployTestAccountsWithTokens(nodeUrl: string, l1RpcUrls: string[], mnemonicOrPrivateKey: string, mintAmount: bigint, logger: Logger, numberOfFundedWallets?: number): Promise<TestAccounts>;
|
|
20
|
-
export declare function performTransfers({ wallet, testAccounts, rounds, transferAmount, logger, feePaymentMethod
|
|
22
|
+
export declare function performTransfers({ wallet, testAccounts, rounds, transferAmount, logger, feePaymentMethod }: {
|
|
21
23
|
wallet: TestWallet;
|
|
22
24
|
testAccounts: TestAccounts;
|
|
23
25
|
rounds: number;
|
|
@@ -30,4 +32,4 @@ export declare function createWalletAndAztecNodeClient(nodeUrl: string, proverEn
|
|
|
30
32
|
aztecNode: AztecNode;
|
|
31
33
|
cleanup: () => Promise<void>;
|
|
32
34
|
}>;
|
|
33
|
-
//# sourceMappingURL=
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBfdGVzdF93YWxsZXRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3BhcnRhbi9zZXR1cF90ZXN0X3dhbGxldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3pELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUE2QixNQUFNLHFCQUFxQixDQUFDO0FBRXZGLE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBeUIsTUFBTSxzQkFBc0IsQ0FBQztBQUk3RSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFL0QsT0FBTyxFQUFFLFVBQVUsRUFBaUUsTUFBTSwyQkFBMkIsQ0FBQztBQU10SCxNQUFNLFdBQVcsWUFBWTtJQUMzQixTQUFTLEVBQUUsU0FBUyxDQUFDO0lBQ3JCLE1BQU0sRUFBRSxVQUFVLENBQUM7SUFDbkIsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDO0lBQ3pCLGFBQWEsRUFBRSxhQUFhLENBQUM7SUFDN0IsaUJBQWlCLEVBQUUsWUFBWSxDQUFDO0lBQ2hDLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDO0lBQy9CLFlBQVksRUFBRSxZQUFZLENBQUM7Q0FDNUI7QUFFRCxNQUFNLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxDQUMxQyxZQUFZLEVBQ1osY0FBYyxHQUFHLGVBQWUsR0FBRyxXQUFXLEdBQUcsbUJBQW1CLENBQ3JFLENBQUM7QUFNRix3QkFBc0IsMkJBQTJCLENBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQ2YsVUFBVSxFQUFFLE1BQU0sRUFDbEIsTUFBTSxFQUFFLE1BQU0sR0FDYixPQUFPLENBQUMsWUFBWSxDQUFDLENBeUJ2QjtBQUVELHdCQUFzQixxQ0FBcUMsQ0FDekQsTUFBTSxFQUFFLFVBQVUsRUFDbEIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsVUFBVSxFQUFFLE1BQU0sRUFDbEIsTUFBTSxFQUFFLE1BQU0sRUFDZCxxQkFBcUIsU0FBSSxHQUN4QixPQUFPLENBQUMsWUFBWSxDQUFDLENBdUN2QjtBQUVELHdCQUFzQiwyQkFBMkIsQ0FDL0MsTUFBTSxFQUFFLFVBQVUsRUFDbEIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsTUFBTSxFQUFFLE1BQU0sRUFDZCxxQkFBcUIsU0FBSSxHQUN4QixPQUFPLENBQUMseUJBQXlCLENBQUMsQ0F3QnBDO0FBRUQsd0JBQXNCLDRCQUE0QixDQUNoRCxPQUFPLEVBQUUsTUFBTSxFQUNmLFNBQVMsRUFBRSxNQUFNLEVBQUUsRUFDbkIsb0JBQW9CLEVBQUUsTUFBTSxFQUM1QixVQUFVLEVBQUUsTUFBTSxFQUNsQixNQUFNLEVBQUUsTUFBTSxFQUNkLHFCQUFxQixTQUFJLEdBQ3hCLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0ErQ3ZCO0FBNkVELHdCQUFzQixnQkFBZ0IsQ0FBQyxFQUNyQyxNQUFNLEVBQ04sWUFBWSxFQUNaLE1BQU0sRUFDTixjQUFjLEVBQ2QsTUFBTSxFQUNOLGdCQUFnQixFQUNqQixFQUFFO0lBQ0QsTUFBTSxFQUFFLFVBQVUsQ0FBQztJQUNuQixZQUFZLEVBQUUsWUFBWSxDQUFDO0lBQzNCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixjQUFjLEVBQUUsTUFBTSxDQUFDO0lBQ3ZCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixnQkFBZ0IsQ0FBQyxFQUFFLGdCQUFnQixDQUFDO0NBQ3JDLGlCQXFCQTtBQUVELHdCQUFzQiw4QkFBOEIsQ0FDbEQsT0FBTyxFQUFFLE1BQU0sRUFDZixhQUFhLEVBQUUsT0FBTyxFQUN0QixNQUFNLEVBQUUsTUFBTSxHQUNiLE9BQU8sQ0FBQztJQUFFLE1BQU0sRUFBRSxVQUFVLENBQUM7SUFBQyxTQUFTLEVBQUUsU0FBUyxDQUFDO0lBQUMsT0FBTyxFQUFFLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0NBQUUsQ0FBQyxDQXFCckYifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup_test_wallets.d.ts","sourceRoot":"","sources":["../../src/spartan/setup_test_wallets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,KAAK,gBAAgB,EAA6B,MAAM,qBAAqB,CAAC;AAEvF,OAAO,EAAE,KAAK,SAAS,EAAyB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"setup_test_wallets.d.ts","sourceRoot":"","sources":["../../src/spartan/setup_test_wallets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,KAAK,gBAAgB,EAA6B,MAAM,qBAAqB,CAAC;AAEvF,OAAO,EAAE,KAAK,SAAS,EAAyB,MAAM,sBAAsB,CAAC;AAI7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAiE,MAAM,2BAA2B,CAAC;AAMtH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,EAAE,YAAY,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,YAAY,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,YAAY,EACZ,cAAc,GAAG,eAAe,GAAG,WAAW,GAAG,mBAAmB,CACrE,CAAC;AAMF,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,CAyBvB;AAED,wBAAsB,qCAAqC,CACzD,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,qBAAqB,SAAI,GACxB,OAAO,CAAC,YAAY,CAAC,CAuCvB;AAED,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,qBAAqB,SAAI,GACxB,OAAO,CAAC,yBAAyB,CAAC,CAwBpC;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EAAE,EACnB,oBAAoB,EAAE,MAAM,EAC5B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,qBAAqB,SAAI,GACxB,OAAO,CAAC,YAAY,CAAC,CA+CvB;AA6ED,wBAAsB,gBAAgB,CAAC,EACrC,MAAM,EACN,YAAY,EACZ,MAAM,EACN,cAAc,EACd,MAAM,EACN,gBAAgB,EACjB,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,iBAqBA;AAED,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAqBrF"}
|
|
@@ -5,10 +5,11 @@ import { FeeJuicePaymentMethodWithClaim } from '@aztec/aztec.js/fee';
|
|
|
5
5
|
import { SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee';
|
|
6
6
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
7
7
|
import { createAztecNodeClient } from '@aztec/aztec.js/node';
|
|
8
|
-
import { createEthereumChain
|
|
8
|
+
import { createEthereumChain } from '@aztec/ethereum/chain';
|
|
9
|
+
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
9
10
|
import { retryUntil } from '@aztec/foundation/retry';
|
|
10
11
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
11
|
-
import { TestWallet, proveInteraction,
|
|
12
|
+
import { TestWallet, proveInteraction, registerInitialLocalNetworkAccountsInWallet } from '@aztec/test-wallet/server';
|
|
12
13
|
import { getACVMConfig } from '../fixtures/get_acvm_config.js';
|
|
13
14
|
import { getBBConfig } from '../fixtures/get_bb_config.js';
|
|
14
15
|
import { getSponsoredFPCAddress, registerSponsoredFPC } from '../fixtures/utils.js';
|
|
@@ -19,10 +20,10 @@ export async function setupTestAccountsWithTokens(nodeUrl, mintAmount, logger) {
|
|
|
19
20
|
const ACCOUNT_COUNT = 1; // TODO fix this to allow for 16 wallets again
|
|
20
21
|
const aztecNode = createAztecNodeClient(nodeUrl);
|
|
21
22
|
const wallet = await TestWallet.create(aztecNode);
|
|
22
|
-
const [recipientAccount, ...accounts] = (await
|
|
23
|
+
const [recipientAccount, ...accounts] = (await registerInitialLocalNetworkAccountsInWallet(wallet)).slice(0, ACCOUNT_COUNT + 1);
|
|
23
24
|
const tokenAdmin = accounts[0];
|
|
24
25
|
const tokenAddress = await deployTokenAndMint(wallet, accounts, tokenAdmin, mintAmount, undefined, logger);
|
|
25
|
-
const tokenContract =
|
|
26
|
+
const tokenContract = TokenContract.at(tokenAddress, wallet);
|
|
26
27
|
return {
|
|
27
28
|
aztecNode,
|
|
28
29
|
accounts,
|
|
@@ -34,7 +35,7 @@ export async function setupTestAccountsWithTokens(nodeUrl, mintAmount, logger) {
|
|
|
34
35
|
recipientAddress: recipientAccount
|
|
35
36
|
};
|
|
36
37
|
}
|
|
37
|
-
export async function
|
|
38
|
+
export async function deploySponsoredTestAccountsWithTokens(wallet, aztecNode, mintAmount, logger, numberOfFundedWallets = 1) {
|
|
38
39
|
const [recipient, ...funded] = await generateSchnorrAccounts(numberOfFundedWallets + 1);
|
|
39
40
|
const recipientAccount = await wallet.createSchnorrAccount(recipient.secret, recipient.salt);
|
|
40
41
|
const fundedAccounts = await Promise.all(funded.map((a)=>wallet.createSchnorrAccount(a.secret, a.salt)));
|
|
@@ -63,7 +64,7 @@ export async function deploySponsoredTestAccounts(wallet, aztecNode, mintAmount,
|
|
|
63
64
|
}));
|
|
64
65
|
const tokenAdmin = fundedAccounts[0];
|
|
65
66
|
const tokenAddress = await deployTokenAndMint(wallet, fundedAccounts.map((acc)=>acc.address), tokenAdmin.address, mintAmount, new SponsoredFeePaymentMethod(await getSponsoredFPCAddress()), logger);
|
|
66
|
-
const tokenContract =
|
|
67
|
+
const tokenContract = TokenContract.at(tokenAddress, wallet);
|
|
67
68
|
return {
|
|
68
69
|
aztecNode,
|
|
69
70
|
wallet,
|
|
@@ -75,6 +76,40 @@ export async function deploySponsoredTestAccounts(wallet, aztecNode, mintAmount,
|
|
|
75
76
|
recipientAddress: recipientAccount.address
|
|
76
77
|
};
|
|
77
78
|
}
|
|
79
|
+
export async function deploySponsoredTestAccounts(wallet, aztecNode, logger, numberOfFundedWallets = 1) {
|
|
80
|
+
const [recipient, ...funded] = await generateSchnorrAccounts(numberOfFundedWallets + 1);
|
|
81
|
+
const recipientAccount = await wallet.createSchnorrAccount(recipient.secret, recipient.salt);
|
|
82
|
+
const fundedAccounts = await Promise.all(funded.map((a)=>wallet.createSchnorrAccount(a.secret, a.salt)));
|
|
83
|
+
await registerSponsoredFPC(wallet);
|
|
84
|
+
const paymentMethod = new SponsoredFeePaymentMethod(await getSponsoredFPCAddress());
|
|
85
|
+
const recipientDeployMethod = await recipientAccount.getDeployMethod();
|
|
86
|
+
await recipientDeployMethod.send({
|
|
87
|
+
from: AztecAddress.ZERO,
|
|
88
|
+
fee: {
|
|
89
|
+
paymentMethod
|
|
90
|
+
}
|
|
91
|
+
}).wait({
|
|
92
|
+
timeout: 2400
|
|
93
|
+
});
|
|
94
|
+
await Promise.all(fundedAccounts.map(async (a)=>{
|
|
95
|
+
const deployMethod = await a.getDeployMethod();
|
|
96
|
+
await deployMethod.send({
|
|
97
|
+
from: AztecAddress.ZERO,
|
|
98
|
+
fee: {
|
|
99
|
+
paymentMethod
|
|
100
|
+
}
|
|
101
|
+
}).wait({
|
|
102
|
+
timeout: 2400
|
|
103
|
+
}); // increase timeout on purpose in order to account for two empty epochs
|
|
104
|
+
logger.info(`Account deployed at ${a.address}`);
|
|
105
|
+
}));
|
|
106
|
+
return {
|
|
107
|
+
aztecNode,
|
|
108
|
+
wallet,
|
|
109
|
+
accounts: fundedAccounts.map((acc)=>acc.address),
|
|
110
|
+
recipientAddress: recipientAccount.address
|
|
111
|
+
};
|
|
112
|
+
}
|
|
78
113
|
export async function deployTestAccountsWithTokens(nodeUrl, l1RpcUrls, mnemonicOrPrivateKey, mintAmount, logger, numberOfFundedWallets = 1) {
|
|
79
114
|
const aztecNode = createAztecNodeClient(nodeUrl);
|
|
80
115
|
const wallet = await TestWallet.create(aztecNode);
|
|
@@ -99,7 +134,7 @@ export async function deployTestAccountsWithTokens(nodeUrl, l1RpcUrls, mnemonicO
|
|
|
99
134
|
}));
|
|
100
135
|
const tokenAdmin = fundedAccounts[0];
|
|
101
136
|
const tokenAddress = await deployTokenAndMint(wallet, fundedAccounts.map((acc)=>acc.address), tokenAdmin.address, mintAmount, undefined, logger);
|
|
102
|
-
const tokenContract =
|
|
137
|
+
const tokenContract = TokenContract.at(tokenAddress, wallet);
|
|
103
138
|
return {
|
|
104
139
|
aztecNode,
|
|
105
140
|
wallet,
|
|
@@ -150,7 +185,7 @@ async function deployTokenAndMint(wallet, accounts, admin, mintAmount, paymentMe
|
|
|
150
185
|
});
|
|
151
186
|
const tokenAddress = tokenContract.address;
|
|
152
187
|
logger.verbose(`Minting ${mintAmount} public assets to the ${accounts.length} accounts...`);
|
|
153
|
-
await Promise.all(accounts.map(
|
|
188
|
+
await Promise.all(accounts.map((acc)=>TokenContract.at(tokenAddress, wallet).methods.mint_to_public(acc, mintAmount).send({
|
|
154
189
|
from: admin,
|
|
155
190
|
fee: {
|
|
156
191
|
paymentMethod
|
|
@@ -166,8 +201,8 @@ export async function performTransfers({ wallet, testAccounts, rounds, transferA
|
|
|
166
201
|
// Default to sponsored fee payment if no fee method is provided
|
|
167
202
|
const defaultFeePaymentMethod = feePaymentMethod || new SponsoredFeePaymentMethod(await getSponsoredFPCAddress());
|
|
168
203
|
for(let i = 0; i < rounds; i++){
|
|
169
|
-
const txs = testAccounts.accounts.map(
|
|
170
|
-
const token =
|
|
204
|
+
const txs = testAccounts.accounts.map((acc)=>{
|
|
205
|
+
const token = TokenContract.at(testAccounts.tokenAddress, testAccounts.wallet);
|
|
171
206
|
return proveInteraction(wallet, token.methods.transfer_in_public(acc, recipient, transferAmount, 0), {
|
|
172
207
|
from: acc,
|
|
173
208
|
fee: {
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
2
|
+
import { Tx, type TxReceipt } from '@aztec/stdlib/tx';
|
|
3
|
+
export type TxInclusionData = {
|
|
4
|
+
txHash: string;
|
|
5
|
+
sentAt: number;
|
|
6
|
+
minedAt: number;
|
|
7
|
+
attestedAt: number;
|
|
8
|
+
blocknumber: number;
|
|
9
|
+
priorityFee: number;
|
|
10
|
+
totalFee: number;
|
|
11
|
+
positionInBlock: number;
|
|
12
|
+
group: string;
|
|
13
|
+
};
|
|
14
|
+
export declare class TxInclusionMetrics {
|
|
15
|
+
private aztecNode;
|
|
16
|
+
private data;
|
|
17
|
+
private groups;
|
|
18
|
+
private blocks;
|
|
19
|
+
constructor(aztecNode: AztecNode);
|
|
20
|
+
recordSentTx(tx: Tx, group: string): void;
|
|
21
|
+
recordMinedTx(txReceipt: TxReceipt): Promise<void>;
|
|
22
|
+
inclusionTimeInSeconds(group: string): {
|
|
23
|
+
count: number;
|
|
24
|
+
group: string;
|
|
25
|
+
min: number;
|
|
26
|
+
mean: number;
|
|
27
|
+
max: number;
|
|
28
|
+
median: number;
|
|
29
|
+
p99: number;
|
|
30
|
+
};
|
|
31
|
+
toGithubActionBenchmarkJSON(): Array<{
|
|
32
|
+
name: string;
|
|
33
|
+
unit: string;
|
|
34
|
+
value: number;
|
|
35
|
+
range?: number;
|
|
36
|
+
extra?: string;
|
|
37
|
+
}>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfbWV0cmljcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NwYXJ0YW4vdHhfbWV0cmljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssU0FBUyxFQUFZLE1BQU0sa0JBQWtCLENBQUM7QUFJaEUsTUFBTSxNQUFNLGVBQWUsR0FBRztJQUM1QixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDaEIsVUFBVSxFQUFFLE1BQU0sQ0FBQztJQUNuQixXQUFXLEVBQUUsTUFBTSxDQUFDO0lBQ3BCLFdBQVcsRUFBRSxNQUFNLENBQUM7SUFDcEIsUUFBUSxFQUFFLE1BQU0sQ0FBQztJQUNqQixlQUFlLEVBQUUsTUFBTSxDQUFDO0lBQ3hCLEtBQUssRUFBRSxNQUFNLENBQUM7Q0FDZixDQUFDO0FBRUYscUJBQWEsa0JBQWtCO0lBS2pCLE9BQU8sQ0FBQyxTQUFTO0lBSjdCLE9BQU8sQ0FBQyxJQUFJLENBQXNDO0lBQ2xELE9BQU8sQ0FBQyxNQUFNLENBQXFCO0lBQ25DLE9BQU8sQ0FBQyxNQUFNLENBQXVDO0lBRXJELFlBQW9CLFNBQVMsRUFBRSxTQUFTLEVBQUk7SUFFNUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBZ0J4QztJQUVLLGFBQWEsQ0FBQyxTQUFTLEVBQUUsU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FpQnZEO0lBRU0sc0JBQXNCLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRztRQUM1QyxLQUFLLEVBQUUsTUFBTSxDQUFDO1FBQ2QsS0FBSyxFQUFFLE1BQU0sQ0FBQztRQUNkLEdBQUcsRUFBRSxNQUFNLENBQUM7UUFDWixJQUFJLEVBQUUsTUFBTSxDQUFDO1FBQ2IsR0FBRyxFQUFFLE1BQU0sQ0FBQztRQUNaLE1BQU0sRUFBRSxNQUFNLENBQUM7UUFDZixHQUFHLEVBQUUsTUFBTSxDQUFDO0tBQ2IsQ0ErQkE7SUFFRCwyQkFBMkIsSUFBSSxLQUFLLENBQUM7UUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDO1FBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztRQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7UUFBQyxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUM7UUFBQyxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUE7S0FBRSxDQUFDLENBeUJsSDtDQUNGIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tx_metrics.d.ts","sourceRoot":"","sources":["../../src/spartan/tx_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,EAAE,EAAE,KAAK,SAAS,EAAY,MAAM,kBAAkB,CAAC;AAIhE,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,qBAAa,kBAAkB;IAKjB,OAAO,CAAC,SAAS;IAJ7B,OAAO,CAAC,IAAI,CAAsC;IAClD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,MAAM,CAAuC;IAErD,YAAoB,SAAS,EAAE,SAAS,EAAI;IAE5C,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAgBxC;IAEK,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBvD;IAEM,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG;QAC5C,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;KACb,CA+BA;IAED,2BAA2B,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAyBlH;CACF"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { TxStatus } from '@aztec/stdlib/tx';
|
|
2
|
+
import { createHistogram } from 'perf_hooks';
|
|
3
|
+
export class TxInclusionMetrics {
|
|
4
|
+
aztecNode;
|
|
5
|
+
data;
|
|
6
|
+
groups;
|
|
7
|
+
blocks;
|
|
8
|
+
constructor(aztecNode){
|
|
9
|
+
this.aztecNode = aztecNode;
|
|
10
|
+
this.data = new Map();
|
|
11
|
+
this.groups = new Set();
|
|
12
|
+
this.blocks = new Map();
|
|
13
|
+
}
|
|
14
|
+
recordSentTx(tx, group) {
|
|
15
|
+
const txHash = tx.getTxHash().toString();
|
|
16
|
+
const priorityFees = tx.getGasSettings().maxPriorityFeesPerGas;
|
|
17
|
+
this.data.set(txHash, {
|
|
18
|
+
txHash,
|
|
19
|
+
sentAt: Math.trunc(Date.now() / 1000),
|
|
20
|
+
minedAt: -1,
|
|
21
|
+
attestedAt: -1,
|
|
22
|
+
blocknumber: -1,
|
|
23
|
+
priorityFee: Number(priorityFees.feePerDaGas + priorityFees.feePerL2Gas),
|
|
24
|
+
totalFee: -1,
|
|
25
|
+
positionInBlock: -1,
|
|
26
|
+
group
|
|
27
|
+
});
|
|
28
|
+
this.groups.add(group);
|
|
29
|
+
}
|
|
30
|
+
async recordMinedTx(txReceipt) {
|
|
31
|
+
const { status, txHash, blockNumber } = txReceipt;
|
|
32
|
+
if (status !== TxStatus.SUCCESS || !blockNumber) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (!this.blocks.has(blockNumber)) {
|
|
36
|
+
this.blocks.set(blockNumber, this.aztecNode.getBlock(blockNumber));
|
|
37
|
+
}
|
|
38
|
+
const block = await this.blocks.get(blockNumber);
|
|
39
|
+
const data = this.data.get(txHash.toString());
|
|
40
|
+
data.blocknumber = blockNumber;
|
|
41
|
+
data.minedAt = Number(block.header.globalVariables.timestamp);
|
|
42
|
+
data.attestedAt = -1;
|
|
43
|
+
data.totalFee = Number(txReceipt.transactionFee ?? 0n);
|
|
44
|
+
data.positionInBlock = block.body.txEffects.findIndex((txEffect)=>txEffect.txHash.equals(txHash));
|
|
45
|
+
}
|
|
46
|
+
inclusionTimeInSeconds(group) {
|
|
47
|
+
const histogram = createHistogram({});
|
|
48
|
+
for (const tx of this.data.values()){
|
|
49
|
+
if (!tx.blocknumber || tx.group !== group) {
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
histogram.record(tx.minedAt - tx.sentAt);
|
|
53
|
+
}
|
|
54
|
+
if (histogram.count === 0) {
|
|
55
|
+
return {
|
|
56
|
+
group,
|
|
57
|
+
count: 0,
|
|
58
|
+
mean: 0,
|
|
59
|
+
max: 0,
|
|
60
|
+
median: 0,
|
|
61
|
+
min: 0,
|
|
62
|
+
p99: 0
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
group,
|
|
67
|
+
count: histogram.count,
|
|
68
|
+
mean: histogram.mean,
|
|
69
|
+
max: histogram.max,
|
|
70
|
+
median: histogram.percentile(50),
|
|
71
|
+
min: histogram.min,
|
|
72
|
+
p99: histogram.percentile(99)
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
toGithubActionBenchmarkJSON() {
|
|
76
|
+
const data = [];
|
|
77
|
+
for (const group of this.groups){
|
|
78
|
+
const stats = this.inclusionTimeInSeconds(group);
|
|
79
|
+
data.push({
|
|
80
|
+
name: `${group}/avg_inclusion`,
|
|
81
|
+
unit: 's',
|
|
82
|
+
value: stats.mean
|
|
83
|
+
}, {
|
|
84
|
+
name: `${group}/median_inclusion`,
|
|
85
|
+
unit: 's',
|
|
86
|
+
value: stats.median
|
|
87
|
+
}, {
|
|
88
|
+
name: `${group}/p99_inclusion`,
|
|
89
|
+
unit: 's',
|
|
90
|
+
value: stats.p99
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
return data;
|
|
94
|
+
}
|
|
95
|
+
}
|