@aztec/ethereum 0.0.1-commit.03f7ef2 → 0.0.1-commit.04d373f

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.
Files changed (188) hide show
  1. package/dest/client.d.ts +16 -2
  2. package/dest/client.d.ts.map +1 -1
  3. package/dest/client.js +27 -7
  4. package/dest/config.d.ts +24 -32
  5. package/dest/config.d.ts.map +1 -1
  6. package/dest/config.js +63 -62
  7. package/dest/contracts/chain_state_override.d.ts +78 -0
  8. package/dest/contracts/chain_state_override.d.ts.map +1 -0
  9. package/dest/contracts/chain_state_override.js +137 -0
  10. package/dest/contracts/fee_asset_handler.d.ts +6 -5
  11. package/dest/contracts/fee_asset_handler.d.ts.map +1 -1
  12. package/dest/contracts/fee_asset_handler.js +11 -9
  13. package/dest/contracts/fee_asset_price_oracle.d.ts +105 -0
  14. package/dest/contracts/fee_asset_price_oracle.d.ts.map +1 -0
  15. package/dest/contracts/fee_asset_price_oracle.js +656 -0
  16. package/dest/contracts/governance.d.ts +110 -33
  17. package/dest/contracts/governance.d.ts.map +1 -1
  18. package/dest/contracts/governance.js +207 -16
  19. package/dest/contracts/governance_proposer.d.ts +33 -1
  20. package/dest/contracts/governance_proposer.d.ts.map +1 -1
  21. package/dest/contracts/governance_proposer.js +438 -10
  22. package/dest/contracts/inbox.d.ts +22 -1
  23. package/dest/contracts/inbox.d.ts.map +1 -1
  24. package/dest/contracts/inbox.js +42 -2
  25. package/dest/contracts/index.d.ts +6 -3
  26. package/dest/contracts/index.d.ts.map +1 -1
  27. package/dest/contracts/index.js +5 -2
  28. package/dest/contracts/log.d.ts +13 -0
  29. package/dest/contracts/log.d.ts.map +1 -0
  30. package/dest/contracts/log.js +1 -0
  31. package/dest/contracts/multicall.d.ts +127 -12
  32. package/dest/contracts/multicall.d.ts.map +1 -1
  33. package/dest/contracts/multicall.js +201 -93
  34. package/dest/contracts/outbox.d.ts +58 -0
  35. package/dest/contracts/outbox.d.ts.map +1 -0
  36. package/dest/contracts/outbox.js +109 -0
  37. package/dest/contracts/registry.d.ts +3 -1
  38. package/dest/contracts/registry.d.ts.map +1 -1
  39. package/dest/contracts/registry.js +30 -1
  40. package/dest/contracts/rollup.d.ts +5409 -115
  41. package/dest/contracts/rollup.d.ts.map +1 -1
  42. package/dest/contracts/rollup.js +1027 -189
  43. package/dest/contracts/{tally_slashing_proposer.d.ts → slashing_proposer.d.ts} +3 -4
  44. package/dest/contracts/slashing_proposer.d.ts.map +1 -0
  45. package/dest/contracts/{tally_slashing_proposer.js → slashing_proposer.js} +18 -13
  46. package/dest/deploy_aztec_l1_contracts.d.ts +20 -9
  47. package/dest/deploy_aztec_l1_contracts.d.ts.map +1 -1
  48. package/dest/deploy_aztec_l1_contracts.js +113 -37
  49. package/dest/deploy_l1_contract.js +3 -3
  50. package/dest/generated/l1-contracts-defaults.d.ts +30 -0
  51. package/dest/generated/l1-contracts-defaults.d.ts.map +1 -0
  52. package/dest/generated/l1-contracts-defaults.js +30 -0
  53. package/dest/l1_artifacts.d.ts +18360 -16454
  54. package/dest/l1_artifacts.d.ts.map +1 -1
  55. package/dest/l1_artifacts.js +9 -24
  56. package/dest/l1_contract_addresses.d.ts +61 -65
  57. package/dest/l1_contract_addresses.d.ts.map +1 -1
  58. package/dest/l1_contract_addresses.js +101 -82
  59. package/dest/l1_reader.d.ts +5 -5
  60. package/dest/l1_reader.d.ts.map +1 -1
  61. package/dest/l1_reader.js +9 -7
  62. package/dest/l1_tx_utils/config.d.ts +7 -1
  63. package/dest/l1_tx_utils/config.d.ts.map +1 -1
  64. package/dest/l1_tx_utils/config.js +14 -1
  65. package/dest/l1_tx_utils/constants.d.ts +1 -1
  66. package/dest/l1_tx_utils/constants.js +2 -2
  67. package/dest/l1_tx_utils/factory.d.ts +18 -10
  68. package/dest/l1_tx_utils/factory.d.ts.map +1 -1
  69. package/dest/l1_tx_utils/factory.js +17 -7
  70. package/dest/l1_tx_utils/fee-strategies/index.d.ts +3 -2
  71. package/dest/l1_tx_utils/fee-strategies/index.d.ts.map +1 -1
  72. package/dest/l1_tx_utils/fee-strategies/index.js +2 -1
  73. package/dest/l1_tx_utils/fee-strategies/p75_competitive.d.ts +2 -12
  74. package/dest/l1_tx_utils/fee-strategies/p75_competitive.d.ts.map +1 -1
  75. package/dest/l1_tx_utils/fee-strategies/p75_competitive.js +36 -18
  76. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.d.ts +2 -11
  77. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.d.ts.map +1 -1
  78. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.js +37 -19
  79. package/dest/l1_tx_utils/fee-strategies/types.d.ts +14 -27
  80. package/dest/l1_tx_utils/fee-strategies/types.d.ts.map +1 -1
  81. package/dest/l1_tx_utils/fee-strategies/types.js +0 -21
  82. package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts +15 -15
  83. package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts.map +1 -1
  84. package/dest/l1_tx_utils/forwarder_l1_tx_utils.js +9 -15
  85. package/dest/l1_tx_utils/index-blobs.d.ts +3 -3
  86. package/dest/l1_tx_utils/index-blobs.d.ts.map +1 -1
  87. package/dest/l1_tx_utils/index-blobs.js +2 -2
  88. package/dest/l1_tx_utils/index.d.ts +2 -1
  89. package/dest/l1_tx_utils/index.d.ts.map +1 -1
  90. package/dest/l1_tx_utils/index.js +1 -0
  91. package/dest/l1_tx_utils/l1_fee_analyzer.d.ts +2 -2
  92. package/dest/l1_tx_utils/l1_fee_analyzer.d.ts.map +1 -1
  93. package/dest/l1_tx_utils/l1_fee_analyzer.js +3 -3
  94. package/dest/l1_tx_utils/l1_tx_utils.d.ts +26 -7
  95. package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -1
  96. package/dest/l1_tx_utils/l1_tx_utils.js +101 -66
  97. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts +1 -5
  98. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts.map +1 -1
  99. package/dest/l1_tx_utils/readonly_l1_tx_utils.js +25 -58
  100. package/dest/l1_tx_utils/tx_delayer.d.ts +58 -0
  101. package/dest/l1_tx_utils/tx_delayer.d.ts.map +1 -0
  102. package/dest/{test → l1_tx_utils}/tx_delayer.js +67 -37
  103. package/dest/publisher_manager.d.ts +21 -6
  104. package/dest/publisher_manager.d.ts.map +1 -1
  105. package/dest/publisher_manager.js +81 -7
  106. package/dest/queries.d.ts +14 -3
  107. package/dest/queries.d.ts.map +1 -1
  108. package/dest/queries.js +74 -7
  109. package/dest/test/chain_monitor.d.ts +23 -3
  110. package/dest/test/chain_monitor.d.ts.map +1 -1
  111. package/dest/test/chain_monitor.js +39 -4
  112. package/dest/test/eth_cheat_codes.d.ts +24 -4
  113. package/dest/test/eth_cheat_codes.d.ts.map +1 -1
  114. package/dest/test/eth_cheat_codes.js +17 -4
  115. package/dest/test/index.d.ts +1 -3
  116. package/dest/test/index.d.ts.map +1 -1
  117. package/dest/test/index.js +0 -2
  118. package/dest/test/rollup_cheat_codes.d.ts +34 -3
  119. package/dest/test/rollup_cheat_codes.d.ts.map +1 -1
  120. package/dest/test/rollup_cheat_codes.js +75 -6
  121. package/dest/test/start_anvil.d.ts +23 -3
  122. package/dest/test/start_anvil.d.ts.map +1 -1
  123. package/dest/test/start_anvil.js +143 -29
  124. package/dest/test/upgrade_utils.js +2 -2
  125. package/dest/utils.d.ts +9 -1
  126. package/dest/utils.d.ts.map +1 -1
  127. package/dest/utils.js +81 -12
  128. package/package.json +9 -10
  129. package/src/client.ts +28 -2
  130. package/src/config.ts +81 -63
  131. package/src/contracts/README.md +157 -0
  132. package/src/contracts/chain_state_override.ts +200 -0
  133. package/src/contracts/fee_asset_handler.ts +10 -7
  134. package/src/contracts/fee_asset_price_oracle.ts +285 -0
  135. package/src/contracts/governance.ts +279 -13
  136. package/src/contracts/governance_proposer.ts +58 -2
  137. package/src/contracts/inbox.ts +62 -2
  138. package/src/contracts/index.ts +5 -2
  139. package/src/contracts/log.ts +13 -0
  140. package/src/contracts/multicall.ts +243 -102
  141. package/src/contracts/outbox.ts +128 -0
  142. package/src/contracts/registry.ts +31 -1
  143. package/src/contracts/rollup.ts +728 -148
  144. package/src/contracts/{tally_slashing_proposer.ts → slashing_proposer.ts} +16 -14
  145. package/src/deploy_aztec_l1_contracts.ts +137 -47
  146. package/src/deploy_l1_contract.ts +3 -3
  147. package/src/generated/l1-contracts-defaults.ts +32 -0
  148. package/src/l1_artifacts.ts +12 -35
  149. package/src/l1_contract_addresses.ts +120 -94
  150. package/src/l1_reader.ts +17 -10
  151. package/src/l1_tx_utils/config.ts +20 -0
  152. package/src/l1_tx_utils/constants.ts +2 -2
  153. package/src/l1_tx_utils/factory.ts +31 -31
  154. package/src/l1_tx_utils/fee-strategies/index.ts +1 -1
  155. package/src/l1_tx_utils/fee-strategies/p75_competitive.ts +46 -42
  156. package/src/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.ts +49 -45
  157. package/src/l1_tx_utils/fee-strategies/types.ts +14 -46
  158. package/src/l1_tx_utils/forwarder_l1_tx_utils.ts +43 -54
  159. package/src/l1_tx_utils/index-blobs.ts +2 -2
  160. package/src/l1_tx_utils/index.ts +1 -0
  161. package/src/l1_tx_utils/l1_fee_analyzer.ts +2 -3
  162. package/src/l1_tx_utils/l1_tx_utils.ts +99 -48
  163. package/src/l1_tx_utils/readonly_l1_tx_utils.ts +31 -66
  164. package/src/{test → l1_tx_utils}/tx_delayer.ts +93 -56
  165. package/src/publisher_manager.ts +107 -10
  166. package/src/queries.ts +81 -7
  167. package/src/test/chain_monitor.ts +66 -4
  168. package/src/test/eth_cheat_codes.ts +16 -4
  169. package/src/test/index.ts +0 -2
  170. package/src/test/rollup_cheat_codes.ts +82 -6
  171. package/src/test/start_anvil.ts +177 -29
  172. package/src/test/upgrade_utils.ts +2 -2
  173. package/src/utils.ts +88 -14
  174. package/dest/contracts/empire_slashing_proposer.d.ts +0 -67
  175. package/dest/contracts/empire_slashing_proposer.d.ts.map +0 -1
  176. package/dest/contracts/empire_slashing_proposer.js +0 -209
  177. package/dest/contracts/tally_slashing_proposer.d.ts.map +0 -1
  178. package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts +0 -26
  179. package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts.map +0 -1
  180. package/dest/l1_tx_utils/l1_tx_utils_with_blobs.js +0 -26
  181. package/dest/test/delayed_tx_utils.d.ts +0 -13
  182. package/dest/test/delayed_tx_utils.d.ts.map +0 -1
  183. package/dest/test/delayed_tx_utils.js +0 -28
  184. package/dest/test/tx_delayer.d.ts +0 -36
  185. package/dest/test/tx_delayer.d.ts.map +0 -1
  186. package/src/contracts/empire_slashing_proposer.ts +0 -270
  187. package/src/l1_tx_utils/l1_tx_utils_with_blobs.ts +0 -77
  188. package/src/test/delayed_tx_utils.ts +0 -52
