@aztec/end-to-end 0.0.1-commit.24de95ac → 0.0.1-commit.3469e52
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 +21 -15
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +116 -121
- 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 +7 -27
- package/dest/bench/utils.d.ts +5 -5
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +18 -11
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +6 -7
- 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 +98 -113
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +19 -13
- 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 +91 -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 +11 -9
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +19 -16
- package/dest/e2e_fees/bridging_race.notest.d.ts +1 -1
- package/dest/e2e_fees/bridging_race.notest.js +4 -6
- package/dest/e2e_fees/fees_test.d.ts +20 -16
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +127 -139
- package/dest/e2e_l1_publisher/write_json.d.ts +3 -3
- package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
- package/dest/e2e_l1_publisher/write_json.js +23 -18
- 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 +32 -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 +225 -18
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +117 -110
- 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 +16 -9
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +90 -92
- package/dest/fixtures/e2e_prover_test.d.ts +12 -18
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +98 -109
- 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.d.ts +216 -0
- package/dest/fixtures/setup.d.ts.map +1 -0
- package/dest/fixtures/setup.js +684 -0
- 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/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 +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 +5 -3
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +3 -3
- 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 +1 -1
- package/dest/shared/index.d.ts +2 -2
- package/dest/shared/index.d.ts.map +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 +3 -27
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +43 -23
- 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 +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 +8 -5
- 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 +52 -0
- package/dest/spartan/tx_metrics.d.ts.map +1 -0
- package/dest/spartan/tx_metrics.js +248 -0
- package/dest/spartan/utils.d.ts +66 -24
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +326 -133
- package/package.json +43 -40
- package/src/bench/client_flows/benchmark.ts +24 -2
- package/src/bench/client_flows/client_flows_benchmark.ts +157 -162
- package/src/bench/client_flows/data_extractor.ts +6 -28
- package/src/bench/utils.ts +22 -14
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +107 -142
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +140 -124
- package/src/e2e_deploy_contract/deploy_test.ts +22 -15
- package/src/e2e_epochs/epochs_test.ts +39 -25
- package/src/e2e_fees/bridging_race.notest.ts +4 -7
- package/src/e2e_fees/fees_test.ts +180 -215
- package/src/e2e_l1_publisher/write_json.ts +26 -20
- 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 +10 -9
- package/src/e2e_p2p/p2p_network.ts +175 -180
- package/src/e2e_p2p/shared.ts +15 -7
- package/src/e2e_token_contract/token_contract_test.ts +105 -118
- package/src/fixtures/e2e_prover_test.ts +120 -153
- 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.ts +1010 -0
- package/src/fixtures/setup_p2p_test.ts +23 -9
- package/src/fixtures/token_utils.ts +4 -4
- 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 +1 -1
- 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 +6 -9
- package/src/shared/gas_portal_test_harness.ts +2 -2
- package/src/shared/index.ts +1 -1
- package/src/shared/uniswap_l1_l2.ts +53 -67
- package/src/simulators/lending_simulator.ts +6 -4
- package/src/spartan/DEVELOP.md +7 -0
- package/src/spartan/setup_test_wallets.ts +56 -13
- package/src/spartan/tx_metrics.ts +231 -0
- package/src/spartan/utils.ts +379 -75
- 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,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;
|
|
@@ -25,9 +27,10 @@ export declare function performTransfers({ wallet, testAccounts, rounds, transfe
|
|
|
25
27
|
logger: Logger;
|
|
26
28
|
feePaymentMethod?: FeePaymentMethod;
|
|
27
29
|
}): Promise<void>;
|
|
28
|
-
export
|
|
30
|
+
export type WalletWrapper = {
|
|
29
31
|
wallet: TestWallet;
|
|
30
32
|
aztecNode: AztecNode;
|
|
31
33
|
cleanup: () => Promise<void>;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
+
};
|
|
35
|
+
export declare function createWalletAndAztecNodeClient(nodeUrl: string, proverEnabled: boolean, logger: Logger): Promise<WalletWrapper>;
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBfdGVzdF93YWxsZXRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3BhcnRhbi9zZXR1cF90ZXN0X3dhbGxldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3pELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUE2QixNQUFNLHFCQUFxQixDQUFDO0FBRXZGLE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBeUIsTUFBTSxzQkFBc0IsQ0FBQztBQUk3RSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFL0QsT0FBTyxFQUFFLFVBQVUsRUFBaUUsTUFBTSwyQkFBMkIsQ0FBQztBQU10SCxNQUFNLFdBQVcsWUFBWTtJQUMzQixTQUFTLEVBQUUsU0FBUyxDQUFDO0lBQ3JCLE1BQU0sRUFBRSxVQUFVLENBQUM7SUFDbkIsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDO0lBQ3pCLGFBQWEsRUFBRSxhQUFhLENBQUM7SUFDN0IsaUJBQWlCLEVBQUUsWUFBWSxDQUFDO0lBQ2hDLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDO0lBQy9CLFlBQVksRUFBRSxZQUFZLENBQUM7Q0FDNUI7QUFFRCxNQUFNLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxDQUMxQyxZQUFZLEVBQ1osY0FBYyxHQUFHLGVBQWUsR0FBRyxXQUFXLEdBQUcsbUJBQW1CLENBQ3JFLENBQUM7QUFNRix3QkFBc0IsMkJBQTJCLENBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQ2YsVUFBVSxFQUFFLE1BQU0sRUFDbEIsTUFBTSxFQUFFLE1BQU0sR0FDYixPQUFPLENBQUMsWUFBWSxDQUFDLENBeUJ2QjtBQUVELHdCQUFzQixxQ0FBcUMsQ0FDekQsTUFBTSxFQUFFLFVBQVUsRUFDbEIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsVUFBVSxFQUFFLE1BQU0sRUFDbEIsTUFBTSxFQUFFLE1BQU0sRUFDZCxxQkFBcUIsU0FBSSxHQUN4QixPQUFPLENBQUMsWUFBWSxDQUFDLENBdUN2QjtBQUVELHdCQUFzQiwyQkFBMkIsQ0FDL0MsTUFBTSxFQUFFLFVBQVUsRUFDbEIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsTUFBTSxFQUFFLE1BQU0sRUFDZCxxQkFBcUIsU0FBSSxHQUN4QixPQUFPLENBQUMseUJBQXlCLENBQUMsQ0F3QnBDO0FBRUQsd0JBQXNCLDRCQUE0QixDQUNoRCxPQUFPLEVBQUUsTUFBTSxFQUNmLFNBQVMsRUFBRSxNQUFNLEVBQUUsRUFDbkIsb0JBQW9CLEVBQUUsTUFBTSxFQUM1QixVQUFVLEVBQUUsTUFBTSxFQUNsQixNQUFNLEVBQUUsTUFBTSxFQUNkLHFCQUFxQixTQUFJLEdBQ3hCLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0ErQ3ZCO0FBNkVELHdCQUFzQixnQkFBZ0IsQ0FBQyxFQUNyQyxNQUFNLEVBQ04sWUFBWSxFQUNaLE1BQU0sRUFDTixjQUFjLEVBQ2QsTUFBTSxFQUNOLGdCQUFnQixFQUNqQixFQUFFO0lBQ0QsTUFBTSxFQUFFLFVBQVUsQ0FBQztJQUNuQixZQUFZLEVBQUUsWUFBWSxDQUFDO0lBQzNCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixjQUFjLEVBQUUsTUFBTSxDQUFDO0lBQ3ZCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixnQkFBZ0IsQ0FBQyxFQUFFLGdCQUFnQixDQUFDO0NBQ3JDLGlCQXFCQTtBQUVELE1BQU0sTUFBTSxhQUFhLEdBQUc7SUFDMUIsTUFBTSxFQUFFLFVBQVUsQ0FBQztJQUNuQixTQUFTLEVBQUUsU0FBUyxDQUFDO0lBQ3JCLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztDQUM5QixDQUFDO0FBRUYsd0JBQXNCLDhCQUE4QixDQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUNmLGFBQWEsRUFBRSxPQUFPLEVBQ3RCLE1BQU0sRUFBRSxNQUFNLEdBQ2IsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQXFCeEIifQ==
|
|
@@ -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,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC;AAEF,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,CAAC,CAqBxB"}
|
|
@@ -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,52 @@
|
|
|
1
|
+
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
2
|
+
import type { TopicType } from '@aztec/stdlib/p2p';
|
|
3
|
+
import { Tx, type TxReceipt } from '@aztec/stdlib/tx';
|
|
4
|
+
export type TxInclusionData = {
|
|
5
|
+
txHash: string;
|
|
6
|
+
sentAt: number;
|
|
7
|
+
minedAt: number;
|
|
8
|
+
attestedAt: number;
|
|
9
|
+
blocknumber: number;
|
|
10
|
+
priorityFee: number;
|
|
11
|
+
totalFee: number;
|
|
12
|
+
positionInBlock: number;
|
|
13
|
+
group: string;
|
|
14
|
+
};
|
|
15
|
+
export declare class TxInclusionMetrics {
|
|
16
|
+
private aztecNode;
|
|
17
|
+
private data;
|
|
18
|
+
private groups;
|
|
19
|
+
private blocks;
|
|
20
|
+
private p2pGossipLatencyByTopic;
|
|
21
|
+
private attestationLatency;
|
|
22
|
+
private attestationCounts;
|
|
23
|
+
private reqRespStats;
|
|
24
|
+
private peerStats;
|
|
25
|
+
private mempoolMinedDelay;
|
|
26
|
+
constructor(aztecNode: AztecNode);
|
|
27
|
+
recordSentTx(tx: Tx, group: string): void;
|
|
28
|
+
recordMinedTx(txReceipt: TxReceipt): Promise<void>;
|
|
29
|
+
inclusionTimeInSeconds(group: string): {
|
|
30
|
+
count: number;
|
|
31
|
+
group: string;
|
|
32
|
+
min: number;
|
|
33
|
+
mean: number;
|
|
34
|
+
max: number;
|
|
35
|
+
median: number;
|
|
36
|
+
p99: number;
|
|
37
|
+
};
|
|
38
|
+
recordP2PGossipLatency(topicName: TopicType, p50: number, p95: number): void;
|
|
39
|
+
recordAttestationLatency(p50: number, p95: number): void;
|
|
40
|
+
recordAttestationCounts(success: number, failedBad: number, failedNode: number): void;
|
|
41
|
+
recordReqRespStats(fraction: number, delayP50: number, delayP95: number): void;
|
|
42
|
+
recordPeerStats(avgCount: number, connectionDurationP50: number, connectionDurationP95: number): void;
|
|
43
|
+
recordMempoolMinedDelay(txP50: number, txP95: number, attestationP50: number, attestationP95: number): void;
|
|
44
|
+
toGithubActionBenchmarkJSON(): Array<{
|
|
45
|
+
name: string;
|
|
46
|
+
unit: string;
|
|
47
|
+
value: number;
|
|
48
|
+
range?: number;
|
|
49
|
+
extra?: string;
|
|
50
|
+
}>;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfbWV0cmljcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NwYXJ0YW4vdHhfbWV0cmljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV0RCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssU0FBUyxFQUFZLE1BQU0sa0JBQWtCLENBQUM7QUFJaEUsTUFBTSxNQUFNLGVBQWUsR0FBRztJQUM1QixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDaEIsVUFBVSxFQUFFLE1BQU0sQ0FBQztJQUNuQixXQUFXLEVBQUUsTUFBTSxDQUFDO0lBQ3BCLFdBQVcsRUFBRSxNQUFNLENBQUM7SUFDcEIsUUFBUSxFQUFFLE1BQU0sQ0FBQztJQUNqQixlQUFlLEVBQUUsTUFBTSxDQUFDO0lBQ3hCLEtBQUssRUFBRSxNQUFNLENBQUM7Q0FDZixDQUFDO0FBRUYscUJBQWEsa0JBQWtCO0lBZWpCLE9BQU8sQ0FBQyxTQUFTO0lBZDdCLE9BQU8sQ0FBQyxJQUFJLENBQXNDO0lBQ2xELE9BQU8sQ0FBQyxNQUFNLENBQXFCO0lBQ25DLE9BQU8sQ0FBQyxNQUFNLENBQXNEO0lBRXBFLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBZ0U7SUFFL0YsT0FBTyxDQUFDLGtCQUFrQixDQUEyQztJQUNyRSxPQUFPLENBQUMsaUJBQWlCLENBQXlFO0lBQ2xHLE9BQU8sQ0FBQyxZQUFZLENBQXVFO0lBQzNGLE9BQU8sQ0FBQyxTQUFTLENBQWlHO0lBQ2xILE9BQU8sQ0FBQyxpQkFBaUIsQ0FFWDtJQUVkLFlBQW9CLFNBQVMsRUFBRSxTQUFTLEVBQUk7SUFFNUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBZ0J4QztJQUVLLGFBQWEsQ0FBQyxTQUFTLEVBQUUsU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FvQnZEO0lBRU0sc0JBQXNCLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRztRQUM1QyxLQUFLLEVBQUUsTUFBTSxDQUFDO1FBQ2QsS0FBSyxFQUFFLE1BQU0sQ0FBQztRQUNkLEdBQUcsRUFBRSxNQUFNLENBQUM7UUFDWixJQUFJLEVBQUUsTUFBTSxDQUFDO1FBQ2IsR0FBRyxFQUFFLE1BQU0sQ0FBQztRQUNaLE1BQU0sRUFBRSxNQUFNLENBQUM7UUFDZixHQUFHLEVBQUUsTUFBTSxDQUFDO0tBQ2IsQ0ErQkE7SUFFTSxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBRWxGO0lBRU0sd0JBQXdCLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FFOUQ7SUFFTSx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sR0FBRyxJQUFJLENBRTNGO0lBRU0sa0JBQWtCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUVwRjtJQUVNLGVBQWUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUUzRztJQUVNLHVCQUF1QixDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUVqSDtJQUVELDJCQUEyQixJQUFJLEtBQUssQ0FBQztRQUFFLElBQUksRUFBRSxNQUFNLENBQUM7UUFBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1FBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztRQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQTtLQUFFLENBQUMsQ0F3RmxIO0NBQ0YifQ==
|
|
@@ -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,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,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;IAejB,OAAO,CAAC,SAAS;IAd7B,OAAO,CAAC,IAAI,CAAsC;IAClD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,MAAM,CAAsD;IAEpE,OAAO,CAAC,uBAAuB,CAAgE;IAE/F,OAAO,CAAC,kBAAkB,CAA2C;IACrE,OAAO,CAAC,iBAAiB,CAAyE;IAClG,OAAO,CAAC,YAAY,CAAuE;IAC3F,OAAO,CAAC,SAAS,CAAiG;IAClH,OAAO,CAAC,iBAAiB,CAEX;IAEd,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,CAoBvD;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;IAEM,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAElF;IAEM,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAE9D;IAEM,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAE3F;IAEM,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEpF;IAEM,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAE3G;IAEM,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAEjH;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,CAwFlH;CACF"}
|
|
@@ -0,0 +1,248 @@
|
|
|
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
|
+
p2pGossipLatencyByTopic;
|
|
9
|
+
attestationLatency;
|
|
10
|
+
attestationCounts;
|
|
11
|
+
reqRespStats;
|
|
12
|
+
peerStats;
|
|
13
|
+
mempoolMinedDelay;
|
|
14
|
+
constructor(aztecNode){
|
|
15
|
+
this.aztecNode = aztecNode;
|
|
16
|
+
this.data = new Map();
|
|
17
|
+
this.groups = new Set();
|
|
18
|
+
this.blocks = new Map();
|
|
19
|
+
this.p2pGossipLatencyByTopic = {};
|
|
20
|
+
}
|
|
21
|
+
recordSentTx(tx, group) {
|
|
22
|
+
const txHash = tx.getTxHash().toString();
|
|
23
|
+
const priorityFees = tx.getGasSettings().maxPriorityFeesPerGas;
|
|
24
|
+
this.data.set(txHash, {
|
|
25
|
+
txHash,
|
|
26
|
+
sentAt: Math.trunc(Date.now() / 1000),
|
|
27
|
+
minedAt: -1,
|
|
28
|
+
attestedAt: -1,
|
|
29
|
+
blocknumber: -1,
|
|
30
|
+
priorityFee: Number(priorityFees.feePerDaGas + priorityFees.feePerL2Gas),
|
|
31
|
+
totalFee: -1,
|
|
32
|
+
positionInBlock: -1,
|
|
33
|
+
group
|
|
34
|
+
});
|
|
35
|
+
this.groups.add(group);
|
|
36
|
+
}
|
|
37
|
+
async recordMinedTx(txReceipt) {
|
|
38
|
+
const { status, txHash, blockNumber } = txReceipt;
|
|
39
|
+
if (status !== TxStatus.SUCCESS || !blockNumber) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (!this.blocks.has(blockNumber)) {
|
|
43
|
+
this.blocks.set(blockNumber, this.aztecNode.getBlock(blockNumber));
|
|
44
|
+
}
|
|
45
|
+
const block = await this.blocks.get(blockNumber);
|
|
46
|
+
if (!block) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const data = this.data.get(txHash.toString());
|
|
50
|
+
data.blocknumber = blockNumber;
|
|
51
|
+
data.minedAt = Number(block.header.globalVariables.timestamp);
|
|
52
|
+
data.attestedAt = -1;
|
|
53
|
+
data.totalFee = Number(txReceipt.transactionFee ?? 0n);
|
|
54
|
+
data.positionInBlock = block.body.txEffects.findIndex((txEffect)=>txEffect.txHash.equals(txHash));
|
|
55
|
+
}
|
|
56
|
+
inclusionTimeInSeconds(group) {
|
|
57
|
+
const histogram = createHistogram({});
|
|
58
|
+
for (const tx of this.data.values()){
|
|
59
|
+
if (!tx.blocknumber || tx.group !== group || tx.minedAt === -1) {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
histogram.record(tx.minedAt - tx.sentAt);
|
|
63
|
+
}
|
|
64
|
+
if (histogram.count === 0) {
|
|
65
|
+
return {
|
|
66
|
+
group,
|
|
67
|
+
count: 0,
|
|
68
|
+
mean: 0,
|
|
69
|
+
max: 0,
|
|
70
|
+
median: 0,
|
|
71
|
+
min: 0,
|
|
72
|
+
p99: 0
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
group,
|
|
77
|
+
count: histogram.count,
|
|
78
|
+
mean: histogram.mean,
|
|
79
|
+
max: histogram.max,
|
|
80
|
+
median: histogram.percentile(50),
|
|
81
|
+
min: histogram.min,
|
|
82
|
+
p99: histogram.percentile(99)
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
recordP2PGossipLatency(topicName, p50, p95) {
|
|
86
|
+
this.p2pGossipLatencyByTopic[topicName] = {
|
|
87
|
+
p50,
|
|
88
|
+
p95
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
recordAttestationLatency(p50, p95) {
|
|
92
|
+
this.attestationLatency = {
|
|
93
|
+
p50,
|
|
94
|
+
p95
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
recordAttestationCounts(success, failedBad, failedNode) {
|
|
98
|
+
this.attestationCounts = {
|
|
99
|
+
success,
|
|
100
|
+
failedBad,
|
|
101
|
+
failedNode
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
recordReqRespStats(fraction, delayP50, delayP95) {
|
|
105
|
+
this.reqRespStats = {
|
|
106
|
+
fraction,
|
|
107
|
+
delayP50,
|
|
108
|
+
delayP95
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
recordPeerStats(avgCount, connectionDurationP50, connectionDurationP95) {
|
|
112
|
+
this.peerStats = {
|
|
113
|
+
avgCount,
|
|
114
|
+
connectionDurationP50,
|
|
115
|
+
connectionDurationP95
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
recordMempoolMinedDelay(txP50, txP95, attestationP50, attestationP95) {
|
|
119
|
+
this.mempoolMinedDelay = {
|
|
120
|
+
txP50,
|
|
121
|
+
txP95,
|
|
122
|
+
attestationP50,
|
|
123
|
+
attestationP95
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
toGithubActionBenchmarkJSON() {
|
|
127
|
+
const data = [];
|
|
128
|
+
for (const group of this.groups){
|
|
129
|
+
const stats = this.inclusionTimeInSeconds(group);
|
|
130
|
+
data.push({
|
|
131
|
+
name: `${group}/avg_inclusion`,
|
|
132
|
+
unit: 's',
|
|
133
|
+
value: stats.mean
|
|
134
|
+
}, {
|
|
135
|
+
name: `${group}/median_inclusion`,
|
|
136
|
+
unit: 's',
|
|
137
|
+
value: stats.median
|
|
138
|
+
}, {
|
|
139
|
+
name: `${group}/p99_inclusion`,
|
|
140
|
+
unit: 's',
|
|
141
|
+
value: stats.p99
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
for (const [topic, { p50, p95 }] of Object.entries(this.p2pGossipLatencyByTopic)){
|
|
145
|
+
data.push({
|
|
146
|
+
name: `p2p_gossip_latency/${topic}/p50`,
|
|
147
|
+
unit: 'ms',
|
|
148
|
+
value: p50
|
|
149
|
+
});
|
|
150
|
+
data.push({
|
|
151
|
+
name: `p2p_gossip_latency/${topic}/p95`,
|
|
152
|
+
unit: 'ms',
|
|
153
|
+
value: p95
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
if (this.attestationLatency) {
|
|
157
|
+
data.push({
|
|
158
|
+
name: 'attestation_latency/p50',
|
|
159
|
+
unit: 'ms',
|
|
160
|
+
value: this.attestationLatency.p50
|
|
161
|
+
}, {
|
|
162
|
+
name: 'attestation_latency/p95',
|
|
163
|
+
unit: 'ms',
|
|
164
|
+
value: this.attestationLatency.p95
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
if (this.attestationCounts) {
|
|
168
|
+
const { success, failedBad, failedNode } = this.attestationCounts;
|
|
169
|
+
const total = success + failedBad + failedNode;
|
|
170
|
+
const ratio = total > 0 ? success / total : 0;
|
|
171
|
+
data.push({
|
|
172
|
+
name: 'attestation/success_count',
|
|
173
|
+
unit: 'count',
|
|
174
|
+
value: success
|
|
175
|
+
}, {
|
|
176
|
+
name: 'attestation/failed_bad_proposal_count',
|
|
177
|
+
unit: 'count',
|
|
178
|
+
value: failedBad
|
|
179
|
+
}, {
|
|
180
|
+
name: 'attestation/failed_node_issue_count',
|
|
181
|
+
unit: 'count',
|
|
182
|
+
value: failedNode
|
|
183
|
+
}, {
|
|
184
|
+
name: 'attestation/success_ratio',
|
|
185
|
+
unit: 'ratio',
|
|
186
|
+
value: ratio
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
if (this.reqRespStats) {
|
|
190
|
+
data.push({
|
|
191
|
+
name: 'req_resp/txs_requested_fraction',
|
|
192
|
+
unit: 'ratio',
|
|
193
|
+
value: this.reqRespStats.fraction
|
|
194
|
+
}, {
|
|
195
|
+
name: 'req_resp/delay_p50',
|
|
196
|
+
unit: 'ms',
|
|
197
|
+
value: this.reqRespStats.delayP50
|
|
198
|
+
}, {
|
|
199
|
+
name: 'req_resp/delay_p95',
|
|
200
|
+
unit: 'ms',
|
|
201
|
+
value: this.reqRespStats.delayP95
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
if (this.peerStats) {
|
|
205
|
+
data.push({
|
|
206
|
+
name: 'peers/avg_count',
|
|
207
|
+
unit: 'peers',
|
|
208
|
+
value: this.peerStats.avgCount
|
|
209
|
+
}, {
|
|
210
|
+
name: 'peers/connection_duration_p50',
|
|
211
|
+
unit: 'ms',
|
|
212
|
+
value: this.peerStats.connectionDurationP50
|
|
213
|
+
}, {
|
|
214
|
+
name: 'peers/connection_duration_p95',
|
|
215
|
+
unit: 'ms',
|
|
216
|
+
value: this.peerStats.connectionDurationP95
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
if (this.mempoolMinedDelay) {
|
|
220
|
+
data.push({
|
|
221
|
+
name: 'mempool/tx_mined_delay_p50',
|
|
222
|
+
unit: 'ms',
|
|
223
|
+
value: this.mempoolMinedDelay.txP50
|
|
224
|
+
}, {
|
|
225
|
+
name: 'mempool/tx_mined_delay_p95',
|
|
226
|
+
unit: 'ms',
|
|
227
|
+
value: this.mempoolMinedDelay.txP95
|
|
228
|
+
}, {
|
|
229
|
+
name: 'mempool/attestation_mined_delay_p50',
|
|
230
|
+
unit: 'ms',
|
|
231
|
+
value: this.mempoolMinedDelay.attestationP50
|
|
232
|
+
}, {
|
|
233
|
+
name: 'mempool/attestation_mined_delay_p95',
|
|
234
|
+
unit: 'ms',
|
|
235
|
+
value: this.mempoolMinedDelay.attestationP95
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
const scenario = process.env.BENCH_SCENARIO?.trim();
|
|
239
|
+
if (!scenario) {
|
|
240
|
+
return data;
|
|
241
|
+
}
|
|
242
|
+
const scenarioPrefix = `scenario/${scenario}/`;
|
|
243
|
+
return data.map((entry)=>({
|
|
244
|
+
...entry,
|
|
245
|
+
name: `${scenarioPrefix}${entry.name}`
|
|
246
|
+
}));
|
|
247
|
+
}
|
|
248
|
+
}
|