@aztec/ethereum 0.0.1-commit.4d3c002 → 0.0.1-commit.4d9804df

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 (143) hide show
  1. package/dest/client.d.ts +17 -3
  2. package/dest/client.d.ts.map +1 -1
  3. package/dest/client.js +49 -3
  4. package/dest/config.d.ts +27 -8
  5. package/dest/config.d.ts.map +1 -1
  6. package/dest/config.js +59 -12
  7. package/dest/contracts/chain_state_override.d.ts +78 -0
  8. package/dest/contracts/chain_state_override.d.ts.map +1 -0
  9. package/dest/contracts/chain_state_override.js +137 -0
  10. package/dest/contracts/empire_base.d.ts +1 -3
  11. package/dest/contracts/empire_base.d.ts.map +1 -1
  12. package/dest/contracts/fee_asset_price_oracle.d.ts +6 -2
  13. package/dest/contracts/fee_asset_price_oracle.d.ts.map +1 -1
  14. package/dest/contracts/fee_asset_price_oracle.js +11 -6
  15. package/dest/contracts/governance.d.ts +108 -33
  16. package/dest/contracts/governance.d.ts.map +1 -1
  17. package/dest/contracts/governance.js +193 -12
  18. package/dest/contracts/governance_proposer.d.ts +33 -3
  19. package/dest/contracts/governance_proposer.d.ts.map +1 -1
  20. package/dest/contracts/governance_proposer.js +51 -9
  21. package/dest/contracts/gse.d.ts +4 -2
  22. package/dest/contracts/gse.d.ts.map +1 -1
  23. package/dest/contracts/gse.js +2 -2
  24. package/dest/contracts/inbox.d.ts +3 -3
  25. package/dest/contracts/inbox.d.ts.map +1 -1
  26. package/dest/contracts/inbox.js +9 -3
  27. package/dest/contracts/index.d.ts +3 -3
  28. package/dest/contracts/index.d.ts.map +1 -1
  29. package/dest/contracts/index.js +2 -2
  30. package/dest/contracts/multicall.d.ts +82 -14
  31. package/dest/contracts/multicall.d.ts.map +1 -1
  32. package/dest/contracts/multicall.js +119 -95
  33. package/dest/contracts/outbox.d.ts +27 -4
  34. package/dest/contracts/outbox.d.ts.map +1 -1
  35. package/dest/contracts/outbox.js +34 -7
  36. package/dest/contracts/rollup.d.ts +5383 -31
  37. package/dest/contracts/rollup.d.ts.map +1 -1
  38. package/dest/contracts/rollup.js +223 -90
  39. package/dest/contracts/{tally_slashing_proposer.d.ts → slashing_proposer.d.ts} +3 -4
  40. package/dest/contracts/slashing_proposer.d.ts.map +1 -0
  41. package/dest/contracts/{tally_slashing_proposer.js → slashing_proposer.js} +13 -15
  42. package/dest/deploy_aztec_l1_contracts.d.ts +18 -10
  43. package/dest/deploy_aztec_l1_contracts.d.ts.map +1 -1
  44. package/dest/deploy_aztec_l1_contracts.js +28 -17
  45. package/dest/foundry_binary.d.ts +13 -0
  46. package/dest/foundry_binary.d.ts.map +1 -0
  47. package/dest/foundry_binary.js +52 -0
  48. package/dest/l1_artifacts.d.ts +14941 -16273
  49. package/dest/l1_artifacts.d.ts.map +1 -1
  50. package/dest/l1_artifacts.js +9 -24
  51. package/dest/l1_contract_addresses.d.ts +61 -65
  52. package/dest/l1_contract_addresses.d.ts.map +1 -1
  53. package/dest/l1_contract_addresses.js +101 -82
  54. package/dest/l1_reader.d.ts +3 -5
  55. package/dest/l1_reader.d.ts.map +1 -1
  56. package/dest/l1_reader.js +3 -6
  57. package/dest/l1_tx_utils/config.js +3 -3
  58. package/dest/l1_tx_utils/l1_fee_analyzer.d.ts +23 -4
  59. package/dest/l1_tx_utils/l1_fee_analyzer.d.ts.map +1 -1
  60. package/dest/l1_tx_utils/l1_fee_analyzer.js +65 -3
  61. package/dest/l1_tx_utils/l1_tx_utils.d.ts +7 -1
  62. package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -1
  63. package/dest/l1_tx_utils/l1_tx_utils.js +105 -32
  64. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts +1 -1
  65. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts.map +1 -1
  66. package/dest/l1_tx_utils/readonly_l1_tx_utils.js +2 -1
  67. package/dest/l1_tx_utils/tx_delayer.d.ts +5 -3
  68. package/dest/l1_tx_utils/tx_delayer.d.ts.map +1 -1
  69. package/dest/l1_tx_utils/tx_delayer.js +7 -5
  70. package/dest/l1_tx_utils/types.d.ts +27 -1
  71. package/dest/l1_tx_utils/types.d.ts.map +1 -1
  72. package/dest/l1_tx_utils/types.js +10 -0
  73. package/dest/publisher_manager.d.ts +18 -6
  74. package/dest/publisher_manager.d.ts.map +1 -1
  75. package/dest/publisher_manager.js +44 -7
  76. package/dest/queries.d.ts +13 -2
  77. package/dest/queries.d.ts.map +1 -1
  78. package/dest/queries.js +69 -4
  79. package/dest/test/blob_kzg_warmup.d.ts +19 -0
  80. package/dest/test/blob_kzg_warmup.d.ts.map +1 -0
  81. package/dest/test/blob_kzg_warmup.js +64 -0
  82. package/dest/test/chain_monitor.d.ts +34 -2
  83. package/dest/test/chain_monitor.d.ts.map +1 -1
  84. package/dest/test/chain_monitor.js +76 -6
  85. package/dest/test/eth_cheat_codes.d.ts +32 -3
  86. package/dest/test/eth_cheat_codes.d.ts.map +1 -1
  87. package/dest/test/eth_cheat_codes.js +83 -37
  88. package/dest/test/index.d.ts +2 -1
  89. package/dest/test/index.d.ts.map +1 -1
  90. package/dest/test/index.js +1 -0
  91. package/dest/test/rollup_cheat_codes.d.ts +60 -3
  92. package/dest/test/rollup_cheat_codes.d.ts.map +1 -1
  93. package/dest/test/rollup_cheat_codes.js +86 -7
  94. package/dest/test/start_anvil.d.ts +1 -1
  95. package/dest/test/start_anvil.d.ts.map +1 -1
  96. package/dest/test/start_anvil.js +41 -5
  97. package/dest/utils.d.ts +9 -2
  98. package/dest/utils.d.ts.map +1 -1
  99. package/dest/utils.js +34 -6
  100. package/package.json +6 -7
  101. package/src/client.ts +57 -1
  102. package/src/config.ts +82 -16
  103. package/src/contracts/chain_state_override.ts +200 -0
  104. package/src/contracts/empire_base.ts +0 -2
  105. package/src/contracts/fee_asset_price_oracle.ts +10 -5
  106. package/src/contracts/governance.ts +266 -9
  107. package/src/contracts/governance_proposer.ts +52 -5
  108. package/src/contracts/gse.ts +7 -2
  109. package/src/contracts/inbox.ts +12 -4
  110. package/src/contracts/index.ts +2 -2
  111. package/src/contracts/multicall.ts +183 -106
  112. package/src/contracts/outbox.ts +42 -8
  113. package/src/contracts/rollup.ts +252 -96
  114. package/src/contracts/{tally_slashing_proposer.ts → slashing_proposer.ts} +14 -16
  115. package/src/deploy_aztec_l1_contracts.ts +32 -18
  116. package/src/foundry_binary.ts +57 -0
  117. package/src/l1_artifacts.ts +12 -35
  118. package/src/l1_contract_addresses.ts +120 -94
  119. package/src/l1_reader.ts +4 -9
  120. package/src/l1_tx_utils/config.ts +3 -3
  121. package/src/l1_tx_utils/l1_fee_analyzer.ts +75 -3
  122. package/src/l1_tx_utils/l1_tx_utils.ts +98 -34
  123. package/src/l1_tx_utils/readonly_l1_tx_utils.ts +2 -1
  124. package/src/l1_tx_utils/tx_delayer.ts +16 -7
  125. package/src/l1_tx_utils/types.ts +32 -0
  126. package/src/publisher_manager.ts +54 -18
  127. package/src/queries.ts +76 -4
  128. package/src/test/blob_kzg_warmup.ts +65 -0
  129. package/src/test/chain_monitor.ts +93 -5
  130. package/src/test/eth_cheat_codes.ts +76 -41
  131. package/src/test/index.ts +1 -0
  132. package/src/test/rollup_cheat_codes.ts +115 -6
  133. package/src/test/start_anvil.ts +38 -6
  134. package/src/utils.ts +30 -6
  135. package/dest/contracts/empire_slashing_proposer.d.ts +0 -69
  136. package/dest/contracts/empire_slashing_proposer.d.ts.map +0 -1
  137. package/dest/contracts/empire_slashing_proposer.js +0 -216
  138. package/dest/contracts/tally_slashing_proposer.d.ts.map +0 -1
  139. package/dest/generated/l1-contracts-defaults.d.ts +0 -30
  140. package/dest/generated/l1-contracts-defaults.d.ts.map +0 -1
  141. package/dest/generated/l1-contracts-defaults.js +0 -30
  142. package/src/contracts/empire_slashing_proposer.ts +0 -265
  143. package/src/generated/l1-contracts-defaults.ts +0 -32