@@ -1,5 +1,5 @@
1
1
  import { InboxContract } from '@aztec/ethereum/contracts';
2
- import { EthAddress } from '@aztec/foundation/eth-address';
2
+ import { SlotNumber } from '@aztec/foundation/branded-types';
3
3
  import { createLogger } from '@aztec/foundation/log';
4
4
  import { promiseWithResolvers } from '@aztec/foundation/promise';
5
5
  import { DateProvider } from '@aztec/foundation/timer';
@@ -22,6 +22,7 @@ import { EventEmitter } from 'events';
22
22
  /** Total number of L2 messages pushed into the Inbox */ totalL2Messages;
23
23
  /** Current L2 epoch number */ l2EpochNumber;
24
24
  /** Current L2 slot number */ l2SlotNumber;
25
+ /** Current L2 fee data (components of the minimum fee per mana). */ l2FeeData;
25
26
  constructor(rollup, dateProvider = new DateProvider(), logger = createLogger('aztecjs:utils:chain_monitor'), intervalMs = 200){
26
27
  super(), this.rollup = rollup, this.dateProvider = dateProvider, this.logger = logger, this.intervalMs = intervalMs, this.running = new Set(), this.totalL2Messages = 0;
27
28
  this.l1Client = rollup.client;
@@ -125,13 +126,13 @@ import { EventEmitter } from 'events';
125
126
  let committee;
126
127
  if (l2Epoch !== this.l2EpochNumber) {
127
128
  this.l2EpochNumber = l2Epoch;
128
- committee = (await this.rollup.getCurrentEpochCommittee())?.map((addr)=>EthAddress.fromString(addr));
129
+ committee = await this.rollup.getCurrentEpochCommittee();
129
130
  this.emit('l2-epoch', {
130
131
  l2EpochNumber: l2Epoch,
131
132
  timestamp,
132
133
  committee
133
134
  });
134
- msg += ` starting new epoch ${this.l2EpochNumber} `;
135
+ msg += ` starting new epoch ${this.l2EpochNumber}`;
135
136
  }
136
137
  if (l2SlotNumber !== this.l2SlotNumber) {
137
138
  this.l2SlotNumber = l2SlotNumber;
@@ -140,6 +141,12 @@ import { EventEmitter } from 'events';
140
141
  timestamp
141
142
  });
