@aztec/ethereum 3.0.0-nightly.20251212 → 3.0.0-nightly.20251214
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/config.d.ts +3 -42
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +3 -327
- package/dest/contracts/inbox.d.ts +3 -3
- package/dest/contracts/inbox.d.ts.map +1 -1
- package/dest/contracts/rollup.d.ts +3 -3
- package/dest/contracts/rollup.d.ts.map +1 -1
- package/dest/deploy_aztec_l1_contracts.d.ts +245 -0
- package/dest/deploy_aztec_l1_contracts.d.ts.map +1 -0
- package/dest/deploy_aztec_l1_contracts.js +329 -0
- package/dest/deploy_l1_contract.d.ts +68 -0
- package/dest/deploy_l1_contract.d.ts.map +1 -0
- package/dest/deploy_l1_contract.js +312 -0
- package/dest/forwarder_proxy.js +1 -1
- package/dest/l1_artifacts.d.ts +37 -37
- package/dest/test/start_anvil.d.ts +3 -1
- package/dest/test/start_anvil.d.ts.map +1 -1
- package/package.json +10 -6
- package/src/config.ts +2 -406
- package/src/contracts/inbox.ts +2 -2
- package/src/contracts/rollup.ts +2 -2
- package/src/deploy_aztec_l1_contracts.ts +545 -0
- package/src/deploy_l1_contract.ts +362 -0
- package/src/forwarder_proxy.ts +1 -1
- package/src/test/start_anvil.ts +2 -0
- package/dest/deploy_l1_contracts.d.ts +0 -673
- package/dest/deploy_l1_contracts.d.ts.map +0 -1
- package/dest/deploy_l1_contracts.js +0 -1491
- package/src/deploy_l1_contracts.ts +0 -1869
|
@@ -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
|
+
};
|
package/dest/forwarder_proxy.js
CHANGED
|
@@ -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 './
|
|
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) {
|
package/dest/l1_artifacts.d.ts
CHANGED
|
@@ -11476,37 +11476,37 @@ export declare const RollupArtifact: {
|
|
|
11476
11476
|
readonly start: 1539;
|
|
11477
11477
|
readonly length: 20;
|
|
11478
11478
|
}, {
|
|
11479
|
-
readonly start:
|
|
11479
|
+
readonly start: 12924;
|
|
11480
11480
|
readonly length: 20;
|
|
11481
11481
|
}, {
|
|
11482
|
-
readonly start:
|
|
11482
|
+
readonly start: 13585;
|
|
11483
11483
|
readonly length: 20;
|
|
11484
11484
|
}, {
|
|
11485
|
-
readonly start:
|
|
11485
|
+
readonly start: 15113;
|
|
11486
11486
|
readonly length: 20;
|
|
11487
11487
|
}, {
|
|
11488
|
-
readonly start:
|
|
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:
|
|
11494
|
+
readonly start: 11889;
|
|
11495
11495
|
readonly length: 20;
|
|
11496
11496
|
}, {
|
|
11497
|
-
readonly start:
|
|
11497
|
+
readonly start: 11964;
|
|
11498
11498
|
readonly length: 20;
|
|
11499
11499
|
}, {
|
|
11500
|
-
readonly start:
|
|
11500
|
+
readonly start: 12307;
|
|
11501
11501
|
readonly length: 20;
|
|
11502
11502
|
}, {
|
|
11503
|
-
readonly start:
|
|
11503
|
+
readonly start: 13737;
|
|
11504
11504
|
readonly length: 20;
|
|
11505
11505
|
}, {
|
|
11506
|
-
readonly start:
|
|
11506
|
+
readonly start: 13941;
|
|
11507
11507
|
readonly length: 20;
|
|
11508
11508
|
}, {
|
|
11509
|
-
readonly start:
|
|
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:
|
|
11524
|
+
readonly start: 10561;
|
|
11525
11525
|
readonly length: 20;
|
|
11526
11526
|
}, {
|
|
11527
|
-
readonly start:
|
|
11527
|
+
readonly start: 10727;
|
|
11528
11528
|
readonly length: 20;
|
|
11529
11529
|
}, {
|
|
11530
|
-
readonly start:
|
|
11530
|
+
readonly start: 10856;
|
|
11531
11531
|
readonly length: 20;
|
|
11532
11532
|
}, {
|
|
11533
|
-
readonly start:
|
|
11533
|
+
readonly start: 11011;
|
|
11534
11534
|
readonly length: 20;
|
|
11535
11535
|
}, {
|
|
11536
|
-
readonly start:
|
|
11536
|
+
readonly start: 11253;
|
|
11537
11537
|
readonly length: 20;
|
|
11538
11538
|
}, {
|
|
11539
|
-
readonly start:
|
|
11539
|
+
readonly start: 11382;
|
|
11540
11540
|
readonly length: 20;
|
|
11541
11541
|
}, {
|
|
11542
|
-
readonly start:
|
|
11542
|
+
readonly start: 11490;
|
|
11543
11543
|
readonly length: 20;
|
|
11544
11544
|
}, {
|
|
11545
|
-
readonly start:
|
|
11545
|
+
readonly start: 12439;
|
|
11546
11546
|
readonly length: 20;
|
|
11547
11547
|
}, {
|
|
11548
|
-
readonly start:
|
|
11548
|
+
readonly start: 12505;
|
|
11549
11549
|
readonly length: 20;
|
|
11550
11550
|
}, {
|
|
11551
|
-
readonly start:
|
|
11551
|
+
readonly start: 12632;
|
|
11552
11552
|
readonly length: 20;
|
|
11553
11553
|
}, {
|
|
11554
|
-
readonly start:
|
|
11554
|
+
readonly start: 13102;
|
|
11555
11555
|
readonly length: 20;
|
|
11556
11556
|
}, {
|
|
11557
|
-
readonly start:
|
|
11557
|
+
readonly start: 13225;
|
|
11558
11558
|
readonly length: 20;
|
|
11559
11559
|
}, {
|
|
11560
|
-
readonly start:
|
|
11560
|
+
readonly start: 13261;
|
|
11561
11561
|
readonly length: 20;
|
|
11562
11562
|
}, {
|
|
11563
|
-
readonly start:
|
|
11563
|
+
readonly start: 14307;
|
|
11564
11564
|
readonly length: 20;
|
|
11565
11565
|
}, {
|
|
11566
|
-
readonly start:
|
|
11566
|
+
readonly start: 14389;
|
|
11567
11567
|
readonly length: 20;
|
|
11568
11568
|
}, {
|
|
11569
|
-
readonly start:
|
|
11569
|
+
readonly start: 14507;
|
|
11570
11570
|
readonly length: 20;
|
|
11571
11571
|
}, {
|
|
11572
|
-
readonly start:
|
|
11572
|
+
readonly start: 14618;
|
|
11573
11573
|
readonly length: 20;
|
|
11574
11574
|
}, {
|
|
11575
|
-
readonly start:
|
|
11575
|
+
readonly start: 14817;
|
|
11576
11576
|
readonly length: 20;
|
|
11577
11577
|
}, {
|
|
11578
|
-
readonly start:
|
|
11578
|
+
readonly start: 14945;
|
|
11579
11579
|
readonly length: 20;
|
|
11580
11580
|
}, {
|
|
11581
|
-
readonly start:
|
|
11581
|
+
readonly start: 15012;
|
|
11582
11582
|
readonly length: 20;
|
|
11583
11583
|
}, {
|
|
11584
|
-
readonly start:
|
|
11584
|
+
readonly start: 15390;
|
|
11585
11585
|
readonly length: 20;
|
|
11586
11586
|
}, {
|
|
11587
|
-
readonly start:
|
|
11587
|
+
readonly start: 15475;
|
|
11588
11588
|
readonly length: 20;
|
|
11589
11589
|
}, {
|
|
11590
|
-
readonly start:
|
|
11590
|
+
readonly start: 15511;
|
|
11591
11591
|
readonly length: 20;
|
|
11592
11592
|
}, {
|
|
11593
|
-
readonly start:
|
|
11593
|
+
readonly start: 15578;
|
|
11594
11594
|
readonly length: 20;
|
|
11595
11595
|
}, {
|
|
11596
|
-
readonly start:
|
|
11596
|
+
readonly start: 15968;
|
|
11597
11597
|
readonly length: 20;
|
|
11598
11598
|
}, {
|
|
11599
|
-
readonly start:
|
|
11599
|
+
readonly start: 16097;
|
|
11600
11600
|
readonly length: 20;
|
|
11601
11601
|
}, {
|
|
11602
|
-
readonly start:
|
|
11602
|
+
readonly start: 16219;
|
|
11603
11603
|
readonly length: 20;
|
|
11604
11604
|
}];
|
|
11605
11605
|
};
|
|
@@ -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,
|
|
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;
|
|
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.
|
|
3
|
+
"version": "3.0.0-nightly.20251214",
|
|
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/
|
|
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.
|
|
48
|
-
"@aztec/constants": "3.0.0-nightly.
|
|
49
|
-
"@aztec/foundation": "3.0.0-nightly.
|
|
50
|
-
"@aztec/l1-artifacts": "3.0.0-nightly.
|
|
51
|
+
"@aztec/blob-lib": "3.0.0-nightly.20251214",
|
|
52
|
+
"@aztec/constants": "3.0.0-nightly.20251214",
|
|
53
|
+
"@aztec/foundation": "3.0.0-nightly.20251214",
|
|
54
|
+
"@aztec/l1-artifacts": "3.0.0-nightly.20251214",
|
|
51
55
|
"@viem/anvil": "^0.0.10",
|
|
52
56
|
"dotenv": "^16.0.3",
|
|
53
57
|
"lodash.chunk": "^4.2.0",
|