@aztec/ethereum 0.0.1-commit.87a0206 → 0.0.1-commit.88e6f9396

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 (117) hide show
  1. package/dest/client.d.ts +10 -2
  2. package/dest/client.d.ts.map +1 -1
  3. package/dest/client.js +13 -7
  4. package/dest/config.d.ts +3 -1
  5. package/dest/config.d.ts.map +1 -1
  6. package/dest/config.js +10 -2
  7. package/dest/contracts/empire_base.d.ts +3 -1
  8. package/dest/contracts/empire_base.d.ts.map +1 -1
  9. package/dest/contracts/empire_slashing_proposer.d.ts +3 -1
  10. package/dest/contracts/empire_slashing_proposer.d.ts.map +1 -1
  11. package/dest/contracts/empire_slashing_proposer.js +9 -0
  12. package/dest/contracts/fee_asset_price_oracle.d.ts +101 -0
  13. package/dest/contracts/fee_asset_price_oracle.d.ts.map +1 -0
  14. package/dest/contracts/fee_asset_price_oracle.js +651 -0
  15. package/dest/contracts/governance.js +3 -3
  16. package/dest/contracts/governance_proposer.d.ts +3 -1
  17. package/dest/contracts/governance_proposer.d.ts.map +1 -1
  18. package/dest/contracts/governance_proposer.js +9 -0
  19. package/dest/contracts/index.d.ts +2 -1
  20. package/dest/contracts/index.d.ts.map +1 -1
  21. package/dest/contracts/index.js +1 -0
  22. package/dest/contracts/registry.d.ts +3 -1
  23. package/dest/contracts/registry.d.ts.map +1 -1
  24. package/dest/contracts/registry.js +30 -1
  25. package/dest/contracts/rollup.d.ts +21 -7
  26. package/dest/contracts/rollup.d.ts.map +1 -1
  27. package/dest/contracts/rollup.js +62 -9
  28. package/dest/deploy_aztec_l1_contracts.d.ts +2 -3
  29. package/dest/deploy_aztec_l1_contracts.d.ts.map +1 -1
  30. package/dest/deploy_aztec_l1_contracts.js +33 -19
  31. package/dest/deploy_l1_contract.js +3 -3
  32. package/dest/generated/l1-contracts-defaults.d.ts +1 -1
  33. package/dest/generated/l1-contracts-defaults.js +1 -1
  34. package/dest/l1_artifacts.d.ts +1051 -42
  35. package/dest/l1_artifacts.d.ts.map +1 -1
  36. package/dest/l1_reader.d.ts +3 -1
  37. package/dest/l1_reader.d.ts.map +1 -1
  38. package/dest/l1_reader.js +6 -1
  39. package/dest/l1_tx_utils/config.d.ts +7 -1
  40. package/dest/l1_tx_utils/config.d.ts.map +1 -1
  41. package/dest/l1_tx_utils/config.js +14 -1
  42. package/dest/l1_tx_utils/factory.d.ts +18 -10
  43. package/dest/l1_tx_utils/factory.d.ts.map +1 -1
  44. package/dest/l1_tx_utils/factory.js +17 -7
  45. package/dest/l1_tx_utils/fee-strategies/p75_competitive.js +1 -1
  46. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.js +1 -1
  47. package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts +15 -15
  48. package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts.map +1 -1
  49. package/dest/l1_tx_utils/forwarder_l1_tx_utils.js +9 -15
  50. package/dest/l1_tx_utils/index-blobs.d.ts +3 -3
  51. package/dest/l1_tx_utils/index-blobs.d.ts.map +1 -1
  52. package/dest/l1_tx_utils/index-blobs.js +2 -2
  53. package/dest/l1_tx_utils/index.d.ts +2 -1
  54. package/dest/l1_tx_utils/index.d.ts.map +1 -1
  55. package/dest/l1_tx_utils/index.js +1 -0
  56. package/dest/l1_tx_utils/l1_tx_utils.d.ts +18 -7
  57. package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -1
  58. package/dest/l1_tx_utils/l1_tx_utils.js +52 -36
  59. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts +1 -1
  60. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts.map +1 -1
  61. package/dest/l1_tx_utils/readonly_l1_tx_utils.js +8 -4
  62. package/dest/l1_tx_utils/tx_delayer.d.ts +56 -0
  63. package/dest/l1_tx_utils/tx_delayer.d.ts.map +1 -0
  64. package/dest/{test → l1_tx_utils}/tx_delayer.js +62 -34
  65. package/dest/test/chain_monitor.d.ts +22 -3
  66. package/dest/test/chain_monitor.d.ts.map +1 -1
  67. package/dest/test/chain_monitor.js +33 -2
  68. package/dest/test/index.d.ts +1 -3
  69. package/dest/test/index.d.ts.map +1 -1
  70. package/dest/test/index.js +0 -2
  71. package/dest/test/start_anvil.d.ts +16 -3
  72. package/dest/test/start_anvil.d.ts.map +1 -1
  73. package/dest/test/start_anvil.js +129 -29
  74. package/dest/test/upgrade_utils.js +2 -2
  75. package/dest/utils.d.ts +1 -1
  76. package/dest/utils.d.ts.map +1 -1
  77. package/dest/utils.js +16 -12
  78. package/package.json +5 -7
  79. package/src/client.ts +10 -2
  80. package/src/config.ts +14 -1
  81. package/src/contracts/empire_base.ts +2 -0
  82. package/src/contracts/empire_slashing_proposer.ts +6 -0
  83. package/src/contracts/fee_asset_price_oracle.ts +280 -0
  84. package/src/contracts/governance.ts +3 -3
  85. package/src/contracts/governance_proposer.ts +6 -0
  86. package/src/contracts/index.ts +1 -0
  87. package/src/contracts/registry.ts +31 -1
  88. package/src/contracts/rollup.ts +74 -12
  89. package/src/deploy_aztec_l1_contracts.ts +56 -29
  90. package/src/deploy_l1_contract.ts +3 -3
  91. package/src/generated/l1-contracts-defaults.ts +1 -1
  92. package/src/l1_reader.ts +13 -1
  93. package/src/l1_tx_utils/config.ts +20 -0
  94. package/src/l1_tx_utils/factory.ts +31 -31
  95. package/src/l1_tx_utils/fee-strategies/p75_competitive.ts +1 -1
  96. package/src/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.ts +1 -1
  97. package/src/l1_tx_utils/forwarder_l1_tx_utils.ts +43 -54
  98. package/src/l1_tx_utils/index-blobs.ts +2 -2
  99. package/src/l1_tx_utils/index.ts +1 -0
  100. package/src/l1_tx_utils/l1_tx_utils.ts +54 -26
  101. package/src/l1_tx_utils/readonly_l1_tx_utils.ts +8 -4
  102. package/src/{test → l1_tx_utils}/tx_delayer.ts +78 -50
  103. package/src/test/chain_monitor.ts +60 -3
  104. package/src/test/index.ts +0 -2
  105. package/src/test/start_anvil.ts +154 -29
  106. package/src/test/upgrade_utils.ts +2 -2
  107. package/src/utils.ts +17 -14
  108. package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts +0 -26
  109. package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts.map +0 -1
  110. package/dest/l1_tx_utils/l1_tx_utils_with_blobs.js +0 -26
  111. package/dest/test/delayed_tx_utils.d.ts +0 -13
  112. package/dest/test/delayed_tx_utils.d.ts.map +0 -1
  113. package/dest/test/delayed_tx_utils.js +0 -28
  114. package/dest/test/tx_delayer.d.ts +0 -36
  115. package/dest/test/tx_delayer.d.ts.map +0 -1
  116. package/src/l1_tx_utils/l1_tx_utils_with_blobs.ts +0 -77
  117. package/src/test/delayed_tx_utils.ts +0 -52