142
143
  }
144
+ const feeData = await this.fetchFeeData(timestamp);
145
+ if (this.hasFeeDataChanged(feeData)) {
146
+ msg += ` with L2 min fee ${feeData.minFeePerMana}`;
147
+ this.l2FeeData = feeData;
148
+ this.emit('l2-fees', feeData);
149
+ }
143
150
  this.logger.info(msg, {
144
151
  currentTimestamp: this.dateProvider.nowInSeconds(),
145
152
  l1Timestamp: timestamp,
@@ -149,7 +156,8 @@ import { EventEmitter } from 'events';
149
156
  checkpointNumber: this.checkpointNumber,
150
157
  provenCheckpointNumber: this.provenCheckpointNumber,
151
158
  totalL2Messages: this.totalL2Messages,
152
- committee
159
+ committee,
160
+ ...this.l2FeeData
153
161
  });
154
162
  return this;
155
163
  }
@@ -167,6 +175,10 @@ import { EventEmitter } from 'events';
167
175
  this.on('l2-slot', listener);
168
176
  });
169
177
  }
178
+ async waitUntilNextL2Slot() {
179
+ const targetSlot = SlotNumber.add((await this.run()).l2SlotNumber, 1);
180
+ return this.waitUntilL2Slot(targetSlot);
181
+ }
170
182
  waitUntilL1Block(block) {
171
183
  const targetBlock = typeof block === 'bigint' ? block.valueOf() : block;
172
184
  if (this.l1BlockNumber >= targetBlock) {
@@ -211,4 +223,27 @@ import { EventEmitter } from 'events';
211
223
  this.on('checkpoint', listener);
212
224
  });
213
225
  }
226
+ async fetchFeeData(timestamp) {
227
+ const [components, minFeePerMana, l1Fees, ethPerFeeAsset, manaTarget] = await Promise.all([
228
+ this.rollup.getManaMinFeeComponentsAt(timestamp, true),
229
+ this.rollup.getManaMinFeeAt(timestamp, true),
230
+ this.rollup.getL1FeesAt(timestamp),
231
+ this.rollup.getEthPerFeeAsset(),
232
+ this.rollup.getManaTarget()
233
+ ]);
234
+ return {
235
+ ...components,
236
+ minFeePerMana,
237
+ l1BaseFee: l1Fees.baseFee,
238
+ l1BlobFee: l1Fees.blobFee,
239
+ ethPerFeeAsset,
240
+ manaTarget
241
+ };
242
+ }
243
+ hasFeeDataChanged(newData) {
244
+ if (!this.l2FeeData) {
245
+ return true;
246
+ }
247
+ 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;
248
+ }
214
249
  }
@@ -6,9 +6,21 @@ import type { ViemPublicClient } from '../types.js';
6
6
  * A class that provides utility functions for interacting with ethereum (L1).
7
7
  */
