@aztec/ethereum 0.0.1-fake-ceab37513c → 0.0.6-commit.a2d1860fe9
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 +1 -1
- package/dest/chain.d.ts +1 -1
- package/dest/client.d.ts +2 -2
- package/dest/client.d.ts.map +1 -1
- package/dest/client.js +6 -2
- package/dest/config.d.ts +22 -68
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +61 -338
- package/dest/constants.d.ts +1 -1
- package/dest/contracts/empire_base.d.ts +9 -5
- package/dest/contracts/empire_base.d.ts.map +1 -1
- package/dest/contracts/empire_base.js +1 -1
- package/dest/contracts/empire_slashing_proposer.d.ts +8 -4
- package/dest/contracts/empire_slashing_proposer.d.ts.map +1 -1
- package/dest/contracts/empire_slashing_proposer.js +39 -17
- package/dest/contracts/errors.d.ts +1 -1
- package/dest/contracts/errors.d.ts.map +1 -1
- package/dest/contracts/fee_asset_handler.d.ts +6 -5
- package/dest/contracts/fee_asset_handler.d.ts.map +1 -1
- package/dest/contracts/fee_asset_handler.js +11 -9
- 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 +1 -1
- package/dest/contracts/fee_juice.d.ts.map +1 -1
- package/dest/contracts/governance.d.ts +18 -16
- package/dest/contracts/governance.d.ts.map +1 -1
- package/dest/contracts/governance.js +14 -4
- package/dest/contracts/governance_proposer.d.ts +8 -4
- package/dest/contracts/governance_proposer.d.ts.map +1 -1
- package/dest/contracts/governance_proposer.js +412 -11
- package/dest/contracts/gse.d.ts +1 -1
- package/dest/contracts/gse.d.ts.map +1 -1
- package/dest/contracts/inbox.d.ts +24 -3
- package/dest/contracts/inbox.d.ts.map +1 -1
- package/dest/contracts/inbox.js +36 -1
- package/dest/contracts/index.d.ts +4 -1
- package/dest/contracts/index.d.ts.map +1 -1
- package/dest/contracts/index.js +3 -0
- 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 +2 -2
- package/dest/contracts/multicall.d.ts.map +1 -1
- package/dest/contracts/multicall.js +2 -1
- 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 +1 -1
- package/dest/contracts/registry.d.ts.map +1 -1
- package/dest/contracts/rollup.d.ts +195 -123
- package/dest/contracts/rollup.d.ts.map +1 -1
- package/dest/contracts/rollup.js +755 -184
- package/dest/contracts/slasher_contract.d.ts +1 -1
- package/dest/contracts/slasher_contract.d.ts.map +1 -1
- package/dest/contracts/tally_slashing_proposer.d.ts +15 -7
- package/dest/contracts/tally_slashing_proposer.d.ts.map +1 -1
- package/dest/contracts/tally_slashing_proposer.js +22 -5
- package/dest/contracts/utils.d.ts +1 -1
- 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 +1 -1
- package/dest/eth-signer/index.d.ts +1 -1
- 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 +11903 -1961
- package/dest/l1_artifacts.d.ts.map +1 -1
- package/dest/l1_contract_addresses.d.ts +3 -3
- package/dest/l1_contract_addresses.d.ts.map +1 -1
- package/dest/l1_contract_addresses.js +3 -3
- package/dest/l1_reader.d.ts +4 -2
- package/dest/l1_reader.d.ts.map +1 -1
- package/dest/l1_reader.js +7 -1
- package/dest/l1_tx_utils/config.d.ts +11 -5
- package/dest/l1_tx_utils/config.d.ts.map +1 -1
- package/dest/l1_tx_utils/config.js +45 -9
- package/dest/l1_tx_utils/constants.d.ts +8 -2
- package/dest/l1_tx_utils/constants.d.ts.map +1 -1
- package/dest/l1_tx_utils/constants.js +27 -2
- package/dest/l1_tx_utils/factory.d.ts +18 -10
- package/dest/l1_tx_utils/factory.d.ts.map +1 -1
- package/dest/l1_tx_utils/factory.js +17 -7
- 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 +4 -1
- package/dest/l1_tx_utils/index.d.ts.map +1 -1
- package/dest/l1_tx_utils/index.js +3 -0
- package/dest/l1_tx_utils/interfaces.d.ts +2 -2
- package/dest/l1_tx_utils/interfaces.d.ts.map +1 -1
- 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 +15 -6
- package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -1
- package/dest/l1_tx_utils/l1_tx_utils.js +64 -17
- package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts +19 -17
- package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts.map +1 -1
- package/dest/l1_tx_utils/readonly_l1_tx_utils.js +69 -40
- package/dest/l1_tx_utils/signer.d.ts +1 -1
- 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/{test → l1_tx_utils}/tx_delayer.js +65 -36
- package/dest/l1_tx_utils/types.d.ts +1 -1
- package/dest/l1_tx_utils/types.d.ts.map +1 -1
- package/dest/l1_tx_utils/utils.d.ts +1 -1
- package/dest/l1_types.d.ts +1 -1
- package/dest/publisher_manager.d.ts +3 -2
- package/dest/publisher_manager.d.ts.map +1 -1
- package/dest/publisher_manager.js +2 -2
- package/dest/queries.d.ts +2 -2
- package/dest/queries.d.ts.map +1 -1
- package/dest/queries.js +16 -6
- package/dest/test/chain_monitor.d.ts +27 -24
- package/dest/test/chain_monitor.d.ts.map +1 -1
- package/dest/test/chain_monitor.js +33 -36
- package/dest/test/eth_cheat_codes.d.ts +26 -9
- package/dest/test/eth_cheat_codes.d.ts.map +1 -1
- package/dest/test/eth_cheat_codes.js +28 -12
- package/dest/test/eth_cheat_codes_with_state.d.ts +1 -1
- package/dest/test/eth_cheat_codes_with_state.d.ts.map +1 -1
- package/dest/test/index.d.ts +1 -3
- package/dest/test/index.d.ts.map +1 -1
- package/dest/test/index.js +0 -2
- package/dest/test/rollup_cheat_codes.d.ts +24 -20
- package/dest/test/rollup_cheat_codes.d.ts.map +1 -1
- package/dest/test/rollup_cheat_codes.js +97 -41
- package/dest/test/start_anvil.d.ts +4 -1
- package/dest/test/start_anvil.d.ts.map +1 -1
- package/dest/test/start_anvil.js +3 -2
- package/dest/test/upgrade_utils.d.ts +1 -1
- package/dest/test/upgrade_utils.d.ts.map +1 -1
- package/dest/test/upgrade_utils.js +4 -3
- package/dest/types.d.ts +57 -2
- package/dest/types.d.ts.map +1 -1
- package/dest/utils.d.ts +16 -3
- package/dest/utils.d.ts.map +1 -1
- package/dest/utils.js +64 -0
- package/dest/zkPassportVerifierAddress.d.ts +1 -1
- package/package.json +34 -14
- package/src/client.ts +3 -3
- package/src/config.ts +74 -414
- package/src/contracts/README.md +157 -0
- package/src/contracts/empire_base.ts +8 -5
- package/src/contracts/empire_slashing_proposer.ts +38 -32
- package/src/contracts/fee_asset_handler.ts +10 -7
- package/src/contracts/fee_asset_price_oracle.ts +280 -0
- package/src/contracts/governance.ts +13 -4
- package/src/contracts/governance_proposer.ts +26 -6
- package/src/contracts/inbox.ts +55 -3
- package/src/contracts/index.ts +3 -0
- package/src/contracts/log.ts +13 -0
- package/src/contracts/multicall.ts +5 -2
- package/src/contracts/outbox.ts +98 -0
- package/src/contracts/rollup.ts +433 -167
- package/src/contracts/tally_slashing_proposer.ts +25 -9
- package/src/deploy_aztec_l1_contracts.ts +650 -0
- package/src/deploy_l1_contract.ts +362 -0
- package/src/forwarder_proxy.ts +108 -0
- package/src/generated/l1-contracts-defaults.ts +32 -0
- package/src/l1_contract_addresses.ts +22 -20
- package/src/l1_reader.ts +10 -2
- package/src/l1_tx_utils/config.ts +54 -13
- package/src/l1_tx_utils/constants.ts +13 -2
- package/src/l1_tx_utils/factory.ts +31 -31
- 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 +3 -0
- package/src/l1_tx_utils/interfaces.ts +1 -1
- package/src/l1_tx_utils/l1_fee_analyzer.ts +803 -0
- package/src/l1_tx_utils/l1_tx_utils.ts +76 -21
- package/src/l1_tx_utils/readonly_l1_tx_utils.ts +92 -45
- package/src/{test → l1_tx_utils}/tx_delayer.ts +82 -52
- package/src/publisher_manager.ts +4 -2
- package/src/queries.ts +17 -6
- package/src/test/chain_monitor.ts +51 -49
- package/src/test/eth_cheat_codes.ts +34 -15
- package/src/test/index.ts +0 -2
- package/src/test/rollup_cheat_codes.ts +111 -54
- package/src/test/start_anvil.ts +5 -1
- package/src/test/upgrade_utils.ts +4 -3
- package/src/types.ts +62 -0
- package/src/utils.ts +83 -1
- package/dest/deploy_l1_contracts.d.ts +0 -226
- package/dest/deploy_l1_contracts.d.ts.map +0 -1
- package/dest/deploy_l1_contracts.js +0 -1459
- package/dest/index.d.ts +0 -18
- package/dest/index.d.ts.map +0 -1
- package/dest/index.js +0 -17
- package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts +0 -26
- package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts.map +0 -1
- package/dest/l1_tx_utils/l1_tx_utils_with_blobs.js +0 -26
- package/dest/test/delayed_tx_utils.d.ts +0 -13
- package/dest/test/delayed_tx_utils.d.ts.map +0 -1
- package/dest/test/delayed_tx_utils.js +0 -28
- package/dest/test/tx_delayer.d.ts +0 -36
- package/dest/test/tx_delayer.d.ts.map +0 -1
- package/src/deploy_l1_contracts.ts +0 -1838
- package/src/index.ts +0 -17
- package/src/l1_tx_utils/l1_tx_utils_with_blobs.ts +0 -77
- package/src/test/delayed_tx_utils.ts +0 -52
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
|
-
import type { TestDateProvider } from '@aztec/foundation/timer';
|
|
3
|
-
import { type Hex, type Transaction } from 'viem';
|
|
2
|
+
import type { DateProvider, TestDateProvider } from '@aztec/foundation/timer';
|
|
3
|
+
import { type Chain, type Hex, type Transaction } from 'viem';
|
|
4
4
|
import type { ViemPublicClient } from '../types.js';
|
|
5
5
|
/**
|
|
6
6
|
* A class that provides utility functions for interacting with ethereum (L1).
|
|
@@ -10,20 +10,36 @@ export declare class EthCheatCodes {
|
|
|
10
10
|
* The RPC URL to use for interacting with the chain
|
|
11
11
|
*/
|
|
12
12
|
rpcUrls: string[];
|
|
13
|
+
/**
|
|
14
|
+
* The date provider to use for time operations
|
|
15
|
+
*/
|
|
16
|
+
dateProvider: DateProvider | TestDateProvider;
|
|
13
17
|
/**
|
|
14
18
|
* The logger to use for the eth cheatcodes
|
|
15
19
|
*/
|
|
16
20
|
logger: import("@aztec/foundation/log").Logger;
|
|
21
|
+
/**
|
|
22
|
+
* The chain configuration provided to Anvil
|
|
23
|
+
*/
|
|
24
|
+
chain: Chain;
|
|
17
25
|
readonly publicClient: ViemPublicClient;
|
|
18
26
|
constructor(
|
|
19
27
|
/**
|
|
20
28
|
* The RPC URL to use for interacting with the chain
|
|
21
29
|
*/
|
|
22
30
|
rpcUrls: string[],
|
|
31
|
+
/**
|
|
32
|
+
* The date provider to use for time operations
|
|
33
|
+
*/
|
|
34
|
+
dateProvider: DateProvider | TestDateProvider,
|
|
23
35
|
/**
|
|
24
36
|
* The logger to use for the eth cheatcodes
|
|
25
37
|
*/
|
|
26
|
-
logger?: import("@aztec/foundation/log").Logger
|
|
38
|
+
logger?: import("@aztec/foundation/log").Logger,
|
|
39
|
+
/**
|
|
40
|
+
* The chain configuration provided to Anvil
|
|
41
|
+
*/
|
|
42
|
+
chain?: Chain);
|
|
27
43
|
rpcCall(method: string, params: any[]): Promise<any>;
|
|
28
44
|
private doRpcCall;
|
|
29
45
|
/**
|
|
@@ -105,13 +121,12 @@ export declare class EthCheatCodes {
|
|
|
105
121
|
/**
|
|
106
122
|
* Set the next block timestamp and mines the block.
|
|
107
123
|
* Optionally resets interval mining so the next block is mined in `blockInterval` seconds from now.
|
|
108
|
-
*
|
|
124
|
+
* Always updates the injected date provider to follow L1 time.
|
|
109
125
|
* @param timestamp - The timestamp to set the next block to
|
|
110
126
|
*/
|
|
111
127
|
warp(timestamp: number | bigint, opts?: {
|
|
112
128
|
silent?: boolean;
|
|
113
129
|
resetBlockInterval?: boolean;
|
|
114
|
-
updateDateProvider?: TestDateProvider;
|
|
115
130
|
}): Promise<void>;
|
|
116
131
|
/**
|
|
117
132
|
* Load the value at a storage slot of a contract address on eth
|
|
@@ -126,7 +141,9 @@ export declare class EthCheatCodes {
|
|
|
126
141
|
* @param slot - The storage slot
|
|
127
142
|
* @param value - The value to set the storage slot to
|
|
128
143
|
*/
|
|
129
|
-
store(contract: EthAddress, slot: bigint, value: bigint
|
|
144
|
+
store(contract: EthAddress, slot: bigint, value: bigint, opts?: {
|
|
145
|
+
silent?: boolean;
|
|
146
|
+
}): Promise<void>;
|
|
130
147
|
/**
|
|
131
148
|
* Computes the slot value for a given map and key.
|
|
132
149
|
* @param baseSlot - The base slot of the map (specified in Aztec.nr contract)
|
|
@@ -201,12 +218,12 @@ export declare class EthCheatCodes {
|
|
|
201
218
|
* mining a block, and then re-adding the transactions back to the pool.
|
|
202
219
|
*/
|
|
203
220
|
mineEmptyBlock(blockCount?: number): Promise<void>;
|
|
204
|
-
execWithPausedAnvil(fn: () => Promise<
|
|
205
|
-
syncDateProvider(
|
|
221
|
+
execWithPausedAnvil<T>(fn: () => Promise<T>): Promise<T>;
|
|
222
|
+
syncDateProvider(): Promise<void>;
|
|
206
223
|
}
|
|
207
224
|
type TxPoolState = 'pending' | 'queued';
|
|
208
225
|
export type TxPoolTransaction = Transaction & {
|
|
209
226
|
poolState: TxPoolState;
|
|
210
227
|
};
|
|
211
228
|
export {};
|
|
212
|
-
//# sourceMappingURL=
|
|
229
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoX2NoZWF0X2NvZGVzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9ldGhfY2hlYXRfY29kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBSTNELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlFLE9BQU8sRUFBRSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLFdBQVcsRUFBbUQsTUFBTSxNQUFNLENBQUM7QUFHL0csT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEQ7O0dBRUc7QUFDSCxxQkFBYSxhQUFhO0lBR3RCOztPQUVHO0lBQ0ksT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUN4Qjs7T0FFRztJQUNJLFlBQVksRUFBRSxZQUFZLEdBQUcsZ0JBQWdCO0lBQ3BEOztPQUVHO0lBQ0ksTUFBTTtJQUNiOztPQUVHO0lBQ0ksS0FBSyxFQUFFLEtBQUs7SUFqQnJCLFNBQWdCLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQztJQUMvQztJQUNFOztPQUVHO0lBQ0ksT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUN4Qjs7T0FFRztJQUNJLFlBQVksRUFBRSxZQUFZLEdBQUcsZ0JBQWdCO0lBQ3BEOztPQUVHO0lBQ0ksTUFBTSx5Q0FBdUM7SUFDcEQ7O09BRUc7SUFDSSxLQUFLLEdBQUUsS0FBZSxFQU05QjtJQUVNLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsZ0JBRzNDO1lBRWEsU0FBUztJQU92Qjs7O09BR0c7SUFDVSxZQUFZLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQVE1QztJQUVEOzs7T0FHRztJQUNVLFdBQVcsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBRzFDO0lBRUQ7OztPQUdHO0lB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eth_cheat_codes.d.ts","sourceRoot":"","sources":["../../src/test/eth_cheat_codes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"eth_cheat_codes.d.ts","sourceRoot":"","sources":["../../src/test/eth_cheat_codes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,36 @@
|
|
|
1
1
|
import { toBigIntBE, toHex } from '@aztec/foundation/bigint-buffer';
|
|
2
|
-
import { keccak256 } from '@aztec/foundation/crypto';
|
|
2
|
+
import { keccak256 } from '@aztec/foundation/crypto/keccak';
|
|
3
3
|
import { jsonStringify } from '@aztec/foundation/json-rpc';
|
|
4
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
5
5
|
import { pluralize } from '@aztec/foundation/string';
|
|
6
6
|
import { createPublicClient, fallback, hexToNumber, http } from 'viem';
|
|
7
|
+
import { foundry } from 'viem/chains';
|
|
7
8
|
/**
|
|
8
9
|
* A class that provides utility functions for interacting with ethereum (L1).
|
|
9
10
|
*/ export class EthCheatCodes {
|
|
10
11
|
rpcUrls;
|
|
12
|
+
dateProvider;
|
|
11
13
|
logger;
|
|
14
|
+
chain;
|
|
12
15
|
publicClient;
|
|
13
16
|
constructor(/**
|
|
14
17
|
* The RPC URL to use for interacting with the chain
|
|
15
18
|
*/ rpcUrls, /**
|
|
19
|
+
* The date provider to use for time operations
|
|
20
|
+
*/ dateProvider, /**
|
|
16
21
|
* The logger to use for the eth cheatcodes
|
|
17
|
-
*/ logger = createLogger('ethereum:cheat_codes')
|
|
22
|
+
*/ logger = createLogger('ethereum:cheat_codes'), /**
|
|
23
|
+
* The chain configuration provided to Anvil
|
|
24
|
+
*/ chain = foundry){
|
|
18
25
|
this.rpcUrls = rpcUrls;
|
|
26
|
+
this.dateProvider = dateProvider;
|
|
19
27
|
this.logger = logger;
|
|
28
|
+
this.chain = chain;
|
|
20
29
|
this.publicClient = createPublicClient({
|
|
21
|
-
transport: fallback(this.rpcUrls.map((url)=>http(url
|
|
30
|
+
transport: fallback(this.rpcUrls.map((url)=>http(url, {
|
|
31
|
+
batch: false
|
|
32
|
+
}))),
|
|
33
|
+
chain: chain
|
|
22
34
|
});
|
|
23
35
|
}
|
|
24
36
|
rpcCall(method, params) {
|
|
@@ -210,7 +222,7 @@ import { createPublicClient, fallback, hexToNumber, http } from 'viem';
|
|
|
210
222
|
/**
|
|
211
223
|
* Set the next block timestamp and mines the block.
|
|
212
224
|
* Optionally resets interval mining so the next block is mined in `blockInterval` seconds from now.
|
|
213
|
-
*
|
|
225
|
+
* Always updates the injected date provider to follow L1 time.
|
|
214
226
|
* @param timestamp - The timestamp to set the next block to
|
|
215
227
|
*/ async warp(timestamp, opts = {}) {
|
|
216
228
|
let blockInterval = null;
|
|
@@ -230,8 +242,10 @@ import { createPublicClient, fallback, hexToNumber, http } from 'viem';
|
|
|
230
242
|
]);
|
|
231
243
|
// And mine a block so the timestamp goes into effect now
|
|
232
244
|
await this.doMine();
|
|
233
|
-
// Update the date provider
|
|
234
|
-
|
|
245
|
+
// Update the injected date provider so it follows L1 time
|
|
246
|
+
if ('setTime' in this.dateProvider) {
|
|
247
|
+
this.dateProvider.setTime(Number(timestamp) * 1000);
|
|
248
|
+
}
|
|
235
249
|
} catch (err) {
|
|
236
250
|
throw new Error(`Error warping: ${err}`);
|
|
237
251
|
} finally{
|
|
@@ -264,7 +278,7 @@ import { createPublicClient, fallback, hexToNumber, http } from 'viem';
|
|
|
264
278
|
* @param contract - The contract address
|
|
265
279
|
* @param slot - The storage slot
|
|
266
280
|
* @param value - The value to set the storage slot to
|
|
267
|
-
*/ async store(contract, slot, value) {
|
|
281
|
+
*/ async store(contract, slot, value, opts = {}) {
|
|
268
282
|
// for the rpc call, we need to change value to be a 32 byte hex string.
|
|
269
283
|
try {
|
|
270
284
|
await this.rpcCall('hardhat_setStorageAt', [
|
|
@@ -275,7 +289,9 @@ import { createPublicClient, fallback, hexToNumber, http } from 'viem';
|
|
|
275
289
|
} catch (err) {
|
|
276
290
|
throw new Error(`Error setting storage for contract ${contract} at ${slot}: ${err}`);
|
|
277
291
|
}
|
|
278
|
-
|
|
292
|
+
if (!opts.silent) {
|
|
293
|
+
this.logger.warn(`Set L1 storage for contract ${contract} at ${slot} to ${value}`);
|
|
294
|
+
}
|
|
279
295
|
}
|
|
280
296
|
/**
|
|
281
297
|
* Computes the slot value for a given map and key.
|
|
@@ -495,7 +511,7 @@ import { createPublicClient, fallback, hexToNumber, http } from 'viem';
|
|
|
495
511
|
silent: true
|
|
496
512
|
});
|
|
497
513
|
}
|
|
498
|
-
await fn();
|
|
514
|
+
return await fn();
|
|
499
515
|
} finally{
|
|
500
516
|
try {
|
|
501
517
|
// restore automine if necessary
|
|
@@ -519,10 +535,10 @@ import { createPublicClient, fallback, hexToNumber, http } from 'viem';
|
|
|
519
535
|
}
|
|
520
536
|
}
|
|
521
537
|
}
|
|
522
|
-
async syncDateProvider(
|
|
538
|
+
async syncDateProvider() {
|
|
523
539
|
const timestamp = await this.timestamp();
|
|
524
|
-
if ('setTime' in dateProvider) {
|
|
525
|
-
dateProvider.setTime(timestamp * 1000);
|
|
540
|
+
if ('setTime' in this.dateProvider) {
|
|
541
|
+
this.dateProvider.setTime(timestamp * 1000);
|
|
526
542
|
}
|
|
527
543
|
}
|
|
528
544
|
}
|
|
@@ -15,4 +15,4 @@ export declare class EthCheatCodesWithState extends EthCheatCodes {
|
|
|
15
15
|
*/
|
|
16
16
|
loadChainState(fileName: string): Promise<void>;
|
|
17
17
|
}
|
|
18
|
-
//# sourceMappingURL=
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoX2NoZWF0X2NvZGVzX3dpdGhfc3RhdGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L2V0aF9jaGVhdF9jb2Rlc193aXRoX3N0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRDs7O0dBR0c7QUFDSCxxQkFBYSxzQkFBdUIsU0FBUSxhQUFhO0lBQ3ZEOzs7T0FHRztJQUNVLGNBQWMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FTM0Q7SUFFRDs7O09BR0c7SUFDVSxjQUFjLENBQUMsUUFBUSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBUTNEO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eth_cheat_codes_with_state.d.ts","sourceRoot":"","sources":["../../src/test/eth_cheat_codes_with_state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,aAAa;IACvD;;;OAGG;IACU,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"eth_cheat_codes_with_state.d.ts","sourceRoot":"","sources":["../../src/test/eth_cheat_codes_with_state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,aAAa;IACvD;;;OAGG;IACU,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS3D;IAED;;;OAGG;IACU,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ3D;CACF"}
|
package/dest/test/index.d.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
export * from './delayed_tx_utils.js';
|
|
2
1
|
export * from './eth_cheat_codes.js';
|
|
3
2
|
export * from './eth_cheat_codes_with_state.js';
|
|
4
3
|
export * from './start_anvil.js';
|
|
5
|
-
export * from './tx_delayer.js';
|
|
6
4
|
export * from './upgrade_utils.js';
|
|
7
5
|
export * from './chain_monitor.js';
|
|
8
6
|
export * from './rollup_cheat_codes.js';
|
|
9
|
-
//# sourceMappingURL=
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHlCQUF5QixDQUFDIn0=
|
package/dest/test/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC"}
|
package/dest/test/index.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
export * from './delayed_tx_utils.js';
|
|
2
1
|
export * from './eth_cheat_codes.js';
|
|
3
2
|
export * from './eth_cheat_codes_with_state.js';
|
|
4
3
|
export * from './start_anvil.js';
|
|
5
|
-
export * from './tx_delayer.js';
|
|
6
4
|
export * from './upgrade_utils.js';
|
|
7
5
|
export * from './chain_monitor.js';
|
|
8
6
|
export * from './rollup_cheat_codes.js';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { type ViemPublicClient } from '@aztec/ethereum';
|
|
2
1
|
import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
|
|
3
|
-
import type {
|
|
2
|
+
import type { ViemPublicClient } from '@aztec/ethereum/types';
|
|
3
|
+
import { CheckpointNumber, EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
4
|
+
import type { DateProvider } from '@aztec/foundation/timer';
|
|
4
5
|
import { RollupAbi } from '@aztec/l1-artifacts/RollupAbi';
|
|
5
6
|
import { type GetContractReturnType, type Hex } from 'viem';
|
|
6
7
|
import { EthCheatCodes } from './eth_cheat_codes.js';
|
|
@@ -11,18 +12,20 @@ export declare class RollupCheatCodes {
|
|
|
11
12
|
private rollup;
|
|
12
13
|
private logger;
|
|
13
14
|
constructor(ethCheatCodes: EthCheatCodes, addresses: Pick<L1ContractAddresses, 'rollupAddress'>);
|
|
14
|
-
static create(rpcUrls: string[], addresses: Pick<L1ContractAddresses, 'rollupAddress'
|
|
15
|
+
static create(rpcUrls: string[], addresses: Pick<L1ContractAddresses, 'rollupAddress'>, dateProvider: DateProvider): RollupCheatCodes;
|
|
15
16
|
/** Returns the current slot */
|
|
16
|
-
getSlot(): Promise<
|
|
17
|
+
getSlot(): Promise<SlotNumber>;
|
|
18
|
+
/** Returns the number of seconds until the start of the given slot based on L1 block timestamp. */
|
|
19
|
+
getSecondsUntilSlot(slot: SlotNumber): Promise<number>;
|
|
17
20
|
/** Returns the current epoch */
|
|
18
|
-
getEpoch(): Promise<
|
|
21
|
+
getEpoch(): Promise<EpochNumber>;
|
|
19
22
|
/**
|
|
20
23
|
* Returns the pending and proven chain tips
|
|
21
24
|
* @returns The pending and proven chain tips
|
|
22
25
|
*/
|
|
23
26
|
getTips(): Promise<{
|
|
24
|
-
/** The pending chain tip */ pending:
|
|
25
|
-
/** The proven chain tip */ proven:
|
|
27
|
+
/** The pending chain tip */ pending: CheckpointNumber;
|
|
28
|
+
/** The proven chain tip */ proven: CheckpointNumber;
|
|
26
29
|
}>;
|
|
27
30
|
/**
|
|
28
31
|
* Logs the current state of the rollup contract.
|
|
@@ -31,36 +34,37 @@ export declare class RollupCheatCodes {
|
|
|
31
34
|
/** Fetches the epoch and slot duration config from the rollup contract */
|
|
32
35
|
getConfig(): Promise<{
|
|
33
36
|
/** Epoch duration */ epochDuration: bigint;
|
|
34
|
-
/** Slot duration */ slotDuration:
|
|
37
|
+
/** Slot duration */ slotDuration: number;
|
|
35
38
|
}>;
|
|
36
39
|
/**
|
|
37
40
|
* Advances time to the beginning of the given epoch
|
|
38
41
|
* @param epoch - The epoch to advance to
|
|
39
42
|
* @param opts - Options
|
|
40
43
|
*/
|
|
41
|
-
advanceToEpoch(epoch:
|
|
42
|
-
/** Optional test date provider to update with the epoch timestamp */
|
|
43
|
-
updateDateProvider?: TestDateProvider;
|
|
44
|
+
advanceToEpoch(epoch: EpochNumber, opts?: {
|
|
44
45
|
/** Offset in seconds */
|
|
45
46
|
offset?: number;
|
|
46
47
|
}): Promise<bigint>;
|
|
47
48
|
/** Warps time in L1 until the next epoch */
|
|
48
|
-
advanceToNextEpoch(
|
|
49
|
-
/** Optional test date provider to update with the epoch timestamp */
|
|
50
|
-
updateDateProvider?: TestDateProvider;
|
|
51
|
-
}): Promise<void>;
|
|
49
|
+
advanceToNextEpoch(): Promise<void>;
|
|
52
50
|
/** Warps time in L1 until the beginning of the next slot. */
|
|
53
|
-
advanceToNextSlot(): Promise<bigint[]>;
|
|
51
|
+
advanceToNextSlot(): Promise<(bigint | SlotNumber)[]>;
|
|
54
52
|
/**
|
|
55
53
|
* Warps time in L1 equivalent to however many slots.
|
|
56
54
|
* @param howMany - The number of slots to advance.
|
|
57
55
|
*/
|
|
58
56
|
advanceSlots(howMany: number): Promise<void>;
|
|
59
57
|
/**
|
|
60
|
-
* Marks the specified
|
|
61
|
-
* @param
|
|
58
|
+
* Marks the specified checkpoint (or latest if none) as proven
|
|
59
|
+
* @param maybeCheckpointNumber - The checkpoint number to mark as proven (defaults to latest pending)
|
|
62
60
|
*/
|
|
63
|
-
markAsProven(
|
|
61
|
+
markAsProven(maybeCheckpointNumber?: CheckpointNumber): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Overrides the inProgress field of the Inbox contract state
|
|
64
|
+
* @param howMuch - How many checkpoints to move it forward
|
|
65
|
+
*/
|
|
66
|
+
advanceInboxInProgress(howMuch: number | bigint): Promise<bigint>;
|
|
67
|
+
insertOutbox(epoch: EpochNumber, outHash: bigint): Promise<void>;
|
|
64
68
|
/**
|
|
65
69
|
* Executes an action impersonated as the owner of the Rollup contract.
|
|
66
70
|
* @param action - The action to execute
|
|
@@ -83,4 +87,4 @@ export declare class RollupCheatCodes {
|
|
|
83
87
|
*/
|
|
84
88
|
setProvingCostPerMana(ethValue: bigint): Promise<void>;
|
|
85
89
|
}
|
|
86
|
-
//# sourceMappingURL=
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sbHVwX2NoZWF0X2NvZGVzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9yb2xsdXBfY2hlYXRfY29kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHNUYsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTFELE9BQU8sRUFDTCxLQUFLLHFCQUFxQixFQUMxQixLQUFLLEdBQUcsRUFNVCxNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCw4Q0FBOEM7QUFDOUMscUJBQWEsZ0JBQWdCO0lBT3pCLE9BQU8sQ0FBQyxhQUFhO0lBTnZCLE9BQU8sQ0FBQyxNQUFNLENBQW1CO0lBQ2pDLE9BQU8sQ0FBQyxNQUFNLENBQTREO0lBRTFFLE9BQU8sQ0FBQyxNQUFNLENBQXVDO0lBRXJELFlBQ1UsYUFBYSxFQUFFLGFBQWEsRUFDcEMsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLENBQUMsRUFXdEQ7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUNYLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLENBQUMsRUFDckQsWUFBWSxFQUFFLFlBQVksR0FDekIsZ0JBQWdCLENBR2xCO0lBRUQsK0JBQStCO0lBQ2xCLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBRzFDO0lBRUQsbUdBQW1HO0lBQ3RGLG1CQUFtQixDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQU1sRTtJQUVELGdDQUFnQztJQUNuQixRQUFRLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUc1QztJQUVEOzs7T0FHRztJQUNVLE9BQU8sSUFBSSxPQUFPLENBQUM7UUFDOUIsNEJBQTRCLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDO1FBQ3ZELDJCQUEyQixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQztLQUN0RCxDQUFDLENBTUQ7SUFFRDs7T0FFRztJQUNVLFdBQVcsa0JBaUJ2QjtJQUVELDBFQUEwRTtJQUM3RCxTQUFTLElBQUksT0FBTyxDQUFDO1FBQ2hDLHFCQUFxQixDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUM7UUFDNUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQztLQUMzQyxDQUFDLENBTUQ7SUFFRDs7OztPQUlHO0lBQ1UsY0FBYyxDQUN6QixLQUFLLEVBQUUsV0FBVyxFQUNsQixJQUFJLEdBQUU7UUFDSix3QkFBd0I7UUFDeEIsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDO0tBQ1osbUJBWVA7SUFFRCw0Q0FBNEM7SUFDL0Isa0JBQWtCLGtCQVc5QjtJQUVELDZEQUE2RDtJQUNoRCxpQkFBaUIscUNBTzdCO0lBRUQ7OztPQUdHO0lBQ1UsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLGlCQU94QztJQUVEOzs7T0FHRztJQUNJLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLGdCQUFnQixpQkErQjNEO0lBRUQ7OztPQUdHO0lBQ0ksc0JBQXNCLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQW1DdkU7SUFFTSxZQUFZLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFPdEQ7SUFFRDs7O09BR0c7SUFDVSxPQUFPLENBQ2xCLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixDQUFDLE9BQU8sU0FBUyxFQUFFLGdCQUFnQixDQUFDLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFNekc7SUFFRDs7T0FFRztJQUNVLFVBQVUsa0JBT3RCO0lBRUQsNENBQTRDO0lBQy9CLG9CQUFvQixrQkFNaEM7SUFFRDs7O09BR0c7SUFDVSxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxLQUFLLE1BQU0saUJBSXJFO0lBRUQ7OztPQUdHO0lBQ1UscUJBQXFCLENBQUMsUUFBUSxFQUFFLE1BQU0saUJBVWxEO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollup_cheat_codes.d.ts","sourceRoot":"","sources":["../../src/test/rollup_cheat_codes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rollup_cheat_codes.d.ts","sourceRoot":"","sources":["../../src/test/rollup_cheat_codes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG5F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,GAAG,EAMT,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,8CAA8C;AAC9C,qBAAa,gBAAgB;IAOzB,OAAO,CAAC,aAAa;IANvB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAA4D;IAE1E,OAAO,CAAC,MAAM,CAAuC;IAErD,YACU,aAAa,EAAE,aAAa,EACpC,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,EAWtD;IAED,MAAM,CAAC,MAAM,CACX,OAAO,EAAE,MAAM,EAAE,EACjB,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,EACrD,YAAY,EAAE,YAAY,GACzB,gBAAgB,CAGlB;IAED,+BAA+B;IAClB,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,CAG1C;IAED,mGAAmG;IACtF,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAMlE;IAED,gCAAgC;IACnB,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,CAG5C;IAED;;;OAGG;IACU,OAAO,IAAI,OAAO,CAAC;QAC9B,4BAA4B,CAAC,OAAO,EAAE,gBAAgB,CAAC;QACvD,2BAA2B,CAAC,MAAM,EAAE,gBAAgB,CAAC;KACtD,CAAC,CAMD;IAED;;OAEG;IACU,WAAW,kBAiBvB;IAED,0EAA0E;IAC7D,SAAS,IAAI,OAAO,CAAC;QAChC,qBAAqB,CAAC,aAAa,EAAE,MAAM,CAAC;QAC5C,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC;KAC3C,CAAC,CAMD;IAED;;;;OAIG;IACU,cAAc,CACzB,KAAK,EAAE,WAAW,EAClB,IAAI,GAAE;QACJ,wBAAwB;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC;KACZ,mBAYP;IAED,4CAA4C;IAC/B,kBAAkB,kBAW9B;IAED,6DAA6D;IAChD,iBAAiB,qCAO7B;IAED;;;OAGG;IACU,YAAY,CAAC,OAAO,EAAE,MAAM,iBAOxC;IAED;;;OAGG;IACI,YAAY,CAAC,qBAAqB,CAAC,EAAE,gBAAgB,iBA+B3D;IAED;;;OAGG;IACI,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmCvE;IAEM,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,iBAOtD;IAED;;;OAGG;IACU,OAAO,CAClB,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,qBAAqB,CAAC,OAAO,SAAS,EAAE,gBAAgB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,iBAMzG;IAED;;OAEG;IACU,UAAU,kBAOtB;IAED,4CAA4C;IAC/B,oBAAoB,kBAMhC;IAED;;;OAGG;IACU,sBAAsB,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,iBAIrE;IAED;;;OAGG;IACU,qBAAqB,CAAC,QAAQ,EAAE,MAAM,iBAUlD;CACF"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { RollupContract } from '@aztec/ethereum';
|
|
1
|
+
import { OutboxContract, RollupContract } from '@aztec/ethereum/contracts';
|
|
2
|
+
import { CheckpointNumber, EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
3
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
5
|
import { RollupAbi } from '@aztec/l1-artifacts/RollupAbi';
|
|
5
6
|
import { createPublicClient, fallback, getContract, hexToBigInt, http } from 'viem';
|
|
6
|
-
import { foundry } from 'viem/chains';
|
|
7
7
|
import { EthCheatCodes } from './eth_cheat_codes.js';
|
|
8
8
|
/** Cheat codes for the L1 rollup contract. */ export class RollupCheatCodes {
|
|
9
9
|
ethCheatCodes;
|
|
@@ -14,8 +14,10 @@ import { EthCheatCodes } from './eth_cheat_codes.js';
|
|
|
14
14
|
this.ethCheatCodes = ethCheatCodes;
|
|
15
15
|
this.logger = createLogger('aztecjs:cheat_codes');
|
|
16
16
|
this.client = createPublicClient({
|
|
17
|
-
chain:
|
|
18
|
-
transport: fallback(ethCheatCodes.rpcUrls.map((url)=>http(url
|
|
17
|
+
chain: ethCheatCodes.chain,
|
|
18
|
+
transport: fallback(ethCheatCodes.rpcUrls.map((url)=>http(url, {
|
|
19
|
+
batch: false
|
|
20
|
+
})))
|
|
19
21
|
});
|
|
20
22
|
this.rollup = getContract({
|
|
21
23
|
abi: RollupAbi,
|
|
@@ -23,45 +25,54 @@ import { EthCheatCodes } from './eth_cheat_codes.js';
|
|
|
23
25
|
client: this.client
|
|
24
26
|
});
|
|
25
27
|
}
|
|
26
|
-
static create(rpcUrls, addresses) {
|
|
27
|
-
const ethCheatCodes = new EthCheatCodes(rpcUrls);
|
|
28
|
+
static create(rpcUrls, addresses, dateProvider) {
|
|
29
|
+
const ethCheatCodes = new EthCheatCodes(rpcUrls, dateProvider);
|
|
28
30
|
return new RollupCheatCodes(ethCheatCodes, addresses);
|
|
29
31
|
}
|
|
30
32
|
/** Returns the current slot */ async getSlot() {
|
|
31
33
|
const ts = BigInt((await this.client.getBlock()).timestamp);
|
|
32
|
-
return await this.rollup.read.getSlotAt([
|
|
34
|
+
return SlotNumber.fromBigInt(await this.rollup.read.getSlotAt([
|
|
33
35
|
ts
|
|
36
|
+
]));
|
|
37
|
+
}
|
|
38
|
+
/** Returns the number of seconds until the start of the given slot based on L1 block timestamp. */ async getSecondsUntilSlot(slot) {
|
|
39
|
+
const [currentTimestamp, targetTimestamp] = await Promise.all([
|
|
40
|
+
this.client.getBlock().then((b)=>BigInt(b.timestamp)),
|
|
41
|
+
this.rollup.read.getTimestampForSlot([
|
|
42
|
+
BigInt(slot)
|
|
43
|
+
])
|
|
34
44
|
]);
|
|
45
|
+
return Math.max(0, Number(targetTimestamp - currentTimestamp));
|
|
35
46
|
}
|
|
36
47
|
/** Returns the current epoch */ async getEpoch() {
|
|
37
48
|
const slotNumber = await this.getSlot();
|
|
38
|
-
return await this.rollup.read.getEpochAtSlot([
|
|
39
|
-
slotNumber
|
|
40
|
-
]);
|
|
49
|
+
return EpochNumber.fromBigInt(await this.rollup.read.getEpochAtSlot([
|
|
50
|
+
BigInt(slotNumber)
|
|
51
|
+
]));
|
|
41
52
|
}
|
|
42
53
|
/**
|
|
43
54
|
* Returns the pending and proven chain tips
|
|
44
55
|
* @returns The pending and proven chain tips
|
|
45
56
|
*/ async getTips() {
|
|
46
|
-
const
|
|
57
|
+
const { pending, proven } = await this.rollup.read.getTips();
|
|
47
58
|
return {
|
|
48
|
-
pending:
|
|
49
|
-
proven:
|
|
59
|
+
pending: CheckpointNumber.fromBigInt(pending),
|
|
60
|
+
proven: CheckpointNumber.fromBigInt(proven)
|
|
50
61
|
};
|
|
51
62
|
}
|
|
52
63
|
/**
|
|
53
64
|
* Logs the current state of the rollup contract.
|
|
54
65
|
*/ async debugRollup() {
|
|
55
66
|
const rollup = new RollupContract(this.client, this.rollup.address);
|
|
56
|
-
const pendingNum = await rollup.
|
|
57
|
-
const provenNum = await rollup.
|
|
67
|
+
const pendingNum = await rollup.getCheckpointNumber();
|
|
68
|
+
const provenNum = await rollup.getProvenCheckpointNumber();
|
|
58
69
|
const validators = await rollup.getAttesters();
|
|
59
70
|
const committee = await rollup.getCurrentEpochCommittee();
|
|
60
71
|
const archive = await rollup.archive();
|
|
61
72
|
const slot = await this.getSlot();
|
|
62
73
|
const epochNum = await rollup.getEpochNumberForSlotNumber(slot);
|
|
63
|
-
this.logger.info(`Pending
|
|
64
|
-
this.logger.info(`Proven
|
|
74
|
+
this.logger.info(`Pending checkpoint num: ${pendingNum}`);
|
|
75
|
+
this.logger.info(`Proven checkpoint num: ${provenNum}`);
|
|
65
76
|
this.logger.info(`Validators: ${validators.map((v)=>v.toString()).join(', ')}`);
|
|
66
77
|
this.logger.info(`Committee: ${committee?.map((v)=>v.toString()).join(', ')}`);
|
|
67
78
|
this.logger.info(`Archive: ${archive}`);
|
|
@@ -75,7 +86,7 @@ import { EthCheatCodes } from './eth_cheat_codes.js';
|
|
|
75
86
|
]);
|
|
76
87
|
return {
|
|
77
88
|
epochDuration,
|
|
78
|
-
slotDuration
|
|
89
|
+
slotDuration: Number(slotDuration)
|
|
79
90
|
};
|
|
80
91
|
}
|
|
81
92
|
/**
|
|
@@ -84,8 +95,9 @@ import { EthCheatCodes } from './eth_cheat_codes.js';
|
|
|
84
95
|
* @param opts - Options
|
|
85
96
|
*/ async advanceToEpoch(epoch, opts = {}) {
|
|
86
97
|
const { epochDuration: slotsInEpoch } = await this.getConfig();
|
|
98
|
+
const slotNumber = SlotNumber(Number(epoch) * Number(slotsInEpoch));
|
|
87
99
|
const timestamp = await this.rollup.read.getTimestampForSlot([
|
|
88
|
-
BigInt(
|
|
100
|
+
BigInt(slotNumber)
|
|
89
101
|
]) + BigInt(opts.offset ?? 0);
|
|
90
102
|
try {
|
|
91
103
|
await this.ethCheatCodes.warp(Number(timestamp), {
|
|
@@ -93,20 +105,22 @@ import { EthCheatCodes } from './eth_cheat_codes.js';
|
|
|
93
105
|
silent: true,
|
|
94
106
|
resetBlockInterval: true
|
|
95
107
|
});
|
|
96
|
-
this.logger.warn(`Warped to epoch ${epoch}
|
|
108
|
+
this.logger.warn(`Warped to epoch ${epoch}`, {
|
|
109
|
+
offset: opts.offset,
|
|
110
|
+
timestamp
|
|
111
|
+
});
|
|
97
112
|
} catch (err) {
|
|
98
113
|
this.logger.warn(`Warp to epoch ${epoch} failed: ${err}`);
|
|
99
114
|
}
|
|
100
115
|
return timestamp;
|
|
101
116
|
}
|
|
102
|
-
/** Warps time in L1 until the next epoch */ async advanceToNextEpoch(
|
|
117
|
+
/** Warps time in L1 until the next epoch */ async advanceToNextEpoch() {
|
|
103
118
|
const slot = await this.getSlot();
|
|
104
119
|
const { epochDuration, slotDuration } = await this.getConfig();
|
|
105
|
-
const slotsUntilNextEpoch = epochDuration - slot % epochDuration + 1n;
|
|
106
|
-
const timeToNextEpoch = slotsUntilNextEpoch * slotDuration;
|
|
120
|
+
const slotsUntilNextEpoch = epochDuration - BigInt(slot) % epochDuration + 1n;
|
|
121
|
+
const timeToNextEpoch = slotsUntilNextEpoch * BigInt(slotDuration);
|
|
107
122
|
const l1Timestamp = BigInt((await this.client.getBlock()).timestamp);
|
|
108
123
|
await this.ethCheatCodes.warp(Number(l1Timestamp + timeToNextEpoch), {
|
|
109
|
-
...opts,
|
|
110
124
|
silent: true,
|
|
111
125
|
resetBlockInterval: true
|
|
112
126
|
});
|
|
@@ -114,17 +128,18 @@ import { EthCheatCodes } from './eth_cheat_codes.js';
|
|
|
114
128
|
}
|
|
115
129
|
/** Warps time in L1 until the beginning of the next slot. */ async advanceToNextSlot() {
|
|
116
130
|
const currentSlot = await this.getSlot();
|
|
131
|
+
const nextSlot = SlotNumber(currentSlot + 1);
|
|
117
132
|
const timestamp = await this.rollup.read.getTimestampForSlot([
|
|
118
|
-
|
|
133
|
+
BigInt(nextSlot)
|
|
119
134
|
]);
|
|
120
135
|
await this.ethCheatCodes.warp(Number(timestamp), {
|
|
121
136
|
silent: true,
|
|
122
137
|
resetBlockInterval: true
|
|
123
138
|
});
|
|
124
|
-
this.logger.warn(`Advanced to slot ${
|
|
139
|
+
this.logger.warn(`Advanced to slot ${nextSlot}`);
|
|
125
140
|
return [
|
|
126
141
|
timestamp,
|
|
127
|
-
|
|
142
|
+
nextSlot
|
|
128
143
|
];
|
|
129
144
|
}
|
|
130
145
|
/**
|
|
@@ -132,8 +147,8 @@ import { EthCheatCodes } from './eth_cheat_codes.js';
|
|
|
132
147
|
* @param howMany - The number of slots to advance.
|
|
133
148
|
*/ async advanceSlots(howMany) {
|
|
134
149
|
const l1Timestamp = (await this.client.getBlock()).timestamp;
|
|
135
|
-
const slotDuration = await this.rollup.read.getSlotDuration();
|
|
136
|
-
const timeToWarp = BigInt(howMany) * slotDuration;
|
|
150
|
+
const slotDuration = Number(await this.rollup.read.getSlotDuration());
|
|
151
|
+
const timeToWarp = BigInt(howMany) * BigInt(slotDuration);
|
|
137
152
|
await this.ethCheatCodes.warp(l1Timestamp + timeToWarp, {
|
|
138
153
|
silent: true,
|
|
139
154
|
resetBlockInterval: true
|
|
@@ -145,34 +160,75 @@ import { EthCheatCodes } from './eth_cheat_codes.js';
|
|
|
145
160
|
this.logger.warn(`Advanced ${howMany} slots up to slot ${slot} in epoch ${epoch}`);
|
|
146
161
|
}
|
|
147
162
|
/**
|
|
148
|
-
* Marks the specified
|
|
149
|
-
* @param
|
|
150
|
-
*/ markAsProven(
|
|
163
|
+
* Marks the specified checkpoint (or latest if none) as proven
|
|
164
|
+
* @param maybeCheckpointNumber - The checkpoint number to mark as proven (defaults to latest pending)
|
|
165
|
+
*/ markAsProven(maybeCheckpointNumber) {
|
|
151
166
|
return this.ethCheatCodes.execWithPausedAnvil(async ()=>{
|
|
152
167
|
const tipsBefore = await this.getTips();
|
|
153
168
|
const { pending, proven } = tipsBefore;
|
|
154
|
-
let
|
|
155
|
-
if (
|
|
156
|
-
|
|
169
|
+
let checkpointNumber = maybeCheckpointNumber;
|
|
170
|
+
if (checkpointNumber === undefined || checkpointNumber > pending) {
|
|
171
|
+
checkpointNumber = pending;
|
|
157
172
|
}
|
|
158
|
-
if (
|
|
159
|
-
this.logger.debug(`
|
|
173
|
+
if (checkpointNumber <= proven) {
|
|
174
|
+
this.logger.debug(`Checkpoint ${checkpointNumber} is already proven`);
|
|
160
175
|
return;
|
|
161
176
|
}
|
|
162
177
|
// @note @LHerskind this is heavily dependent on the storage layout and size of values
|
|
163
178
|
// The rollupStore is a struct and if the size of elements or the struct changes, this can break
|
|
164
|
-
const
|
|
179
|
+
const provenCheckpointNumberSlot = hexToBigInt(RollupContract.stfStorageSlot);
|
|
165
180
|
// Need to pack it as a single 32 byte word
|
|
166
|
-
const newValue = BigInt(tipsBefore.pending) << 128n | BigInt(
|
|
167
|
-
await this.ethCheatCodes.store(EthAddress.fromString(this.rollup.address),
|
|
181
|
+
const newValue = BigInt(tipsBefore.pending) << 128n | BigInt(checkpointNumber);
|
|
182
|
+
await this.ethCheatCodes.store(EthAddress.fromString(this.rollup.address), provenCheckpointNumberSlot, newValue);
|
|
168
183
|
const tipsAfter = await this.getTips();
|
|
169
184
|
if (tipsAfter.pending < tipsAfter.proven) {
|
|
170
|
-
throw new Error('Overwrote pending tip to a
|
|
185
|
+
throw new Error('Overwrote pending tip to a checkpoint in the past');
|
|
171
186
|
}
|
|
172
187
|
this.logger.info(`Proven tip moved: ${tipsBefore.proven} -> ${tipsAfter.proven}. Pending tip: ${tipsAfter.pending}.`);
|
|
173
188
|
});
|
|
174
189
|
}
|
|
175
190
|
/**
|
|
191
|
+
* Overrides the inProgress field of the Inbox contract state
|
|
192
|
+
* @param howMuch - How many checkpoints to move it forward
|
|
193
|
+
*/ advanceInboxInProgress(howMuch) {
|
|
194
|
+
return this.ethCheatCodes.execWithPausedAnvil(async ()=>{
|
|
195
|
+
// Storage slot 2 contains the InboxState struct
|
|
196
|
+
const inboxStateSlot = 2n;
|
|
197
|
+
// Get inbox and its current state values
|
|
198
|
+
const inboxAddress = await this.rollup.read.getInbox();
|
|
199
|
+
const currentStateValue = await this.ethCheatCodes.load(EthAddress.fromString(inboxAddress), inboxStateSlot);
|
|
200
|
+
// Extract current values from the packed storage slot
|
|
201
|
+
// Storage layout: rollingHash (128 bits) | totalMessagesInserted (64 bits) | inProgress (64 bits)
|
|
202
|
+
const currentRollingHash = currentStateValue & (1n << 128n) - 1n;
|
|
203
|
+
const currentTotalMessages = currentStateValue >> 128n & (1n << 64n) - 1n;
|
|
204
|
+
const currentInProgress = currentStateValue >> 192n;
|
|
205
|
+
const newInProgress = currentInProgress + BigInt(howMuch);
|
|
206
|
+
// Pack new values: rollingHash (low 128 bits) | totalMessages (middle 64 bits) | inProgress (high 64 bits)
|
|
207
|
+
const newValue = BigInt(newInProgress) << 192n | currentTotalMessages << 128n | currentRollingHash;
|
|
208
|
+
await this.ethCheatCodes.store(EthAddress.fromString(inboxAddress), inboxStateSlot, newValue, {
|
|
209
|
+
silent: true
|
|
210
|
+
});
|
|
211
|
+
this.logger.warn(`Inbox inProgress advanced from ${currentInProgress} to ${newInProgress}`, {
|
|
212
|
+
inbox: inboxAddress,
|
|
213
|
+
oldValue: '0x' + currentStateValue.toString(16),
|
|
214
|
+
newValue: '0x' + newValue.toString(16),
|
|
215
|
+
rollingHash: currentRollingHash,
|
|
216
|
+
totalMessages: currentTotalMessages,
|
|
217
|
+
oldInProgress: currentInProgress,
|
|
218
|
+
newInProgress
|
|
219
|
+
});
|
|
220
|
+
return newInProgress;
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
insertOutbox(epoch, outHash) {
|
|
224
|
+
return this.ethCheatCodes.execWithPausedAnvil(async ()=>{
|
|
225
|
+
const outboxAddress = await this.rollup.read.getOutbox();
|
|
226
|
+
const epochRootSlot = OutboxContract.getEpochRootStorageSlot(epoch);
|
|
227
|
+
await this.ethCheatCodes.store(EthAddress.fromString(outboxAddress), epochRootSlot, outHash);
|
|
228
|
+
this.logger.warn(`Advanced outbox to epoch ${epoch} with out hash ${outHash}`);
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
176
232
|
* Executes an action impersonated as the owner of the Rollup contract.
|
|
177
233
|
* @param action - The action to execute
|
|
178
234
|
*/ async asOwner(action) {
|