@@ -19,9 +19,9 @@ import { RollupContract } from './contracts/rollup.js';
19
19
  const logger = createLogger('ethereum:deploy_aztec_l1_contracts');
20
20
  const JSON_DEPLOY_RESULT_PREFIX = 'JSON DEPLOY RESULT:';
21
21
  /**
22
- * Runs a process with the given command, arguments, and environment.
23
- * If the process outputs a line starting with JSON_DEPLOY_RESULT_PREFIX,
24
- * the JSON is parsed and returned.
22
+ * Runs a process and parses JSON deploy results from stdout.
23
+ * Lines starting with JSON_DEPLOY_RESULT_PREFIX are parsed and returned.
24
+ * All other stdout goes to logger.info, stderr goes to logger.warn.
25
25
  */ function runProcess(command, args, env, cwd) {
26
26
  const { promise, resolve, reject } = promiseWithResolvers();
27
27
  const proc = spawn(command, args, {
@@ -37,27 +37,42 @@ const JSON_DEPLOY_RESULT_PREFIX = 'JSON DEPLOY RESULT:';
37
37
  ]
38
38
  });
39
39
  let result;
40
+ let parseError;
41
+ let settled = false;
40
42
  readline.createInterface({
41
43
  input: proc.stdout
42
44
  }).on('line', (line)=>{
43
45
  const trimmedLine = line.trim();
44
46
  if (trimmedLine.startsWith(JSON_DEPLOY_RESULT_PREFIX)) {
45
47
  const jsonStr = trimmedLine.slice(JSON_DEPLOY_RESULT_PREFIX.length).trim();
46
- // TODO(AD): should this be a zod parse?
47
- result = JSON.parse(jsonStr);
48
+ try {
49
+ result = JSON.parse(jsonStr);
50
+ } catch {
51
+ parseError = new Error(`Failed to parse deploy result JSON: ${jsonStr.slice(0, 200)}`);
52
+ }
48
53
  } else {
49
54
  logger.info(line);
50
55
  }
51
56
  });
