@aztec/ethereum 0.65.1 → 0.66.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.
- package/dest/constants.d.ts +1 -0
- package/dest/constants.d.ts.map +1 -1
- package/dest/constants.js +2 -1
- package/dest/contracts/rollup.d.ts +5 -0
- package/dest/contracts/rollup.d.ts.map +1 -1
- package/dest/contracts/rollup.js +16 -1
- package/dest/deploy_l1_contracts.d.ts +5 -1
- package/dest/deploy_l1_contracts.d.ts.map +1 -1
- package/dest/deploy_l1_contracts.js +109 -41
- package/dest/eth_cheat_codes.d.ts +155 -0
- package/dest/eth_cheat_codes.d.ts.map +1 -0
- package/dest/eth_cheat_codes.js +291 -0
- package/dest/index.d.ts +4 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +5 -2
- package/dest/l1_contract_addresses.d.ts +4 -1
- package/dest/l1_contract_addresses.d.ts.map +1 -1
- package/dest/l1_contract_addresses.js +8 -1
- package/dest/l1_reader.d.ts +1 -0
- package/dest/l1_reader.d.ts.map +1 -1
- package/dest/l1_reader.js +5 -2
- package/dest/l1_tx_utils.d.ts +100 -0
- package/dest/l1_tx_utils.d.ts.map +1 -0
- package/dest/l1_tx_utils.js +253 -0
- package/dest/utils.js +2 -2
- package/package.json +5 -3
- package/src/constants.ts +1 -0
- package/src/contracts/rollup.ts +20 -0
- package/src/deploy_l1_contracts.ts +127 -44
- package/src/eth_cheat_codes.ts +316 -0
- package/src/index.ts +4 -1
- package/src/l1_contract_addresses.ts +7 -0
- package/src/l1_reader.ts +5 -1
- package/src/l1_tx_utils.ts +400 -0
- package/src/utils.ts +1 -1
|
@@ -0,0 +1,253 @@
|
|
|
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} with gas limit ${gasLimit} and price ${formatGwei(gasPrice.maxFeePerGas)} gwei`);
|
|
96
|
+
return { txHash, gasLimit, gasPrice };
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Monitors a transaction until completion, handling speed-ups if needed
|
|
100
|
+
* @param request - Original transaction request (needed for speed-ups)
|
|
101
|
+
* @param initialTxHash - Hash of the initial transaction
|
|
102
|
+
* @param params - Parameters used in the initial transaction
|
|
103
|
+
* @param gasConfig - Optional gas configuration
|
|
104
|
+
*/
|
|
105
|
+
async monitorTransaction(request, initialTxHash, params, _gasConfig) {
|
|
106
|
+
const gasConfig = { ...this.config, ..._gasConfig };
|
|
107
|
+
const account = this.walletClient.account;
|
|
108
|
+
// Retry a few times, in case the tx is not yet propagated.
|
|
109
|
+
const tx = await retry(() => this.publicClient.getTransaction({ hash: initialTxHash }), `Getting L1 transaction ${initialTxHash}`, makeBackoff([1, 2, 3]), this.logger, true);
|
|
110
|
+
if (tx?.nonce === undefined || tx?.nonce === null) {
|
|
111
|
+
throw new Error(`Failed to get L1 transaction ${initialTxHash} nonce`);
|
|
112
|
+
}
|
|
113
|
+
const nonce = tx.nonce;
|
|
114
|
+
const txHashes = new Set([initialTxHash]);
|
|
115
|
+
let currentTxHash = initialTxHash;
|
|
116
|
+
let attempts = 0;
|
|
117
|
+
let lastAttemptSent = Date.now();
|
|
118
|
+
const initialTxTime = lastAttemptSent;
|
|
119
|
+
let txTimedOut = false;
|
|
120
|
+
while (!txTimedOut) {
|
|
121
|
+
try {
|
|
122
|
+
const currentNonce = await this.publicClient.getTransactionCount({ address: account.address });
|
|
123
|
+
if (currentNonce > nonce) {
|
|
124
|
+
for (const hash of txHashes) {
|
|
125
|
+
try {
|
|
126
|
+
const receipt = await this.publicClient.getTransactionReceipt({ hash });
|
|
127
|
+
if (receipt) {
|
|
128
|
+
this.logger?.debug(`L1 Transaction ${hash} confirmed`);
|
|
129
|
+
if (receipt.status === 'reverted') {
|
|
130
|
+
this.logger?.error(`L1 Transaction ${hash} reverted`);
|
|
131
|
+
}
|
|
132
|
+
return receipt;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
if (err instanceof Error && err.message.includes('reverted')) {
|
|
137
|
+
throw err;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Retry a few times, in case the tx is not yet propagated.
|
|
143
|
+
const tx = await retry(() => this.publicClient.getTransaction({ hash: currentTxHash }), `Getting L1 transaction ${currentTxHash}`, makeBackoff([1, 2, 3]), this.logger, true);
|
|
144
|
+
const timePassed = Date.now() - lastAttemptSent;
|
|
145
|
+
if (tx && timePassed < gasConfig.stallTimeMs) {
|
|
146
|
+
this.logger?.debug(`L1 Transaction ${currentTxHash} pending. Time passed: ${timePassed}ms`);
|
|
147
|
+
// Check timeout before continuing
|
|
148
|
+
if (gasConfig.txTimeoutMs) {
|
|
149
|
+
txTimedOut = Date.now() - initialTxTime > gasConfig.txTimeoutMs;
|
|
150
|
+
if (txTimedOut) {
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
await sleep(gasConfig.checkIntervalMs);
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
if (timePassed > gasConfig.stallTimeMs && attempts < gasConfig.maxAttempts) {
|
|
158
|
+
attempts++;
|
|
159
|
+
const newGasPrice = await this.getGasPrice(gasConfig, attempts, tx.maxFeePerGas && tx.maxPriorityFeePerGas
|
|
160
|
+
? { maxFeePerGas: tx.maxFeePerGas, maxPriorityFeePerGas: tx.maxPriorityFeePerGas }
|
|
161
|
+
: undefined);
|
|
162
|
+
this.logger?.debug(`L1 Transaction ${currentTxHash} appears stuck. Attempting speed-up ${attempts}/${gasConfig.maxAttempts} ` +
|
|
163
|
+
`with new priority fee ${formatGwei(newGasPrice.maxPriorityFeePerGas)} gwei`);
|
|
164
|
+
currentTxHash = await this.walletClient.sendTransaction({
|
|
165
|
+
...request,
|
|
166
|
+
nonce,
|
|
167
|
+
gas: params.gasLimit,
|
|
168
|
+
maxFeePerGas: newGasPrice.maxFeePerGas,
|
|
169
|
+
maxPriorityFeePerGas: newGasPrice.maxPriorityFeePerGas,
|
|
170
|
+
});
|
|
171
|
+
txHashes.add(currentTxHash);
|
|
172
|
+
lastAttemptSent = Date.now();
|
|
173
|
+
}
|
|
174
|
+
await sleep(gasConfig.checkIntervalMs);
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
this.logger?.warn(`Error monitoring tx ${currentTxHash}:`, err);
|
|
178
|
+
if (err.message?.includes('reverted')) {
|
|
179
|
+
throw err;
|
|
180
|
+
}
|
|
181
|
+
await sleep(gasConfig.checkIntervalMs);
|
|
182
|
+
}
|
|
183
|
+
// Check if tx has timed out.
|
|
184
|
+
if (gasConfig.txTimeoutMs) {
|
|
185
|
+
txTimedOut = Date.now() - initialTxTime > gasConfig.txTimeoutMs;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
throw new Error(`L1 Transaction ${currentTxHash} timed out`);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Sends a transaction and monitors it until completion
|
|
192
|
+
* @param request - The transaction request (to, data, value)
|
|
193
|
+
* @param gasConfig - Optional gas configuration
|
|
194
|
+
* @returns The receipt of the successful transaction
|
|
195
|
+
*/
|
|
196
|
+
async sendAndMonitorTransaction(request, gasConfig) {
|
|
197
|
+
const { txHash, gasLimit } = await this.sendTransaction(request, gasConfig);
|
|
198
|
+
return this.monitorTransaction(request, txHash, { gasLimit }, gasConfig);
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Gets the current gas price with bounds checking
|
|
202
|
+
*/
|
|
203
|
+
async getGasPrice(_gasConfig, attempt = 0, previousGasPrice) {
|
|
204
|
+
const gasConfig = { ...this.config, ..._gasConfig };
|
|
205
|
+
const block = await this.publicClient.getBlock({ blockTag: 'latest' });
|
|
206
|
+
const baseFee = block.baseFeePerGas ?? 0n;
|
|
207
|
+
// Get initial priority fee from the network
|
|
208
|
+
let priorityFee = await this.publicClient.estimateMaxPriorityFeePerGas();
|
|
209
|
+
let maxFeePerGas = baseFee;
|
|
210
|
+
// Bump base fee so it's valid for next blocks if it stalls
|
|
211
|
+
const numBlocks = Math.ceil(gasConfig.stallTimeMs / BLOCK_TIME_MS);
|
|
212
|
+
for (let i = 0; i < numBlocks; i++) {
|
|
213
|
+
// each block can go up 12.5% from previous baseFee
|
|
214
|
+
maxFeePerGas = (maxFeePerGas * (1000n + 125n)) / 1000n;
|
|
215
|
+
}
|
|
216
|
+
if (attempt > 0) {
|
|
217
|
+
const configBump = gasConfig.priorityFeeRetryBumpPercentage ?? defaultL1TxUtilsConfig.priorityFeeRetryBumpPercentage;
|
|
218
|
+
const bumpPercentage = configBump > MIN_REPLACEMENT_BUMP_PERCENTAGE ? configBump : MIN_REPLACEMENT_BUMP_PERCENTAGE;
|
|
219
|
+
// Calculate minimum required fees based on previous attempt
|
|
220
|
+
const minPriorityFee = (previousGasPrice.maxPriorityFeePerGas * (100n + bumpPercentage)) / 100n;
|
|
221
|
+
const minMaxFee = (previousGasPrice.maxFeePerGas * (100n + bumpPercentage)) / 100n;
|
|
222
|
+
// Add priority fee to maxFeePerGas
|
|
223
|
+
maxFeePerGas += priorityFee;
|
|
224
|
+
// Use maximum between current network values and minimum required values
|
|
225
|
+
priorityFee = priorityFee > minPriorityFee ? priorityFee : minPriorityFee;
|
|
226
|
+
maxFeePerGas = maxFeePerGas > minMaxFee ? maxFeePerGas : minMaxFee;
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
// first attempt, just bump priority fee
|
|
230
|
+
priorityFee = (priorityFee * (100n + (gasConfig.priorityFeeBumpPercentage || 0n))) / 100n;
|
|
231
|
+
maxFeePerGas += priorityFee;
|
|
232
|
+
}
|
|
233
|
+
// Ensure we don't exceed maxGwei
|
|
234
|
+
const maxGweiInWei = gasConfig.maxGwei * WEI_CONST;
|
|
235
|
+
maxFeePerGas = maxFeePerGas > maxGweiInWei ? maxGweiInWei : maxFeePerGas;
|
|
236
|
+
// Ensure priority fee doesn't exceed max fee
|
|
237
|
+
const maxPriorityFeePerGas = priorityFee > maxFeePerGas ? maxFeePerGas : priorityFee;
|
|
238
|
+
this.logger?.debug(`Gas price calculation (attempt ${attempt}): baseFee=${formatGwei(baseFee)}, ` +
|
|
239
|
+
`maxPriorityFee=${formatGwei(maxPriorityFeePerGas)}, maxFee=${formatGwei(maxFeePerGas)}`);
|
|
240
|
+
return { maxFeePerGas, maxPriorityFeePerGas };
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Estimates gas and adds buffer
|
|
244
|
+
*/
|
|
245
|
+
async estimateGas(account, request, _gasConfig) {
|
|
246
|
+
const gasConfig = { ...this.config, ..._gasConfig };
|
|
247
|
+
const initialEstimate = await this.publicClient.estimateGas({ account, ...request });
|
|
248
|
+
// Add buffer based on either fixed amount or percentage
|
|
249
|
+
const withBuffer = initialEstimate + (initialEstimate * (gasConfig.gasLimitBufferPercentage ?? 0n)) / 100n;
|
|
250
|
+
return withBuffer;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfdHhfdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbDFfdHhfdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsa0JBQWtCLEdBQ25CLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFaEQsT0FBTyxFQVVMLFVBQVUsR0FDWCxNQUFNLE1BQU0sQ0FBQztBQUVkLDZCQUE2QjtBQUM3Qiw2QkFBNkI7QUFDN0Isd0NBQXdDO0FBRXhDLE1BQU0sU0FBUyxHQUFHLFdBQWMsQ0FBQztBQUVqQyx3RUFBd0U7QUFDeEUsNEhBQTRIO0FBQzVILE1BQU0sK0JBQStCLEdBQUcsR0FBRyxDQUFDO0FBRTVDLGtDQUFrQztBQUNsQyxNQUFNLGFBQWEsR0FBRyxLQUFNLENBQUM7QUF5QzdCLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUF3QztJQUMxRSx3QkFBd0IsRUFBRTtRQUN4QixXQUFXLEVBQUUsNkRBQTZEO1FBQzFFLEdBQUcsRUFBRSxnQ0FBZ0M7UUFDckMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7S0FDM0I7SUFDRCxPQUFPLEVBQUU7UUFDUCxXQUFXLEVBQUUsMkJBQTJCO1FBQ3hDLEdBQUcsRUFBRSxrQkFBa0I7UUFDdkIsR0FBRyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7S0FDMUI7SUFDRCxPQUFPLEVBQUU7UUFDUCxXQUFXLEVBQUUsMkJBQTJCO1FBQ3hDLEdBQUcsRUFBRSxrQkFBa0I7UUFDdkIsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7S0FDNUI7SUFDRCx5QkFBeUIsRUFBRTtRQUN6QixXQUFXLEVBQUUsZ0VBQWdFO1FBQzdFLEdBQUcsRUFBRSxpQ0FBaUM7UUFDdEMsR0FB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
|
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,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQU1MLGNBQWMsR0FDZixNQUFNLE1BQU0sQ0FBQztBQVNkLE1BQU0sVUFBVSxZQUFZLENBSzFCLElBQVcsRUFDWCxPQUFZLEVBQ1osR0FBUyxFQUNULFNBQXFCLEVBQ3JCLE1BQXFDLEVBQ3JDLE1BQW9CO0lBRXBCLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLFNBQVMsaUJBQWlCLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUt0QixJQUFXLEVBQ1gsT0FBWSxFQUNaLEdBQVMsRUFDVCxTQUFxQixFQUNyQixNQUFxQyxFQUNyQyxNQUFvQjtJQUVwQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDckQsSUFBSSxZQUFZLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUN6QyxNQUFNLGFBQWEsR0FBRyxZQUEwQixDQUFDO29CQUNqRCxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO3dCQUNyQyxPQUFPLGFBQWEsQ0FBQztvQkFDdkIsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxFQUFFLElBQUksQ0FBQywyQ0FBMkMsT0FBTyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDN0UsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/ethereum",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.66.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.
|
|
32
|
-
"@aztec/l1-artifacts": "0.
|
|
31
|
+
"@aztec/foundation": "0.66.0",
|
|
32
|
+
"@aztec/l1-artifacts": "0.66.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"
|
package/src/constants.ts
CHANGED
package/src/contracts/rollup.ts
CHANGED
|
@@ -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)]);
|