@aztec/ethereum 0.65.2 → 0.67.0

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 (41) hide show
  1. package/dest/constants.d.ts +1 -0
  2. package/dest/constants.d.ts.map +1 -1
  3. package/dest/constants.js +2 -1
  4. package/dest/contracts/rollup.d.ts +5 -0
  5. package/dest/contracts/rollup.d.ts.map +1 -1
  6. package/dest/contracts/rollup.js +16 -1
  7. package/dest/deploy_l1_contracts.d.ts +8 -4
  8. package/dest/deploy_l1_contracts.d.ts.map +1 -1
  9. package/dest/deploy_l1_contracts.js +124 -55
  10. package/dest/eth_cheat_codes.d.ts +156 -0
  11. package/dest/eth_cheat_codes.d.ts.map +1 -0
  12. package/dest/eth_cheat_codes.js +294 -0
  13. package/dest/index.d.ts +4 -1
  14. package/dest/index.d.ts.map +1 -1
  15. package/dest/index.js +5 -2
  16. package/dest/l1_contract_addresses.d.ts +4 -1
  17. package/dest/l1_contract_addresses.d.ts.map +1 -1
  18. package/dest/l1_contract_addresses.js +8 -1
  19. package/dest/l1_reader.d.ts +1 -0
  20. package/dest/l1_reader.d.ts.map +1 -1
  21. package/dest/l1_reader.js +5 -2
  22. package/dest/l1_tx_utils.d.ts +101 -0
  23. package/dest/l1_tx_utils.d.ts.map +1 -0
  24. package/dest/l1_tx_utils.js +261 -0
  25. package/dest/test/tx_delayer.d.ts +3 -3
  26. package/dest/test/tx_delayer.d.ts.map +1 -1
  27. package/dest/test/tx_delayer.js +3 -3
  28. package/dest/utils.d.ts +2 -2
  29. package/dest/utils.d.ts.map +1 -1
  30. package/dest/utils.js +2 -2
  31. package/package.json +9 -3
  32. package/src/constants.ts +1 -0
  33. package/src/contracts/rollup.ts +20 -0
  34. package/src/deploy_l1_contracts.ts +148 -63
  35. package/src/eth_cheat_codes.ts +320 -0
  36. package/src/index.ts +4 -1
  37. package/src/l1_contract_addresses.ts +7 -0
  38. package/src/l1_reader.ts +5 -1
  39. package/src/l1_tx_utils.ts +404 -0
  40. package/src/test/tx_delayer.ts +4 -4
  41. package/src/utils.ts +4 -4
