@aztec/end-to-end 0.0.1-commit.3469e52 → 0.0.1-commit.59e663cd
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/client_flows_benchmark.d.ts +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +28 -13
- package/dest/bench/utils.d.ts +5 -4
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +9 -7
- 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 +7 -8
- package/dest/e2e_epochs/epochs_test.d.ts +6 -1
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +17 -0
- package/dest/e2e_fees/bridging_race.notest.js +1 -1
- package/dest/e2e_fees/fees_test.d.ts +1 -1
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +6 -6
- 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_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 +2 -2
- package/dest/e2e_p2p/p2p_network.d.ts +1 -1
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +6 -2
- 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 +7 -14
- 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 +3 -3
- package/dest/fixtures/e2e_prover_test.d.ts +1 -1
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +7 -4
- package/dest/fixtures/setup.d.ts +3 -1
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +12 -6
- package/dest/fixtures/token_utils.d.ts +1 -1
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +7 -4
- package/dest/shared/cross_chain_test_harness.d.ts +3 -4
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +11 -11
- package/dest/shared/gas_portal_test_harness.js +1 -1
- package/dest/shared/submit-transactions.d.ts +3 -3
- 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 +1 -1
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +12 -12
- package/dest/simulators/lending_simulator.js +2 -2
- package/dest/spartan/setup_test_wallets.d.ts +1 -1
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +61 -34
- package/dest/spartan/tx_metrics.d.ts +4 -2
- package/dest/spartan/tx_metrics.d.ts.map +1 -1
- package/dest/spartan/tx_metrics.js +28 -4
- package/dest/spartan/utils/bot.d.ts +27 -0
- package/dest/spartan/utils/bot.d.ts.map +1 -0
- package/dest/spartan/utils/bot.js +141 -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 +36 -0
- package/dest/spartan/utils/config.d.ts.map +1 -0
- package/dest/spartan/utils/config.js +20 -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 +9 -0
- package/dest/spartan/utils/index.d.ts.map +1 -0
- package/dest/spartan/utils/index.js +18 -0
- package/dest/spartan/utils/k8s.d.ts +98 -0
- package/dest/spartan/utils/k8s.d.ts.map +1 -0
- package/dest/spartan/utils/k8s.js +257 -0
- package/dest/spartan/utils/nodes.d.ts +31 -0
- package/dest/spartan/utils/nodes.d.ts.map +1 -0
- package/dest/spartan/utils/nodes.js +290 -0
- package/dest/spartan/utils/scripts.d.ts +16 -0
- package/dest/spartan/utils/scripts.d.ts.map +1 -0
- package/dest/spartan/utils/scripts.js +66 -0
- package/dest/spartan/utils.d.ts +2 -260
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +1 -942
- package/package.json +39 -39
- package/src/bench/client_flows/client_flows_benchmark.ts +11 -24
- package/src/bench/utils.ts +9 -7
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +9 -12
- package/src/e2e_epochs/epochs_test.ts +46 -25
- package/src/e2e_fees/bridging_race.notest.ts +1 -4
- package/src/e2e_fees/fees_test.ts +10 -14
- package/src/e2e_l1_publisher/write_json.ts +2 -2
- package/src/e2e_nested_contract/nested_contract_test.ts +2 -4
- package/src/e2e_p2p/p2p_network.ts +15 -9
- package/src/e2e_p2p/shared.ts +10 -20
- package/src/e2e_token_contract/token_contract_test.ts +3 -5
- package/src/fixtures/e2e_prover_test.ts +3 -8
- package/src/fixtures/setup.ts +21 -14
- package/src/fixtures/token_utils.ts +6 -5
- package/src/shared/cross_chain_test_harness.ts +13 -27
- package/src/shared/gas_portal_test_harness.ts +1 -1
- package/src/shared/submit-transactions.ts +9 -15
- package/src/shared/uniswap_l1_l2.ts +12 -19
- package/src/simulators/lending_simulator.ts +2 -2
- package/src/spartan/setup_test_wallets.ts +72 -24
- package/src/spartan/tx_metrics.ts +26 -7
- package/src/spartan/utils/bot.ts +185 -0
- package/src/spartan/utils/chaos.ts +253 -0
- package/src/spartan/utils/clients.ts +100 -0
- package/src/spartan/utils/config.ts +26 -0
- package/src/spartan/utils/health.ts +255 -0
- package/src/spartan/utils/helm.ts +84 -0
- package/src/spartan/utils/index.ts +62 -0
- package/src/spartan/utils/k8s.ts +375 -0
- package/src/spartan/utils/nodes.ts +323 -0
- package/src/spartan/utils/scripts.ts +63 -0
- package/src/spartan/utils.ts +1 -1246
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
-
import type { SentTx } from '@aztec/aztec.js/contracts';
|
|
3
2
|
import type { Logger } from '@aztec/aztec.js/log';
|
|
3
|
+
import { TxHash } from '@aztec/aztec.js/tx';
|
|
4
4
|
import type { TestWallet } from '@aztec/test-wallet/server';
|
|
5
|
-
export declare const submitTxsTo: (wallet: TestWallet, submitter: AztecAddress, numTxs: number, logger: Logger) => Promise<
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
export declare const submitTxsTo: (wallet: TestWallet, submitter: AztecAddress, numTxs: number, logger: Logger) => Promise<TxHash[]>;
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibWl0LXRyYW5zYWN0aW9ucy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NoYXJlZC9zdWJtaXQtdHJhbnNhY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd6RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUE0QixNQUFNLG9CQUFvQixDQUFDO0FBRXRFLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRzVELGVBQU8sTUFBTSxXQUFXLG9HQXFCdkIsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submit-transactions.d.ts","sourceRoot":"","sources":["../../src/shared/submit-transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"submit-transactions.d.ts","sourceRoot":"","sources":["../../src/shared/submit-transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,MAAM,EAA4B,MAAM,oBAAoB,CAAC;AAEtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,eAAO,MAAM,WAAW,oGAqBvB,CAAC"}
|
|
@@ -1,24 +1,22 @@
|
|
|
1
|
+
import { NO_WAIT } from '@aztec/aztec.js/contracts';
|
|
1
2
|
import { Fr, GrumpkinScalar } from '@aztec/aztec.js/fields';
|
|
2
3
|
import { TxStatus } from '@aztec/aztec.js/tx';
|
|
3
4
|
import { times } from '@aztec/foundation/collection';
|
|
4
5
|
// submits a set of transactions to the provided Wallet
|
|
5
6
|
export const submitTxsTo = async (wallet, submitter, numTxs, logger)=>{
|
|
6
|
-
const
|
|
7
|
+
const txHashes = [];
|
|
7
8
|
await Promise.all(times(numTxs, async ()=>{
|
|
8
9
|
const accountManager = await wallet.createSchnorrAccount(Fr.random(), Fr.random(), GrumpkinScalar.random());
|
|
9
10
|
const deployMethod = await accountManager.getDeployMethod();
|
|
10
|
-
const
|
|
11
|
-
from: submitter
|
|
11
|
+
const txHash = await deployMethod.send({
|
|
12
|
+
from: submitter,
|
|
13
|
+
wait: NO_WAIT
|
|
12
14
|
});
|
|
13
|
-
const txHash = await tx.getTxHash();
|
|
14
15
|
logger.info(`Tx sent with hash ${txHash}`);
|
|
15
|
-
const receipt = await
|
|
16
|
-
expect(receipt).
|
|
17
|
-
status: TxStatus.PENDING,
|
|
18
|
-
error: ''
|
|
19
|
-
}));
|
|
16
|
+
const receipt = await wallet.getTxReceipt(txHash);
|
|
17
|
+
expect(receipt.status).toBe(TxStatus.PENDING);
|
|
20
18
|
logger.info(`Receipt received for ${txHash}`);
|
|
21
|
-
|
|
19
|
+
txHashes.push(txHash);
|
|
22
20
|
}));
|
|
23
|
-
return
|
|
21
|
+
return txHashes;
|
|
24
22
|
};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { type EndToEndContext } from '../fixtures/utils.js';
|
|
2
2
|
export declare const uniswapL1L2TestSuite: (setup: () => Promise<EndToEndContext>, cleanup: () => Promise<void>, expectedForkBlockNumber?: number) => void;
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pc3dhcF9sMV9sMi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NoYXJlZC91bmlzd2FwX2wxX2wyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdCQSxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQW1DLE1BQU0sc0JBQXNCLENBQUM7QUFZN0YsZUFBTyxNQUFNLG9CQUFvQixpSEFrK0JoQyxDQUFDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uniswap_l1_l2.d.ts","sourceRoot":"","sources":["../../src/shared/uniswap_l1_l2.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,KAAK,eAAe,EAAmC,MAAM,sBAAsB,CAAC;AAY7F,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"uniswap_l1_l2.d.ts","sourceRoot":"","sources":["../../src/shared/uniswap_l1_l2.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,KAAK,eAAe,EAAmC,MAAM,sBAAsB,CAAC;AAY7F,eAAO,MAAM,oBAAoB,iHAk+BhC,CAAC"}
|
|
@@ -77,7 +77,7 @@ export const uniswapL1L2TestSuite = (setup, cleanup, expectedForkBlockNumber = 1
|
|
|
77
77
|
// deploy l2 uniswap contract and attach to portal
|
|
78
78
|
uniswapL2Contract = await UniswapContract.deploy(wallet, uniswapPortalAddress).send({
|
|
79
79
|
from: ownerAddress
|
|
80
|
-
})
|
|
80
|
+
});
|
|
81
81
|
const registryAddress = (await aztecNode.getNodeInfo()).l1ContractAddresses.registryAddress;
|
|
82
82
|
await uniswapPortal.write.initialize([
|
|
83
83
|
registryAddress.toString(),
|
|
@@ -129,7 +129,7 @@ export const uniswapL1L2TestSuite = (setup, cleanup, expectedForkBlockNumber = 1
|
|
|
129
129
|
authWitnesses: [
|
|
130
130
|
transferToPublicAuhtwit
|
|
131
131
|
]
|
|
132
|
-
})
|
|
132
|
+
});
|
|
133
133
|
const swapPrivateFunction = 'swap_private(address,uint256,uint24,address,uint256,bytes32,address)';
|
|
134
134
|
const swapPrivateContent = sha256ToField([
|
|
135
135
|
Buffer.from(toFunctionSelector(swapPrivateFunction).substring(2), 'hex'),
|
|
@@ -314,9 +314,9 @@ export const uniswapL1L2TestSuite = (setup, cleanup, expectedForkBlockNumber = 1
|
|
|
314
314
|
// ownerEthAddress,
|
|
315
315
|
// nonceForSwap,
|
|
316
316
|
// );
|
|
317
|
-
// await ownerWallet.setPublicAuthWit({ caller: sponsorAddress, action }, true).send()
|
|
317
|
+
// await ownerWallet.setPublicAuthWit({ caller: sponsorAddress, action }, true).send();
|
|
318
318
|
// // 4.2 Call swap_public from user2 on behalf of owner
|
|
319
|
-
// const uniswapL2Interaction = await action.send()
|
|
319
|
+
// const uniswapL2Interaction = await action.send();
|
|
320
320
|
// const swapPublicContent = sha256ToField([
|
|
321
321
|
// Buffer.from(
|
|
322
322
|
// toFunctionSelector('swap_public(address,uint256,uint24,address,uint256,bytes32,bytes32,address)').substring(
|
|
@@ -473,7 +473,7 @@ export const uniswapL1L2TestSuite = (setup, cleanup, expectedForkBlockNumber = 1
|
|
|
473
473
|
authWitnesses: [
|
|
474
474
|
transferToPublicAuthwith
|
|
475
475
|
]
|
|
476
|
-
})
|
|
476
|
+
})).rejects.toThrow('Assertion failed: input_asset address is not the same as seen in the bridge contract');
|
|
477
477
|
});
|
|
478
478
|
// edge cases for public flow:
|
|
479
479
|
it("I don't need approval to call swap_public if I'm swapping on my own behalf", async ()=>{
|
|
@@ -485,12 +485,12 @@ export const uniswapL1L2TestSuite = (setup, cleanup, expectedForkBlockNumber = 1
|
|
|
485
485
|
caller: uniswapL2Contract.address,
|
|
486
486
|
action: wethCrossChainHarness.l2Token.methods.transfer_in_public(ownerAddress, uniswapL2Contract.address, wethAmountToBridge, nonceForWETHTransferApproval)
|
|
487
487
|
}, true);
|
|
488
|
-
await validateActionInteraction.send()
|
|
488
|
+
await validateActionInteraction.send();
|
|
489
489
|
// No approval to call `swap` but should work even without it:
|
|
490
490
|
const [_, secretHashForDepositingSwappedDai] = await generateClaimSecret();
|
|
491
491
|
await uniswapL2Contract.methods.swap_public(ownerAddress, wethCrossChainHarness.l2Bridge.address, wethAmountToBridge, daiCrossChainHarness.l2Bridge.address, nonceForWETHTransferApproval, uniswapFeeTier, minimumOutputAmount, ownerAddress, secretHashForDepositingSwappedDai, ownerEthAddress, Fr.ZERO).send({
|
|
492
492
|
from: ownerAddress
|
|
493
|
-
})
|
|
493
|
+
});
|
|
494
494
|
// check weth balance of owner on L2 (we first bridged `wethAmountToBridge` into L2 and now withdrew it!)
|
|
495
495
|
await wethCrossChainHarness.expectPublicBalanceOnL2(ownerAddress, 0n);
|
|
496
496
|
});
|
|
@@ -505,7 +505,7 @@ export const uniswapL1L2TestSuite = (setup, cleanup, expectedForkBlockNumber = 1
|
|
|
505
505
|
caller: approvedUser,
|
|
506
506
|
action
|
|
507
507
|
}, true);
|
|
508
|
-
await validateActionInteraction.send()
|
|
508
|
+
await validateActionInteraction.send();
|
|
509
509
|
await expect(action.simulate({
|
|
510
510
|
from: sponsorAddress
|
|
511
511
|
})).rejects.toThrow(/unauthorized/);
|
|
@@ -517,7 +517,7 @@ export const uniswapL1L2TestSuite = (setup, cleanup, expectedForkBlockNumber = 1
|
|
|
517
517
|
caller: uniswapL2Contract.address,
|
|
518
518
|
action: wethCrossChainHarness.l2Token.methods.transfer_in_public(ownerAddress, uniswapL2Contract.address, wethAmountToBridge, nonceForWETHTransferApproval)
|
|
519
519
|
}, true);
|
|
520
|
-
await validateActionInteraction.send()
|
|
520
|
+
await validateActionInteraction.send();
|
|
521
521
|
await expect(uniswapL2Contract.methods.swap_public(ownerAddress, wethCrossChainHarness.l2Bridge.address, wethAmountToBridge, daiCrossChainHarness.l2Bridge.address, new Fr(420), uniswapFeeTier, minimumOutputAmount, ownerAddress, Fr.random(), ownerEthAddress, Fr.ZERO).simulate({
|
|
522
522
|
from: ownerAddress
|
|
523
523
|
})).rejects.toThrow(/unauthorized/);
|
|
@@ -543,7 +543,7 @@ export const uniswapL1L2TestSuite = (setup, cleanup, expectedForkBlockNumber = 1
|
|
|
543
543
|
authWitnesses: [
|
|
544
544
|
transferToPublicAuhtwit
|
|
545
545
|
]
|
|
546
|
-
})
|
|
546
|
+
});
|
|
547
547
|
const swapPrivateContent = sha256ToField([
|
|
548
548
|
Buffer.from(toFunctionSelector('swap_private(address,uint256,uint24,address,uint256,bytes32,address)').substring(2), 'hex'),
|
|
549
549
|
wethCrossChainHarness.tokenPortalAddress.toBuffer32(),
|
|
@@ -627,12 +627,12 @@ export const uniswapL1L2TestSuite = (setup, cleanup, expectedForkBlockNumber = 1
|
|
|
627
627
|
caller: uniswapL2Contract.address,
|
|
628
628
|
action: wethCrossChainHarness.l2Token.methods.transfer_in_public(ownerAddress, uniswapL2Contract.address, wethAmountToBridge, nonceForWETHTransferApproval)
|
|
629
629
|
}, true);
|
|
630
|
-
await validateActionInteraction.send()
|
|
630
|
+
await validateActionInteraction.send();
|
|
631
631
|
// Call swap_public on L2
|
|
632
632
|
const secretHashForDepositingSwappedDai = Fr.random();
|
|
633
633
|
const withdrawReceipt = await uniswapL2Contract.methods.swap_public(ownerAddress, wethCrossChainHarness.l2Bridge.address, wethAmountToBridge, daiCrossChainHarness.l2Bridge.address, nonceForWETHTransferApproval, uniswapFeeTier, minimumOutputAmount, ownerAddress, secretHashForDepositingSwappedDai, ownerEthAddress, Fr.ZERO).send({
|
|
634
634
|
from: ownerAddress
|
|
635
|
-
})
|
|
635
|
+
});
|
|
636
636
|
const swapPublicContent = sha256ToField([
|
|
637
637
|
Buffer.from(toFunctionSelector('swap_public(address,uint256,uint24,address,uint256,bytes32,bytes32,address)').substring(2), 'hex'),
|
|
638
638
|
wethCrossChainHarness.tokenPortalAddress.toBuffer32(),
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
3
3
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
4
4
|
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
5
|
-
import {
|
|
5
|
+
import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon';
|
|
6
6
|
/**
|
|
7
7
|
* Contains utilities to compute the "key" for private holdings in the public state.
|
|
8
8
|
*/ export class LendingAccount {
|
|
@@ -16,7 +16,7 @@ import { pedersenHash } from '@aztec/foundation/crypto/pedersen';
|
|
|
16
16
|
* Computes the key for the private holdings of this account.
|
|
17
17
|
* @returns Key in public space
|
|
18
18
|
*/ key() {
|
|
19
|
-
return
|
|
19
|
+
return poseidon2Hash([
|
|
20
20
|
this.address,
|
|
21
21
|
this.secret
|
|
22
22
|
]);
|
|
@@ -33,4 +33,4 @@ export type WalletWrapper = {
|
|
|
33
33
|
cleanup: () => Promise<void>;
|
|
34
34
|
};
|
|
35
35
|
export declare function createWalletAndAztecNodeClient(nodeUrl: string, proverEnabled: boolean, logger: Logger): Promise<WalletWrapper>;
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBfdGVzdF93YWxsZXRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3BhcnRhbi9zZXR1cF90ZXN0X3dhbGxldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSXpELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUE2QixNQUFNLHFCQUFxQixDQUFDO0FBRXZGLE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBb0MsTUFBTSxzQkFBc0IsQ0FBQztBQUl4RixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFL0QsT0FBTyxFQUFFLFVBQVUsRUFBaUUsTUFBTSwyQkFBMkIsQ0FBQztBQU10SCxNQUFNLFdBQVcsWUFBWTtJQUMzQixTQUFTLEVBQUUsU0FBUyxDQUFDO0lBQ3JCLE1BQU0sRUFBRSxVQUFVLENBQUM7SUFDbkIsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDO0lBQ3pCLGFBQWEsRUFBRSxhQUFhLENBQUM7SUFDN0IsaUJBQWlCLEVBQUUsWUFBWSxDQUFDO0lBQ2hDLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDO0lBQy9CLFlBQVksRUFBRSxZQUFZLENBQUM7Q0FDNUI7QUFFRCxNQUFNLE1BQU0seUJBQXlCLEdBQUcsSUFBSSxDQUMxQyxZQUFZLEVBQ1osY0FBYyxHQUFHLGVBQWUsR0FBRyxXQUFXLEdBQUcsbUJBQW1CLENBQ3JFLENBQUM7QUFNRix3QkFBc0IsMkJBQTJCLENBQy9DLE9BQU8sRUFBRSxNQUFNLEVBQ2YsVUFBVSxFQUFFLE1BQU0sRUFDbEIsTUFBTSxFQUFFLE1BQU0sR0FDYixPQUFPLENBQUMsWUFBWSxDQUFDLENBeUJ2QjtBQUVELHdCQUFzQixxQ0FBcUMsQ0FDekQsTUFBTSxFQUFFLFVBQVUsRUFDbEIsU0FBUyxFQUFFLFNBQVMsRUFDcEIsVUFBVSxFQUFFLE1BQU0sRUFDbEIsTUFBTSxFQUFFLE1BQU0sRUFDZCxxQkFBcUIsU0FBSSxHQUN4QixPQUFPLENBQUMsWUFBWSxDQUFDLENBdUN2QjtBQW1ERCx3QkFBc0IsMkJBQTJCLENBQy9DLE1BQU0sRUFBRSxVQUFVLEVBQ2xCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE1BQU0sRUFBRSxNQUFNLEVBQ2QscUJBQXFCLFNBQUksR0FDeEIsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBa0JwQztBQUVELHdCQUFzQiw0QkFBNEIsQ0FDaEQsT0FBTyxFQUFFLE1BQU0sRUFDZixTQUFTLEVBQUUsTUFBTSxFQUFFLEVBQ25CLG9CQUFvQixFQUFFLE1BQU0sRUFDNUIsVUFBVSxFQUFFLE1BQU0sRUFDbEIsTUFBTSxFQUFFLE1BQU0sRUFDZCxxQkFBcUIsU0FBSSxHQUN4QixPQUFPLENBQUMsWUFBWSxDQUFDLENBK0N2QjtBQWlGRCx3QkFBc0IsZ0JBQWdCLENBQUMsRUFDckMsTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEVBQ04sY0FBYyxFQUNkLE1BQU0sRUFDTixnQkFBZ0IsRUFDakIsRUFBRTtJQUNELE1BQU0sRUFBRSxVQUFVLENBQUM7SUFDbkIsWUFBWSxFQUFFLFlBQVksQ0FBQztJQUMzQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsY0FBYyxFQUFFLE1BQU0sQ0FBQztJQUN2QixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsZ0JBQWdCLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQztDQUNyQyxpQkFxQkE7QUFFRCxNQUFNLE1BQU0sYUFBYSxHQUFHO0lBQzFCLE1BQU0sRUFBRSxVQUFVLENBQUM7SUFDbkIsU0FBUyxFQUFFLFNBQVMsQ0FBQztJQUNyQixPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Q0FDOUIsQ0FBQztBQUVGLHdCQUFzQiw4QkFBOEIsQ0FDbEQsT0FBTyxFQUFFLE1BQU0sRUFDZixhQUFhLEVBQUUsT0FBTyxFQUN0QixNQUFNLEVBQUUsTUFBTSxHQUNiLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FxQnhCIn0=
|
|
@@ -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;
|
|
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;AAIzD,OAAO,EAAE,KAAK,gBAAgB,EAA6B,MAAM,qBAAqB,CAAC;AAEvF,OAAO,EAAE,KAAK,SAAS,EAAoC,MAAM,sBAAsB,CAAC;AAIxF,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;AAmDD,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,qBAAqB,SAAI,GACxB,OAAO,CAAC,yBAAyB,CAAC,CAkBpC;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;AAiFD,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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { generateSchnorrAccounts } from '@aztec/accounts/testing';
|
|
2
2
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
3
|
+
import { NO_WAIT } from '@aztec/aztec.js/contracts';
|
|
3
4
|
import { L1FeeJuicePortalManager } from '@aztec/aztec.js/ethereum';
|
|
4
5
|
import { FeeJuicePaymentMethodWithClaim } from '@aztec/aztec.js/fee';
|
|
5
6
|
import { SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee';
|
|
6
7
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
7
|
-
import { createAztecNodeClient } from '@aztec/aztec.js/node';
|
|
8
|
+
import { createAztecNodeClient, waitForTx } from '@aztec/aztec.js/node';
|
|
8
9
|
import { createEthereumChain } from '@aztec/ethereum/chain';
|
|
9
10
|
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
10
11
|
import { retryUntil } from '@aztec/foundation/retry';
|
|
@@ -46,9 +47,10 @@ export async function deploySponsoredTestAccountsWithTokens(wallet, aztecNode, m
|
|
|
46
47
|
from: AztecAddress.ZERO,
|
|
47
48
|
fee: {
|
|
48
49
|
paymentMethod
|
|
50
|
+
},
|
|
51
|
+
wait: {
|
|
52
|
+
timeout: 2400
|
|
49
53
|
}
|
|
50
|
-
}).wait({
|
|
51
|
-
timeout: 2400
|
|
52
54
|
});
|
|
53
55
|
await Promise.all(fundedAccounts.map(async (a)=>{
|
|
54
56
|
const deployMethod = await a.getDeployMethod();
|
|
@@ -56,9 +58,10 @@ export async function deploySponsoredTestAccountsWithTokens(wallet, aztecNode, m
|
|
|
56
58
|
from: AztecAddress.ZERO,
|
|
57
59
|
fee: {
|
|
58
60
|
paymentMethod
|
|
61
|
+
},
|
|
62
|
+
wait: {
|
|
63
|
+
timeout: 2400
|
|
59
64
|
}
|
|
60
|
-
}).wait({
|
|
61
|
-
timeout: 2400
|
|
62
65
|
}); // increase timeout on purpose in order to account for two empty epochs
|
|
63
66
|
logger.info(`Account deployed at ${a.address}`);
|
|
64
67
|
}));
|
|
@@ -76,33 +79,52 @@ export async function deploySponsoredTestAccountsWithTokens(wallet, aztecNode, m
|
|
|
76
79
|
recipientAddress: recipientAccount.address
|
|
77
80
|
};
|
|
78
81
|
}
|
|
82
|
+
async function deployAccountWithDiagnostics(account, paymentMethod, aztecNode, logger, accountLabel) {
|
|
83
|
+
const deployMethod = await account.getDeployMethod();
|
|
84
|
+
let txHash;
|
|
85
|
+
try {
|
|
86
|
+
txHash = await deployMethod.send({
|
|
87
|
+
from: AztecAddress.ZERO,
|
|
88
|
+
fee: {
|
|
89
|
+
paymentMethod
|
|
90
|
+
},
|
|
91
|
+
wait: NO_WAIT
|
|
92
|
+
});
|
|
93
|
+
await waitForTx(aztecNode, txHash, {
|
|
94
|
+
timeout: 2400
|
|
95
|
+
});
|
|
96
|
+
logger.info(`${accountLabel} deployed at ${account.address}`);
|
|
97
|
+
} catch (error) {
|
|
98
|
+
const blockNumber = await aztecNode.getBlockNumber();
|
|
99
|
+
let receipt;
|
|
100
|
+
try {
|
|
101
|
+
receipt = await aztecNode.getTxReceipt(txHash);
|
|
102
|
+
} catch {
|
|
103
|
+
receipt = 'unavailable';
|
|
104
|
+
}
|
|
105
|
+
logger.error(`${accountLabel} deployment failed`, {
|
|
106
|
+
txHash: txHash.toString(),
|
|
107
|
+
receipt: JSON.stringify(receipt),
|
|
108
|
+
currentBlockNumber: blockNumber,
|
|
109
|
+
error: String(error)
|
|
110
|
+
});
|
|
111
|
+
throw error;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
async function deployAccountsInBatches(accounts, paymentMethod, aztecNode, logger, labelPrefix, batchSize = 2) {
|
|
115
|
+
for(let i = 0; i < accounts.length; i += batchSize){
|
|
116
|
+
const batch = accounts.slice(i, i + batchSize);
|
|
117
|
+
await Promise.all(batch.map((account, idx)=>deployAccountWithDiagnostics(account, paymentMethod, aztecNode, logger, `${labelPrefix}${i + idx + 1}`)));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
79
120
|
export async function deploySponsoredTestAccounts(wallet, aztecNode, logger, numberOfFundedWallets = 1) {
|
|
80
121
|
const [recipient, ...funded] = await generateSchnorrAccounts(numberOfFundedWallets + 1);
|
|
81
122
|
const recipientAccount = await wallet.createSchnorrAccount(recipient.secret, recipient.salt);
|
|
82
123
|
const fundedAccounts = await Promise.all(funded.map((a)=>wallet.createSchnorrAccount(a.secret, a.salt)));
|
|
83
124
|
await registerSponsoredFPC(wallet);
|
|
84
125
|
const paymentMethod = new SponsoredFeePaymentMethod(await getSponsoredFPCAddress());
|
|
85
|
-
|
|
86
|
-
await
|
|
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
|
-
}));
|
|
126
|
+
await deployAccountWithDiagnostics(recipientAccount, paymentMethod, aztecNode, logger, 'Recipient account');
|
|
127
|
+
await deployAccountsInBatches(fundedAccounts, paymentMethod, aztecNode, logger, 'Funded account ', 2);
|
|
106
128
|
return {
|
|
107
129
|
aztecNode,
|
|
108
130
|
wallet,
|
|
@@ -129,7 +151,7 @@ export async function deployTestAccountsWithTokens(nodeUrl, l1RpcUrls, mnemonicO
|
|
|
129
151
|
fee: {
|
|
130
152
|
paymentMethod
|
|
131
153
|
}
|
|
132
|
-
})
|
|
154
|
+
});
|
|
133
155
|
logger.info(`Account deployed at ${a.address}`);
|
|
134
156
|
}));
|
|
135
157
|
const tokenAdmin = fundedAccounts[0];
|
|
@@ -175,13 +197,15 @@ async function advanceL2Block(aztecNode, nodeAdmin) {
|
|
|
175
197
|
}
|
|
176
198
|
async function deployTokenAndMint(wallet, accounts, admin, mintAmount, paymentMethod, logger) {
|
|
177
199
|
logger.verbose(`Deploying TokenContract...`);
|
|
178
|
-
const tokenContract = await TokenContract.deploy(wallet, admin, TOKEN_NAME, TOKEN_SYMBOL, TOKEN_DECIMALS).send({
|
|
200
|
+
const { contract: tokenContract } = await TokenContract.deploy(wallet, admin, TOKEN_NAME, TOKEN_SYMBOL, TOKEN_DECIMALS).send({
|
|
179
201
|
from: admin,
|
|
180
202
|
fee: {
|
|
181
203
|
paymentMethod
|
|
204
|
+
},
|
|
205
|
+
wait: {
|
|
206
|
+
timeout: 600,
|
|
207
|
+
returnReceipt: true
|
|
182
208
|
}
|
|
183
|
-
}).deployed({
|
|
184
|
-
timeout: 600
|
|
185
209
|
});
|
|
186
210
|
const tokenAddress = tokenContract.address;
|
|
187
211
|
logger.verbose(`Minting ${mintAmount} public assets to the ${accounts.length} accounts...`);
|
|
@@ -189,9 +213,10 @@ async function deployTokenAndMint(wallet, accounts, admin, mintAmount, paymentMe
|
|
|
189
213
|
from: admin,
|
|
190
214
|
fee: {
|
|
191
215
|
paymentMethod
|
|
216
|
+
},
|
|
217
|
+
wait: {
|
|
218
|
+
timeout: 600
|
|
192
219
|
}
|
|
193
|
-
}).wait({
|
|
194
|
-
timeout: 600
|
|
195
220
|
})));
|
|
196
221
|
logger.verbose(`Minting complete.`);
|
|
197
222
|
return tokenAddress;
|
|
@@ -211,8 +236,10 @@ export async function performTransfers({ wallet, testAccounts, rounds, transferA
|
|
|
211
236
|
});
|
|
212
237
|
});
|
|
213
238
|
const provenTxs = await Promise.all(txs);
|
|
214
|
-
await Promise.all(provenTxs.map((t)=>t.send(
|
|
215
|
-
|
|
239
|
+
await Promise.all(provenTxs.map((t)=>t.send({
|
|
240
|
+
wait: {
|
|
241
|
+
timeout: 600
|
|
242
|
+
}
|
|
216
243
|
})));
|
|
217
244
|
logger.info(`Completed round ${i + 1} / ${rounds}`);
|
|
218
245
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
2
|
+
import type { Logger } from '@aztec/foundation/log';
|
|
2
3
|
import type { TopicType } from '@aztec/stdlib/p2p';
|
|
3
4
|
import { Tx, type TxReceipt } from '@aztec/stdlib/tx';
|
|
4
5
|
export type TxInclusionData = {
|
|
@@ -14,6 +15,7 @@ export type TxInclusionData = {
|
|
|
14
15
|
};
|
|
15
16
|
export declare class TxInclusionMetrics {
|
|
16
17
|
private aztecNode;
|
|
18
|
+
private logger?;
|
|
17
19
|
private data;
|
|
18
20
|
private groups;
|
|
19
21
|
private blocks;
|
|
@@ -23,7 +25,7 @@ export declare class TxInclusionMetrics {
|
|
|
23
25
|
private reqRespStats;
|
|
24
26
|
private peerStats;
|
|
25
27
|
private mempoolMinedDelay;
|
|
26
|
-
constructor(aztecNode: AztecNode);
|
|
28
|
+
constructor(aztecNode: AztecNode, logger?: Logger | undefined);
|
|
27
29
|
recordSentTx(tx: Tx, group: string): void;
|
|
28
30
|
recordMinedTx(txReceipt: TxReceipt): Promise<void>;
|
|
29
31
|
inclusionTimeInSeconds(group: string): {
|
|
@@ -49,4 +51,4 @@ export declare class TxInclusionMetrics {
|
|
|
49
51
|
extra?: string;
|
|
50
52
|
}>;
|
|
51
53
|
}
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfbWV0cmljcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NwYXJ0YW4vdHhfbWV0cmljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJdEQsTUFBTSxNQUFNLGVBQWUsR0FBRztJQUM1QixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDaEIsVUFBVSxFQUFFLE1BQU0sQ0FBQztJQUNuQixXQUFXLEVBQUUsTUFBTSxDQUFDO0lBQ3BCLFdBQVcsRUFBRSxNQUFNLENBQUM7SUFDcEIsUUFBUSxFQUFFLE1BQU0sQ0FBQztJQUNqQixlQUFlLEVBQUUsTUFBTSxDQUFDO0lBQ3hCLEtBQUssRUFBRSxNQUFNLENBQUM7Q0FDZixDQUFDO0FBRUYscUJBQWEsa0JBQWtCO0lBZ0IzQixPQUFPLENBQUMsU0FBUztJQUNqQixPQUFPLENBQUMsTUFBTSxDQUFDO0lBaEJqQixPQUFPLENBQUMsSUFBSSxDQUFzQztJQUNsRCxPQUFPLENBQUMsTUFBTSxDQUFxQjtJQUNuQyxPQUFPLENBQUMsTUFBTSxDQUFtRDtJQUVqRSxPQUFPLENBQUMsdUJBQXVCLENBQWdFO0lBRS9GLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBMkM7SUFDckUsT0FBTyxDQUFDLGlCQUFpQixDQUF5RTtJQUNsRyxPQUFPLENBQUMsWUFBWSxDQUF1RTtJQUMzRixPQUFPLENBQUMsU0FBUyxDQUFpRztJQUNsSCxPQUFPLENBQUMsaUJBQWlCLENBRVg7SUFFZCxZQUNVLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLE1BQU0sQ0FBQyxvQkFBUSxFQUNyQjtJQUVKLFlBQVksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxDQW9CeEM7SUFFSyxhQUFhLENBQUMsU0FBUyxFQUFFLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBK0J2RDtJQUVNLHNCQUFzQixDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUc7UUFDNUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztRQUNkLEtBQUssRUFBRSxNQUFNLENBQUM7UUFDZCxHQUFHLEVBQUUsTUFBTSxDQUFDO1FBQ1osSUFBSSxFQUFFLE1BQU0sQ0FBQztRQUNiLEdBQUcsRUFBRSxNQUFNLENBQUM7UUFDWixNQUFNLEVBQUUsTUFBTSxDQUFDO1FBQ2YsR0FBRyxFQUFFLE1BQU0sQ0FBQztLQUNiLENBK0JBO0lBRU0sc0JBQXNCLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUVsRjtJQUVNLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBRTlEO0lBRU0sdUJBQXVCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUUzRjtJQUVNLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FFcEY7SUFFTSxlQUFlLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FFM0c7SUFFTSx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FFakg7SUFFRCwyQkFBMkIsSUFBSSxLQUFLLENBQUM7UUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDO1FBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztRQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7UUFBQyxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUM7UUFBQyxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUE7S0FBRSxDQUFDLENBd0ZsSDtDQUNGIn0=
|
|
@@ -1 +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;
|
|
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;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAItD,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;IAgB3B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM,CAAC;IAhBjB,OAAO,CAAC,IAAI,CAAsC;IAClD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,MAAM,CAAmD;IAEjE,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,YACU,SAAS,EAAE,SAAS,EACpB,MAAM,CAAC,oBAAQ,EACrB;IAEJ,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAoBxC;IAEK,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BvD;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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { TxStatus } from '@aztec/stdlib/tx';
|
|
2
1
|
import { createHistogram } from 'perf_hooks';
|
|
3
2
|
export class TxInclusionMetrics {
|
|
4
3
|
aztecNode;
|
|
4
|
+
logger;
|
|
5
5
|
data;
|
|
6
6
|
groups;
|
|
7
7
|
blocks;
|
|
@@ -11,8 +11,9 @@ export class TxInclusionMetrics {
|
|
|
11
11
|
reqRespStats;
|
|
12
12
|
peerStats;
|
|
13
13
|
mempoolMinedDelay;
|
|
14
|
-
constructor(aztecNode){
|
|
14
|
+
constructor(aztecNode, logger){
|
|
15
15
|
this.aztecNode = aztecNode;
|
|
16
|
+
this.logger = logger;
|
|
16
17
|
this.data = new Map();
|
|
17
18
|
this.groups = new Set();
|
|
18
19
|
this.blocks = new Map();
|
|
@@ -21,6 +22,12 @@ export class TxInclusionMetrics {
|
|
|
21
22
|
recordSentTx(tx, group) {
|
|
22
23
|
const txHash = tx.getTxHash().toString();
|
|
23
24
|
const priorityFees = tx.getGasSettings().maxPriorityFeesPerGas;
|
|
25
|
+
if (this.data.has(txHash)) {
|
|
26
|
+
this.logger?.debug(`Overwriting tx inclusion data for ${txHash}`, {
|
|
27
|
+
txHash,
|
|
28
|
+
group
|
|
29
|
+
});
|
|
30
|
+
}
|
|
24
31
|
this.data.set(txHash, {
|
|
25
32
|
txHash,
|
|
26
33
|
sentAt: Math.trunc(Date.now() / 1000),
|
|
@@ -35,8 +42,13 @@ export class TxInclusionMetrics {
|
|
|
35
42
|
this.groups.add(group);
|
|
36
43
|
}
|
|
37
44
|
async recordMinedTx(txReceipt) {
|
|
38
|
-
const {
|
|
39
|
-
if (
|
|
45
|
+
const { txHash, blockNumber } = txReceipt;
|
|
46
|
+
if (!txReceipt.isMined() || !txReceipt.hasExecutionSucceeded() || !blockNumber) {
|
|
47
|
+
this.logger?.debug('Skipping mined tx record due to receipt status', {
|
|
48
|
+
txHash: txHash.toString(),
|
|
49
|
+
status: txReceipt.status,
|
|
50
|
+
blockNumber
|
|
51
|
+
});
|
|
40
52
|
return;
|
|
41
53
|
}
|
|
42
54
|
if (!this.blocks.has(blockNumber)) {
|
|
@@ -44,9 +56,21 @@ export class TxInclusionMetrics {
|
|
|
44
56
|
}
|
|
45
57
|
const block = await this.blocks.get(blockNumber);
|
|
46
58
|
if (!block) {
|
|
59
|
+
this.logger?.warn('Failed to load block for mined tx receipt', {
|
|
60
|
+
txHash: txHash.toString(),
|
|
61
|
+
blockNumber
|
|
62
|
+
});
|
|
47
63
|
return;
|
|
48
64
|
}
|
|
49
65
|
const data = this.data.get(txHash.toString());
|
|
66
|
+
if (!data) {
|
|
67
|
+
const message = `Missing sent tx record for mined tx ${txHash.toString()}`;
|
|
68
|
+
this.logger?.warn(message, {
|
|
69
|
+
txHash: txHash.toString(),
|
|
70
|
+
blockNumber
|
|
71
|
+
});
|
|
72
|
+
throw new Error(message);
|
|
73
|
+
}
|
|
50
74
|
data.blocknumber = blockNumber;
|
|
51
75
|
data.minedAt = Number(block.header.globalVariables.timestamp);
|
|
52
76
|
data.attestedAt = -1;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Logger } from '@aztec/foundation/log';
|
|
2
|
+
export declare function restartBot(namespace: string, log: Logger): Promise<void>;
|
|
3
|
+
/**
|
|
4
|
+
* Installs or upgrades the transfer bot Helm release for the given namespace.
|
|
5
|
+
* Intended for test setup to enable L2 traffic generation only when needed.
|
|
6
|
+
*/
|
|
7
|
+
export declare function installTransferBot({ namespace, spartanDir, logger: log, replicas, txIntervalSeconds, followChain, mnemonic, mnemonicStartIndex, botPrivateKey, nodeUrl, timeout, reuseValues, aztecSlotDuration }: {
|
|
8
|
+
namespace: string;
|
|
9
|
+
spartanDir: string;
|
|
10
|
+
logger: Logger;
|
|
11
|
+
replicas?: number;
|
|
12
|
+
txIntervalSeconds?: number;
|
|
13
|
+
followChain?: string;
|
|
14
|
+
mnemonic?: string;
|
|
15
|
+
mnemonicStartIndex?: number | string;
|
|
16
|
+
botPrivateKey?: string;
|
|
17
|
+
nodeUrl?: string;
|
|
18
|
+
timeout?: string;
|
|
19
|
+
reuseValues?: boolean;
|
|
20
|
+
aztecSlotDuration?: number;
|
|
21
|
+
}): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Uninstalls the transfer bot Helm release from the given namespace.
|
|
24
|
+
* Intended for test teardown to clean up bot resources.
|
|
25
|
+
*/
|
|
26
|
+
export declare function uninstallTransferBot(namespace: string, log: Logger): Promise<void>;
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3BhcnRhbi91dGlscy9ib3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFXcEQsd0JBQXNCLFVBQVUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGlCQWE5RDtBQUVEOzs7R0FHRztBQUNILHdCQUFzQixrQkFBa0IsQ0FBQyxFQUN2QyxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFBRSxHQUFHLEVBQ1gsUUFBWSxFQUNaLGlCQUFzQixFQUN0QixXQUF1QixFQUN2QixRQUEyRyxFQUMzRyxrQkFBa0IsRUFDbEIsYUFBc0UsRUFDdEUsT0FBTyxFQUNQLE9BQWUsRUFDZixXQUFrQixFQUNsQixpQkFBaUUsRUFDbEUsRUFBRTtJQUNELFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsVUFBVSxFQUFFLE1BQU0sQ0FBQztJQUNuQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLGlCQUFpQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQzNCLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNyQixRQUFRLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDbEIsa0JBQWtCLENBQUMsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3JDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUN2QixPQUFPLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDakIsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2pCLFdBQVcsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUN0QixpQkFBaUIsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUM1QixpQkFnSEE7QUFFRDs7O0dBR0c7QUFDSCx3QkFBc0Isb0JBQW9CLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxpQkFReEUifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../../src/spartan/utils/bot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAWpD,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,iBAa9D;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,EACvC,SAAS,EACT,UAAU,EACV,MAAM,EAAE,GAAG,EACX,QAAY,EACZ,iBAAsB,EACtB,WAAuB,EACvB,QAA2G,EAC3G,kBAAkB,EAClB,aAAsE,EACtE,OAAO,EACP,OAAe,EACf,WAAkB,EAClB,iBAAiE,EAClE,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,iBAgHA;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,iBAQxE"}
|