@aztec/ethereum 0.0.1-commit.96bb3f7 → 0.0.1-commit.9d2bcf6d

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 (83) hide show
  1. package/dest/config.d.ts +15 -28
  2. package/dest/config.d.ts.map +1 -1
  3. package/dest/config.js +46 -55
  4. package/dest/contracts/empire_slashing_proposer.d.ts +1 -1
  5. package/dest/contracts/empire_slashing_proposer.d.ts.map +1 -1
  6. package/dest/contracts/empire_slashing_proposer.js +13 -15
  7. package/dest/contracts/fee_asset_handler.d.ts +1 -1
  8. package/dest/contracts/fee_asset_handler.d.ts.map +1 -1
  9. package/dest/contracts/fee_asset_handler.js +2 -0
  10. package/dest/contracts/governance.d.ts +3 -1
  11. package/dest/contracts/governance.d.ts.map +1 -1
  12. package/dest/contracts/governance.js +11 -1
  13. package/dest/contracts/governance_proposer.d.ts +1 -1
  14. package/dest/contracts/governance_proposer.d.ts.map +1 -1
  15. package/dest/contracts/governance_proposer.js +4 -1
  16. package/dest/contracts/inbox.d.ts +18 -1
  17. package/dest/contracts/inbox.d.ts.map +1 -1
  18. package/dest/contracts/inbox.js +32 -1
  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/log.d.ts +13 -0
  23. package/dest/contracts/log.d.ts.map +1 -0
  24. package/dest/contracts/log.js +1 -0
  25. package/dest/contracts/multicall.d.ts +1 -1
  26. package/dest/contracts/multicall.d.ts.map +1 -1
  27. package/dest/contracts/multicall.js +2 -1
  28. package/dest/contracts/rollup.d.ts +34 -3
  29. package/dest/contracts/rollup.d.ts.map +1 -1
  30. package/dest/contracts/rollup.js +71 -3
  31. package/dest/contracts/tally_slashing_proposer.d.ts +1 -1
  32. package/dest/contracts/tally_slashing_proposer.d.ts.map +1 -1
  33. package/dest/contracts/tally_slashing_proposer.js +8 -1
  34. package/dest/deploy_aztec_l1_contracts.d.ts +6 -1
  35. package/dest/deploy_aztec_l1_contracts.d.ts.map +1 -1
  36. package/dest/deploy_aztec_l1_contracts.js +26 -12
  37. package/dest/generated/l1-contracts-defaults.d.ts +30 -0
  38. package/dest/generated/l1-contracts-defaults.d.ts.map +1 -0
  39. package/dest/generated/l1-contracts-defaults.js +30 -0
  40. package/dest/l1_artifacts.d.ts +1394 -471
  41. package/dest/l1_artifacts.d.ts.map +1 -1
  42. package/dest/l1_tx_utils/constants.d.ts +1 -1
  43. package/dest/l1_tx_utils/constants.js +2 -2
  44. package/dest/l1_tx_utils/l1_tx_utils.js +6 -6
  45. package/dest/l1_tx_utils/readonly_l1_tx_utils.js +3 -3
  46. package/dest/publisher_manager.d.ts +3 -2
  47. package/dest/publisher_manager.d.ts.map +1 -1
  48. package/dest/publisher_manager.js +2 -2
  49. package/dest/queries.d.ts +2 -2
  50. package/dest/queries.d.ts.map +1 -1
  51. package/dest/queries.js +4 -1
  52. package/dest/test/eth_cheat_codes.d.ts +13 -1
  53. package/dest/test/eth_cheat_codes.d.ts.map +1 -1
  54. package/dest/test/rollup_cheat_codes.d.ts +4 -2
  55. package/dest/test/rollup_cheat_codes.d.ts.map +1 -1
  56. package/dest/test/rollup_cheat_codes.js +10 -1
  57. package/dest/test/start_anvil.js +1 -1
  58. package/dest/utils.d.ts +2 -1
  59. package/dest/utils.d.ts.map +1 -1
  60. package/dest/utils.js +46 -0
  61. package/package.json +8 -7
  62. package/src/config.ts +55 -54
  63. package/src/contracts/README.md +157 -0
  64. package/src/contracts/empire_slashing_proposer.ts +16 -27
  65. package/src/contracts/fee_asset_handler.ts +2 -0
  66. package/src/contracts/governance.ts +10 -1
  67. package/src/contracts/governance_proposer.ts +4 -1
  68. package/src/contracts/inbox.ts +48 -1
  69. package/src/contracts/index.ts +1 -0
  70. package/src/contracts/log.ts +13 -0
  71. package/src/contracts/multicall.ts +5 -2
  72. package/src/contracts/rollup.ts +100 -4
  73. package/src/contracts/tally_slashing_proposer.ts +5 -1
  74. package/src/deploy_aztec_l1_contracts.ts +27 -9
  75. package/src/generated/l1-contracts-defaults.ts +32 -0
  76. package/src/l1_tx_utils/constants.ts +2 -2
  77. package/src/l1_tx_utils/l1_tx_utils.ts +6 -6
  78. package/src/l1_tx_utils/readonly_l1_tx_utils.ts +3 -3
  79. package/src/publisher_manager.ts +4 -2
  80. package/src/queries.ts +3 -1
  81. package/src/test/rollup_cheat_codes.ts +11 -2
  82. package/src/test/start_anvil.ts +1 -1
  83. package/src/utils.ts +53 -0