@@ -0,0 +1,101 @@
1
+ import { type ConfigMappingsType } from '@aztec/foundation/config';
2
+ import { type Logger } from '@aztec/foundation/log';
3
+ import { type Account, type Address, type Chain, type Hex, type HttpTransport, type PublicClient, type TransactionReceipt, type WalletClient } from 'viem';
4
+ export interface L1TxUtilsConfig {
5
+ /**
6
+ * How much to increase calculated gas limit.
7
+ */
8
+ gasLimitBufferPercentage?: bigint;
9
+ /**
10
+ * Maximum gas price in gwei
11
+ */
12
+ maxGwei?: bigint;
13
+ /**
14
+ * Minimum gas price in gwei
15
+ */
16
+ minGwei?: bigint;
17
+ /**
18
+ * Priority fee bump percentage
19
+ */
20
+ priorityFeeBumpPercentage?: bigint;
21
+ /**
22
+ * How much to increase priority fee by each attempt (percentage)
23
+ */
24
+ priorityFeeRetryBumpPercentage?: bigint;
25
+ /**
26
+ * Maximum number of speed-up attempts
27
+ */
28
+ maxAttempts?: number;
29
+ /**
30
+ * How often to check tx status
31
+ */
32
+ checkIntervalMs?: number;
33
+ /**
34
+ * How long before considering tx stalled
35
+ */
36
+ stallTimeMs?: number;
37
+ /**
38
+ * How long to wait for a tx to be mined before giving up
39
+ */
40
+ txTimeoutMs?: number;
41
+ }
42
+ export declare const l1TxUtilsConfigMappings: ConfigMappingsType<L1TxUtilsConfig>;
43
+ export declare const defaultL1TxUtilsConfig: L1TxUtilsConfig;
44
+ export interface L1TxRequest {
45
+ to: Address | null;
46
+ data: Hex;
47
+ value?: bigint;
48
+ }
49
+ interface GasPrice {
50
+ maxFeePerGas: bigint;
51
+ maxPriorityFeePerGas: bigint;
52
+ }
53
+ export declare class L1TxUtils {
54
+ private readonly publicClient;
55
+ private readonly walletClient;
56
+ private readonly logger?;
57
+ private readonly config;
58
+ constructor(publicClient: PublicClient, walletClient: WalletClient<HttpTransport, Chain, Account>, logger?: Logger | undefined, config?: Partial<L1TxUtilsConfig>);
59
+ /**
60
+ * Sends a transaction with gas estimation and pricing
61
+ * @param request - The transaction request (to, data, value)
62
+ * @param gasConfig - Optional gas configuration
63
+ * @returns The transaction hash and parameters used
64
+ */
65
+ sendTransaction(request: L1TxRequest, _gasConfig?: Partial<L1TxUtilsConfig> & {
66
+ fixedGas?: bigint;
67
+ }): Promise<{
68
+ txHash: Hex;
69
+ gasLimit: bigint;
70
+ gasPrice: GasPrice;
71
+ }>;
72
+ /**
73
+ * Monitors a transaction until completion, handling speed-ups if needed
74
+ * @param request - Original transaction request (needed for speed-ups)
75
+ * @param initialTxHash - Hash of the initial transaction
76
+ * @param params - Parameters used in the initial transaction
77
+ * @param gasConfig - Optional gas configuration
78
+ */
79
+ monitorTransaction(request: L1TxRequest, initialTxHash: Hex, params: {
80
+ gasLimit: bigint;
81
+ }, _gasConfig?: Partial<L1TxUtilsConfig>): Promise<TransactionReceipt>;
82
+ /**
83
+ * Sends a transaction and monitors it until completion
84
+ * @param request - The transaction request (to, data, value)
85
+ * @param gasConfig - Optional gas configuration
86
+ * @returns The receipt of the successful transaction
87
+ */
88
+ sendAndMonitorTransaction(request: L1TxRequest, gasConfig?: Partial<L1TxUtilsConfig> & {
89
+ fixedGas?: bigint;
90
+ }): Promise<TransactionReceipt>;
91
+ /**
92
+ * Gets the current gas price with bounds checking
93
+ */
94
+ private getGasPrice;
95
+ /**
96
+ * Estimates gas and adds buffer
97
+ */
98
+ estimateGas(account: Account, request: L1TxRequest, _gasConfig?: L1TxUtilsConfig): Promise<bigint>;
99
+ }
100
+ export {};
101
+ //# sourceMappingURL=l1_tx_utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"l1_tx_utils.d.ts","sourceRoot":"","sources":["../src/l1_tx_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,KAAK,EAEV,KAAK,GAAG,EACR,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EAElB,MAAM,MAAM,CAAC;AAed,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC;;OAEG;IACH,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,CAAC,eAAe,CA8CvE,CAAC;AAEF,eAAO,MAAM,sBAAsB,iBAA6D,CAAC;AAEjG,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,QAAQ;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,SAAS;IAIlB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAL1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;gBAGtB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC,EACzD,MAAM,CAAC,oBAAQ,EAChC,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAQnC;;;;;OAKG;IACU,eAAe,CAC1B,OAAO,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5D,OAAO,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE,CAAC;IA6BjE;;;;;;OAMG;IACU,kBAAkB,CAC7B,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,GAAG,EAClB,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,EAC5B,UAAU,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GACpC,OAAO,CAAC,kBAAkB,CAAC;IAkH9B;;;;;OAKG;IACU,yBAAyB,CACpC,OAAO,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3D,OAAO,CAAC,kBAAkB,CAAC;IAK9B;;OAEG;YACW,WAAW;IA2DzB;;OAEG;IACU,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;CAShH"}
@@ -0,0 +1,261 @@
1
+ import { bigintConfigHelper, getDefaultConfig, numberConfigHelper, } from '@aztec/foundation/config';
2
+ import { makeBackoff, retry } from '@aztec/foundation/retry';
3
+ import { sleep } from '@aztec/foundation/sleep';
4
+ import { formatGwei, } from 'viem';
5
+ // 1_000_000_000 Gwei = 1 ETH
6
+ // 1_000_000_000 Wei = 1 Gwei
7
+ // 1_000_000_000_000_000_000 Wei = 1 ETH
8
+ const WEI_CONST = 1000000000n;
9
+ // setting a minimum bump percentage to 10% due to geth's implementation
10
+ // https://github.com/ethereum/go-ethereum/blob/e3d61e6db028c412f74bc4d4c7e117a9e29d0de0/core/txpool/legacypool/list.go#L298
11
+ const MIN_REPLACEMENT_BUMP_PERCENTAGE = 10n;
12
+ // Avg ethereum block time is ~12s
13
+ const BLOCK_TIME_MS = 12000;
14
+ export const l1TxUtilsConfigMappings = {
15
+ gasLimitBufferPercentage: {
16
+ description: 'How much to increase gas price by each attempt (percentage)',
17
+ env: 'L1_GAS_LIMIT_BUFFER_PERCENTAGE',
18
+ ...bigintConfigHelper(20n),
19
+ },
20
+ minGwei: {
21
+ description: 'Minimum gas price in gwei',
22
+ env: 'L1_GAS_PRICE_MIN',
23
+ ...bigintConfigHelper(1n),
24
+ },
25
+ maxGwei: {
26
+ description: 'Maximum gas price in gwei',
27
+ env: 'L1_GAS_PRICE_MAX',
28
+ ...bigintConfigHelper(100n),
29
+ },
30
+ priorityFeeBumpPercentage: {
31
+ description: 'How much to increase priority fee by each attempt (percentage)',
32
+ env: 'L1_PRIORITY_FEE_BUMP_PERCENTAGE',
33
+ ...bigintConfigHelper(20n),
34
+ },
35
+ priorityFeeRetryBumpPercentage: {
36
+ description: 'How much to increase priority fee by each retry attempt (percentage)',
37
+ env: 'L1_PRIORITY_FEE_RETRY_BUMP_PERCENTAGE',
38
+ ...bigintConfigHelper(50n),
39
+ },
40
+ maxAttempts: {
41
+ description: 'Maximum number of speed-up attempts',
42
+ env: 'L1_TX_MONITOR_MAX_ATTEMPTS',
43
+ ...numberConfigHelper(3),
44
+ },
45
+ checkIntervalMs: {
46
+ description: 'How often to check tx status',
47
+ env: 'L1_TX_MONITOR_CHECK_INTERVAL_MS',
48
+ ...numberConfigHelper(10000),
49
+ },
50
+ stallTimeMs: {
51
+ description: 'How long before considering tx stalled',
52
+ env: 'L1_TX_MONITOR_STALL_TIME_MS',
53
+ ...numberConfigHelper(30000),
54
+ },
55
+ txTimeoutMs: {
56
+ description: 'How long to wait for a tx to be mined before giving up. Set to 0 to disable.',
57
+ env: 'L1_TX_MONITOR_TX_TIMEOUT_MS',
58
+ ...numberConfigHelper(300000), // 5 mins
59
+ },
60
+ };
61
+ export const defaultL1TxUtilsConfig = getDefaultConfig(l1TxUtilsConfigMappings);
62
+ export class L1TxUtils {
63
+ constructor(publicClient, walletClient, logger, config) {
64
+ this.publicClient = publicClient;
65
+ this.walletClient = walletClient;
66
+ this.logger = logger;
67
+ this.config = {
68
+ ...defaultL1TxUtilsConfig,
69
+ ...(config || {}),
70
+ };
71
+ }
72
+ /**
73
+ * Sends a transaction with gas estimation and pricing
74
+ * @param request - The transaction request (to, data, value)
75
+ * @param gasConfig - Optional gas configuration
76
+ * @returns The transaction hash and parameters used
77
+ */
78
+ async sendTransaction(request, _gasConfig) {
79
+ const gasConfig = { ...this.config, ..._gasConfig };
80
+ const account = this.walletClient.account;
81
+ let gasLimit;
82
+ if (gasConfig.fixedGas) {
83
+ gasLimit = gasConfig.fixedGas;
84
+ }
85
+ else {
86
+ gasLimit = await this.estimateGas(account, request);
87
+ }
88
+ const gasPrice = await this.getGasPrice(gasConfig);
89
+ const txHash = await this.walletClient.sendTransaction({
90
+ ...request,
91
+ gas: gasLimit,
92
+ maxFeePerGas: gasPrice.maxFeePerGas,
93
+ maxPriorityFeePerGas: gasPrice.maxPriorityFeePerGas,
94
+ });
95
+ this.logger?.verbose(`Sent L1 transaction ${txHash}`, {
96
+ gasLimit,
97
+ maxFeePerGas: formatGwei(gasPrice.maxFeePerGas),
98
+ maxPriorityFeePerGas: formatGwei(gasPrice.maxPriorityFeePerGas),
99
+ });
100
+ return { txHash, gasLimit, gasPrice };
101
+ }
102
+ /**
103
+ * Monitors a transaction until completion, handling speed-ups if needed
104
+ * @param request - Original transaction request (needed for speed-ups)
105
+ * @param initialTxHash - Hash of the initial transaction
106
+ * @param params - Parameters used in the initial transaction
107
+ * @param gasConfig - Optional gas configuration
108
+ */
109
+ async monitorTransaction(request, initialTxHash, params, _gasConfig) {
110
+ const gasConfig = { ...this.config, ..._gasConfig };
111
+ const account = this.walletClient.account;
112
+ // Retry a few times, in case the tx is not yet propagated.
113
+ const tx = await retry(() => this.publicClient.getTransaction({ hash: initialTxHash }), `Getting L1 transaction ${initialTxHash}`, makeBackoff([1, 2, 3]), this.logger, true);
114
+ if (tx?.nonce === undefined || tx?.nonce === null) {
115
+ throw new Error(`Failed to get L1 transaction ${initialTxHash} nonce`);
116
+ }
117
+ const nonce = tx.nonce;
118
+ const txHashes = new Set([initialTxHash]);
119
+ let currentTxHash = initialTxHash;
120
+ let attempts = 0;
121
+ let lastAttemptSent = Date.now();
122
+ const initialTxTime = lastAttemptSent;
123
+ let txTimedOut = false;
124
+ while (!txTimedOut) {
125
+ try {
126
+ const currentNonce = await this.publicClient.getTransactionCount({ address: account.address });
127
+ if (currentNonce > nonce) {
128
+ for (const hash of txHashes) {
129
+ try {
130
+ const receipt = await this.publicClient.getTransactionReceipt({ hash });
131
+ if (receipt) {
132
+ this.logger?.debug(`L1 transaction ${hash} mined`);
133
+ if (receipt.status === 'reverted') {
134
+ this.logger?.error(`L1 transaction ${hash} reverted`);
135
+ }
136
+ return receipt;
137
+ }
138
+ }
139
+ catch (err) {
140
+ if (err instanceof Error && err.message.includes('reverted')) {
141
+ throw err;
142
+ }
143
+ }
144
+ }
145
+ }
146
+ // Retry a few times, in case the tx is not yet propagated.
147
+ const tx = await retry(() => this.publicClient.getTransaction({ hash: currentTxHash }), `Getting L1 transaction ${currentTxHash}`, makeBackoff([1, 2, 3]), this.logger, true);
148
+ const timePassed = Date.now() - lastAttemptSent;
149
+ if (tx && timePassed < gasConfig.stallTimeMs) {
150
+ this.logger?.debug(`L1 transaction ${currentTxHash} pending. Time passed: ${timePassed}ms.`);
151
+ // Check timeout before continuing
152
+ if (gasConfig.txTimeoutMs) {
153
+ txTimedOut = Date.now() - initialTxTime > gasConfig.txTimeoutMs;
154
+ if (txTimedOut) {
155
+ break;
156
+ }
157
+ }
158
+ await sleep(gasConfig.checkIntervalMs);
159
+ continue;
160
+ }
161
+ if (timePassed > gasConfig.stallTimeMs && attempts < gasConfig.maxAttempts) {
162
+ attempts++;
163
+ const newGasPrice = await this.getGasPrice(gasConfig, attempts, tx.maxFeePerGas && tx.maxPriorityFeePerGas
164
+ ? { maxFeePerGas: tx.maxFeePerGas, maxPriorityFeePerGas: tx.maxPriorityFeePerGas }
165
+ : undefined);
166
+ this.logger?.debug(`L1 transaction ${currentTxHash} appears stuck. Attempting speed-up ${attempts}/${gasConfig.maxAttempts} ` +
167
+ `with new priority fee ${formatGwei(newGasPrice.maxPriorityFeePerGas)} gwei`);
168
+ currentTxHash = await this.walletClient.sendTransaction({
169
+ ...request,
170
+ nonce,
171
+ gas: params.gasLimit,
172
+ maxFeePerGas: newGasPrice.maxFeePerGas,
173
+ maxPriorityFeePerGas: newGasPrice.maxPriorityFeePerGas,
174
+ });
175
+ txHashes.add(currentTxHash);
176
+ lastAttemptSent = Date.now();
177
+ }
178
+ await sleep(gasConfig.checkIntervalMs);
179
+ }
180
+ catch (err) {
181
+ this.logger?.warn(`Error monitoring tx ${currentTxHash}:`, err);
182
+ if (err.message?.includes('reverted')) {
183
+ throw err;
184
+ }
185
+ await sleep(gasConfig.checkIntervalMs);
186
+ }
187
+ // Check if tx has timed out.
188
+ if (gasConfig.txTimeoutMs) {
189
+ txTimedOut = Date.now() - initialTxTime > gasConfig.txTimeoutMs;
190
+ }
191
+ }
192
+ throw new Error(`L1 transaction ${currentTxHash} timed out`);
193
+ }
194
+ /**
195
+ * Sends a transaction and monitors it until completion
196
+ * @param request - The transaction request (to, data, value)
197
+ * @param gasConfig - Optional gas configuration
198
+ * @returns The receipt of the successful transaction
199
+ */
200
+ async sendAndMonitorTransaction(request, gasConfig) {
201
+ const { txHash, gasLimit } = await this.sendTransaction(request, gasConfig);
202
+ return this.monitorTransaction(request, txHash, { gasLimit }, gasConfig);
203
+ }
204
+ /**
205
+ * Gets the current gas price with bounds checking
206
+ */
207
+ async getGasPrice(_gasConfig, attempt = 0, previousGasPrice) {
208
+ const gasConfig = { ...this.config, ..._gasConfig };
209
+ const block = await this.publicClient.getBlock({ blockTag: 'latest' });
210
+ const baseFee = block.baseFeePerGas ?? 0n;
211
+ // Get initial priority fee from the network
212
+ let priorityFee = await this.publicClient.estimateMaxPriorityFeePerGas();
213
+ let maxFeePerGas = baseFee;
214
+ // Bump base fee so it's valid for next blocks if it stalls
215
+ const numBlocks = Math.ceil(gasConfig.stallTimeMs / BLOCK_TIME_MS);
216
+ for (let i = 0; i < numBlocks; i++) {
217
+ // each block can go up 12.5% from previous baseFee
218
+ maxFeePerGas = (maxFeePerGas * (1000n + 125n)) / 1000n;
219
+ }
220
+ if (attempt > 0) {
221
+ const configBump = gasConfig.priorityFeeRetryBumpPercentage ?? defaultL1TxUtilsConfig.priorityFeeRetryBumpPercentage;
222
+ const bumpPercentage = configBump > MIN_REPLACEMENT_BUMP_PERCENTAGE ? configBump : MIN_REPLACEMENT_BUMP_PERCENTAGE;
223
+ // Calculate minimum required fees based on previous attempt
224
+ const minPriorityFee = (previousGasPrice.maxPriorityFeePerGas * (100n + bumpPercentage)) / 100n;
225
+ const minMaxFee = (previousGasPrice.maxFeePerGas * (100n + bumpPercentage)) / 100n;
226
+ // Add priority fee to maxFeePerGas
227
+ maxFeePerGas += priorityFee;
228
+ // Use maximum between current network values and minimum required values
229
+ priorityFee = priorityFee > minPriorityFee ? priorityFee : minPriorityFee;
230
+ maxFeePerGas = maxFeePerGas > minMaxFee ? maxFeePerGas : minMaxFee;
231
+ }
232
+ else {
233
+ // first attempt, just bump priority fee
234
+ priorityFee = (priorityFee * (100n + (gasConfig.priorityFeeBumpPercentage || 0n))) / 100n;
235
+ maxFeePerGas += priorityFee;
236
+ }
237
+ // Ensure we don't exceed maxGwei
238
+ const maxGweiInWei = gasConfig.maxGwei * WEI_CONST;
239
+ maxFeePerGas = maxFeePerGas > maxGweiInWei ? maxGweiInWei : maxFeePerGas;
240
+ // Ensure priority fee doesn't exceed max fee
241
+ const maxPriorityFeePerGas = priorityFee > maxFeePerGas ? maxFeePerGas : priorityFee;
242
+ this.logger?.debug(`Computed gas price`, {
243
+ attempt,
244
+ baseFee: formatGwei(baseFee),
245
+ maxFeePerGas: formatGwei(maxFeePerGas),
246
+ maxPriorityFeePerGas: formatGwei(maxPriorityFeePerGas),
247
+ });
248
+ return { maxFeePerGas, maxPriorityFeePerGas };
249
+ }
250
+ /**
251
+ * Estimates gas and adds buffer
252
+ */
253
+ async estimateGas(account, request, _gasConfig) {
254
+ const gasConfig = { ...this.config, ..._gasConfig };
255
+ const initialEstimate = await this.publicClient.estimateGas({ account, ...request });
256
+ // Add buffer based on either fixed amount or percentage
257
+ const withBuffer = initialEstimate + (initialEstimate * (gasConfig.gasLimitBufferPercentage ?? 0n)) / 100n;
258
+ return withBuffer;
259
+ }
260
+ }
261
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfdHhfdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbDFfdHhfdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsa0JBQWtCLEdBQ25CLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFaEQsT0FBTyxFQVVMLFVBQVUsR0FDWCxNQUFNLE1BQU0sQ0FBQztBQUVkLDZCQUE2QjtBQUM3Qiw2QkFBNkI7QUFDN0Isd0NBQXdDO0FBRXhDLE1BQU0sU0FBUyxHQUFHLFdBQWMsQ0FBQztBQUVqQyx3RUFBd0U7QUFDeEUsNEhBQTRIO0FBQzVILE1BQU0sK0JBQStCLEdBQUcsR0FBRyxDQUFDO0FBRTVDLGtDQUFrQztBQUNsQyxNQUFNLGFBQWEsR0FBRyxLQUFNLENBQUM7QUF5QzdCLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUF3QztJQUMxRSx3QkFBd0IsRUFBRTtRQUN4QixXQUFXLEVBQUUsNkRBQTZEO1FBQzFFLEdBQUcsRUFBRSxnQ0FBZ0M7UUFDckMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7S0FDM0I7SUFDRCxPQUFPLEVBQUU7UUFDUCxXQUFXLEVBQUUsMkJBQTJCO1FBQ3hDLEdBQUcsRUFBRSxrQkFBa0I7UUFDdkIsR0FBRyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7S0FDMUI7SUFDRCxPQUFPLEVBQUU7UUFDUCxXQUFXLEVBQUUsMkJBQTJCO1FBQ3hDLEdBQUcsRUFBRSxrQkFBa0I7UUFDdkIsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7S0FDNUI7SUFDRCx5QkFBeUIsRUFBRTtRQUN6QixXQUFXLEVBQUUsZ0VBQWdFO1FBQzdFLEdBQUcsRUFBRSxpQ0FBaUM7UUFDdEMsR0FB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
@@ -1,7 +1,7 @@
1
- import { type DebugLogger } from '@aztec/foundation/log';
1
+ import { type Logger } from '@aztec/foundation/log';
2
2
  import { type Client, type Hex, type WalletClient } from 'viem';