8
8
  export declare class EthCheatCodes {
9
+ /**
10
+ * The RPC URL to use for interacting with the chain
11
+ */
9
12
  rpcUrls: string[];
13
+ /**
14
+ * The date provider to use for time operations
15
+ */
10
16
  dateProvider: DateProvider | TestDateProvider;
17
+ /**
18
+ * The logger to use for the eth cheatcodes
19
+ */
11
20
  logger: import("@aztec/foundation/log").Logger;
21
+ /**
22
+ * The chain configuration provided to Anvil
23
+ */
12
24
  chain: Chain;
13
25
  readonly publicClient: ViemPublicClient;
14
26
  constructor(
@@ -46,10 +58,18 @@ export declare class EthCheatCodes {
46
58
  */
47
59
  chainId(): Promise<number>;
48
60
  /**
49
- * Get the current timestamp
50
- * @returns The current timestamp
61
+ * Get the timestamp of the latest mined L1 block.
62
+ * Note: this is NOT the current time — it's the discrete timestamp of the last block.
63
+ * Between blocks, the actual chain time advances but no new block reflects it.
64
+ * @returns The latest block timestamp in seconds
65
+ */
66
+ lastBlockTimestamp(): Promise<number>;
67
+ /**
68
+ * Get the timestamp of the pending L1 block — the block that anvil will mine next.
69
+ * Reflects any prior `setNextBlockTimestamp` call or the configured block interval.
70
+ * @returns The pending block timestamp in seconds.
51
71
  */
52
- timestamp(): Promise<number>;
72
+ nextBlockTimestamp(): Promise<number>;
53
73
  /**
54
74
  * Advance the chain by a number of blocks
55
75
  * @param numberOfBlocks - The number of blocks to mine
@@ -214,4 +234,4 @@ export type TxPoolTransaction = Transaction & {
214
234
  poolState: TxPoolState;
215
235
  };
216
236
  export {};
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoX2NoZWF0X2NvZGVzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9ldGhfY2hlYXRfY29kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBSTNELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlFLE9BQU8sRUFBRSxLQUFLLEtBQUssRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLFdBQVcsRUFBbUQsTUFBTSxNQUFNLENBQUM7QUFHL0csT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEQ7O0dBRUc7QUFDSCxxQkFBYSxhQUFhO0lBTWYsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUlqQixZQUFZLEVBQUUsWUFBWSxHQUFHLGdCQUFnQjtJQUk3QyxNQUFNO0lBSU4sS0FBSyxFQUFFLEtBQUs7SUFqQnJCLFNBQWdCLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQztJQUMvQztJQUNFOztPQUVHO0lBQ0ksT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUN4Qjs7T0FFRztJQUNJLFlBQVksRUFBRSxZQUFZLEdBQUcsZ0JBQWdCO0lBQ3BEOztPQUVHO0lBQ0ksTUFBTSx5Q0FBdUM7SUFDcEQ7O09BRUc7SUFDSSxLQUFLLEdBQUUsS0FBZSxFQU05QjtJQUVNLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsZ0JBRzNDO1lBRWEsU0FBUztJQU92Qjs7O09BR0c7SUFDVSxZQUFZLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQVE1QztJQUVEOzs7T0FHRztJQUNVLFdBQVcsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBRzFDO0lBRUQ7OztPQUdHO0lBQ1UsT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FHdEM7SUFFRDs7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
237
+ //# 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":"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"}
1
+ {"version":3,"file":"eth_cheat_codes.d.ts","sourceRoot":"","sources":["../../src/test/eth_cheat_codes.ts"],"names":[],"mappings":"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"}
@@ -70,9 +70,11 @@ import { foundry } from 'viem/chains';
70
70
  return parseInt(res, 16);
71
71
  }
72
72
  /**
73
- * Get the current timestamp
74
- * @returns The current timestamp
75
- */ async timestamp() {
73
+ * Get the timestamp of the latest mined L1 block.
74
+ * Note: this is NOT the current time — it's the discrete timestamp of the last block.
75
+ * Between blocks, the actual chain time advances but no new block reflects it.
76
+ * @returns The latest block timestamp in seconds
77
+ */ async lastBlockTimestamp() {
76
78
  const res = await this.doRpcCall('eth_getBlockByNumber', [
77
79
  'latest',
78
80
  true
@@ -80,6 +82,17 @@ import { foundry } from 'viem/chains';
80
82
  return parseInt(res.timestamp, 16);
81
83
  }
82
84
  /**
85
+ * Get the timestamp of the pending L1 block — the block that anvil will mine next.
86
+ * Reflects any prior `setNextBlockTimestamp` call or the configured block interval.
87
+ * @returns The pending block timestamp in seconds.
88
+ */ async nextBlockTimestamp() {
89
+ const res = await this.doRpcCall('eth_getBlockByNumber', [
90
+ 'pending',
91
+ false
92
+ ]);
93
+ return parseInt(res.timestamp, 16);
94
+ }
95
+ /**
83
96
  * Advance the chain by a number of blocks
84
97
  * @param numberOfBlocks - The number of blocks to mine
85
98
  */ async mine(numberOfBlocks = 1) {
@@ -536,7 +549,7 @@ import { foundry } from 'viem/chains';
536
549
  }
537
550
  }
538
551
  async syncDateProvider() {
539
- const timestamp = await this.timestamp();
552
+ const timestamp = await this.lastBlockTimestamp();
540
553
  if ('setTime' in this.dateProvider) {
541
554
  this.dateProvider.setTime(timestamp * 1000);
542
555
  }
@@ -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=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx5QkFBeUIsQ0FBQyJ9
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHlCQUF5QixDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,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"}
@@ -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';
@@ -15,6 +15,12 @@ export declare class RollupCheatCodes {
15
15
  static create(rpcUrls: string[], addresses: Pick<L1ContractAddresses, 'rollupAddress'>, dateProvider: DateProvider): RollupCheatCodes;
16
16
  /** Returns the current slot */
17
17
  getSlot(): Promise<SlotNumber>;
18
+ /** Returns the slot number at a given timestamp. */
19
+ getSlotAt(timestamp: bigint): Promise<SlotNumber>;
20
+ /** Returns the timestamp for the start of a given slot. */
21
+ getTimestampForSlot(slot: SlotNumber): Promise<bigint>;
22
+ /** Returns the number of seconds until the start of the given slot based on L1 block timestamp. */
23
+ getSecondsUntilSlot(slot: SlotNumber): Promise<number>;
18
24
  /** Returns the current epoch */
19
25
  getEpoch(): Promise<EpochNumber>;
20
26
  /**
@@ -47,6 +53,15 @@ export declare class RollupCheatCodes {
47
53
  advanceToNextEpoch(): Promise<void>;
48
54
  /** Warps time in L1 until the beginning of the next slot. */
49
55
  advanceToNextSlot(): Promise<(bigint | SlotNumber)[]>;
56
+ /**
57
+ * Warps L1 time to the start of an explicit absolute slot. Unlike `advanceSlots(N)` which is
58
+ * relative to the current L1 timestamp at call time and therefore races with real-time
59
+ * progression between query and warp, this lands at the slot regardless of latency.
60
+ *
61
+ * Throws if the requested slot is in the past relative to current L1 time (anvil cannot
62
+ * rewind).
63
+ */
64
+ advanceToSlot(slot: SlotNumber): Promise<bigint>;
50
65
  /**
51
66
  * Warps time in L1 equivalent to however many slots.
52
67
  * @param howMany - The number of slots to advance.
@@ -56,12 +71,13 @@ export declare class RollupCheatCodes {
56
71
  * Marks the specified checkpoint (or latest if none) as proven
57
72
  * @param maybeCheckpointNumber - The checkpoint number to mark as proven (defaults to latest pending)
58
73
  */
59
- markAsProven(maybeCheckpointNumber?: number | bigint): Promise<void>;
74
+ markAsProven(maybeCheckpointNumber?: CheckpointNumber): Promise<void>;
60
75
  /**
61
76
  * Overrides the inProgress field of the Inbox contract state
62
77
  * @param howMuch - How many checkpoints to move it forward
63
78
  */
64
79
  advanceInboxInProgress(howMuch: number | bigint): Promise<bigint>;
80
+ insertOutbox(epoch: EpochNumber, numCheckpointsInEpoch: number, outHash: bigint): Promise<void>;
65
81
  /**
66
82
  * Executes an action impersonated as the owner of the Rollup contract.
67
83
  * @param action - The action to execute
@@ -79,9 +95,24 @@ export declare class RollupCheatCodes {
79
95
  */
80
96
  bumpProvingCostPerMana(bumper: (before: bigint) => bigint): Promise<void>;
81
97
  /**
82
- * Directly updates proving cost per mana.
98
+ * Directly updates proving cost per mana. Throws if the on-chain tx reverts
99
+ * (e.g. rate-limit cooldown, step cap, or floor) instead of silently succeeding.
83
100
  * @param ethValue - The new proving cost per mana in ETH
84
101
  */
85
102
  setProvingCostPerMana(ethValue: bigint): Promise<void>;
103
+ /**
104
+ * Resets the 30-day proving-cost update cooldown enforced by FeeLib.updateProvingCostPerMana
105
+ * by zeroing `FeeStore.provingCostLastUpdate` directly in contract storage. Use between
106
+ * successive setProvingCostPerMana / bumpProvingCostPerMana calls so the later update can
107
+ * land instead of reverting. Does not touch L1 time, so PXE/tx-expiration state stays intact.
108
+ *
109
+ * @note This is tightly coupled to the `FeeStore` layout in
110
+ * l1-contracts/src/core/libraries/rollup/FeeLib.sol:
111
+ * slot + 0: CompressedFeeConfig config (uint256)
112
+ * slot + 1: L1GasOracleValues l1GasOracleValues (14+14+4 bytes, packed)
113
+ * slot + 2: uint64 provingCostLastUpdate (only member — zeroing the slot is safe)
114
+ * If the struct layout changes, update the offset below.
115
+ */
116
+ clearProvingCostCooldown(): Promise<void>;
86
117
  }
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sbHVwX2NoZWF0X2NvZGVzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9yb2xsdXBfY2hlYXRfY29kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHNUYsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTFELE9BQU8sRUFDTCxLQUFLLHFCQUFxQixFQUMxQixLQUFLLEdBQUcsRUFNVCxNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCw4Q0FBOEM7QUFDOUMscUJBQWEsZ0JBQWdCO0lBT3pCLE9BQU8sQ0FBQyxhQUFhO0lBTnZCLE9BQU8sQ0FBQyxNQUFNLENBQW1CO0lBQ2pDLE9BQU8sQ0FBQyxNQUFNLENBQTREO0lBRTFFLE9BQU8sQ0FBQyxNQUFNLENBQXVDO0lBRXJELFlBQ1UsYUFBYSxFQUFFLGFBQWEsRUFDcEMsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLENBQUMsRUFXdEQ7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUNYLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLENBQUMsRUFDckQsWUFBWSxFQUFFLFlBQVksR0FDekIsZ0JBQWdCLENBR2xCO0lBRUQsK0JBQStCO0lBQ2xCLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBRzFDO0lBRUQsZ0NBQWdDO0lBQ25CLFFBQVEsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLENBRzVDO0lBRUQ7OztPQUdHO0lBQ1UsT0FBTyxJQUFJLE9BQU8sQ0FBQztRQUM5Qiw0QkFBNEIsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUM7UUFDdkQsMkJBQTJCLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDO0tBQ3RELENBQUMsQ0FNRDtJQUVEOztPQUVHO0lBQ1UsV0FBVyxrQkFpQnZCO0lBRUQsMEVBQTBFO0lBQzdELFNBQVMsSUFBSSxPQUFPLENBQUM7UUFDaEMscUJBQXFCLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQztRQUM1QyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDO0tBQzNDLENBQUMsQ0FNRDtJQUVEOzs7O09BSUc7SUFDVSxjQUFjLENBQ3pCLEtBQUssRUFBRSxXQUFXLEVBQ2xCLElBQUksR0FBRTtRQUNKLHdCQUF3QjtRQUN4QixNQUFNLENBQUMsRUFBRSxNQUFNLENBQUM7S0FDWixtQkFZUDtJQUVELDRDQUE0QztJQUMvQixrQkFBa0Isa0JBVzlCO0lBRUQsNkRBQTZEO0lBQ2hELGlCQUFpQixxQ0FPN0I7SUFFRDs7O09BR0c7SUFDVSxZQUFZLENBQUMsT0FBTyxFQUFFLE1BQU0saUJBT3hDO0lBRUQ7OztPQUdHO0lBQ0ksWUFBWSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsTUFBTSxHQUFHLE1BQU0saUJBK0IxRDtJQUVEOzs7T0FHRztJQUNJLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FtQ3ZFO0lBRUQ7OztPQUdHO0lBQ1UsT0FBTyxDQUNsQixNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxPQUFPLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBTXpHO0lBRUQ7O09BRUc7SUFDVSxVQUFVLGtCQU90QjtJQUVELDRDQUE0QztJQUMvQixvQkFBb0Isa0JBTWhDO0lBRUQ7OztPQUdHO0lBQ1Usc0JBQXNCLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sS0FBSyxNQUFNLGlCQUlyRTtJQUVEOzs7T0FHRztJQUNVLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxNQUFNLGlCQVVsRDtDQUNGIn0=
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sbHVwX2NoZWF0X2NvZGVzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdC9yb2xsdXBfY2hlYXRfY29kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHNUYsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTFELE9BQU8sRUFDTCxLQUFLLHFCQUFxQixFQUMxQixLQUFLLEdBQUcsRUFPVCxNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCw4Q0FBOEM7QUFDOUMscUJBQWEsZ0JBQWdCO0lBT3pCLE9BQU8sQ0FBQyxhQUFhO0lBTnZCLE9BQU8sQ0FBQyxNQUFNLENBQW1CO0lBQ2pDLE9BQU8sQ0FBQyxNQUFNLENBQTREO0lBRTFFLE9BQU8sQ0FBQyxNQUFNLENBQXVDO0lBRXJELFlBQ1UsYUFBYSxFQUFFLGFBQWEsRUFDcEMsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLENBQUMsRUFXdEQ7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUNYLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxlQUFlLENBQUMsRUFDckQsWUFBWSxFQUFFLFlBQVksR0FDekIsZ0JBQWdCLENBR2xCO0lBRUQsK0JBQStCO0lBQ2xCLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBRzFDO0lBRUQsb0RBQW9EO0lBQ3ZDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FFN0Q7SUFFRCwyREFBMkQ7SUFDOUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBRWxFO0lBRUQsbUdBQW1HO0lBQ3RGLG1CQUFtQixDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQU1sRTtJQUVELGdDQUFnQztJQUNuQixRQUFRLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUc1QztJQUVEOzs7T0FHRztJQUNVLE9BQU8sSUFBSSxPQUFPLENBQUM7UUFDOUIsNEJBQTRCLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDO1FBQ3ZELDJCQUEyQixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQztLQUN0RCxDQUFDLENBTUQ7SUFFRDs7T0FFRztJQUNVLFdBQVcsa0JBaUJ2QjtJQUVELDBFQUEwRTtJQUM3RCxTQUFTLElBQUksT0FBTyxDQUFDO1FBQ2hDLHFCQUFxQixDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUM7UUFDNUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQztLQUMzQyxDQUFDLENBTUQ7SUFFRDs7OztPQUlHO0lBQ1UsY0FBYyxDQUN6QixLQUFLLEVBQUUsV0FBVyxFQUNsQixJQUFJLEdBQUU7UUFDSix3QkFBd0I7UUFDeEIsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDO0tBQ1osbUJBWVA7SUFFRCw0Q0FBNEM7SUFDL0Isa0JBQWtCLGtCQVc5QjtJQUVELDZEQUE2RDtJQUNoRCxpQkFBaUIscUNBTzdCO0lBRUQ7Ozs7Ozs7T0FPRztJQUNVLGFBQWEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxtQkFLMUM7SUFFRDs7O09BR0c7SUFDVSxZQUFZLENBQUMsT0FBTyxFQUFFLE1BQU0saUJBT3hDO0lBRUQ7OztPQUdHO0lBQ0ksWUFBWSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsZ0JBQWdCLGlCQStCM0Q7SUFFRDs7O09BR0c7SUFDSSxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBbUN2RTtJQUVNLFlBQVksQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFTckY7SUFFRDs7O09BR0c7SUFDVSxPQUFPLENBQ2xCLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixDQUFDLE9BQU8sU0FBUyxFQUFFLGdCQUFnQixDQUFDLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFNekc7SUFFRDs7T0FFRztJQUNVLFVBQVUsa0JBT3RCO0lBRUQsNENBQTRDO0lBQy9CLG9CQUFvQixrQkFNaEM7SUFFRDs7O09BR0c7SUFDVSxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxLQUFLLE1BQU0saUJBSXJFO0lBRUQ7Ozs7T0FJRztJQUNVLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxNQUFNLGlCQWlCbEQ7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDVSx3QkFBd0Isa0JBT3BDO0NBQ0YifQ==
@@ -1 +1 @@
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,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,MAAM,GAAG,MAAM,iBA+B1D;IAED;;;OAGG;IACI,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmCvE;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
+ {"version":3,"file":"rollup_cheat_codes.d.ts","sourceRoot":"","sources":["../../src/test/rollup_cheat_codes.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { RollupContract } from '@aztec/ethereum/contracts';
1
+ import { OutboxContract, RollupContract } from '@aztec/ethereum/contracts';
2
2
  import { CheckpointNumber, EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
3
3
  import { EthAddress } from '@aztec/foundation/eth-address';
4
4
  import { createLogger } from '@aztec/foundation/log';
5
5
  import { RollupAbi } from '@aztec/l1-artifacts/RollupAbi';
6
- import { createPublicClient, fallback, getContract, hexToBigInt, http } from 'viem';
6
+ import { createPublicClient, fallback, getContract, hexToBigInt, http, keccak256 } from 'viem';
7
7
  import { EthCheatCodes } from './eth_cheat_codes.js';
8
8
  /** Cheat codes for the L1 rollup contract. */ export class RollupCheatCodes {
9
9
  ethCheatCodes;
@@ -31,10 +31,27 @@ import { EthCheatCodes } from './eth_cheat_codes.js';
31
31
  }
32
32
  /** Returns the current slot */ async getSlot() {
33
33
  const ts = BigInt((await this.client.getBlock()).timestamp);
34
+ return this.getSlotAt(ts);
35
+ }
36
+ /** Returns the slot number at a given timestamp. */ async getSlotAt(timestamp) {
34
37
  return SlotNumber.fromBigInt(await this.rollup.read.getSlotAt([
35
- ts
38
+ timestamp
36
39
  ]));
37
40
  }
41
+ /** Returns the timestamp for the start of a given slot. */ async getTimestampForSlot(slot) {
42
+ return await this.rollup.read.getTimestampForSlot([
43
+ BigInt(slot)
44
+ ]);
45
+ }
46
+ /** Returns the number of seconds until the start of the given slot based on L1 block timestamp. */ async getSecondsUntilSlot(slot) {
47
+ const [currentTimestamp, targetTimestamp] = await Promise.all([
48
+ this.client.getBlock().then((b)=>BigInt(b.timestamp)),
49
+ this.rollup.read.getTimestampForSlot([
50
+ BigInt(slot)
51
+ ])
52
+ ]);
53
+ return Math.max(0, Number(targetTimestamp - currentTimestamp));
54
+ }
38
55
  /** Returns the current epoch */ async getEpoch() {
39
56
  const slotNumber = await this.getSlot();
40
57
  return EpochNumber.fromBigInt(await this.rollup.read.getEpochAtSlot([
@@ -86,7 +103,7 @@ import { EthCheatCodes } from './eth_cheat_codes.js';
86
103
  * @param opts - Options
87
104
  */ async advanceToEpoch(epoch, opts = {}) {
88
105
  const { epochDuration: slotsInEpoch } = await this.getConfig();
89
- const slotNumber = SlotNumber(epoch * Number(slotsInEpoch));
106
+ const slotNumber = SlotNumber(Number(epoch) * Number(slotsInEpoch));
90
107
  const timestamp = await this.rollup.read.getTimestampForSlot([
91
108
  BigInt(slotNumber)
92
109
  ]) + BigInt(opts.offset ?? 0);
@@ -134,6 +151,26 @@ import { EthCheatCodes } from './eth_cheat_codes.js';
134
151
  ];
135
152
  }
136
153
  /**
154
+ * Warps L1 time to the start of an explicit absolute slot. Unlike `advanceSlots(N)` which is
155
+ * relative to the current L1 timestamp at call time and therefore races with real-time
156
+ * progression between query and warp, this lands at the slot regardless of latency.
157
+ *
158
+ * Throws if the requested slot is in the past relative to current L1 time (anvil cannot
159
+ * rewind).
160
+ */ async advanceToSlot(slot) {
161
+ const timestamp = await this.rollup.read.getTimestampForSlot([
162
+ BigInt(slot)
163
+ ]);
164
+ await this.ethCheatCodes.warp(Number(timestamp), {
165
+ silent: true,
166
+ resetBlockInterval: true
167
+ });
168
+ this.logger.warn(`Advanced to slot ${slot}`, {
169
+ timestamp
170
+ });
171
+ return timestamp;
172
+ }
173
+ /**
137
174
  * Warps time in L1 equivalent to however many slots.
138
175
  * @param howMany - The number of slots to advance.
139
176
  */ async advanceSlots(howMany) {
@@ -211,6 +248,14 @@ import { EthCheatCodes } from './eth_cheat_codes.js';
211
248
  return newInProgress;
212
249
  });
213
250
  }
251
+ insertOutbox(epoch, numCheckpointsInEpoch, outHash) {
252
+ return this.ethCheatCodes.execWithPausedAnvil(async ()=>{
253
+ const outboxAddress = await this.rollup.read.getOutbox();
254
+ const epochRootSlot = OutboxContract.getEpochRootStorageSlot(epoch, numCheckpointsInEpoch);
255
+ await this.ethCheatCodes.store(EthAddress.fromString(outboxAddress), epochRootSlot, outHash);
256
+ this.logger.warn(`Advanced outbox to epoch ${epoch} numCheckpointsInEpoch ${numCheckpointsInEpoch} with out hash ${outHash}`);
257
+ });
258
+ }
214
259
  /**
215
260
  * Executes an action impersonated as the owner of the Rollup contract.
216
261
  * @param action - The action to execute
@@ -255,7 +300,8 @@ import { EthCheatCodes } from './eth_cheat_codes.js';
255
300
  await this.setProvingCostPerMana(newCost);
256
301
  }
257
302
  /**
258
- * Directly updates proving cost per mana.
303
+ * Directly updates proving cost per mana. Throws if the on-chain tx reverts
304
+ * (e.g. rate-limit cooldown, step cap, or floor) instead of silently succeeding.
259
305
  * @param ethValue - The new proving cost per mana in ETH
260
306
  */ async setProvingCostPerMana(ethValue) {
261
307
  await this.asOwner(async (account, rollup)=>{
@@ -266,10 +312,33 @@ import { EthCheatCodes } from './eth_cheat_codes.js';
266
312
  chain: this.client.chain,
267
313
  gasLimit: 1000000n
268
314
  });
269
- await this.client.waitForTransactionReceipt({
315
+ const receipt = await this.client.waitForTransactionReceipt({
270
316
  hash
271
317
  });
318
+ if (receipt.status !== 'success') {
319
+ throw new Error(`setProvingCostPerMana(${ethValue}) reverted on L1 (tx ${hash}). ` + `Likely FeeLib rate-limit (30-day cooldown or 1.5x step cap); ` + `use clearProvingCostCooldown() between successive updates.`);
320
+ }
272
321
  this.logger.warn(`Updated proving cost per mana to ${ethValue}`);
273
322
  });
274
323
  }
324
+ /**
325
+ * Resets the 30-day proving-cost update cooldown enforced by FeeLib.updateProvingCostPerMana
326
+ * by zeroing `FeeStore.provingCostLastUpdate` directly in contract storage. Use between
327
+ * successive setProvingCostPerMana / bumpProvingCostPerMana calls so the later update can
328
+ * land instead of reverting. Does not touch L1 time, so PXE/tx-expiration state stays intact.
329
+ *
330
+ * @note This is tightly coupled to the `FeeStore` layout in
331
+ * l1-contracts/src/core/libraries/rollup/FeeLib.sol:
332
+ * slot + 0: CompressedFeeConfig config (uint256)
333
+ * slot + 1: L1GasOracleValues l1GasOracleValues (14+14+4 bytes, packed)
334
+ * slot + 2: uint64 provingCostLastUpdate (only member — zeroing the slot is safe)
335
+ * If the struct layout changes, update the offset below.
336
+ */ async clearProvingCostCooldown() {
337
+ const feeStoreBaseSlot = hexToBigInt(keccak256(Buffer.from('aztec.fee.storage', 'utf-8')));
338
+ const provingCostLastUpdateSlot = feeStoreBaseSlot + 2n;
339
+ await this.ethCheatCodes.store(EthAddress.fromString(this.rollup.address), provingCostLastUpdateSlot, 0n, {
340
+ silent: true
341
+ });
342
+ this.logger.warn(`Cleared proving-cost update cooldown`);
343
+ }
275
344
  }
@@ -1,4 +1,11 @@
1
- import { type Anvil } from '@viem/anvil';
1
+ import type { TestDateProvider } from '@aztec/foundation/timer';
2
+ /** Minimal interface matching the @viem/anvil Anvil shape used by callers. */
3
+ export interface Anvil {
4
+ readonly port: number;
5
+ readonly host: string;
6
+ readonly status: 'listening' | 'idle';
7
+ stop(): Promise<void>;
8
+ }
2
9
  /**
3
10
  * Ensures there's a running Anvil instance and returns the RPC URL.
4
11
  */
@@ -9,12 +16,25 @@ export declare function startAnvil(opts?: {
9
16
  captureMethodCalls?: boolean;
10
17
  accounts?: number;
11
18
  chainId?: number;
12
- /** The hardfork to use - note: @viem/anvil types are out of date but 'cancun' and 'latest' work */
19
+ /** The hardfork to use (e.g. 'cancun', 'latest'). */
13
20
  hardfork?: string;
21
+ /**
22
+ * Number of slots per epoch used by anvil to compute the 'finalized' and 'safe' block tags.
23
+ * Anvil reports `finalized = latest - slotsInAnEpoch * 2`.
24
+ * Defaults to 1 so the finalized block advances immediately, making tests that check
25
+ * L1-finality-based logic work without needing hundreds of mined blocks.
26
+ */
27
+ slotsInAnEpoch?: number;
28
+ /**
29
+ * If provided, the date provider will be synced to anvil's block time on every mined block.
30
+ * This keeps the dateProvider in lockstep with anvil's chain time, avoiding drift between
31
+ * the wall clock and the L1 chain when computing L1 slot timestamps.
32
+ */
33
+ dateProvider?: TestDateProvider;
14
34
  }): Promise<{
15
35
  anvil: Anvil;
16
36
  methodCalls?: string[];
17
37
  rpcUrl: string;
18
38
  stop: () => Promise<void>;
19
39
  }>;
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfYW52aWwuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L3N0YXJ0X2FudmlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxLQUFLLEtBQUssRUFBZSxNQUFNLGFBQWEsQ0FBQztBQUd0RDs7R0FFRztBQUNILHdCQUFzQixVQUFVLENBQzlCLElBQUksR0FBRTtJQUNKLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNkLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNyQixHQUFHLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDZCxrQkFBa0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUM3QixRQUFRLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDbEIsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2pCLG1HQUFtRztJQUNuRyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDZCxHQUNMLE9BQU8sQ0FBQztJQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7SUFBQyxXQUFXLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFBQyxJQUFJLEVBQUUsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7Q0FBRSxDQUFDLENBaUQ5RiJ9
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfYW52aWwuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L3N0YXJ0X2FudmlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFNaEUsOEVBQThFO0FBQzlFLE1BQU0sV0FBVyxLQUFLO0lBQ3BCLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLFFBQVEsQ0FBQyxNQUFNLEVBQUUsV0FBVyxHQUFHLE1BQU0sQ0FBQztJQUN0QyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQ3ZCO0FBRUQ7O0dBRUc7QUFDSCx3QkFBc0IsVUFBVSxDQUM5QixJQUFJLEdBQUU7SUFDSixJQUFJLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDZCxXQUFXLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDckIsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQ2Qsa0JBQWtCLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDN0IsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLE9BQU8sQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNqQixxREFBcUQ7SUFDckQsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2xCOzs7OztPQUtHO0lBQ0gsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3hCOzs7O09BSUc7SUFDSCxZQUFZLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQztDQUM1QixHQUNMLE9BQU8sQ0FBQztJQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7SUFBQyxXQUFXLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFBQyxJQUFJLEVBQUUsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7Q0FBRSxDQUFDLENBK0g5RiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"start_anvil.d.ts","sourceRoot":"","sources":["../../src/test/start_anvil.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,KAAK,EAAe,MAAM,aAAa,CAAC;AAGtD;;GAEG;AACH,wBAAsB,UAAU,CAC9B,IAAI,GAAE;IACJ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mGAAmG;IACnG,QAAQ,CAAC,EAAE,MAAM,CAAC;CACd,GACL,OAAO,CAAC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAiD9F"}
1
+ {"version":3,"file":"start_anvil.d.ts","sourceRoot":"","sources":["../../src/test/start_anvil.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAMhE,8EAA8E;AAC9E,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC;IACtC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,IAAI,GAAE;IACJ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAC;CAC5B,GACL,OAAO,CAAC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CA+H9F"}