@aztec/ethereum 3.0.0-nightly.20251211 → 3.0.0-nightly.20251213

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy_l1_contract.d.ts","sourceRoot":"","sources":["../src/deploy_l1_contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,312 @@
1
+ import { EthAddress } from '@aztec/foundation/eth-address';
2
+ import { createLogger } from '@aztec/foundation/log';
3
+ import { DateProvider } from '@aztec/foundation/timer';
4
+ import { concatHex, encodeAbiParameters, encodeDeployData, getContractAddress, numberToHex, padHex } from 'viem';
5
+ import { DEPLOYER_ADDRESS } from './deploy_aztec_l1_contracts.js';
6
+ import { RegisterNewRollupVersionPayloadArtifact } from './l1_artifacts.js';
7
+ import { getL1TxUtilsConfigEnvVars } from './l1_tx_utils/config.js';
8
+ import { createL1TxUtilsFromViemWallet } from './l1_tx_utils/factory.js';
9
+ import { formatViemError } from './utils.js';
10
+ export class L1Deployer {
11
+ client;
12
+ acceleratedTestDeployments;
13
+ logger;
14
+ txUtilsConfig;
15
+ createVerificationJson;
16
+ salt;
17
+ txHashes;
18
+ l1TxUtils;
19
+ verificationRecords;
20
+ constructor(client, maybeSalt, dateProvider = new DateProvider(), acceleratedTestDeployments = false, logger = createLogger('L1Deployer'), txUtilsConfig, createVerificationJson = false){
21
+ this.client = client;
22
+ this.acceleratedTestDeployments = acceleratedTestDeployments;
23
+ this.logger = logger;
24
+ this.txUtilsConfig = txUtilsConfig;
25
+ this.createVerificationJson = createVerificationJson;
26
+ this.txHashes = [];
27
+ this.verificationRecords = [];
28
+ this.salt = maybeSalt ? padHex(numberToHex(maybeSalt), {
29
+ size: 32
30
+ }) : undefined;
31
+ this.l1TxUtils = createL1TxUtilsFromViemWallet(this.client, {
32
+ logger: this.logger,
33
+ dateProvider
34
+ }, {
35
+ ...this.txUtilsConfig,
36
+ debugMaxGasLimit: acceleratedTestDeployments
37
+ });
38
+ }
39
+ async deploy(params, args, opts = {}) {
40
+ this.logger.debug(`Deploying ${params.name} contract`, {
41
+ args
42
+ });
43
+ try {
44
+ const { txHash, address, deployedLibraries, existed } = await deployL1Contract(this.client, params.contractAbi, params.contractBytecode, args ?? [], {
45
+ salt: this.salt,
46
+ libraries: params.libraries,
47
+ logger: this.logger,
48
+ l1TxUtils: this.l1TxUtils,
49
+ acceleratedTestDeployments: this.acceleratedTestDeployments,
50
+ gasLimit: opts.gasLimit,
51
+ noSimulation: opts.noSimulation
52
+ });
53
+ if (txHash) {
54
+ this.txHashes.push(txHash);
55
+ }
56
+ this.logger.debug(`Deployed ${params.name} at ${address}`, {
57
+ args
58
+ });
59
+ if (this.createVerificationJson) {
60
+ // Encode constructor args for verification
61
+ let constructorArgsHex = '0x';
62
+ try {
63
+ const abiItem = params.contractAbi.find((x)=>x && x.type === 'constructor');
64
+ const inputDefs = abiItem && Array.isArray(abiItem.inputs) ? abiItem.inputs : [];
65
+ constructorArgsHex = inputDefs.length > 0 ? encodeAbiParameters(inputDefs, args ?? []) : '0x';
66
+ } catch {
67
+ constructorArgsHex = '0x';
68
+ }
69
+ this.verificationRecords.push({
70
+ name: params.name,
71
+ address: address.toString(),
72
+ constructorArgsHex,
73
+ libraries: deployedLibraries ?? []
74
+ });
75
+ }
76
+ return {
77
+ address,
78
+ existed
79
+ };
80
+ } catch (error) {
81
+ throw new Error(`Failed to deploy ${params.name}`, {
82
+ cause: formatViemError(error)
83
+ });
84
+ }
85
+ }
86
+ async waitForDeployments() {
87
+ if (this.acceleratedTestDeployments) {
88
+ this.logger.info('Accelerated test deployments - skipping waiting for deployments');
89
+ return;
90
+ }
91
+ if (this.txHashes.length === 0) {
92
+ return;
93
+ }
94
+ this.logger.verbose(`Waiting for ${this.txHashes.length} transactions to be mined`, {
95
+ txHashes: this.txHashes
96
+ });
97
+ const receipts = await Promise.all(this.txHashes.map((txHash)=>this.client.waitForTransactionReceipt({
98
+ hash: txHash
99
+ })));
100
+ const failed = receipts.filter((r)=>r.status !== 'success');
101
+ if (failed.length > 0) {
102
+ throw new Error(`Some deployment txs have failed: ${failed.map((f)=>f.transactionHash).join(', ')}`);
103
+ }
104
+ this.logger.info('All transactions mined successfully', {
105
+ txHashes: this.txHashes
106
+ });
107
+ }
108
+ sendTransaction(tx, options) {
109
+ return this.l1TxUtils.sendTransaction(tx, options).then(({ txHash, state })=>({
110
+ txHash,
111
+ gasLimit: state.gasLimit,
112
+ gasPrice: state.gasPrice
113
+ }));
114
+ }
115
+ }
116
+ /**
117
+ * Helper function to deploy ETH contracts.
118
+ * @param walletClient - A viem WalletClient.
119
+ * @param publicClient - A viem PublicClient.
120
+ * @param abi - The ETH contract's ABI (as abitype's Abi).
121
+ * @param bytecode - The ETH contract's bytecode.
122
+ * @param args - Constructor arguments for the contract.
123
+ * @param salt - Optional salt for CREATE2 deployment (does not wait for deployment tx to be mined if set, does not send tx if contract already exists).
124
+ * @returns The ETH address the contract was deployed to.
125
+ */ export async function deployL1Contract(extendedClient, abi, bytecode, args = [], opts = {}) {
126
+ let txHash = undefined;
127
+ let resultingAddress = undefined;
128
+ const deployedLibraries = [];
129
+ const { salt: saltFromOpts, libraries, logger, gasLimit, acceleratedTestDeployments, noSimulation } = opts;
130
+ let { l1TxUtils } = opts;
131
+ if (!l1TxUtils) {
132
+ const config = getL1TxUtilsConfigEnvVars();
133
+ l1TxUtils = createL1TxUtilsFromViemWallet(extendedClient, {
134
+ logger
135
+ }, {
136
+ ...config,
137
+ debugMaxGasLimit: acceleratedTestDeployments
138
+ });
139
+ }
140
+ if (libraries) {
141
+ // Note that this does NOT work well for linked libraries having linked libraries.
142
+ // Verify that all link references have corresponding code
143
+ for(const linkRef in libraries.linkReferences){
144
+ for(const contractName in libraries.linkReferences[linkRef]){
145
+ if (!libraries.libraryCode[contractName]) {
146
+ throw new Error(`Missing library code for ${contractName}`);
147
+ }
148
+ }
149
+ }
150
+ const replacements = {};
151
+ const libraryTxs = [];
152
+ for(const libraryName in libraries?.libraryCode){
153
+ const lib = libraries.libraryCode[libraryName];
154
+ const { libraries: _libraries, ...optsWithoutLibraries } = opts;
155
+ const { address, txHash } = await deployL1Contract(extendedClient, lib.contractAbi, lib.contractBytecode, [], optsWithoutLibraries);
156
+ // Log deployed library name and address for easier verification/triage
157
+ logger?.verbose(`Linked library deployed`, {
158
+ library: libraryName,
159
+ address: address.toString(),
160
+ txHash
161
+ });
162
+ if (txHash) {
163
+ libraryTxs.push(txHash);
164
+ }
165
+ // Try to find the source file for this library from linkReferences
166
+ let fileNameForLibrary = undefined;
167
+ for(const fileName in libraries.linkReferences){
168
+ if (libraries.linkReferences[fileName] && libraries.linkReferences[fileName][libraryName]) {
169
+ fileNameForLibrary = fileName;
170
+ break;
171
+ }
172
+ }
173
+ if (fileNameForLibrary) {
174
+ deployedLibraries.push({
175
+ file: fileNameForLibrary,
176
+ contract: libraryName,
177
+ address: address.toString()
178
+ });
179
+ }
180
+ for(const linkRef in libraries.linkReferences){
181
+ for(const contractName in libraries.linkReferences[linkRef]){
182
+ // If the library name matches the one we just deployed, we replace it.
183
+ if (contractName !== libraryName) {
184
+ continue;
185
+ }
186
+ // We read the first instance to figure out what we are to replace.
187
+ const start = 2 + 2 * libraries.linkReferences[linkRef][contractName][0].start;
188
+ const length = 2 * libraries.linkReferences[linkRef][contractName][0].length;
189
+ const toReplace = bytecode.slice(start, start + length);
190
+ replacements[toReplace] = address;
191
+ }
192
+ }
193
+ }
194
+ const escapeRegExp = (s)=>{
195
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // Escape special characters
196
+ };
197
+ for(const toReplace in replacements){
198
+ const replacement = replacements[toReplace].toString().slice(2);
199
+ bytecode = bytecode.replace(new RegExp(escapeRegExp(toReplace), 'g'), replacement);
200
+ }
201
+ // Reth fails gas estimation if the deployed contract attempts to call a library that is not yet deployed,
202
+ // so we wait for all library deployments to be mined before deploying the contract.
203
+ // However, if we are in fast mode or using debugMaxGasLimit, we will skip simulation, so we can skip waiting.
204
+ if (libraryTxs.length > 0 && !acceleratedTestDeployments) {
205
+ logger?.verbose(`Awaiting for linked libraries to be deployed`);
206
+ await Promise.all(libraryTxs.map((txHash)=>extendedClient.waitForTransactionReceipt({
207
+ hash: txHash
208
+ })));
209
+ } else {
210
+ logger?.verbose(`Skipping waiting for linked libraries to be deployed ${acceleratedTestDeployments ? '(accelerated test deployments)' : ''}`);
211
+ }
212
+ }
213
+ let existed = false;
214
+ if (saltFromOpts) {
215
+ logger?.info(`Deploying contract with salt ${saltFromOpts}`);
216
+ const { address, paddedSalt: salt, calldata } = getExpectedAddress(abi, bytecode, args, saltFromOpts);
217
+ resultingAddress = address;
218
+ const existing = await extendedClient.getCode({
219
+ address: resultingAddress
220
+ });
221
+ if (existing === undefined || existing === '0x') {
222
+ if (!noSimulation) {
223
+ try {
224
+ await l1TxUtils.simulate({
225
+ to: DEPLOYER_ADDRESS,
226
+ data: concatHex([
227
+ salt,
228
+ calldata
229
+ ]),
230
+ gas: gasLimit
231
+ });
232
+ } catch (err) {
233
+ logger?.error(`Failed to simulate deployment tx using universal deployer`, err);
234
+ await l1TxUtils.simulate({
235
+ to: null,
236
+ data: encodeDeployData({
237
+ abi,
238
+ bytecode,
239
+ args
240
+ }),
241
+ gas: gasLimit
242
+ });
243
+ }
244
+ }
245
+ const res = await l1TxUtils.sendTransaction({
246
+ to: DEPLOYER_ADDRESS,
247
+ data: concatHex([
248
+ salt,
249
+ calldata
250
+ ])
251
+ }, {
252
+ gasLimit
253
+ });
254
+ txHash = res.txHash;
255
+ logger?.verbose(`Deployed contract with salt ${salt} to address ${resultingAddress} in tx ${txHash}.`);
256
+ } else {
257
+ logger?.verbose(`Skipping existing deployment of contract with salt ${salt} to address ${resultingAddress}`);
258
+ existed = true;
259
+ }
260
+ } else {
261
+ const deployData = encodeDeployData({
262
+ abi,
263
+ bytecode,
264
+ args
265
+ });
266
+ const { receipt } = await l1TxUtils.sendAndMonitorTransaction({
267
+ to: null,
268
+ data: deployData
269
+ }, {
270
+ gasLimit
271
+ });
272
+ txHash = receipt.transactionHash;
273
+ resultingAddress = receipt.contractAddress;
274
+ if (!resultingAddress) {
275
+ throw new Error(`No contract address found in receipt: ${JSON.stringify(receipt, (_, val)=>typeof val === 'bigint' ? String(val) : val)}`);
276
+ }
277
+ }
278
+ return {
279
+ address: EthAddress.fromString(resultingAddress),
280
+ txHash,
281
+ deployedLibraries,
282
+ existed
283
+ };
284
+ }
285
+ export function getExpectedAddress(abi, bytecode, args, salt) {
286
+ const paddedSalt = padHex(salt, {
287
+ size: 32
288
+ });
289
+ const calldata = encodeDeployData({
290
+ abi,
291
+ bytecode,
292
+ args
293
+ });
294
+ const address = getContractAddress({
295
+ from: DEPLOYER_ADDRESS,
296
+ salt: paddedSalt,
297
+ bytecode: calldata,
298
+ opcode: 'CREATE2'
299
+ });
300
+ return {
301
+ address,
302
+ paddedSalt,
303
+ calldata
304
+ };
305
+ }
306
+ export const deployUpgradePayload = async (deployer, addresses)=>{
307
+ const payloadAddress = (await deployer.deploy(RegisterNewRollupVersionPayloadArtifact, [
308
+ addresses.registryAddress.toString(),
309
+ addresses.rollupAddress.toString()
310
+ ])).address;
311
+ return payloadAddress;
312
+ };
@@ -2,7 +2,7 @@
2
2
  import { DateProvider } from '@aztec/foundation/timer';