@@ -1,3 +1,4 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
1
2
  import { EthAddress } from '@aztec/foundation/eth-address';
2
3
  import { OutboxAbi } from '@aztec/l1-artifacts/OutboxAbi';
3
4
  import { encodeAbiParameters, getContract, hexToBigInt, keccak256 } from 'viem';
@@ -12,11 +13,19 @@ export class OutboxContract {
12
13
  }
13
14
  static getFromConfig(config) {
14
15
  const client = getPublicClient(config);
15
- const address = config.l1Contracts.outboxAddress.toString();
16
+ const address = config.outboxAddress.toString();
16
17
  return new OutboxContract(client, address);
17
18
  }
18
- static getEpochRootStorageSlot(epoch) {
19
- return hexToBigInt(keccak256(encodeAbiParameters([
19
+ /**
20
+ * Storage slot of `epochs[epoch].roots[numCheckpointsInEpoch - 1]` in the Outbox contract.
21
+ *
22
+ * The Outbox lays out storage as `mapping(Epoch => EpochData) internal epochs` at base slot 0
23
+ * (ROLLUP and VERSION are immutable and do not occupy slots). For a mapping at slot `b`, the
24
+ * value for key `k` begins at `keccak256(abi.encode(k, b))`. `EpochData` starts with a fixed-
25
+ * size `bytes32[MAX_CHECKPOINTS_PER_EPOCH] roots` array, so `roots[i]` sits at the EpochData's
26
+ * base slot plus `i`. `numCheckpointsInEpoch` is 1-indexed (matches `Outbox.insert`/`consume`).
27
+ */ static getEpochRootStorageSlot(epoch, numCheckpointsInEpoch) {
28
+ const epochDataSlot = hexToBigInt(keccak256(encodeAbiParameters([
20
29
  {
21
30
  type: 'uint256'
22
31
  },
@@ -27,6 +36,7 @@ export class OutboxContract {
27
36
  BigInt(epoch),
28
37
  0n
29
38
  ])));
39
+ return epochDataSlot + BigInt(numCheckpointsInEpoch - 1);
30
40
  }
31
41
  constructor(client, address){
32
42
  this.client = client;
@@ -51,16 +61,32 @@ export class OutboxContract {
51
61
  leafId
52
62
  ]);
53
63
  }
54
- getRootData(epoch) {
64
+ getRootData(epoch, numCheckpointsInEpoch) {
55
65
  return this.outbox.read.getRootData([
56
- BigInt(epoch)
66
+ BigInt(epoch),
67
+ BigInt(numCheckpointsInEpoch)
57
68
  ]);
58
69
  }
59
- consume(message, epoch, leafIndex, path) {
70
+ /**
71
+ * Returns every root stored for `epoch`. Slot `i` of the returned array holds the root inserted
72
+ * for `numCheckpointsInEpoch = i + 1`, or `Fr.ZERO` if no proof of that depth has been inserted
73
+ * yet. The array length is always `MAX_CHECKPOINTS_PER_EPOCH`.
74
+ *
75
+ * @param opts - Optional viem read options. Pass `blockNumber` to pin the read to a specific L1
76
+ * block, which is important for callers that want a consistent snapshot across multiple reads
77
+ * (e.g. the archiver's outbox-trees resolver, which pins to the node's synced L1 block).
78
+ */ async getRoots(epoch, opts) {
79
+ const raw = await this.outbox.read.getRoots([
80
+ BigInt(epoch)
81
+ ], opts);
82
+ return raw.map((hex)=>Fr.fromString(hex));
83
+ }
84
+ consume(message, epoch, numCheckpointsInEpoch, leafIndex, path) {
60
85
  const wallet = this.assertWallet();
61
86
  return wallet.write.consume([
62
87
  message,
63
88
  BigInt(epoch),
89
+ BigInt(numCheckpointsInEpoch),
64
90
  leafIndex,
65
91
  path
66
92
  ]);
@@ -74,7 +100,8 @@ export class OutboxContract {
74
100
  epoch: event.args.epoch,
75
101
  root: event.args.root,
76
102
  messageHash: event.args.messageHash,
77
- leafId: event.args.leafId
103
+ leafId: event.args.leafId,
104
+ numCheckpointsInEpoch: event.args.numCheckpointsInEpoch
78
105
  }));
79
106
  }
80
107
  assertWallet() {