@aztec/ethereum 0.0.0-test.0 → 0.0.1-commit.001888fc
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/account.d.ts +2 -0
- package/dest/account.d.ts.map +1 -0
- package/dest/account.js +4 -0
- package/dest/chain.d.ts +1 -1
- package/dest/client.d.ts +14 -4
- package/dest/client.d.ts.map +1 -1
- package/dest/client.js +27 -3
- package/dest/config.d.ts +70 -23
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +155 -34
- package/dest/constants.d.ts +1 -1
- package/dest/contracts/empire_base.d.ts +27 -8
- package/dest/contracts/empire_base.d.ts.map +1 -1
- package/dest/contracts/empire_base.js +75 -2
- package/dest/contracts/empire_slashing_proposer.d.ts +69 -0
- package/dest/contracts/empire_slashing_proposer.d.ts.map +1 -0
- package/dest/contracts/empire_slashing_proposer.js +216 -0
- package/dest/contracts/errors.d.ts +7 -0
- package/dest/contracts/errors.d.ts.map +1 -0
- package/dest/contracts/errors.js +12 -0
- package/dest/contracts/fee_asset_handler.d.ts +20 -0
- package/dest/contracts/fee_asset_handler.d.ts.map +1 -0
- package/dest/contracts/fee_asset_handler.js +59 -0
- package/dest/contracts/fee_asset_price_oracle.d.ts +101 -0
- package/dest/contracts/fee_asset_price_oracle.d.ts.map +1 -0
- package/dest/contracts/fee_asset_price_oracle.js +651 -0
- package/dest/contracts/fee_juice.d.ts +6 -7
- package/dest/contracts/fee_juice.d.ts.map +1 -1
- package/dest/contracts/fee_juice.js +27 -20
- package/dest/contracts/governance.d.ts +45 -32
- package/dest/contracts/governance.d.ts.map +1 -1
- package/dest/contracts/governance.js +98 -85
- package/dest/contracts/governance_proposer.d.ts +19 -13
- package/dest/contracts/governance_proposer.d.ts.map +1 -1
- package/dest/contracts/governance_proposer.js +441 -26
- package/dest/contracts/gse.d.ts +32 -0
- package/dest/contracts/gse.d.ts.map +1 -0
- package/dest/contracts/gse.js +72 -0
- package/dest/contracts/inbox.d.ts +47 -0
- package/dest/contracts/inbox.d.ts.map +1 -0
- package/dest/contracts/inbox.js +80 -0
- package/dest/contracts/index.d.ts +12 -3
- package/dest/contracts/index.d.ts.map +1 -1
- package/dest/contracts/index.js +11 -2
- package/dest/contracts/log.d.ts +13 -0
- package/dest/contracts/log.d.ts.map +1 -0
- package/dest/contracts/log.js +1 -0
- package/dest/contracts/multicall.d.ts +21 -0
- package/dest/contracts/multicall.d.ts.map +1 -0
- package/dest/contracts/multicall.js +157 -0
- package/dest/contracts/outbox.d.ts +41 -0
- package/dest/contracts/outbox.d.ts.map +1 -0
- package/dest/contracts/outbox.js +86 -0
- package/dest/contracts/registry.d.ts +12 -5
- package/dest/contracts/registry.d.ts.map +1 -1
- package/dest/contracts/registry.js +74 -17
- package/dest/contracts/rollup.d.ts +311 -53
- package/dest/contracts/rollup.d.ts.map +1 -1
- package/dest/contracts/rollup.js +1180 -116
- package/dest/contracts/slasher_contract.d.ts +44 -0
- package/dest/contracts/slasher_contract.d.ts.map +1 -0
- package/dest/contracts/slasher_contract.js +75 -0
- package/dest/contracts/tally_slashing_proposer.d.ts +140 -0
- package/dest/contracts/tally_slashing_proposer.d.ts.map +1 -0
- package/dest/contracts/tally_slashing_proposer.js +320 -0
- package/dest/contracts/utils.d.ts +3 -0
- package/dest/contracts/utils.d.ts.map +1 -0
- package/dest/contracts/utils.js +11 -0
- package/dest/deploy_aztec_l1_contracts.d.ts +259 -0
- package/dest/deploy_aztec_l1_contracts.d.ts.map +1 -0
- package/dest/deploy_aztec_l1_contracts.js +413 -0
- package/dest/deploy_l1_contract.d.ts +68 -0
- package/dest/deploy_l1_contract.d.ts.map +1 -0
- package/dest/deploy_l1_contract.js +312 -0
- package/dest/eth-signer/eth-signer.d.ts +21 -0
- package/dest/eth-signer/eth-signer.d.ts.map +1 -0
- package/dest/eth-signer/eth-signer.js +5 -0
- package/dest/eth-signer/index.d.ts +2 -0
- package/dest/eth-signer/index.d.ts.map +1 -0
- package/dest/eth-signer/index.js +1 -0
- package/dest/forwarder_proxy.d.ts +32 -0
- package/dest/forwarder_proxy.d.ts.map +1 -0
- package/dest/forwarder_proxy.js +93 -0
- package/dest/generated/l1-contracts-defaults.d.ts +30 -0
- package/dest/generated/l1-contracts-defaults.d.ts.map +1 -0
- package/dest/generated/l1-contracts-defaults.js +30 -0
- package/dest/l1_artifacts.d.ts +81744 -0
- package/dest/l1_artifacts.d.ts.map +1 -0
- package/dest/l1_artifacts.js +166 -0
- package/dest/l1_contract_addresses.d.ts +24 -4
- package/dest/l1_contract_addresses.d.ts.map +1 -1
- package/dest/l1_contract_addresses.js +25 -21
- package/dest/l1_reader.d.ts +6 -2
- package/dest/l1_reader.d.ts.map +1 -1
- package/dest/l1_reader.js +20 -9
- package/dest/l1_tx_utils/config.d.ts +65 -0
- package/dest/l1_tx_utils/config.d.ts.map +1 -0
- package/dest/l1_tx_utils/config.js +109 -0
- package/dest/l1_tx_utils/constants.d.ts +12 -0
- package/dest/l1_tx_utils/constants.d.ts.map +1 -0
- package/dest/l1_tx_utils/constants.js +39 -0
- package/dest/l1_tx_utils/factory.d.ts +32 -0
- package/dest/l1_tx_utils/factory.d.ts.map +1 -0
- package/dest/l1_tx_utils/factory.js +22 -0
- package/dest/l1_tx_utils/fee-strategies/index.d.ts +10 -0
- package/dest/l1_tx_utils/fee-strategies/index.d.ts.map +1 -0
- package/dest/l1_tx_utils/fee-strategies/index.js +12 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive.d.ts +8 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive.d.ts.map +1 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive.js +129 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.d.ts +23 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.d.ts.map +1 -0
- package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.js +191 -0
- package/dest/l1_tx_utils/fee-strategies/types.d.ts +51 -0
- package/dest/l1_tx_utils/fee-strategies/types.d.ts.map +1 -0
- package/dest/l1_tx_utils/fee-strategies/types.js +3 -0
- package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts +41 -0
- package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts.map +1 -0
- package/dest/l1_tx_utils/forwarder_l1_tx_utils.js +42 -0
- package/dest/l1_tx_utils/index-blobs.d.ts +3 -0
- package/dest/l1_tx_utils/index-blobs.d.ts.map +1 -0
- package/dest/l1_tx_utils/index-blobs.js +2 -0
- package/dest/l1_tx_utils/index.d.ts +13 -0
- package/dest/l1_tx_utils/index.d.ts.map +1 -0
- package/dest/l1_tx_utils/index.js +13 -0
- package/dest/l1_tx_utils/interfaces.d.ts +76 -0
- package/dest/l1_tx_utils/interfaces.d.ts.map +1 -0
- package/dest/l1_tx_utils/interfaces.js +4 -0
- package/dest/l1_tx_utils/l1_fee_analyzer.d.ts +233 -0
- package/dest/l1_tx_utils/l1_fee_analyzer.d.ts.map +1 -0
- package/dest/l1_tx_utils/l1_fee_analyzer.js +506 -0
- package/dest/l1_tx_utils/l1_tx_utils.d.ts +105 -0
- package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -0
- package/dest/l1_tx_utils/l1_tx_utils.js +639 -0
- package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts +83 -0
- package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts.map +1 -0
- package/dest/l1_tx_utils/readonly_l1_tx_utils.js +327 -0
- package/dest/l1_tx_utils/signer.d.ts +4 -0
- package/dest/l1_tx_utils/signer.d.ts.map +1 -0
- package/dest/l1_tx_utils/signer.js +16 -0
- package/dest/l1_tx_utils/tx_delayer.d.ts +56 -0
- package/dest/l1_tx_utils/tx_delayer.d.ts.map +1 -0
- package/dest/l1_tx_utils/tx_delayer.js +221 -0
- package/dest/l1_tx_utils/types.d.ts +67 -0
- package/dest/l1_tx_utils/types.d.ts.map +1 -0
- package/dest/l1_tx_utils/types.js +26 -0
- package/dest/l1_tx_utils/utils.d.ts +4 -0
- package/dest/l1_tx_utils/utils.d.ts.map +1 -0
- package/dest/l1_tx_utils/utils.js +14 -0
- package/dest/l1_types.d.ts +6 -0
- package/dest/l1_types.d.ts.map +1 -0
- package/dest/l1_types.js +1 -0
- package/dest/publisher_manager.d.ts +16 -0
- package/dest/publisher_manager.d.ts.map +1 -0
- package/dest/publisher_manager.js +88 -0
- package/dest/queries.d.ts +5 -3
- package/dest/queries.d.ts.map +1 -1
- package/dest/queries.js +61 -12
- package/dest/test/chain_monitor.d.ts +94 -0
- package/dest/test/chain_monitor.d.ts.map +1 -0
- package/dest/test/chain_monitor.js +244 -0
- package/dest/test/eth_cheat_codes.d.ts +229 -0
- package/dest/test/eth_cheat_codes.d.ts.map +1 -0
- package/dest/test/eth_cheat_codes.js +560 -0
- package/dest/test/eth_cheat_codes_with_state.d.ts +2 -2
- package/dest/test/eth_cheat_codes_with_state.d.ts.map +1 -1
- package/dest/test/eth_cheat_codes_with_state.js +1 -1
- package/dest/test/index.d.ts +4 -3
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/index.js +3 -2
- package/dest/test/rollup_cheat_codes.d.ts +90 -0
- package/dest/test/rollup_cheat_codes.d.ts.map +1 -0
- package/dest/test/rollup_cheat_codes.js +292 -0
- package/dest/test/start_anvil.d.ts +23 -2
- package/dest/test/start_anvil.d.ts.map +1 -1
- package/dest/test/start_anvil.js +133 -24
- package/dest/test/upgrade_utils.d.ts +6 -5
- package/dest/test/upgrade_utils.d.ts.map +1 -1
- package/dest/test/upgrade_utils.js +23 -16
- package/dest/types.d.ts +62 -8
- package/dest/types.d.ts.map +1 -1
- package/dest/types.js +3 -1
- package/dest/utils.d.ts +17 -3
- package/dest/utils.d.ts.map +1 -1
- package/dest/utils.js +111 -88
- package/dest/zkPassportVerifierAddress.d.ts +15 -0
- package/dest/zkPassportVerifierAddress.d.ts.map +1 -0
- package/dest/zkPassportVerifierAddress.js +11 -0
- package/package.json +51 -25
- package/src/account.ts +5 -0
- package/src/client.ts +51 -5
- package/src/config.ts +222 -43
- package/src/contracts/README.md +157 -0
- package/src/contracts/empire_base.ts +79 -7
- package/src/contracts/empire_slashing_proposer.ts +265 -0
- package/src/contracts/errors.ts +13 -0
- package/src/contracts/fee_asset_handler.ts +66 -0
- package/src/contracts/fee_asset_price_oracle.ts +280 -0
- package/src/contracts/fee_juice.ts +29 -15
- package/src/contracts/governance.ts +90 -78
- package/src/contracts/governance_proposer.ts +81 -25
- package/src/contracts/gse.ts +88 -0
- package/src/contracts/inbox.ts +115 -0
- package/src/contracts/index.ts +11 -2
- package/src/contracts/log.ts +13 -0
- package/src/contracts/multicall.ts +158 -0
- package/src/contracts/outbox.ts +98 -0
- package/src/contracts/registry.ts +81 -26
- package/src/contracts/rollup.ts +940 -89
- package/src/contracts/slasher_contract.ts +89 -0
- package/src/contracts/tally_slashing_proposer.ts +322 -0
- package/src/contracts/utils.ts +14 -0
- package/src/deploy_aztec_l1_contracts.ts +650 -0
- package/src/deploy_l1_contract.ts +362 -0
- package/src/eth-signer/eth-signer.ts +25 -0
- package/src/eth-signer/index.ts +1 -0
- package/src/forwarder_proxy.ts +108 -0
- package/src/generated/l1-contracts-defaults.ts +32 -0
- package/src/l1_artifacts.ts +254 -0
- package/src/l1_contract_addresses.ts +49 -34
- package/src/l1_reader.ts +30 -10
- package/src/l1_tx_utils/README.md +177 -0
- package/src/l1_tx_utils/config.ts +181 -0
- package/src/l1_tx_utils/constants.ts +29 -0
- package/src/l1_tx_utils/factory.ts +64 -0
- package/src/l1_tx_utils/fee-strategies/index.ts +22 -0
- package/src/l1_tx_utils/fee-strategies/p75_competitive.ts +163 -0
- package/src/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.ts +245 -0
- package/src/l1_tx_utils/fee-strategies/types.ts +56 -0
- package/src/l1_tx_utils/forwarder_l1_tx_utils.ts +108 -0
- package/src/l1_tx_utils/index-blobs.ts +2 -0
- package/src/l1_tx_utils/index.ts +15 -0
- package/src/l1_tx_utils/interfaces.ts +86 -0
- package/src/l1_tx_utils/l1_fee_analyzer.ts +803 -0
- package/src/l1_tx_utils/l1_tx_utils.ts +766 -0
- package/src/l1_tx_utils/readonly_l1_tx_utils.ts +423 -0
- package/src/l1_tx_utils/signer.ts +28 -0
- package/src/l1_tx_utils/tx_delayer.ts +294 -0
- package/src/l1_tx_utils/types.ts +85 -0
- package/src/l1_tx_utils/utils.ts +16 -0
- package/src/l1_types.ts +6 -0
- package/src/publisher_manager.ts +108 -0
- package/src/queries.ts +82 -16
- package/src/test/chain_monitor.ts +302 -0
- package/src/test/eth_cheat_codes.ts +588 -0
- package/src/test/eth_cheat_codes_with_state.ts +1 -1
- package/src/test/index.ts +3 -2
- package/src/test/rollup_cheat_codes.ts +330 -0
- package/src/test/start_anvil.ts +166 -22
- package/src/test/upgrade_utils.ts +30 -21
- package/src/types.ts +71 -7
- package/src/utils.ts +137 -93
- package/src/zkPassportVerifierAddress.ts +15 -0
- package/dest/contracts/forwarder.d.ts +0 -24
- package/dest/contracts/forwarder.d.ts.map +0 -1
- package/dest/contracts/forwarder.js +0 -101
- package/dest/contracts/slashing_proposer.d.ts +0 -21
- package/dest/contracts/slashing_proposer.d.ts.map +0 -1
- package/dest/contracts/slashing_proposer.js +0 -47
- package/dest/deploy_l1_contracts.d.ts +0 -21210
- package/dest/deploy_l1_contracts.d.ts.map +0 -1
- package/dest/deploy_l1_contracts.js +0 -687
- package/dest/eth_cheat_codes.d.ts +0 -147
- package/dest/eth_cheat_codes.d.ts.map +0 -1
- package/dest/eth_cheat_codes.js +0 -303
- package/dest/index.d.ts +0 -14
- package/dest/index.d.ts.map +0 -1
- package/dest/index.js +0 -13
- package/dest/l1_tx_utils.d.ts +0 -192
- package/dest/l1_tx_utils.d.ts.map +0 -1
- package/dest/l1_tx_utils.js +0 -641
- package/dest/l1_tx_utils_with_blobs.d.ts +0 -12
- package/dest/l1_tx_utils_with_blobs.d.ts.map +0 -1
- package/dest/l1_tx_utils_with_blobs.js +0 -64
- package/dest/test/delayed_tx_utils.d.ts +0 -8
- package/dest/test/delayed_tx_utils.d.ts.map +0 -1
- package/dest/test/delayed_tx_utils.js +0 -21
- package/dest/test/tx_delayer.d.ts +0 -25
- package/dest/test/tx_delayer.d.ts.map +0 -1
- package/dest/test/tx_delayer.js +0 -116
- package/src/contracts/forwarder.ts +0 -132
- package/src/contracts/slashing_proposer.ts +0 -51
- package/src/deploy_l1_contracts.ts +0 -948
- package/src/eth_cheat_codes.ts +0 -314
- package/src/index.ts +0 -13
- package/src/l1_tx_utils.ts +0 -847
- package/src/l1_tx_utils_with_blobs.ts +0 -86
- package/src/test/delayed_tx_utils.ts +0 -24
- package/src/test/tx_delayer.ts +0 -163
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { ManaMinFeeComponents, RollupContract } from '@aztec/ethereum/contracts';
|
|
2
|
+
import { InboxContract } from '@aztec/ethereum/contracts';
|
|
3
|
+
import { CheckpointNumber, EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
4
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
|
+
import { DateProvider } from '@aztec/foundation/timer';
|
|
6
|
+
import { EventEmitter } from 'events';
|
|
7
|
+
/** L2 fee data reported by the chain monitor. */
|
|
8
|
+
export type L2FeeData = ManaMinFeeComponents & {
|
|
9
|
+
/** Total minimum fee per mana in Fee Juice (sum of sequencerCost + proverCost + congestionCost). */
|
|
10
|
+
minFeePerMana: bigint;
|
|
11
|
+
/** L1 base fee observed by the oracle. */
|
|
12
|
+
l1BaseFee: bigint;
|
|
13
|
+
/** L1 blob fee observed by the oracle. */
|
|
14
|
+
l1BlobFee: bigint;
|
|
15
|
+
/** ETH per fee asset exchange rate (1e12 precision). */
|
|
16
|
+
ethPerFeeAsset: bigint;
|
|
17
|
+
/** Mana target per checkpoint. */
|
|
18
|
+
manaTarget: bigint;
|
|
19
|
+
};
|
|
20
|
+
export type ChainMonitorEventMap = {
|
|
21
|
+
'l1-block': [{
|
|
22
|
+
l1BlockNumber: number;
|
|
23
|
+
timestamp: bigint;
|
|
24
|
+
}];
|
|
25
|
+
checkpoint: [
|
|
26
|
+
{
|
|
27
|
+
checkpointNumber: CheckpointNumber;
|
|
28
|
+
l1BlockNumber: number;
|
|
29
|
+
l2SlotNumber: SlotNumber;
|
|
30
|
+
timestamp: bigint;
|
|
31
|
+
}
|
|
32
|
+
];
|
|
33
|
+
'checkpoint-proven': [{
|
|
34
|
+
provenCheckpointNumber: CheckpointNumber;
|
|
35
|
+
l1BlockNumber: number;
|
|
36
|
+
timestamp: bigint;
|
|
37
|
+
}];
|
|
38
|
+
'l2-messages': [{
|
|
39
|
+
totalL2Messages: number;
|
|
40
|
+
l1BlockNumber: number;
|
|
41
|
+
}];
|
|
42
|
+
'l2-epoch': [{
|
|
43
|
+
l2EpochNumber: EpochNumber;
|
|
44
|
+
timestamp: bigint;
|
|
45
|
+
committee: EthAddress[] | undefined;
|
|
46
|
+
}];
|
|
47
|
+
'l2-slot': [{
|
|
48
|
+
l2SlotNumber: SlotNumber;
|
|
49
|
+
timestamp: bigint;
|
|
50
|
+
}];
|
|
51
|
+
'l2-fees': [L2FeeData];
|
|
52
|
+
};
|
|
53
|
+
/** Utility class that polls the chain on quick intervals and logs new L1 blocks, L2 blocks, and L2 proofs. */
|
|
54
|
+
export declare class ChainMonitor extends EventEmitter<ChainMonitorEventMap> {
|
|
55
|
+
private readonly rollup;
|
|
56
|
+
private readonly dateProvider;
|
|
57
|
+
private readonly logger;
|
|
58
|
+
private readonly intervalMs;
|
|
59
|
+
private readonly l1Client;
|
|
60
|
+
private inbox;
|
|
61
|
+
private handle;
|
|
62
|
+
private running;
|
|
63
|
+
/** Current L1 block number */
|
|
64
|
+
l1BlockNumber: number;
|
|
65
|
+
/** Current checkpoint number */
|
|
66
|
+
checkpointNumber: CheckpointNumber;
|
|
67
|
+
/** Current proven checkpoint number */
|
|
68
|
+
provenCheckpointNumber: CheckpointNumber;
|
|
69
|
+
/** L1 timestamp for the current checkpoint */
|
|
70
|
+
checkpointTimestamp: bigint;
|
|
71
|
+
/** L1 timestamp for the proven checkpoint */
|
|
72
|
+
provenCheckpointTimestamp: bigint;
|
|
73
|
+
/** Total number of L2 messages pushed into the Inbox */
|
|
74
|
+
totalL2Messages: number;
|
|
75
|
+
/** Current L2 epoch number */
|
|
76
|
+
l2EpochNumber: EpochNumber;
|
|
77
|
+
/** Current L2 slot number */
|
|
78
|
+
l2SlotNumber: SlotNumber;
|
|
79
|
+
/** Current L2 fee data (components of the minimum fee per mana). */
|
|
80
|
+
l2FeeData: L2FeeData;
|
|
81
|
+
constructor(rollup: RollupContract, dateProvider?: DateProvider, logger?: import("@aztec/foundation/log").Logger, intervalMs?: number);
|
|
82
|
+
start(): this;
|
|
83
|
+
stop(): Promise<void>;
|
|
84
|
+
protected getInbox(): Promise<InboxContract>;
|
|
85
|
+
protected safeRun(): void;
|
|
86
|
+
run(force?: boolean): Promise<this>;
|
|
87
|
+
waitUntilL2Slot(slot: SlotNumber): Promise<void>;
|
|
88
|
+
waitUntilL1Block(block: number | bigint): Promise<void>;
|
|
89
|
+
waitUntilL1Timestamp(timestamp: number | bigint): Promise<void>;
|
|
90
|
+
waitUntilCheckpoint(checkpointNumber: CheckpointNumber): Promise<void>;
|
|
91
|
+
private fetchFeeData;
|
|
92
|
+
private hasFeeDataChanged;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW5fbW9uaXRvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QvY2hhaW5fbW9uaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFJdEMsaURBQWlEO0FBQ2pELE1BQU0sTUFBTSxTQUFTLEdBQUcsb0JBQW9CLEdBQUc7SUFDN0Msb0dBQW9HO0lBQ3BHLGFBQWEsRUFBRSxNQUFNLENBQUM7SUFDdEIsMENBQTBDO0lBQzFDLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsMENBQTBDO0lBQzFDLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsd0RBQXdEO0lBQ3hELGNBQWMsRUFBRSxNQUFNLENBQUM7SUFDdkIsa0NBQWtDO0lBQ2xDLFVBQVUsRUFBRSxNQUFNLENBQUM7Q0FDcEIsQ0FBQztBQUVGLE1BQU0sTUFBTSxvQkFBb0IsR0FBRztJQUNqQyxVQUFVLEVBQUUsQ0FBQztRQUFFLGFBQWEsRUFBRSxNQUFNLENBQUM7UUFBQyxTQUFTLEVBQUUsTUFBTSxDQUFBO0tBQUUsQ0FBQyxDQUFDO0lBQzNELFVBQVUsRUFBRTtRQUNWO1lBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7WUFBQyxhQUFhLEVBQUUsTUFBTSxDQUFDO1lBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQztZQUFDLFNBQVMs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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain_monitor.d.ts","sourceRoot":"","sources":["../../src/test/chain_monitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { InboxContract } from '@aztec/ethereum/contracts';
|
|
2
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
3
|
+
import { promiseWithResolvers } from '@aztec/foundation/promise';
|
|
4
|
+
import { DateProvider } from '@aztec/foundation/timer';
|
|
5
|
+
import { EventEmitter } from 'events';
|
|
6
|
+
/** Utility class that polls the chain on quick intervals and logs new L1 blocks, L2 blocks, and L2 proofs. */ export class ChainMonitor extends EventEmitter {
|
|
7
|
+
rollup;
|
|
8
|
+
dateProvider;
|
|
9
|
+
logger;
|
|
10
|
+
intervalMs;
|
|
11
|
+
l1Client;
|
|
12
|
+
inbox;
|
|
13
|
+
handle;
|
|
14
|
+
// eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
|
|
15
|
+
running;
|
|
16
|
+
/** Current L1 block number */ l1BlockNumber;
|
|
17
|
+
/** Current checkpoint number */ checkpointNumber;
|
|
18
|
+
/** Current proven checkpoint number */ provenCheckpointNumber;
|
|
19
|
+
/** L1 timestamp for the current checkpoint */ checkpointTimestamp;
|
|
20
|
+
/** L1 timestamp for the proven checkpoint */ provenCheckpointTimestamp;
|
|
21
|
+
/** Total number of L2 messages pushed into the Inbox */ totalL2Messages;
|
|
22
|
+
/** Current L2 epoch number */ l2EpochNumber;
|
|
23
|
+
/** Current L2 slot number */ l2SlotNumber;
|
|
24
|
+
/** Current L2 fee data (components of the minimum fee per mana). */ l2FeeData;
|
|
25
|
+
constructor(rollup, dateProvider = new DateProvider(), logger = createLogger('aztecjs:utils:chain_monitor'), intervalMs = 200){
|
|
26
|
+
super(), this.rollup = rollup, this.dateProvider = dateProvider, this.logger = logger, this.intervalMs = intervalMs, this.running = new Set(), this.totalL2Messages = 0;
|
|
27
|
+
this.l1Client = rollup.client;
|
|
28
|
+
}
|
|
29
|
+
start() {
|
|
30
|
+
if (this.handle) {
|
|
31
|
+
throw new Error('Chain monitor already started');
|
|
32
|
+
}
|
|
33
|
+
this.handle = setInterval(this.safeRun.bind(this), this.intervalMs);
|
|
34
|
+
return this;
|
|
35
|
+
}
|
|
36
|
+
async stop() {
|
|
37
|
+
try {
|
|
38
|
+
this.removeAllListeners();
|
|
39
|
+
if (this.handle) {
|
|
40
|
+
clearInterval(this.handle);
|
|
41
|
+
this.handle = undefined;
|
|
42
|
+
}
|
|
43
|
+
await Promise.allSettled([
|
|
44
|
+
...this.running
|
|
45
|
+
]);
|
|
46
|
+
} catch (err) {
|
|
47
|
+
this.logger.error('Error stopping chain monitor', err);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async getInbox() {
|
|
51
|
+
if (!this.inbox) {
|
|
52
|
+
const { inboxAddress } = await this.rollup.getRollupAddresses();
|
|
53
|
+
this.inbox = new InboxContract(this.l1Client, inboxAddress);
|
|
54
|
+
}
|
|
55
|
+
return this.inbox;
|
|
56
|
+
}
|
|
57
|
+
safeRun() {
|
|
58
|
+
const running = promiseWithResolvers();
|
|
59
|
+
this.running.add(running.promise);
|
|
60
|
+
void this.run().catch((error)=>{
|
|
61
|
+
this.logger.error('Error in chain monitor loop', error);
|
|
62
|
+
}).finally(()=>{
|
|
63
|
+
running.resolve();
|
|
64
|
+
this.running.delete(running.promise);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
async run(force = false) {
|
|
68
|
+
const newL1BlockNumber = Number(await this.l1Client.getBlockNumber({
|
|
69
|
+
cacheTime: 0
|
|
70
|
+
}));
|
|
71
|
+
if (!force && this.l1BlockNumber === newL1BlockNumber) {
|
|
72
|
+
return this;
|
|
73
|
+
}
|
|
74
|
+
this.l1BlockNumber = newL1BlockNumber;
|
|
75
|
+
const [l2SlotNumber, l2Epoch, l1block] = await Promise.all([
|
|
76
|
+
this.rollup.getSlotNumber(),
|
|
77
|
+
this.rollup.getCurrentEpoch(),
|
|
78
|
+
this.l1Client.getBlock({
|
|
79
|
+
blockNumber: BigInt(newL1BlockNumber),
|
|
80
|
+
includeTransactions: false
|
|
81
|
+
})
|
|
82
|
+
]);
|
|
83
|
+
const timestamp = l1block.timestamp;
|
|
84
|
+
const timestampString = new Date(Number(timestamp) * 1000).toTimeString().split(' ')[0];
|
|
85
|
+
this.emit('l1-block', {
|
|
86
|
+
l1BlockNumber: newL1BlockNumber,
|
|
87
|
+
timestamp
|
|
88
|
+
});
|
|
89
|
+
let msg = `L1 block ${newL1BlockNumber} mined at ${timestampString}`;
|
|
90
|
+
const newCheckpointNumber = await this.rollup.getCheckpointNumber();
|
|
91
|
+
if (this.checkpointNumber !== newCheckpointNumber) {
|
|
92
|
+
const epochNumber = await this.rollup.getEpochNumberForCheckpoint(newCheckpointNumber);
|
|
93
|
+
msg += ` with new checkpoint ${newCheckpointNumber} for epoch ${epochNumber}`;
|
|
94
|
+
this.checkpointNumber = newCheckpointNumber;
|
|
95
|
+
this.checkpointTimestamp = timestamp;
|
|
96
|
+
this.emit('checkpoint', {
|
|
97
|
+
checkpointNumber: newCheckpointNumber,
|
|
98
|
+
l1BlockNumber: newL1BlockNumber,
|
|
99
|
+
l2SlotNumber,
|
|
100
|
+
timestamp
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
const newProvenCheckpointNumber = await this.rollup.getProvenCheckpointNumber();
|
|
104
|
+
if (this.provenCheckpointNumber !== newProvenCheckpointNumber) {
|
|
105
|
+
const epochNumber = await this.rollup.getEpochNumberForCheckpoint(newProvenCheckpointNumber);
|
|
106
|
+
msg += ` with proof up to checkpoint ${newProvenCheckpointNumber} for epoch ${epochNumber}`;
|
|
107
|
+
this.provenCheckpointNumber = newProvenCheckpointNumber;
|
|
108
|
+
this.provenCheckpointTimestamp = timestamp;
|
|
109
|
+
this.emit('checkpoint-proven', {
|
|
110
|
+
provenCheckpointNumber: newProvenCheckpointNumber,
|
|
111
|
+
l1BlockNumber: newL1BlockNumber,
|
|
112
|
+
timestamp
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
const inbox = await this.getInbox();
|
|
116
|
+
const newTotalL2Messages = await inbox.getState().then((s)=>Number(s.totalMessagesInserted));
|
|
117
|
+
if (this.totalL2Messages !== newTotalL2Messages) {
|
|
118
|
+
msg += ` with ${newTotalL2Messages - this.totalL2Messages} new L2 messages (total ${newTotalL2Messages})`;
|
|
119
|
+
this.totalL2Messages = newTotalL2Messages;
|
|
120
|
+
this.emit('l2-messages', {
|
|
121
|
+
totalL2Messages: newTotalL2Messages,
|
|
122
|
+
l1BlockNumber: newL1BlockNumber
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
let committee;
|
|
126
|
+
if (l2Epoch !== this.l2EpochNumber) {
|
|
127
|
+
this.l2EpochNumber = l2Epoch;
|
|
128
|
+
committee = await this.rollup.getCurrentEpochCommittee();
|
|
129
|
+
this.emit('l2-epoch', {
|
|
130
|
+
l2EpochNumber: l2Epoch,
|
|
131
|
+
timestamp,
|
|
132
|
+
committee
|
|
133
|
+
});
|
|
134
|
+
msg += ` starting new epoch ${this.l2EpochNumber}`;
|
|
135
|
+
}
|
|
136
|
+
if (l2SlotNumber !== this.l2SlotNumber) {
|
|
137
|
+
this.l2SlotNumber = l2SlotNumber;
|
|
138
|
+
this.emit('l2-slot', {
|
|
139
|
+
l2SlotNumber,
|
|
140
|
+
timestamp
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
const feeData = await this.fetchFeeData(timestamp);
|
|
144
|
+
if (this.hasFeeDataChanged(feeData)) {
|
|
145
|
+
msg += ` with L2 min fee ${feeData.minFeePerMana}`;
|
|
146
|
+
this.l2FeeData = feeData;
|
|
147
|
+
this.emit('l2-fees', feeData);
|
|
148
|
+
}
|
|
149
|
+
this.logger.info(msg, {
|
|
150
|
+
currentTimestamp: this.dateProvider.nowInSeconds(),
|
|
151
|
+
l1Timestamp: timestamp,
|
|
152
|
+
l1BlockNumber: this.l1BlockNumber,
|
|
153
|
+
l2SlotNumber,
|
|
154
|
+
l2Epoch,
|
|
155
|
+
checkpointNumber: this.checkpointNumber,
|
|
156
|
+
provenCheckpointNumber: this.provenCheckpointNumber,
|
|
157
|
+
totalL2Messages: this.totalL2Messages,
|
|
158
|
+
committee,
|
|
159
|
+
...this.l2FeeData
|
|
160
|
+
});
|
|
161
|
+
return this;
|
|
162
|
+
}
|
|
163
|
+
waitUntilL2Slot(slot) {
|
|
164
|
+
if (this.l2SlotNumber >= slot) {
|
|
165
|
+
return Promise.resolve();
|
|
166
|
+
}
|
|
167
|
+
return new Promise((resolve)=>{
|
|
168
|
+
const listener = (data)=>{
|
|
169
|
+
if (data.l2SlotNumber >= slot) {
|
|
170
|
+
this.off('l2-slot', listener);
|
|
171
|
+
resolve();
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
this.on('l2-slot', listener);
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
waitUntilL1Block(block) {
|
|
178
|
+
const targetBlock = typeof block === 'bigint' ? block.valueOf() : block;
|
|
179
|
+
if (this.l1BlockNumber >= targetBlock) {
|
|
180
|
+
return Promise.resolve();
|
|
181
|
+
}
|
|
182
|
+
return new Promise((resolve)=>{
|
|
183
|
+
const listener = (data)=>{
|
|
184
|
+
if (data.l1BlockNumber >= targetBlock) {
|
|
185
|
+
this.off('l1-block', listener);
|
|
186
|
+
resolve();
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
this.on('l1-block', listener);
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
waitUntilL1Timestamp(timestamp) {
|
|
193
|
+
const targetTimestamp = typeof timestamp === 'bigint' ? timestamp.valueOf() : timestamp;
|
|
194
|
+
if (this.l1BlockNumber >= targetTimestamp) {
|
|
195
|
+
return Promise.resolve();
|
|
196
|
+
}
|
|
197
|
+
return new Promise((resolve)=>{
|
|
198
|
+
const listener = (data)=>{
|
|
199
|
+
if (data.timestamp >= targetTimestamp) {
|
|
200
|
+
this.off('l1-block', listener);
|
|
201
|
+
resolve();
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
this.on('l1-block', listener);
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
waitUntilCheckpoint(checkpointNumber) {
|
|
208
|
+
if (this.checkpointNumber >= checkpointNumber) {
|
|
209
|
+
return Promise.resolve();
|
|
210
|
+
}
|
|
211
|
+
return new Promise((resolve)=>{
|
|
212
|
+
const listener = (data)=>{
|
|
213
|
+
if (data.checkpointNumber >= checkpointNumber) {
|
|
214
|
+
this.off('checkpoint', listener);
|
|
215
|
+
resolve();
|
|
216
|
+
}
|
|
217
|
+
};
|
|
218
|
+
this.on('checkpoint', listener);
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
async fetchFeeData(timestamp) {
|
|
222
|
+
const [components, minFeePerMana, l1Fees, ethPerFeeAsset, manaTarget] = await Promise.all([
|
|
223
|
+
this.rollup.getManaMinFeeComponentsAt(timestamp, true),
|
|
224
|
+
this.rollup.getManaMinFeeAt(timestamp, true),
|
|
225
|
+
this.rollup.getL1FeesAt(timestamp),
|
|
226
|
+
this.rollup.getEthPerFeeAsset(),
|
|
227
|
+
this.rollup.getManaTarget()
|
|
228
|
+
]);
|
|
229
|
+
return {
|
|
230
|
+
...components,
|
|
231
|
+
minFeePerMana,
|
|
232
|
+
l1BaseFee: l1Fees.baseFee,
|
|
233
|
+
l1BlobFee: l1Fees.blobFee,
|
|
234
|
+
ethPerFeeAsset,
|
|
235
|
+
manaTarget
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
hasFeeDataChanged(newData) {
|
|
239
|
+
if (!this.l2FeeData) {
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
return this.l2FeeData.sequencerCost !== newData.sequencerCost || this.l2FeeData.proverCost !== newData.proverCost || this.l2FeeData.congestionCost !== newData.congestionCost || this.l2FeeData.l1BaseFee !== newData.l1BaseFee || this.l2FeeData.l1BlobFee !== newData.l1BlobFee || this.l2FeeData.ethPerFeeAsset !== newData.ethPerFeeAsset;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
+
import type { DateProvider, TestDateProvider } from '@aztec/foundation/timer';
|
|
3
|
+
import { type Chain, type Hex, type Transaction } from 'viem';
|
|
4
|
+
import type { ViemPublicClient } from '../types.js';
|
|
5
|
+
/**
|
|
6
|
+
* A class that provides utility functions for interacting with ethereum (L1).
|
|
7
|
+
*/
|
|
8
|
+
export declare class EthCheatCodes {
|
|
9
|
+
/**
|
|
10
|
+
* The RPC URL to use for interacting with the chain
|
|
11
|
+
*/
|
|
12
|
+
rpcUrls: string[];
|
|
13
|
+
/**
|
|
14
|
+
* The date provider to use for time operations
|
|
15
|
+
*/
|
|
16
|
+
dateProvider: DateProvider | TestDateProvider;
|
|
17
|
+
/**
|
|
18
|
+
* The logger to use for the eth cheatcodes
|
|
19
|
+
*/
|
|
20
|
+
logger: import("@aztec/foundation/log").Logger;
|
|
21
|
+
/**
|
|
22
|
+
* The chain configuration provided to Anvil
|
|
23
|
+
*/
|
|
24
|
+
chain: Chain;
|
|
25
|
+
readonly publicClient: ViemPublicClient;
|
|
26
|
+
constructor(
|
|
27
|
+
/**
|
|
28
|
+
* The RPC URL to use for interacting with the chain
|
|
29
|
+
*/
|
|
30
|
+
rpcUrls: string[],
|
|
31
|
+
/**
|
|
32
|
+
* The date provider to use for time operations
|
|
33
|
+
*/
|
|
34
|
+
dateProvider: DateProvider | TestDateProvider,
|
|
35
|
+
/**
|
|
36
|
+
* The logger to use for the eth cheatcodes
|
|
37
|
+
*/
|
|
38
|
+
logger?: import("@aztec/foundation/log").Logger,
|
|
39
|
+
/**
|
|
40
|
+
* The chain configuration provided to Anvil
|
|
41
|
+
*/
|
|
42
|
+
chain?: Chain);
|
|
43
|
+
rpcCall(method: string, params: any[]): Promise<any>;
|
|
44
|
+
private doRpcCall;
|
|
45
|
+
/**
|
|
46
|
+
* Get the auto mine status of the underlying chain
|
|
47
|
+
* @returns True if automine is on, false otherwise
|
|
48
|
+
*/
|
|
49
|
+
isAutoMining(): Promise<boolean>;
|
|
50
|
+
/**
|
|
51
|
+
* Get the current blocknumber
|
|
52
|
+
* @returns The current block number
|
|
53
|
+
*/
|
|
54
|
+
blockNumber(): Promise<number>;
|
|
55
|
+
/**
|
|
56
|
+
* Get the current chainId
|
|
57
|
+
* @returns The current chainId
|
|
58
|
+
*/
|
|
59
|
+
chainId(): Promise<number>;
|
|
60
|
+
/**
|
|
61
|
+
* Get the current timestamp
|
|
62
|
+
* @returns The current timestamp
|
|
63
|
+
*/
|
|
64
|
+
timestamp(): Promise<number>;
|
|
65
|
+
/**
|
|
66
|
+
* Advance the chain by a number of blocks
|
|
67
|
+
* @param numberOfBlocks - The number of blocks to mine
|
|
68
|
+
*/
|
|
69
|
+
mine(numberOfBlocks?: number | bigint): Promise<void>;
|
|
70
|
+
private doMine;
|
|
71
|
+
/**
|
|
72
|
+
* Mines a single block with evm_mine
|
|
73
|
+
*/
|
|
74
|
+
evmMine(): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Set the balance of an account
|
|
77
|
+
* @param account - The account to set the balance for
|
|
78
|
+
* @param balance - The balance to set
|
|
79
|
+
*/
|
|
80
|
+
setBalance(account: EthAddress | Hex, balance: bigint): Promise<void>;
|
|
81
|
+
getBalance(account: EthAddress | Hex): Promise<bigint>;
|
|
82
|
+
/**
|
|
83
|
+
* Set the interval between successive blocks (block time). This does NOT enable interval mining.
|
|
84
|
+
* @param interval - The interval to use between blocks
|
|
85
|
+
*/
|
|
86
|
+
setBlockInterval(interval: number): Promise<void>;
|
|
87
|
+
/**
|
|
88
|
+
* Set the next block base fee per gas
|
|
89
|
+
* @param baseFee - The base fee to set
|
|
90
|
+
*/
|
|
91
|
+
setNextBlockBaseFeePerGas(baseFee: bigint | number): Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* Get interval mining if set.
|
|
94
|
+
* @param seconds - The interval to use between blocks
|
|
95
|
+
*/
|
|
96
|
+
getIntervalMining(): Promise<number | null>;
|
|
97
|
+
/**
|
|
98
|
+
* Enable interval mining at the given interval (block time)
|
|
99
|
+
* @param seconds - The interval to use between blocks
|
|
100
|
+
*/
|
|
101
|
+
setIntervalMining(seconds: number, opts?: {
|
|
102
|
+
silent?: boolean;
|
|
103
|
+
}): Promise<void>;
|
|
104
|
+
/**
|
|
105
|
+
* Set the automine status of the underlying anvil chain
|
|
106
|
+
* @param automine - The automine status to set
|
|
107
|
+
*/
|
|
108
|
+
setAutomine(automine: boolean, opts?: {
|
|
109
|
+
silent?: boolean;
|
|
110
|
+
}): Promise<void>;
|
|
111
|
+
/**
|
|
112
|
+
* Drop a transaction from the mempool
|
|
113
|
+
* @param txHash - The transaction hash
|
|
114
|
+
*/
|
|
115
|
+
dropTransaction(txHash: Hex): Promise<void>;
|
|
116
|
+
/**
|
|
117
|
+
* Set the next block timestamp
|
|
118
|
+
* @param timestamp - The timestamp to set the next block to
|
|
119
|
+
*/
|
|
120
|
+
setNextBlockTimestamp(timestamp: number | Date): Promise<void>;
|
|
121
|
+
/**
|
|
122
|
+
* Set the next block timestamp and mines the block.
|
|
123
|
+
* Optionally resets interval mining so the next block is mined in `blockInterval` seconds from now.
|
|
124
|
+
* Always updates the injected date provider to follow L1 time.
|
|
125
|
+
* @param timestamp - The timestamp to set the next block to
|
|
126
|
+
*/
|
|
127
|
+
warp(timestamp: number | bigint, opts?: {
|
|
128
|
+
silent?: boolean;
|
|
129
|
+
resetBlockInterval?: boolean;
|
|
130
|
+
}): Promise<void>;
|
|
131
|
+
/**
|
|
132
|
+
* Load the value at a storage slot of a contract address on eth
|
|
133
|
+
* @param contract - The contract address
|
|
134
|
+
* @param slot - The storage slot
|
|
135
|
+
* @returns - The value at the storage slot
|
|
136
|
+
*/
|
|
137
|
+
load(contract: EthAddress, slot: bigint): Promise<bigint>;
|
|
138
|
+
/**
|
|
139
|
+
* Set the value at a storage slot of a contract address on eth
|
|
140
|
+
* @param contract - The contract address
|
|
141
|
+
* @param slot - The storage slot
|
|
142
|
+
* @param value - The value to set the storage slot to
|
|
143
|
+
*/
|
|
144
|
+
store(contract: EthAddress, slot: bigint, value: bigint, opts?: {
|
|
145
|
+
silent?: boolean;
|
|
146
|
+
}): Promise<void>;
|
|
147
|
+
/**
|
|
148
|
+
* Computes the slot value for a given map and key.
|
|
149
|
+
* @param baseSlot - The base slot of the map (specified in Aztec.nr contract)
|
|
150
|
+
* @param key - The key to lookup in the map
|
|
151
|
+
* @returns The storage slot of the value in the map
|
|
152
|
+
*/
|
|
153
|
+
keccak256(baseSlot: bigint, key: bigint): bigint;
|
|
154
|
+
/**
|
|
155
|
+
* Send transactions impersonating an externally owned account or contract.
|
|
156
|
+
* @param who - The address to impersonate
|
|
157
|
+
*/
|
|
158
|
+
startImpersonating(who: EthAddress | Hex): Promise<void>;
|
|
159
|
+
/**
|
|
160
|
+
* Stop impersonating an account that you are currently impersonating.
|
|
161
|
+
* @param who - The address to stop impersonating
|
|
162
|
+
*/
|
|
163
|
+
stopImpersonating(who: EthAddress | Hex): Promise<void>;
|
|
164
|
+
/**
|
|
165
|
+
* Set the bytecode for a contract
|
|
166
|
+
* @param contract - The contract address
|
|
167
|
+
* @param bytecode - The bytecode to set
|
|
168
|
+
*/
|
|
169
|
+
etch(contract: EthAddress, bytecode: `0x${string}`): Promise<void>;
|
|
170
|
+
/**
|
|
171
|
+
* Get the bytecode for a contract
|
|
172
|
+
* @param contract - The contract address
|
|
173
|
+
* @returns The bytecode for the contract
|
|
174
|
+
*/
|
|
175
|
+
getBytecode(contract: EthAddress): Promise<`0x${string}`>;
|
|
176
|
+
/**
|
|
177
|
+
* Get the raw transaction object for a given transaction hash
|
|
178
|
+
* @param txHash - The transaction hash
|
|
179
|
+
* @returns The raw transaction
|
|
180
|
+
*/
|
|
181
|
+
getRawTransaction(txHash: Hex): Promise<`0x${string}`>;
|
|
182
|
+
/**
|
|
183
|
+
* Get the trace for a given transaction hash
|
|
184
|
+
* @param txHash - The transaction hash
|
|
185
|
+
* @returns The trace
|
|
186
|
+
*/
|
|
187
|
+
debugTraceTransaction(txHash: Hex): Promise<any>;
|
|
188
|
+
/**
|
|
189
|
+
* Triggers a reorg of the given depth, removing those blocks from the chain.
|
|
190
|
+
* @param depth - The depth of the reorg
|
|
191
|
+
*/
|
|
192
|
+
reorg(depth: number): Promise<void>;
|
|
193
|
+
/**
|
|
194
|
+
* Causes Anvil to reorg until the given block number is the new tip
|
|
195
|
+
* @param blockNumber - The block number that's going to be the new tip
|
|
196
|
+
*/
|
|
197
|
+
reorgTo(blockNumber: number): Promise<void>;
|
|
198
|
+
/**
|
|
199
|
+
* Triggers a reorg of the given depth, optionally replacing it with new blocks.
|
|
200
|
+
* The resulting block height will be the same as the original chain.
|
|
201
|
+
* @param depth - The depth of the reorg
|
|
202
|
+
* @param newBlocks - The blocks to replace the old ones with, each represented as a list of txs.
|
|
203
|
+
*/
|
|
204
|
+
reorgWithReplacement(depth: number, newBlocks?: (Hex | {
|
|
205
|
+
to: EthAddress | Hex;
|
|
206
|
+
input?: Hex;
|
|
207
|
+
from?: EthAddress | Hex;
|
|
208
|
+
value?: number | bigint;
|
|
209
|
+
})[][]): Promise<void>;
|
|
210
|
+
traceTransaction(txHash: Hex): Promise<any>;
|
|
211
|
+
getTxPoolStatus(): Promise<{
|
|
212
|
+
pending: number;
|
|
213
|
+
queued: number;
|
|
214
|
+
}>;
|
|
215
|
+
getTxPoolContents(): Promise<TxPoolTransaction[]>;
|
|
216
|
+
/**
|
|
217
|
+
* Mines an empty block by temporarily removing all pending transactions from the mempool,
|
|
218
|
+
* mining a block, and then re-adding the transactions back to the pool.
|
|
219
|
+
*/
|
|
220
|
+
mineEmptyBlock(blockCount?: number): Promise<void>;
|
|
221
|
+
execWithPausedAnvil<T>(fn: () => Promise<T>): Promise<T>;
|
|
222
|
+
syncDateProvider(): Promise<void>;
|
|
223
|
+
}
|
|
224
|
+
type TxPoolState = 'pending' | 'queued';
|
|
225
|
+
export type TxPoolTransaction = Transaction & {
|
|
226
|
+
poolState: TxPoolState;
|
|
227
|
+
};
|
|
228
|
+
export {};
|
|
229
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoX2NoZWF0X2NvZGVzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9ldGhfY2hlYXRfY29kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBSTNELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlFLE9BQU8sRUFBRSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLFdBQVcsRUFBbUQsTUFBTSxNQUFNLENBQUM7QUFHL0csT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEQ7O0dBRUc7QUFDSCxxQkFBYSxhQUFhO0lBR3RCOztPQUVHO0lBQ0ksT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUN4Qjs7T0FFRztJQUNJLFlBQVksRUFBRSxZQUFZLEdBQUcsZ0JBQWdCO0lBQ3BEOztPQUVHO0lBQ0ksTUFBTTtJQUNiOztPQUVHO0lBQ0ksS0FBSyxFQUFFLEtBQUs7SUFqQnJCLFNBQWdCLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQztJQUMvQztJQUNFOztPQUVHO0lBQ0ksT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUN4Qjs7T0FFRztJQUNJLFlBQVksRUFBRSxZQUFZLEdBQUcsZ0JBQWdCO0lBQ3BEOztPQUVHO0lBQ0ksTUFBTSx5Q0FBdUM7SUFDcEQ7O09BRUc7SUFDSSxLQUFLLEdBQUUsS0FBZSxFQU05QjtJQUVNLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsZ0JBRzNDO1lBRWEsU0FBUztJQU92Qjs7O09BR0c7SUFDVSxZQUFZLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQVE1QztJQUVEOzs7T0FHRztJQUNVLFdBQVcsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBRzFDO0lBRUQ7OztPQUdHO0lB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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eth_cheat_codes.d.ts","sourceRoot":"","sources":["../../src/test/eth_cheat_codes.ts"],"names":[],"mappings":"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"}
|