3
3
  import { extractChain } from 'viem';
4
4
  import { anvil, mainnet, sepolia } from 'viem/chains';
5
- import { L1Deployer } from './deploy_l1_contracts.js';
5
+ import { L1Deployer } from './deploy_l1_contract.js';
6
6
  export const FORWARDER_SOLIDITY_SOURCE = `
7
7
  contract ForwarderProxy {
8
8
  function forward(address target, bytes calldata data) external payable returns (bytes memory) {
@@ -11476,37 +11476,37 @@ export declare const RollupArtifact: {
11476
11476
  readonly start: 1539;
11477
11477
  readonly length: 20;
11478
11478
  }, {
11479
- readonly start: 12818;
11479
+ readonly start: 12924;
11480
11480
  readonly length: 20;
11481
11481
  }, {
11482
- readonly start: 13479;
11482
+ readonly start: 13585;
11483
11483
  readonly length: 20;
11484
11484
  }, {
11485
- readonly start: 15007;
11485
+ readonly start: 15113;
11486
11486
  readonly length: 20;
11487
11487
  }, {
11488
- readonly start: 15145;
11488
+ readonly start: 15251;
11489
11489
  readonly length: 20;
11490
11490
  }];
11491
11491
  };
11492
11492
  readonly "src/core/libraries/rollup/RollupOperationsExtLib.sol": {
11493
11493
  readonly RollupOperationsExtLib: readonly [{
11494
- readonly start: 11783;
11494
+ readonly start: 11889;
11495
11495
  readonly length: 20;
11496
11496
  }, {
11497
- readonly start: 11858;
11497
+ readonly start: 11964;
11498
11498
  readonly length: 20;
11499
11499
  }, {
11500
- readonly start: 12201;
11500
+ readonly start: 12307;
11501
11501
  readonly length: 20;
11502
11502
  }, {
11503
- readonly start: 13631;
11503
+ readonly start: 13737;
11504
11504
  readonly length: 20;
11505
11505
  }, {
11506
- readonly start: 13835;
11506
+ readonly start: 13941;
11507
11507
  readonly length: 20;
11508
11508
  }, {
11509
- readonly start: 13959;
11509
+ readonly start: 14065;
11510
11510
  readonly length: 20;
11511
11511
  }];
11512
11512
  };
@@ -11521,85 +11521,85 @@ export declare const RollupArtifact: {
11521
11521
  readonly start: 1053;
11522
11522
  readonly length: 20;
11523
11523
  }, {
11524
- readonly start: 10455;
11524
+ readonly start: 10561;
11525
11525
  readonly length: 20;
11526
11526
  }, {
11527
- readonly start: 10621;
11527
+ readonly start: 10727;
11528
11528
  readonly length: 20;
11529
11529
  }, {
11530
- readonly start: 10750;
11530
+ readonly start: 10856;
11531
11531
  readonly length: 20;
11532
11532
  }, {
11533
- readonly start: 10905;
11533
+ readonly start: 11011;
11534
11534
  readonly length: 20;
11535
11535
  }, {
11536
- readonly start: 11147;
11536
+ readonly start: 11253;
11537
11537
  readonly length: 20;
11538
11538
  }, {
11539
- readonly start: 11276;
11539
+ readonly start: 11382;
11540
11540
  readonly length: 20;
11541
11541
  }, {
11542
- readonly start: 11384;
11542
+ readonly start: 11490;
11543
11543
  readonly length: 20;
11544
11544
  }, {
11545
- readonly start: 12333;
11545
+ readonly start: 12439;
11546
11546
  readonly length: 20;
11547
11547
  }, {
11548
- readonly start: 12399;
11548
+ readonly start: 12505;
11549
11549
  readonly length: 20;
11550
11550
  }, {
11551
- readonly start: 12526;
11551
+ readonly start: 12632;
11552
11552
  readonly length: 20;
11553
11553
  }, {
11554
- readonly start: 12996;
11554
+ readonly start: 13102;
11555
11555
  readonly length: 20;
11556
11556
  }, {
11557
- readonly start: 13119;
11557
+ readonly start: 13225;
11558
11558
  readonly length: 20;
11559
11559
  }, {
11560
- readonly start: 13155;
11560
+ readonly start: 13261;
11561
11561
  readonly length: 20;
11562
11562
  }, {
11563
- readonly start: 14201;
11563
+ readonly start: 14307;
11564
11564
  readonly length: 20;
11565
11565
  }, {
11566
- readonly start: 14283;
11566
+ readonly start: 14389;
11567
11567
  readonly length: 20;
11568
11568
  }, {
11569
- readonly start: 14401;
11569
+ readonly start: 14507;
11570
11570
  readonly length: 20;
11571
11571
  }, {
11572
- readonly start: 14512;
11572
+ readonly start: 14618;
11573
11573
  readonly length: 20;
11574
11574
  }, {
11575
- readonly start: 14711;
11575
+ readonly start: 14817;
11576
11576
  readonly length: 20;
11577
11577
  }, {
11578
- readonly start: 14839;
11578
+ readonly start: 14945;
11579
11579
  readonly length: 20;
11580
11580
  }, {
11581
- readonly start: 14906;
11581
+ readonly start: 15012;
11582
11582
  readonly length: 20;
11583
11583
  }, {
11584
- readonly start: 15284;
11584
+ readonly start: 15390;
11585
11585
  readonly length: 20;
11586
11586
  }, {
11587
- readonly start: 15369;
11587
+ readonly start: 15475;
11588
11588
  readonly length: 20;
11589
11589
  }, {
11590
- readonly start: 15405;
11590
+ readonly start: 15511;
11591
11591
  readonly length: 20;
11592
11592
  }, {
11593
- readonly start: 15472;
11593
+ readonly start: 15578;
11594
11594
  readonly length: 20;
11595
11595
  }, {
11596
- readonly start: 15862;
11596
+ readonly start: 15968;
11597
11597
  readonly length: 20;
11598
11598
  }, {
11599
- readonly start: 15991;
11599
+ readonly start: 16097;
11600
11600
  readonly length: 20;
11601
11601
  }, {
11602
- readonly start: 16113;
11602
+ readonly start: 16219;
11603
11603
  readonly length: 20;
11604
11604
  }];
11605
11605
  };
@@ -94,7 +94,10 @@ import { EthCheatCodes } from './eth_cheat_codes.js';
94
94
  silent: true,
95
95
  resetBlockInterval: true
96
96
  });
97
- this.logger.warn(`Warped to epoch ${epoch}`);
97
+ this.logger.warn(`Warped to epoch ${epoch}`, {
98
+ offset: opts.offset,
99
+ timestamp
100
+ });
98
101
  } catch (err) {
99
102
  this.logger.warn(`Warp to epoch ${epoch} failed: ${err}`);
100
103
  }
@@ -9,10 +9,12 @@ export declare function startAnvil(opts?: {
9
9
  captureMethodCalls?: boolean;
10
10
  accounts?: number;
11
11
  chainId?: number;
12
+ /** The hardfork to use - note: @viem/anvil types are out of date but 'cancun' and 'latest' work */
13
+ hardfork?: string;
12
14
  }): Promise<{
13
15
  anvil: Anvil;
14
16
  methodCalls?: string[];
15
17
  rpcUrl: string;
16
18
  stop: () => Promise<void>;
17
19
  }>;
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfYW52aWwuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L3N0YXJ0X2FudmlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxLQUFLLEtBQUssRUFBZSxNQUFNLGFBQWEsQ0FBQztBQUd0RDs7R0FFRztBQUNILHdCQUFzQixVQUFVLENBQzlCLElBQUksR0FBRTtJQUNKLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNkLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNyQixHQUFHLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDZCxrQkFBa0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUM3QixRQUFRLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDbEIsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ2IsR0FDTCxPQUFPLENBQUM7SUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBQUMsV0FBVyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQUMsSUFBSSxFQUFFLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0NBQUUsQ0FBQyxDQWlEOUYifQ==
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfYW52aWwuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L3N0YXJ0X2FudmlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxLQUFLLEtBQUssRUFBZSxNQUFNLGFBQWEsQ0FBQztBQUd0RDs7R0FFRztBQUNILHdCQUFzQixVQUFVLENBQzlCLElBQUksR0FBRTtJQUNKLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNkLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNyQixHQUFHLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDZCxrQkFBa0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUM3QixRQUFRLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDbEIsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2pCLG1HQUFtRztJQUNuRyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDZCxHQUNMLE9BQU8sQ0FBQztJQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7SUFBQyxXQUFXLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFBQyxJQUFJLEVBQUUsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7Q0FBRSxDQUFDLENBaUQ5RiJ9
@@ -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;CACb,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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/ethereum",
3
- "version": "3.0.0-nightly.20251211",
3
+ "version": "3.0.0-nightly.20251213",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./account": "./dest/account.js",
@@ -9,7 +9,10 @@
9
9
  "./config": "./dest/config.js",
10
10
  "./constants": "./dest/constants.js",
11
11
  "./contracts": "./dest/contracts/index.js",
12
- "./deploy-l1-contracts": "./dest/deploy_l1_contracts.js",
12
+ "./deploy-aztec-l1-contracts": "./dest/deploy_aztec_l1_contracts.js",
13
+ "./deploy-l1-contract": "./dest/deploy_l1_contract.js",
14
+ "./contracts/registry": "./dest/contracts/registry.js",
15
+ "./contracts/rollup": "./dest/contracts/rollup.js",
13
16
  "./eth-signer": "./dest/eth-signer/index.js",
14
17
  "./forwarder-proxy": "./dest/forwarder_proxy.js",
15
18
  "./l1-artifacts": "./dest/l1_artifacts.js",
@@ -17,6 +20,7 @@
17
20
  "./l1-reader": "./dest/l1_reader.js",
18
21
  "./l1-tx-utils": "./dest/l1_tx_utils/index.js",
19
22
  "./l1-tx-utils-with-blobs": "./dest/l1_tx_utils/index-blobs.js",
23
+ "./l1-tx-utils/config": "./dest/l1_tx_utils/config.js",
20
24
  "./l1-types": "./dest/l1_types.js",
21
25
  "./publisher-manager": "./dest/publisher_manager.js",
22
26
  "./queries": "./dest/queries.js",
@@ -44,10 +48,10 @@
44
48
  "../package.common.json"
45
49
  ],
46
50
  "dependencies": {
47
- "@aztec/blob-lib": "3.0.0-nightly.20251211",
48
- "@aztec/constants": "3.0.0-nightly.20251211",
49
- "@aztec/foundation": "3.0.0-nightly.20251211",
50
- "@aztec/l1-artifacts": "3.0.0-nightly.20251211",
51
+ "@aztec/blob-lib": "3.0.0-nightly.20251213",
52
+ "@aztec/constants": "3.0.0-nightly.20251213",
53
+ "@aztec/foundation": "3.0.0-nightly.20251213",
54
+ "@aztec/l1-artifacts": "3.0.0-nightly.20251213",
51
55
  "@viem/anvil": "^0.0.10",
52
56
  "dotenv": "^16.0.3",
53
57
  "lodash.chunk": "^4.2.0",