@@ -7,11 +7,11 @@ import { promiseWithResolvers } from '@aztec/foundation/promise';
7
7
  import { fileURLToPath } from '@aztec/foundation/url';
8
8
  import { bn254 } from '@noble/curves/bn254';
9
9
  import { spawn } from 'child_process';
10
- import { cpSync, existsSync, mkdirSync, mkdtempSync, readdirSync, rmSync } from 'fs';
10
+ import { cpSync, existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'fs';
11
11
  import { tmpdir } from 'os';
12
12
  import { dirname, join, resolve } from 'path';
13
13
  import readline from 'readline';
14
- import { foundry, mainnet, sepolia } from 'viem/chains';
14
+ import { mainnet, sepolia } from 'viem/chains';
15
15
  import { createEthereumChain, isAnvilTestChain } from './chain.js';
16
16
  import { createExtendedL1Client } from './client.js';
17
17
  import { deployMulticall3 } from './contracts/multicall.js';
@@ -110,10 +110,13 @@ function cleanupDeployDir() {
110
110
  * A fresh broadcast/ directory is created for deployment outputs.
111
111
  */ export function prepareL1ContractsForDeployment() {
112
112
  if (preparedDeployDir && existsSync(preparedDeployDir)) {
113
+ logger.verbose(`Using cached deployment directory: ${preparedDeployDir}`);
113
114
  return preparedDeployDir;
114
115
  }
115
116
  const basePath = getL1ContractsPath();
117
+ logger.verbose(`Preparing L1 contracts from: ${basePath}`);
116
118
  const tempDir = mkdtempSync(join(tmpdir(), '.foundry-deploy-'));
119
+ logger.verbose(`Created temp directory for deployment: ${tempDir}`);
117
120
  preparedDeployDir = tempDir;
118
121
  process.on('exit', cleanupDeployDir);
119
122
  // Copy all dirs with preserved timestamps (required for forge cache validity)
@@ -127,13 +130,23 @@ function cleanupDeployDir() {
127
130
  cpSync(join(basePath, 'src'), join(tempDir, 'src'), copyOpts);
128
131
  cpSync(join(basePath, 'script'), join(tempDir, 'script'), copyOpts);
129
132
  cpSync(join(basePath, 'generated'), join(tempDir, 'generated'), copyOpts);
130
- cpSync(join(basePath, 'foundry.toml'), join(tempDir, 'foundry.toml'));
133
+ // Kludge: copy test/ to appease forge cache which references test/shouting.t.sol
134
+ cpSync(join(basePath, 'test'), join(tempDir, 'test'), copyOpts);
131
135
  cpSync(join(basePath, 'foundry.lock'), join(tempDir, 'foundry.lock'));
132
- for (const file of readdirSync(basePath)){
133
- if (file.startsWith('solc-')) {
134
- cpSync(join(basePath, file), join(tempDir, file));
135
- }
136
+ // Update foundry.toml to use absolute path to solc binary (avoids copying to noexec tmpfs)
137
+ const foundryTomlPath = join(basePath, 'foundry.toml');
138
+ let foundryToml = readFileSync(foundryTomlPath, 'utf-8');
139
+ const solcPathMatch = foundryToml.match(/solc\s*=\s*"\.\/solc-([^"]+)"/);
140
+ // Did we find a hardcoded solc path that we need to make absolute?
141
+ // This code path happens in CI currently as we bundle solc there to avoid race conditions when
142
+ // downloading solc.
143
+ if (solcPathMatch) {
144
+ const solcVersion = solcPathMatch[1];
145
+ const absoluteSolcPath = join(basePath, `solc-${solcVersion}`);
146
+ foundryToml = foundryToml.replace(/solc\s*=\s*"\.\/solc-[^"]+"/, `solc = "${absoluteSolcPath}"`);
147
+ logger.verbose(`Updated solc path in foundry.toml to: ${absoluteSolcPath}`);
136
148
  }
149
+ writeFileSync(join(tempDir, 'foundry.toml'), foundryToml);
137
150
  mkdirSync(join(tempDir, 'broadcast'));
138
151
  return tempDir;
139
152
  }
@@ -216,7 +229,7 @@ function cleanupDeployDir() {
216
229
  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.`);
217
230
  }
218
231
  // From heuristic testing. More caused issues with anvil.
219
- const MAGIC_ANVIL_BATCH_SIZE = 12;
232
+ const MAGIC_ANVIL_BATCH_SIZE = 8;
220
233
  // Anvil seems to stall with unbounded batch size. Otherwise no max batch size is desirable.
221
234
  const forgeArgs = [
222
235
  'script',
@@ -228,10 +241,8 @@ function cleanupDeployDir() {
228
241
  '--rpc-url',
229
242
  rpcUrl,
230
243
  '--broadcast',
231
- ...chainId === foundry.id ? [
232
- '--batch-size',
233
- MAGIC_ANVIL_BATCH_SIZE.toString()
234
- ] : [],
244
+ '--batch-size',
245
+ MAGIC_ANVIL_BATCH_SIZE.toString(),
235
246
  ...shouldVerify ? [
236
247
  '--verify'
237
248
  ] : []
@@ -306,6 +317,7 @@ export function getDeployAztecL1ContractsEnvVars(args) {
306
317
  AZTEC_EJECTION_THRESHOLD: args.ejectionThreshold?.toString(),
307
318
  AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE: args.governanceProposerRoundSize?.toString(),
308
319
  AZTEC_GOVERNANCE_PROPOSER_QUORUM: args.governanceProposerQuorum?.toString(),
320
+ AZTEC_GOVERNANCE_VOTING_DURATION: args.governanceVotingDuration?.toString(),
309
321
  ZKPASSPORT_DOMAIN: args.zkPassportArgs?.zkPassportDomain,
310
322
  ZKPASSPORT_SCOPE: args.zkPassportArgs?.zkPassportScope
311
323
  };
@@ -330,11 +342,13 @@ export function getDeployRollupForUpgradeEnvVars(args) {
330
342
  AZTEC_PROOF_SUBMISSION_EPOCHS: args.aztecProofSubmissionEpochs.toString(),
331
343
  AZTEC_LOCAL_EJECTION_THRESHOLD: args.localEjectionThreshold.toString(),
332
344
  AZTEC_SLASHING_LIFETIME_IN_ROUNDS: args.slashingLifetimeInRounds.toString(),
345
+ AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS: args.slashingExecutionDelayInRounds.toString(),
333
346
  AZTEC_SLASHING_VETOER: args.slashingVetoer.toString(),
334
347
  AZTEC_SLASHING_DISABLE_DURATION: args.slashingDisableDuration.toString(),
335
348
  AZTEC_MANA_TARGET: args.manaTarget.toString(),
336
349
  AZTEC_EXIT_DELAY_SECONDS: args.exitDelaySeconds.toString(),
337
350
  AZTEC_PROVING_COST_PER_MANA: args.provingCostPerMana.toString(),
351
+ AZTEC_INITIAL_ETH_PER_FEE_ASSET: args.initialEthPerFeeAsset.toString(),
338
352
  AZTEC_SLASHER_FLAVOR: args.slasherFlavor,
339
353
  AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS: args.slashingRoundSizeInEpochs.toString(),
340
354
  AZTEC_SLASHING_QUORUM: args.slashingQuorum?.toString(),
@@ -0,0 +1,30 @@
1
+ /** Default L1 contracts configuration values from network-defaults.yml */
2
+ export declare const l1ContractsDefaultEnv: {
3
+ readonly ETHEREUM_SLOT_DURATION: 12;
4
+ readonly AZTEC_SLOT_DURATION: 36;
5
+ readonly AZTEC_EPOCH_DURATION: 32;
6
+ readonly AZTEC_TARGET_COMMITTEE_SIZE: 48;
7
+ readonly AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET: 2;
8
+ readonly AZTEC_LAG_IN_EPOCHS_FOR_RANDAO: 2;
9
+ readonly AZTEC_ACTIVATION_THRESHOLD: 100000000000000000000;
10
+ readonly AZTEC_EJECTION_THRESHOLD: 50000000000000000000;
11
+ readonly AZTEC_LOCAL_EJECTION_THRESHOLD: 98000000000000000000;
12
+ readonly AZTEC_EXIT_DELAY_SECONDS: 172800;
13
+ readonly AZTEC_INBOX_LAG: 1;
14
+ readonly AZTEC_PROOF_SUBMISSION_EPOCHS: 1;
15
+ readonly AZTEC_MANA_TARGET: 100000000;
16
+ readonly AZTEC_PROVING_COST_PER_MANA: 100;
17
+ readonly AZTEC_INITIAL_ETH_PER_FEE_ASSET: 10000000;
18
+ readonly AZTEC_SLASHER_FLAVOR: "tally";
19
+ readonly AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS: 4;
20
+ readonly AZTEC_SLASHING_LIFETIME_IN_ROUNDS: 5;
21
+ readonly AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS: 0;
22
+ readonly AZTEC_SLASHING_OFFSET_IN_ROUNDS: 2;
23
+ readonly AZTEC_SLASHING_VETOER: "0x0000000000000000000000000000000000000000";
24
+ readonly AZTEC_SLASHING_DISABLE_DURATION: 432000;
25
+ readonly AZTEC_SLASH_AMOUNT_SMALL: 10000000000000000000;
26
+ readonly AZTEC_SLASH_AMOUNT_MEDIUM: 20000000000000000000;
27
+ readonly AZTEC_SLASH_AMOUNT_LARGE: 50000000000000000000;
28
+ readonly AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE: 300;
29
+ };
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDEtY29udHJhY3RzLWRlZmF1bHRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdGVkL2wxLWNvbnRyYWN0cy1kZWZhdWx0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSwwRUFBMEU7QUFDMUUsZUFBTyxNQUFNLHFCQUFxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBMkJ4QixDQUFDIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"l1-contracts-defaults.d.ts","sourceRoot":"","sources":["../../src/generated/l1-contracts-defaults.ts"],"names":[],"mappings":"AAGA,0EAA0E;AAC1E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BxB,CAAC"}
@@ -0,0 +1,30 @@
1
+ // Auto-generated from spartan/environments/network-defaults.yml
2
+ // Do not edit manually - run yarn generate to regenerate
3
+ /** Default L1 contracts configuration values from network-defaults.yml */ export const l1ContractsDefaultEnv = {
4
+ ETHEREUM_SLOT_DURATION: 12,
5
+ AZTEC_SLOT_DURATION: 36,
6
+ AZTEC_EPOCH_DURATION: 32,
7
+ AZTEC_TARGET_COMMITTEE_SIZE: 48,
8
+ AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET: 2,
9
+ AZTEC_LAG_IN_EPOCHS_FOR_RANDAO: 2,
10
+ AZTEC_ACTIVATION_THRESHOLD: 100000000000000000000,
11
+ AZTEC_EJECTION_THRESHOLD: 50000000000000000000,
12
+ AZTEC_LOCAL_EJECTION_THRESHOLD: 98000000000000000000,
13
+ AZTEC_EXIT_DELAY_SECONDS: 172800,
14
+ AZTEC_INBOX_LAG: 1,
15
+ AZTEC_PROOF_SUBMISSION_EPOCHS: 1,
16
+ AZTEC_MANA_TARGET: 100000000,
17
+ AZTEC_PROVING_COST_PER_MANA: 100,
18
+ AZTEC_INITIAL_ETH_PER_FEE_ASSET: 10000000,
19
+ AZTEC_SLASHER_FLAVOR: 'tally',
20
+ AZTEC_SLASHING_ROUND_SIZE_IN_EPOCHS: 4,
21
+ AZTEC_SLASHING_LIFETIME_IN_ROUNDS: 5,
22
+ AZTEC_SLASHING_EXECUTION_DELAY_IN_ROUNDS: 0,
23
+ AZTEC_SLASHING_OFFSET_IN_ROUNDS: 2,
24
+ AZTEC_SLASHING_VETOER: '0x0000000000000000000000000000000000000000',
25
+ AZTEC_SLASHING_DISABLE_DURATION: 432000,
26
+ AZTEC_SLASH_AMOUNT_SMALL: 10000000000000000000,
27
+ AZTEC_SLASH_AMOUNT_MEDIUM: 20000000000000000000,
28
+ AZTEC_SLASH_AMOUNT_LARGE: 50000000000000000000,
29
+ AZTEC_GOVERNANCE_PROPOSER_ROUND_SIZE: 300
30
+ };