52
57
  readline.createInterface({
53
58
  input: proc.stderr
54
- }).on('line', logger.error.bind(logger));
59
+ }).on('line', logger.warn.bind(logger));
55
60
  proc.on('error', (error)=>{
61
+ if (settled) {
62
+ return;
63
+ }
64
+ settled = true;
56
65
  reject(new Error(`Failed to spawn ${command}: ${error.message}`));
57
66
  });
58
67
  proc.on('close', (code)=>{
68
+ if (settled) {
69
+ return;
70
+ }
71
+ settled = true;
59
72
  if (code !== 0) {
60
- reject(new Error(`${command} exited with code ${code}. See logs for details.\n`));
73
+ reject(new Error(`${command} exited with code ${code}`));
74
+ } else if (parseError) {
75
+ reject(parseError);
61
76
  } else {
62
77
  resolve(result);
63
78
  }
@@ -228,11 +243,8 @@ function cleanupDeployDir() {
228
243
  if (isVerifiableChain && !process.env.ETHERSCAN_API_KEY) {
229
244
  logger.warn(`Deploying to chain ${chainId} (${chainId === mainnet.id ? 'mainnet' : 'sepolia'}) without ETHERSCAN_API_KEY. ` + `Contracts will NOT be verified on Etherscan. Set ETHERSCAN_API_KEY environment variable to enable verification.`);
230
245
  }
231
- // From heuristic testing. More caused issues with anvil.
232
- const MAGIC_ANVIL_BATCH_SIZE = 8;
233
- // Anvil seems to stall with unbounded batch size. Otherwise no max batch size is desirable.
246
+ const scriptPath = join(getL1ContractsPath(), 'scripts', 'forge_broadcast.js');
234
247
  const forgeArgs = [
235
- 'script',
236
248
  FORGE_SCRIPT,
237
249
  '--sig',
238
250
  'run()',
@@ -240,9 +252,6 @@ function cleanupDeployDir() {
240
252
  privateKey,
241
253
  '--rpc-url',
242
254
  rpcUrl,
243
- '--broadcast',
244
- '--batch-size',
245
- MAGIC_ANVIL_BATCH_SIZE.toString(),
246
255
  ...shouldVerify ? [
247
256
  '--verify'
248
257
  ] : []
@@ -253,7 +262,10 @@ function cleanupDeployDir() {
253
262
  FOUNDRY_PROFILE: chainId === mainnet.id ? 'production' : undefined,
254
263
  ...getDeployAztecL1ContractsEnvVars(args)
255
264
  };
256
- const result = await runProcess('forge', forgeArgs, forgeEnv, l1ContractsPath);
265
+ const result = await runProcess(process.execPath, [
266
+ scriptPath,
267
+ ...forgeArgs
268
+ ], forgeEnv, l1ContractsPath);
257
269
  if (!result) {
258
270
  throw new Error('Forge script did not output deployment result');
259
271
  }
@@ -365,16 +377,15 @@ export function getDeployRollupForUpgradeEnvVars(args) {
365
377
  const l1ContractsPath = prepareL1ContractsForDeployment();
366
378
  const FORGE_SCRIPT = 'script/deploy/DeployRollupForUpgrade.s.sol';
367
379
  await maybeForgeForceProductionBuild(l1ContractsPath, FORGE_SCRIPT, chainId);
380
+ const scriptPath = join(getL1ContractsPath(), 'scripts', 'forge_broadcast.js');
368
381
  const forgeArgs = [
369
- 'script',
370
382
  FORGE_SCRIPT,
371
383
  '--sig',
372
384
  'run()',
373
385
  '--private-key',
374
386
  privateKey,
375
387
  '--rpc-url',
376
- rpcUrl,
377
- '--broadcast'
388
+ rpcUrl
378
389
  ];
379
390
  const forgeEnv = {
380
391
  FOUNDRY_PROFILE: chainId === mainnet.id ? 'production' : undefined,
@@ -383,7 +394,10 @@ export function getDeployRollupForUpgradeEnvVars(args) {
383
394
  NETWORK: getActiveNetworkName(),
384
395
  ...getDeployRollupForUpgradeEnvVars(args)
385
396
  };
386
- const result = await runProcess('forge', forgeArgs, forgeEnv, l1ContractsPath);
397
+ const result = await runProcess(process.execPath, [
398
+ scriptPath,
399
+ ...forgeArgs
400
+ ], forgeEnv, l1ContractsPath);
387
401
  if (!result) {
388
402
  throw new Error('Forge script did not output deployment result');
389
403
  }
@@ -5,7 +5,7 @@ import { concatHex, encodeAbiParameters, encodeDeployData, getContractAddress, n
5
5
  import { DEPLOYER_ADDRESS } from './deploy_aztec_l1_contracts.js';
6
6
  import { RegisterNewRollupVersionPayloadArtifact } from './l1_artifacts.js';
7
7
  import { getL1TxUtilsConfigEnvVars } from './l1_tx_utils/config.js';
8
- import { createL1TxUtilsFromViemWallet } from './l1_tx_utils/factory.js';
8
+ import { createL1TxUtils } from './l1_tx_utils/factory.js';
9
9
  import { formatViemError } from './utils.js';
10
10
  export class L1Deployer {
11
11
  client;
@@ -28,7 +28,7 @@ export class L1Deployer {
28
28
  this.salt = maybeSalt ? padHex(numberToHex(maybeSalt), {
29
29
  size: 32
30
30
  }) : undefined;
31
- this.l1TxUtils = createL1TxUtilsFromViemWallet(this.client, {
31
+ this.l1TxUtils = createL1TxUtils(this.client, {
32
32
  logger: this.logger,
33
33
  dateProvider
34
34
  }, {
@@ -130,7 +130,7 @@ export class L1Deployer {
130
130
  let { l1TxUtils } = opts;
131
131
  if (!l1TxUtils) {
132
132
  const config = getL1TxUtilsConfigEnvVars();
133
- l1TxUtils = createL1TxUtilsFromViemWallet(extendedClient, {
133
+ l1TxUtils = createL1TxUtils(extendedClient, {
134
134
  logger
135
135
  }, {
136
136
  ...config,
@@ -1,7 +1,7 @@
1
1
  /** Default L1 contracts configuration values from network-defaults.yml */
2
2
  export declare const l1ContractsDefaultEnv: {
3
3
  readonly ETHEREUM_SLOT_DURATION: 12;
4
- readonly AZTEC_SLOT_DURATION: 36;
4
+ readonly AZTEC_SLOT_DURATION: 72;
5
5
  readonly AZTEC_EPOCH_DURATION: 32;
6
6
  readonly AZTEC_TARGET_COMMITTEE_SIZE: 48;
7
7
  readonly AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET: 2;
@@ -2,7 +2,7 @@
2
2
  // Do not edit manually - run yarn generate to regenerate
3
3
  /** Default L1 contracts configuration values from network-defaults.yml */ export const l1ContractsDefaultEnv = {
4
4
  ETHEREUM_SLOT_DURATION: 12,
5
- AZTEC_SLOT_DURATION: 36,
5
+ AZTEC_SLOT_DURATION: 72,
6
6
  AZTEC_EPOCH_DURATION: 32,
7
7
  AZTEC_TARGET_COMMITTEE_SIZE: 48,
8
8
  AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET: 2,