3
- export declare function waitUntilBlock<T extends Client>(client: T, blockNumber: number | bigint, logger?: DebugLogger): Promise<boolean>;
4
- export declare function waitUntilL1Timestamp<T extends Client>(client: T, timestamp: number | bigint, logger?: DebugLogger): Promise<boolean>;
3
+ export declare function waitUntilBlock<T extends Client>(client: T, blockNumber: number | bigint, logger?: Logger): Promise<boolean>;
4
+ export declare function waitUntilL1Timestamp<T extends Client>(client: T, timestamp: number | bigint, logger?: Logger): Promise<boolean>;
5
5
  export interface Delayer {
6
6
  /** Returns the list of all txs (not just the delayed ones) sent through the attached client. */
7
7
  getTxs(): Hex[];
@@ -1 +1 @@
1
- {"version":3,"file":"tx_delayer.d.ts","sourceRoot":"","sources":["../../src/test/tx_delayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,uBAAuB,CAAC;AAI5E,OAAO,EACL,KAAK,MAAM,EACX,KAAK,GAAG,EAER,KAAK,YAAY,EAIlB,MAAM,MAAM,CAAC;AAEd,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,oBAgB7G;AAED,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,oBAuBjH;AAED,MAAM,WAAW,OAAO;IACtB,gGAAgG;IAChG,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,8EAA8E;IAC9E,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACxE,wEAAwE;IACxE,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;CAC3E;AAwBD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,YAAY,EAChD,MAAM,EAAE,CAAC,EACT,IAAI,EAAE;IAAE,oBAAoB,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAC9C;IAAE,MAAM,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAsDjC"}
1
+ {"version":3,"file":"tx_delayer.d.ts","sourceRoot":"","sources":["../../src/test/tx_delayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAIlE,OAAO,EACL,KAAK,MAAM,EACX,KAAK,GAAG,EAER,KAAK,YAAY,EAIlB,MAAM,MAAM,CAAC;AAEd,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,oBAgBxG;AAED,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,oBAuB5G;AAED,MAAM,WAAW,OAAO;IACtB,gGAAgG;IAChG,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,8EAA8E;IAC9E,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACxE,wEAAwE;IACxE,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;CAC3E;AAwBD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,YAAY,EAChD,MAAM,EAAE,CAAC,EACT,IAAI,EAAE;IAAE,oBAAoB,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAC9C;IAAE,MAAM,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAsDjC"}
@@ -1,4 +1,4 @@
1
- import { createDebugLogger } from '@aztec/foundation/log';
1
+ import { createLogger } from '@aztec/foundation/log';
2
2
  import { retryUntil } from '@aztec/foundation/retry';
3
3
  import { inspect } from 'util';
4
4
  import { keccak256, publicActions, walletActions, } from 'viem';
@@ -50,7 +50,7 @@ class DelayerImpl {
50
50
  * The delayer can be used to hold off the next tx to be sent until a given block number.
51
51
  */
52
52
  export function withDelayer(client, opts) {
53
- const logger = createDebugLogger('aztec:ethereum:tx_delayer');
53
+ const logger = createLogger('ethereum:tx_delayer');
54
54
  const delayer = new DelayerImpl(opts);
55
55
  const extended = client
56
56
  // Tweak sendRawTransaction so it uses the delay defined in the delayer.
@@ -99,4 +99,4 @@ export function withDelayer(client, opts) {
99
99
  }));
100
100
  return { client: extended, delayer };
101
101
  }
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfZGVsYXllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L3R4X2RlbGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFLTCxTQUFTLEVBQ1QsYUFBYSxFQUNiLGFBQWEsR0FDZCxNQUFNLE1BQU0sQ0FBQztBQUVkLE1BQU0sVUFBVSxjQUFjLENBQW1CLE1BQVMsRUFBRSxXQUE0QixFQUFFLE1BQW9CO0lBQzVHLE1BQU0sWUFBWSxHQUNoQixnQkFBZ0IsSUFBSSxNQUFNLElBQUksT0FBTyxNQUFNLENBQUMsY0FBYyxLQUFLLFVBQVU7UUFDdkUsQ0FBQyxDQUFFLE1BQWtDO1FBQ3JDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRW5DLE9BQU8sVUFBVSxDQUNmLEtBQUssSUFBSSxFQUFFO1FBQ1QsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLFlBQVksQ0FBQyxjQUFjLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvRSxNQUFNLEVBQUUsS0FBSyxDQUFDLG1CQUFtQixrQkFBa0IsbUJBQW1CLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDdEYsT0FBTyxrQkFBa0IsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkQsQ0FBQyxFQUNELHVCQUF1QixXQUFXLEVBQUUsRUFDcEMsRUFBRSxFQUNGLEdBQUcsQ0FDSixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBbUIsTUFBUyxFQUFFLFNBQTBCLEVBQUUsTUFBb0I7SUFDaEgsTUFBTSxZQUFZLEdBQ2hCLGdCQUFnQixJQUFJLE1BQU0sSUFBSSxPQUFPLE1BQU0sQ0FBQyxjQUFjLEtBQUssVUFBVTtRQUN2RSxDQUFDLENBQUUsTUFBa0M7UUFDckMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFbkMsSUFBSSxTQUFTLEdBQXVCLFNBQVMsQ0FBQztJQUM5QyxPQUFPLFVBQVUsQ0FDZixLQUFLLElBQUksRUFBRTtRQUNULE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxZQUFZLENBQUMsY0FBYyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0UsSUFBSSxrQkFBa0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNyQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxTQUFTLEdBQUcsa0JBQWtCLENBQUM7UUFDL0IsTUFBTSxZQUFZLEdBQUcsTUFBTSxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFDbEgsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQztRQUN6QyxNQUFNLEVBQUUsS0FBSyxDQUFDLHFCQUFxQixTQUFTLG1CQUFtQixTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQzdFLE9BQU8sU0FBUyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4QyxDQUFDLEVBQ0QsMkJBQTJCLFNBQVMsRUFBRSxFQUN0QyxFQUFFLEVBQ0YsR0FBRyxDQUNKLENBQUM7QUFDSixDQUFDO0FBV0QsTUFBTSxXQUFXO0lBQ2YsWUFBWSxJQUErQztRQUtwRCxhQUFRLEdBQW9FLFNBQVMsQ0FBQztRQUN0RixRQUFHLEdBQVUsRUFBRSxDQUFDO1FBTHJCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDaEUsQ0FBQztJQU1ELE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztJQUVELHFCQUFxQixDQUFDLGFBQThCO1FBQ2xELElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVELHlCQUF5QixDQUFDLFdBQTRCO1FBQ3BELElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDdkQsQ0FBQztDQUNGO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FDekIsTUFBUyxFQUNULElBQStDO0lBRS9DLE1BQU0sTUFBTSxHQUFHLGlCQUFpQixDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDOUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsTUFBTSxRQUFRLEdBQUcsTUFBTTtRQUNyQix3RUFBd0U7UUFDeEUscUdBQXFHO1FBQ3JHLCtGQUErRjtRQUMvRixpREFBaUQ7U0FDaEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQixLQUFLLENBQUMsa0JBQWtCLENBQUMsR0FBRyxJQUFJO1lBQzlCLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztnQkFDbkMsT0FBTyxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7Z0JBRTdCLE1BQU0sWUFBWSxHQUFHLE1BQWlDLENBQUM7Z0JBQ3ZELE1BQU0sSUFBSSxHQUNSLGVBQWUsSUFBSSxTQUFTO29CQUMxQixDQUFDLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsYUFBYSxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUM7b0JBQ3BFLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRXZHLHlFQUF5RTtnQkFDekUsTUFBTSxFQUFFLHFCQUFxQixFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMxQyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMscUJBQXFCLENBQUMsQ0FBQztnQkFDaEQsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLE1BQU0sVUFBVSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUVqRSxpR0FBaUc7Z0JBQ2pHLDhGQUE4RjtnQkFDOUYsdUJBQXVCO2dCQUN2QixLQUFLLElBQUk7cUJBQ04sSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO29CQUNmLE1BQU0sTUFBTSxHQUFHLE1BQU0sTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7b0JBQ3hELE1BQU0sQ0FBQyxJQUFJLENBQUMsOEJBQThCLE1BQU0sZUFBZSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNyRixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDM0IsQ0FBQyxDQUFDO3FCQUNELEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsOEJBQThCLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFFbkUsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO2dCQUN4RCxNQUFNLENBQUMsS0FBSyxDQUFDLHVCQUF1QixNQUFNLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDekIsT0FBTyxNQUFNLENBQUM7WUFDaEIsQ0FBQztRQUNILENBQUM7S0FDRixDQUFDLENBQUM7UUFDSCw2RUFBNkU7U0FDNUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGVBQWUsRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUMvRSxtRUFBbUU7U0FDbEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQixhQUFhLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQWE7UUFDbEQsY0FBYyxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjO0tBQ3JELENBQUMsQ0FBTSxDQUFDO0lBRVgsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDdkMsQ0FBQyJ9
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfZGVsYXllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L3R4X2RlbGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFLTCxTQUFTLEVBQ1QsYUFBYSxFQUNiLGFBQWEsR0FDZCxNQUFNLE1BQU0sQ0FBQztBQUVkLE1BQU0sVUFBVSxjQUFjLENBQW1CLE1BQVMsRUFBRSxXQUE0QixFQUFFLE1BQWU7SUFDdkcsTUFBTSxZQUFZLEdBQ2hCLGdCQUFnQixJQUFJLE1BQU0sSUFBSSxPQUFPLE1BQU0sQ0FBQyxjQUFjLEtBQUssVUFBVTtRQUN2RSxDQUFDLENBQUUsTUFBa0M7UUFDckMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFbkMsT0FBTyxVQUFVLENBQ2YsS0FBSyxJQUFJLEVBQUU7UUFDVCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sWUFBWSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sRUFBRSxLQUFLLENBQUMsbUJBQW1CLGtCQUFrQixtQkFBbUIsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUN0RixPQUFPLGtCQUFrQixJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuRCxDQUFDLEVBQ0QsdUJBQXVCLFdBQVcsRUFBRSxFQUNwQyxFQUFFLEVBQ0YsR0FBRyxDQUNKLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFtQixNQUFTLEVBQUUsU0FBMEIsRUFBRSxNQUFlO0lBQzNHLE1BQU0sWUFBWSxHQUNoQixnQkFBZ0IsSUFBSSxN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
package/dest/utils.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { type Fr } from '@aztec/foundation/fields';
2
- import { type DebugLogger } from '@aztec/foundation/log';
2
+ import { type Logger } from '@aztec/foundation/log';
3
3
  import { type Abi, type ContractEventName, type DecodeEventLogReturnType, type Hex, type Log } from 'viem';
4
4
  export interface L2Claim {
5
5
  claimSecret: Fr;
@@ -7,5 +7,5 @@ export interface L2Claim {
7
7
  messageHash: Hex;
8
8
  messageLeafIndex: bigint;
9
9
  }
10
- export declare function extractEvent<const TAbi extends Abi | readonly unknown[], TEventName extends ContractEventName<TAbi>, TEventType = DecodeEventLogReturnType<TAbi, TEventName, Hex[], undefined, true>>(logs: Log[], address: Hex, abi: TAbi, eventName: TEventName, filter?: (log: TEventType) => boolean, logger?: DebugLogger): TEventType;
10
+ export declare function extractEvent<const TAbi extends Abi | readonly unknown[], TEventName extends ContractEventName<TAbi>, TEventType = DecodeEventLogReturnType<TAbi, TEventName, Hex[], undefined, true>>(logs: Log[], address: Hex, abi: TAbi, eventName: TEventName, filter?: (log: TEventType) => boolean, logger?: Logger): TEventType;
11
11
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EACL,KAAK,GAAG,EACR,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,GAAG,EACR,KAAK,GAAG,EAET,MAAM,MAAM,CAAC;AAEd,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,EAAE,CAAC;IAChB,WAAW,EAAE,EAAE,CAAC;IAChB,WAAW,EAAE,GAAG,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,YAAY,CAC1B,KAAK,CAAC,IAAI,SAAS,GAAG,GAAG,SAAS,OAAO,EAAE,EAC3C,UAAU,SAAS,iBAAiB,CAAC,IAAI,CAAC,EAC1C,UAAU,GAAG,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,EAE/E,IAAI,EAAE,GAAG,EAAE,EACX,OAAO,EAAE,GAAG,EACZ,GAAG,EAAE,IAAI,EACT,SAAS,EAAE,UAAU,EACrB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,EACrC,MAAM,CAAC,EAAE,WAAW,GACnB,UAAU,CAMZ"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EACL,KAAK,GAAG,EACR,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,GAAG,EACR,KAAK,GAAG,EAET,MAAM,MAAM,CAAC;AAEd,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,EAAE,CAAC;IAChB,WAAW,EAAE,EAAE,CAAC;IAChB,WAAW,EAAE,GAAG,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,YAAY,CAC1B,KAAK,CAAC,IAAI,SAAS,GAAG,GAAG,SAAS,OAAO,EAAE,EAC3C,UAAU,SAAS,iBAAiB,CAAC,IAAI,CAAC,EAC1C,UAAU,GAAG,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,EAE/E,IAAI,EAAE,GAAG,EAAE,EACX,OAAO,EAAE,GAAG,EACZ,GAAG,EAAE,IAAI,EACT,SAAS,EAAE,UAAU,EACrB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,EACrC,MAAM,CAAC,EAAE,MAAM,GACd,UAAU,CAMZ"}
package/dest/utils.js CHANGED
@@ -8,7 +8,7 @@ export function extractEvent(logs, address, abi, eventName, filter, logger) {
8
8
  }
9
9
  function tryExtractEvent(logs, address, abi, eventName, filter, logger) {
10
10
  for (const log of logs) {
11
- if (log.address === address) {
11
+ if (log.address.toLowerCase() === address.toLowerCase()) {
12
12
  try {
13
13
  const decodedEvent = decodeEventLog({ abi, ...log });
14
14
  if (decodedEvent.eventName === eventName) {
@@ -24,4 +24,4 @@ function tryExtractEvent(logs, address, abi, eventName, filter, logger) {
24
24
  }
25
25
  }
26
26
  }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQU1MLGNBQWMsR0FDZixNQUFNLE1BQU0sQ0FBQztBQVNkLE1BQU0sVUFBVSxZQUFZLENBSzFCLElBQVcsRUFDWCxPQUFZLEVBQ1osR0FBUyxFQUNULFNBQXFCLEVBQ3JCLE1BQXFDLEVBQ3JDLE1BQW9CO0lBRXBCLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLFNBQVMsaUJBQWlCLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUt0QixJQUFXLEVBQ1gsT0FBWSxFQUNaLEdBQVMsRUFDVCxTQUFxQixFQUNyQixNQUFxQyxFQUNyQyxNQUFvQjtJQUVwQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksR0FBRyxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDckQsSUFBSSxZQUFZLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUN6QyxNQUFNLGFBQWEsR0FBRyxZQUEwQixDQUFDO29CQUNqRCxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO3dCQUNyQyxPQUFPLGFBQWEsQ0FBQztvQkFDdkIsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxFQUFFLElBQUksQ0FBQywyQ0FBMkMsT0FBTyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDN0UsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyJ9
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQU1MLGNBQWMsR0FDZixNQUFNLE1BQU0sQ0FBQztBQVNkLE1BQU0sVUFBVSxZQUFZLENBSzFCLElBQVcsRUFDWCxPQUFZLEVBQ1osR0FBUyxFQUNULFNBQXFCLEVBQ3JCLE1BQXFDLEVBQ3JDLE1BQWU7SUFFZixNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM3RSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxTQUFTLGlCQUFpQixPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FLdEIsSUFBVyxFQUNYLE9BQVksRUFDWixHQUFTLEVBQ1QsU0FBcUIsRUFDckIsTUFBcUMsRUFDckMsTUFBZTtJQUVmLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQztnQkFDSCxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLFlBQVksQ0FBQyxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQ3pDLE1BQU0sYUFBYSxHQUFHLFlBQTBCLENBQUM7b0JBQ2pELElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7d0JBQ3JDLE9BQU8sYUFBYSxDQUFDO29CQUN2QixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDYixNQUFNLEVBQUUsSUFBSSxDQUFDLDJDQUEyQyxPQUFPLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztZQUM3RSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/ethereum",
3
- "version": "0.65.2",
3
+ "version": "0.67.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -28,8 +28,8 @@
28
28
  "../package.common.json"
29
29
  ],
30
30
  "dependencies": {
31
- "@aztec/foundation": "0.65.2",
32
- "@aztec/l1-artifacts": "0.65.2",
31
+ "@aztec/foundation": "0.67.0",
32
+ "@aztec/l1-artifacts": "0.67.0",
33
33
  "@viem/anvil": "^0.0.10",
34
34
  "dotenv": "^16.0.3",
35
35
  "get-port": "^7.1.0",
@@ -41,6 +41,8 @@
41
41
  "@jest/globals": "^29.5.0",
42
42
  "@types/jest": "^29.5.0",
43
43
  "@types/node": "^18.14.6",
44
+ "@viem/anvil": "^0.0.10",
45
+ "get-port": "^7.1.0",
44
46
  "jest": "^29.5.0",
45
47
  "ts-node": "^10.9.1",
46
48
  "typescript": "^5.0.4"
@@ -83,6 +85,10 @@
83
85
  "summaryThreshold": 9999
84
86
  }
85
87
  ]
88
+ ],
89
+ "testTimeout": 30000,
90
+ "setupFiles": [
91
+ "../../foundation/src/jest/setup.mjs"
86
92
  ]
87
93
  },
88
94
  "engines": {
package/src/constants.ts CHANGED
@@ -2,3 +2,4 @@ import { type Hex } from 'viem';
2
2
 
3
3
  export const NULL_KEY: Hex = `0x${'0000000000000000000000000000000000000000000000000000000000000000'}`;
4
4
  export const AZTEC_TEST_CHAIN_ID = 677692;
5
+ export const MINIMUM_STAKE = BigInt(100e18);
@@ -44,6 +44,26 @@ export class RollupContract {
44
44
  return this.rollup.read.getCurrentSlot();
45
45
  }
46
46
 
47
+ getCommitteeAt(timestamp: bigint) {
48
+ return this.rollup.read.getCommitteeAt([timestamp]);
49
+ }
50
+
51
+ getSampleSeedAt(timestamp: bigint) {
52
+ return this.rollup.read.getSampleSeedAt([timestamp]);
53
+ }
54
+
55
+ getCurrentSampleSeed() {
56
+ return this.rollup.read.getCurrentSampleSeed();
57
+ }
58
+
59
+ getCurrentEpochCommittee() {
60
+ return this.rollup.read.getCurrentEpochCommittee();
61
+ }
62
+
63
+ getCurrentProposer() {
64
+ return this.rollup.read.getCurrentProposer();
65
+ }
66
+
47
67
  async getEpochNumber(blockNumber?: bigint) {
48
68
  blockNumber ??= await this.getBlockNumber();
49
69
  return this.rollup.read.getEpochForBlock([BigInt(blockNumber)]);