@aztec/ethereum 0.0.0-test.1 → 0.0.1-commit.1142ef1

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 (276) hide show
  1. package/dest/account.d.ts +2 -0
  2. package/dest/account.d.ts.map +1 -0
  3. package/dest/account.js +4 -0
  4. package/dest/chain.d.ts +1 -1
  5. package/dest/client.d.ts +6 -4
  6. package/dest/client.d.ts.map +1 -1
  7. package/dest/client.js +21 -3
  8. package/dest/config.d.ts +74 -16
  9. package/dest/config.d.ts.map +1 -1
  10. package/dest/config.js +144 -22
  11. package/dest/constants.d.ts +1 -1
  12. package/dest/contracts/empire_base.d.ts +25 -8
  13. package/dest/contracts/empire_base.d.ts.map +1 -1
  14. package/dest/contracts/empire_base.js +75 -2
  15. package/dest/contracts/empire_slashing_proposer.d.ts +67 -0
  16. package/dest/contracts/empire_slashing_proposer.d.ts.map +1 -0
  17. package/dest/contracts/empire_slashing_proposer.js +209 -0
  18. package/dest/contracts/errors.d.ts +7 -0
  19. package/dest/contracts/errors.d.ts.map +1 -0
  20. package/dest/contracts/errors.js +12 -0
  21. package/dest/contracts/fee_asset_handler.d.ts +20 -0
  22. package/dest/contracts/fee_asset_handler.d.ts.map +1 -0
  23. package/dest/contracts/fee_asset_handler.js +57 -0
  24. package/dest/contracts/fee_juice.d.ts +6 -7
  25. package/dest/contracts/fee_juice.d.ts.map +1 -1
  26. package/dest/contracts/fee_juice.js +27 -20
  27. package/dest/contracts/governance.d.ts +43 -32
  28. package/dest/contracts/governance.d.ts.map +1 -1
  29. package/dest/contracts/governance.js +87 -84
  30. package/dest/contracts/governance_proposer.d.ts +17 -13
  31. package/dest/contracts/governance_proposer.d.ts.map +1 -1
  32. package/dest/contracts/governance_proposer.js +428 -25
  33. package/dest/contracts/gse.d.ts +32 -0
  34. package/dest/contracts/gse.d.ts.map +1 -0
  35. package/dest/contracts/gse.js +72 -0
  36. package/dest/contracts/inbox.d.ts +30 -0
  37. package/dest/contracts/inbox.d.ts.map +1 -0
  38. package/dest/contracts/inbox.js +49 -0
  39. package/dest/contracts/index.d.ts +10 -3
  40. package/dest/contracts/index.d.ts.map +1 -1
  41. package/dest/contracts/index.js +9 -2
  42. package/dest/contracts/multicall.d.ts +21 -0
  43. package/dest/contracts/multicall.d.ts.map +1 -0
  44. package/dest/contracts/multicall.js +156 -0
  45. package/dest/contracts/outbox.d.ts +41 -0
  46. package/dest/contracts/outbox.d.ts.map +1 -0
  47. package/dest/contracts/outbox.js +86 -0
  48. package/dest/contracts/registry.d.ts +10 -5
  49. package/dest/contracts/registry.d.ts.map +1 -1
  50. package/dest/contracts/registry.js +44 -16
  51. package/dest/contracts/rollup.d.ts +266 -53
  52. package/dest/contracts/rollup.d.ts.map +1 -1
  53. package/dest/contracts/rollup.js +1059 -116
  54. package/dest/contracts/slasher_contract.d.ts +44 -0
  55. package/dest/contracts/slasher_contract.d.ts.map +1 -0
  56. package/dest/contracts/slasher_contract.js +75 -0
  57. package/dest/contracts/tally_slashing_proposer.d.ts +140 -0
  58. package/dest/contracts/tally_slashing_proposer.d.ts.map +1 -0
  59. package/dest/contracts/tally_slashing_proposer.js +313 -0
  60. package/dest/contracts/utils.d.ts +3 -0
  61. package/dest/contracts/utils.d.ts.map +1 -0
  62. package/dest/contracts/utils.js +11 -0
  63. package/dest/deploy_aztec_l1_contracts.d.ts +255 -0
  64. package/dest/deploy_aztec_l1_contracts.d.ts.map +1 -0
  65. package/dest/deploy_aztec_l1_contracts.js +385 -0
  66. package/dest/deploy_l1_contract.d.ts +68 -0
  67. package/dest/deploy_l1_contract.d.ts.map +1 -0
  68. package/dest/deploy_l1_contract.js +312 -0
  69. package/dest/eth-signer/eth-signer.d.ts +21 -0
  70. package/dest/eth-signer/eth-signer.d.ts.map +1 -0
  71. package/dest/eth-signer/eth-signer.js +5 -0
  72. package/dest/eth-signer/index.d.ts +2 -0
  73. package/dest/eth-signer/index.d.ts.map +1 -0
  74. package/dest/eth-signer/index.js +1 -0
  75. package/dest/forwarder_proxy.d.ts +32 -0
  76. package/dest/forwarder_proxy.d.ts.map +1 -0
  77. package/dest/forwarder_proxy.js +93 -0
  78. package/dest/l1_artifacts.d.ts +79812 -0
  79. package/dest/l1_artifacts.d.ts.map +1 -0
  80. package/dest/l1_artifacts.js +166 -0
  81. package/dest/l1_contract_addresses.d.ts +24 -4
  82. package/dest/l1_contract_addresses.d.ts.map +1 -1
  83. package/dest/l1_contract_addresses.js +25 -21
  84. package/dest/l1_reader.d.ts +4 -2
  85. package/dest/l1_reader.d.ts.map +1 -1
  86. package/dest/l1_reader.js +14 -8
  87. package/dest/l1_tx_utils/config.d.ts +59 -0
  88. package/dest/l1_tx_utils/config.d.ts.map +1 -0
  89. package/dest/l1_tx_utils/config.js +96 -0
  90. package/dest/l1_tx_utils/constants.d.ts +12 -0
  91. package/dest/l1_tx_utils/constants.d.ts.map +1 -0
  92. package/dest/l1_tx_utils/constants.js +39 -0
  93. package/dest/l1_tx_utils/factory.d.ts +24 -0
  94. package/dest/l1_tx_utils/factory.d.ts.map +1 -0
  95. package/dest/l1_tx_utils/factory.js +12 -0
  96. package/dest/l1_tx_utils/fee-strategies/index.d.ts +10 -0
  97. package/dest/l1_tx_utils/fee-strategies/index.d.ts.map +1 -0
  98. package/dest/l1_tx_utils/fee-strategies/index.js +12 -0
  99. package/dest/l1_tx_utils/fee-strategies/p75_competitive.d.ts +8 -0
  100. package/dest/l1_tx_utils/fee-strategies/p75_competitive.d.ts.map +1 -0
  101. package/dest/l1_tx_utils/fee-strategies/p75_competitive.js +129 -0
  102. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.d.ts +23 -0
  103. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.d.ts.map +1 -0
  104. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.js +191 -0
  105. package/dest/l1_tx_utils/fee-strategies/types.d.ts +51 -0
  106. package/dest/l1_tx_utils/fee-strategies/types.d.ts.map +1 -0
  107. package/dest/l1_tx_utils/fee-strategies/types.js +3 -0
  108. package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts +41 -0
  109. package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts.map +1 -0
  110. package/dest/l1_tx_utils/forwarder_l1_tx_utils.js +48 -0
  111. package/dest/l1_tx_utils/index-blobs.d.ts +3 -0
  112. package/dest/l1_tx_utils/index-blobs.d.ts.map +1 -0
  113. package/dest/l1_tx_utils/index-blobs.js +2 -0
  114. package/dest/l1_tx_utils/index.d.ts +12 -0
  115. package/dest/l1_tx_utils/index.d.ts.map +1 -0
  116. package/dest/l1_tx_utils/index.js +12 -0
  117. package/dest/l1_tx_utils/interfaces.d.ts +76 -0
  118. package/dest/l1_tx_utils/interfaces.d.ts.map +1 -0
  119. package/dest/l1_tx_utils/interfaces.js +4 -0
  120. package/dest/l1_tx_utils/l1_fee_analyzer.d.ts +233 -0
  121. package/dest/l1_tx_utils/l1_fee_analyzer.d.ts.map +1 -0
  122. package/dest/l1_tx_utils/l1_fee_analyzer.js +506 -0
  123. package/dest/l1_tx_utils/l1_tx_utils.d.ts +94 -0
  124. package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -0
  125. package/dest/l1_tx_utils/l1_tx_utils.js +623 -0
  126. package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts +26 -0
  127. package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts.map +1 -0
  128. package/dest/l1_tx_utils/l1_tx_utils_with_blobs.js +26 -0
  129. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts +83 -0
  130. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts.map +1 -0
  131. package/dest/l1_tx_utils/readonly_l1_tx_utils.js +323 -0
  132. package/dest/l1_tx_utils/signer.d.ts +4 -0
  133. package/dest/l1_tx_utils/signer.d.ts.map +1 -0
  134. package/dest/l1_tx_utils/signer.js +16 -0
  135. package/dest/l1_tx_utils/types.d.ts +67 -0
  136. package/dest/l1_tx_utils/types.d.ts.map +1 -0
  137. package/dest/l1_tx_utils/types.js +26 -0
  138. package/dest/l1_tx_utils/utils.d.ts +4 -0
  139. package/dest/l1_tx_utils/utils.d.ts.map +1 -0
  140. package/dest/l1_tx_utils/utils.js +14 -0
  141. package/dest/l1_types.d.ts +6 -0
  142. package/dest/l1_types.d.ts.map +1 -0
  143. package/dest/l1_types.js +1 -0
  144. package/dest/publisher_manager.d.ts +15 -0
  145. package/dest/publisher_manager.d.ts.map +1 -0
  146. package/dest/publisher_manager.js +88 -0
  147. package/dest/queries.d.ts +4 -2
  148. package/dest/queries.d.ts.map +1 -1
  149. package/dest/queries.js +58 -12
  150. package/dest/test/chain_monitor.d.ts +75 -0
  151. package/dest/test/chain_monitor.d.ts.map +1 -0
  152. package/dest/test/chain_monitor.js +213 -0
  153. package/dest/test/delayed_tx_utils.d.ts +8 -3
  154. package/dest/test/delayed_tx_utils.d.ts.map +1 -1
  155. package/dest/test/delayed_tx_utils.js +13 -6
  156. package/dest/test/eth_cheat_codes.d.ts +217 -0
  157. package/dest/test/eth_cheat_codes.d.ts.map +1 -0
  158. package/dest/test/eth_cheat_codes.js +560 -0
  159. package/dest/test/eth_cheat_codes_with_state.d.ts +2 -2
  160. package/dest/test/eth_cheat_codes_with_state.d.ts.map +1 -1
  161. package/dest/test/eth_cheat_codes_with_state.js +1 -1
  162. package/dest/test/index.d.ts +4 -1
  163. package/dest/test/index.d.ts.map +1 -1
  164. package/dest/test/index.js +3 -0
  165. package/dest/test/rollup_cheat_codes.d.ts +88 -0
  166. package/dest/test/rollup_cheat_codes.d.ts.map +1 -0
  167. package/dest/test/rollup_cheat_codes.js +283 -0
  168. package/dest/test/start_anvil.d.ts +9 -1
  169. package/dest/test/start_anvil.d.ts.map +1 -1
  170. package/dest/test/start_anvil.js +16 -7
  171. package/dest/test/tx_delayer.d.ts +18 -7
  172. package/dest/test/tx_delayer.d.ts.map +1 -1
  173. package/dest/test/tx_delayer.js +97 -20
  174. package/dest/test/upgrade_utils.d.ts +6 -5
  175. package/dest/test/upgrade_utils.d.ts.map +1 -1
  176. package/dest/test/upgrade_utils.js +23 -16
  177. package/dest/types.d.ts +62 -8
  178. package/dest/types.d.ts.map +1 -1
  179. package/dest/types.js +3 -1
  180. package/dest/utils.d.ts +16 -3
  181. package/dest/utils.d.ts.map +1 -1
  182. package/dest/utils.js +61 -88
  183. package/dest/zkPassportVerifierAddress.d.ts +15 -0
  184. package/dest/zkPassportVerifierAddress.d.ts.map +1 -0
  185. package/dest/zkPassportVerifierAddress.js +11 -0
  186. package/package.json +50 -23
  187. package/src/account.ts +5 -0
  188. package/src/client.ts +43 -5
  189. package/src/config.ts +196 -31
  190. package/src/contracts/empire_base.ts +77 -7
  191. package/src/contracts/empire_slashing_proposer.ts +270 -0
  192. package/src/contracts/errors.ts +13 -0
  193. package/src/contracts/fee_asset_handler.ts +64 -0
  194. package/src/contracts/fee_juice.ts +29 -15
  195. package/src/contracts/governance.ts +80 -77
  196. package/src/contracts/governance_proposer.ts +71 -24
  197. package/src/contracts/gse.ts +88 -0
  198. package/src/contracts/inbox.ts +68 -0
  199. package/src/contracts/index.ts +9 -2
  200. package/src/contracts/multicall.ts +155 -0
  201. package/src/contracts/outbox.ts +98 -0
  202. package/src/contracts/registry.ts +51 -26
  203. package/src/contracts/rollup.ts +784 -90
  204. package/src/contracts/slasher_contract.ts +89 -0
  205. package/src/contracts/tally_slashing_proposer.ts +318 -0
  206. package/src/contracts/utils.ts +14 -0
  207. package/src/deploy_aztec_l1_contracts.ts +605 -0
  208. package/src/deploy_l1_contract.ts +362 -0
  209. package/src/eth-signer/eth-signer.ts +25 -0
  210. package/src/eth-signer/index.ts +1 -0
  211. package/src/forwarder_proxy.ts +108 -0
  212. package/src/l1_artifacts.ts +254 -0
  213. package/src/l1_contract_addresses.ts +49 -34
  214. package/src/l1_reader.ts +17 -9
  215. package/src/l1_tx_utils/README.md +177 -0
  216. package/src/l1_tx_utils/config.ts +161 -0
  217. package/src/l1_tx_utils/constants.ts +29 -0
  218. package/src/l1_tx_utils/factory.ts +64 -0
  219. package/src/l1_tx_utils/fee-strategies/index.ts +22 -0
  220. package/src/l1_tx_utils/fee-strategies/p75_competitive.ts +163 -0
  221. package/src/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.ts +245 -0
  222. package/src/l1_tx_utils/fee-strategies/types.ts +56 -0
  223. package/src/l1_tx_utils/forwarder_l1_tx_utils.ts +119 -0
  224. package/src/l1_tx_utils/index-blobs.ts +2 -0
  225. package/src/l1_tx_utils/index.ts +14 -0
  226. package/src/l1_tx_utils/interfaces.ts +86 -0
  227. package/src/l1_tx_utils/l1_fee_analyzer.ts +803 -0
  228. package/src/l1_tx_utils/l1_tx_utils.ts +738 -0
  229. package/src/l1_tx_utils/l1_tx_utils_with_blobs.ts +77 -0
  230. package/src/l1_tx_utils/readonly_l1_tx_utils.ts +419 -0
  231. package/src/l1_tx_utils/signer.ts +28 -0
  232. package/src/l1_tx_utils/types.ts +85 -0
  233. package/src/l1_tx_utils/utils.ts +16 -0
  234. package/src/l1_types.ts +6 -0
  235. package/src/publisher_manager.ts +106 -0
  236. package/src/queries.ts +79 -15
  237. package/src/test/chain_monitor.ts +245 -0
  238. package/src/test/delayed_tx_utils.ts +34 -6
  239. package/src/test/eth_cheat_codes.ts +588 -0
  240. package/src/test/eth_cheat_codes_with_state.ts +1 -1
  241. package/src/test/index.ts +3 -0
  242. package/src/test/rollup_cheat_codes.ts +321 -0
  243. package/src/test/start_anvil.ts +24 -5
  244. package/src/test/tx_delayer.ts +130 -27
  245. package/src/test/upgrade_utils.ts +30 -21
  246. package/src/types.ts +71 -7
  247. package/src/utils.ts +79 -91
  248. package/src/zkPassportVerifierAddress.ts +15 -0
  249. package/dest/contracts/forwarder.d.ts +0 -24
  250. package/dest/contracts/forwarder.d.ts.map +0 -1
  251. package/dest/contracts/forwarder.js +0 -101
  252. package/dest/contracts/slashing_proposer.d.ts +0 -21
  253. package/dest/contracts/slashing_proposer.d.ts.map +0 -1
  254. package/dest/contracts/slashing_proposer.js +0 -47
  255. package/dest/deploy_l1_contracts.d.ts +0 -21210
  256. package/dest/deploy_l1_contracts.d.ts.map +0 -1
  257. package/dest/deploy_l1_contracts.js +0 -687
  258. package/dest/eth_cheat_codes.d.ts +0 -147
  259. package/dest/eth_cheat_codes.d.ts.map +0 -1
  260. package/dest/eth_cheat_codes.js +0 -303
  261. package/dest/index.d.ts +0 -14
  262. package/dest/index.d.ts.map +0 -1
  263. package/dest/index.js +0 -13
  264. package/dest/l1_tx_utils.d.ts +0 -192
  265. package/dest/l1_tx_utils.d.ts.map +0 -1
  266. package/dest/l1_tx_utils.js +0 -641
  267. package/dest/l1_tx_utils_with_blobs.d.ts +0 -12
  268. package/dest/l1_tx_utils_with_blobs.d.ts.map +0 -1
  269. package/dest/l1_tx_utils_with_blobs.js +0 -64
  270. package/src/contracts/forwarder.ts +0 -132
  271. package/src/contracts/slashing_proposer.ts +0 -51
  272. package/src/deploy_l1_contracts.ts +0 -948
  273. package/src/eth_cheat_codes.ts +0 -314
  274. package/src/index.ts +0 -13
  275. package/src/l1_tx_utils.ts +0 -847
  276. package/src/l1_tx_utils_with_blobs.ts +0 -86
@@ -0,0 +1,49 @@
1
+ import { Buffer16 } from '@aztec/foundation/buffer';
2
+ import { EthAddress } from '@aztec/foundation/eth-address';
3
+ import { InboxAbi } from '@aztec/l1-artifacts/InboxAbi';
4
+ import { getContract } from 'viem';
5
+ import { getPublicClient } from '../client.js';
6
+ import { checkBlockTag } from './utils.js';
7
+ export class InboxContract {
8
+ client;
9
+ inbox;
10
+ static getFromL1ContractsValues(deployL1ContractsValues) {
11
+ const { l1Client, l1ContractAddresses: { inboxAddress } } = deployL1ContractsValues;
12
+ return new InboxContract(l1Client, inboxAddress.toString());
13
+ }
14
+ static getFromConfig(config) {
15
+ const client = getPublicClient(config);
16
+ const address = config.l1Contracts.inboxAddress.toString();
17
+ return new InboxContract(client, address);
18
+ }
19
+ constructor(client, address){
20
+ this.client = client;
21
+ if (address instanceof EthAddress) {
22
+ address = address.toString();
23
+ }
24
+ this.inbox = getContract({
25
+ address,
26
+ abi: InboxAbi,
27
+ client
28
+ });
29
+ }
30
+ get address() {
31
+ return this.inbox.address;
32
+ }
33
+ getContract() {
34
+ return this.inbox;
35
+ }
36
+ async getLag(opts = {}) {
37
+ await checkBlockTag(opts.blockNumber, this.client);
38
+ return await this.inbox.read.LAG(opts);
39
+ }
40
+ async getState(opts = {}) {
41
+ await checkBlockTag(opts.blockNumber, this.client);
42
+ const state = await this.inbox.read.getState(opts);
43
+ return {
44
+ totalMessagesInserted: state.totalMessagesInserted,
45
+ messagesRollingHash: Buffer16.fromString(state.rollingHash),
46
+ treeInProgress: state.inProgress
47
+ };
48
+ }
49
+ }
@@ -1,9 +1,16 @@
1
1
  export * from './empire_base.js';
2
+ export * from './errors.js';
3
+ export * from './fee_asset_handler.js';
2
4
  export * from './fee_juice.js';
3
- export * from './forwarder.js';
4
5
  export * from './governance.js';
5
6
  export * from './governance_proposer.js';
7
+ export * from './gse.js';
8
+ export * from './inbox.js';
9
+ export * from './multicall.js';
10
+ export * from './outbox.js';
6
11
  export * from './registry.js';
7
12
  export * from './rollup.js';
8
- export * from './slashing_proposer.js';
9
- //# sourceMappingURL=index.d.ts.map
13
+ export * from './empire_slashing_proposer.js';
14
+ export * from './tally_slashing_proposer.js';
15
+ export * from './slasher_contract.js';
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsdUJBQXVCLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAC"}
@@ -1,8 +1,15 @@
1
1
  export * from './empire_base.js';
2
+ export * from './errors.js';
3
+ export * from './fee_asset_handler.js';
2
4
  export * from './fee_juice.js';
3
- export * from './forwarder.js';
4
5
  export * from './governance.js';
5
6
  export * from './governance_proposer.js';
7
+ export * from './gse.js';
8
+ export * from './inbox.js';
9
+ export * from './multicall.js';
10
+ export * from './outbox.js';
6
11
  export * from './registry.js';
7
12
  export * from './rollup.js';
8
- export * from './slashing_proposer.js';
13
+ export * from './empire_slashing_proposer.js';
14
+ export * from './tally_slashing_proposer.js';
15
+ export * from './slasher_contract.js';
@@ -0,0 +1,21 @@
1
+ import type { Logger } from '@aztec/foundation/log';
2
+ import { type Hex } from 'viem';
3
+ import type { L1BlobInputs, L1TxConfig, L1TxRequest, L1TxUtils } from '../l1_tx_utils/index.js';
4
+ import type { ExtendedViemWalletClient } from '../types.js';
5
+ import { FormattedViemError } from '../utils.js';
6
+ export declare const MULTI_CALL_3_ADDRESS: "0xcA11bde05977b3631167028862bE2a173976CA11";
7
+ export declare class Multicall3 {
8
+ static forward(requests: L1TxRequest[], l1TxUtils: L1TxUtils, gasConfig: L1TxConfig | undefined, blobConfig: L1BlobInputs | undefined, rollupAddress: Hex, logger: Logger, opts?: {
9
+ revertOnFailure?: boolean;
10
+ }): Promise<FormattedViemError | {
11
+ receipt: import("viem").TransactionReceipt;
12
+ stats: import("../l1_tx_utils/types.js").TransactionStats | undefined;
13
+ errorMsg?: undefined;
14
+ } | {
15
+ stats?: undefined;
16
+ receipt: import("viem").TransactionReceipt;
17
+ errorMsg: string | undefined;
18
+ }>;
19
+ }
20
+ export declare function deployMulticall3(l1Client: ExtendedViemWalletClient, logger: Logger): Promise<void>;
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGljYWxsLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL211bHRpY2FsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQXFDLEtBQUssR0FBRyxFQUFxQyxNQUFNLE1BQU0sQ0FBQztBQUV0RyxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRyxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQW1CLE1BQU0sYUFBYSxDQUFDO0FBR2xFLGVBQU8sTUFBTSxvQkFBb0IsOENBQXdELENBQUM7QUFFMUYscUJBQWEsVUFBVTtJQUNyQixPQUFhLE9BQU8sQ0FDbEIsUUFBUSxFQUFFLFdBQVcsRUFBRSxFQUN2QixTQUFTLEVBQUUsU0FBUyxFQUNwQixTQUFTLEVBQUUsVUFBVSxHQUFHLFNBQVMsRUFDakMsVUFBVSxFQUFFLFlBQVksR0FBRyxTQUFTLEVBQ3BDLGFBQWEsRUFBRSxHQUFHLEVBQ2xCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsSUFBSSxHQUFFO1FBQUUsZUFBZSxDQUFDLEVBQUUsT0FBTyxDQUFBO0tBQU87Ozs7Ozs7O09BbUd6QztDQUNGO0FBRUQsd0JBQXNCLGdCQUFnQixDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkErQnhGIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multicall.d.ts","sourceRoot":"","sources":["../../src/contracts/multicall.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAqC,KAAK,GAAG,EAAqC,MAAM,MAAM,CAAC;AAEtG,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAChG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAmB,MAAM,aAAa,CAAC;AAGlE,eAAO,MAAM,oBAAoB,8CAAwD,CAAC;AAE1F,qBAAa,UAAU;IACrB,OAAa,OAAO,CAClB,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,UAAU,GAAG,SAAS,EACjC,UAAU,EAAE,YAAY,GAAG,SAAS,EACpC,aAAa,EAAE,GAAG,EAClB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAO;;;;;;;;OAmGzC;CACF;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,iBA+BxF"}
@@ -0,0 +1,156 @@
1
+ import { toHex as toPaddedHex } from '@aztec/foundation/bigint-buffer';
2
+ import { TimeoutError } from '@aztec/foundation/error';
3
+ import { encodeFunctionData, multicall3Abi } from 'viem';
4
+ import { FormattedViemError, formatViemError } from '../utils.js';
5
+ import { RollupContract } from './rollup.js';
6
+ export const MULTI_CALL_3_ADDRESS = '0xcA11bde05977b3631167028862bE2a173976CA11';
7
+ export class Multicall3 {
8
+ static async forward(requests, l1TxUtils, gasConfig, blobConfig, rollupAddress, logger, opts = {}) {
9
+ requests = requests.filter((request)=>request.to !== null);
10
+ const args = requests.map((r)=>({
11
+ target: r.to,
12
+ callData: r.data,
13
+ allowFailure: !opts.revertOnFailure
14
+ }));
15
+ const forwarderFunctionData = {
16
+ abi: multicall3Abi,
17
+ functionName: 'aggregate3',
18
+ args: [
19
+ args
20
+ ]
21
+ };
22
+ const encodedForwarderData = encodeFunctionData(forwarderFunctionData);
23
+ try {
24
+ const { receipt, state } = await l1TxUtils.sendAndMonitorTransaction({
25
+ to: MULTI_CALL_3_ADDRESS,
26
+ data: encodedForwarderData
27
+ }, gasConfig, blobConfig);
28
+ if (receipt.status === 'success') {
29
+ const stats = await l1TxUtils.getTransactionStats(receipt.transactionHash);
30
+ return {
31
+ receipt,
32
+ stats
33
+ };
34
+ } else {
35
+ logger.error('Forwarder transaction failed', undefined, {
36
+ receipt
37
+ });
38
+ const args = {
39
+ ...forwarderFunctionData,
40
+ address: MULTI_CALL_3_ADDRESS
41
+ };
42
+ let errorMsg;
43
+ if (blobConfig) {
44
+ const maxFeePerBlobGas = blobConfig.maxFeePerBlobGas ?? state.gasPrice.maxFeePerBlobGas;
45
+ if (maxFeePerBlobGas === undefined) {
46
+ errorMsg = 'maxFeePerBlobGas is required to get the error message';
47
+ } else {
48
+ logger.debug('Trying to get error from reverted tx with blob config');
49
+ errorMsg = await l1TxUtils.tryGetErrorFromRevertedTx(encodedForwarderData, args, {
50
+ blobs: blobConfig.blobs,
51
+ kzg: blobConfig.kzg,
52
+ maxFeePerBlobGas
53
+ }, [
54
+ {
55
+ address: rollupAddress,
56
+ stateDiff: [
57
+ {
58
+ slot: toPaddedHex(RollupContract.checkBlobStorageSlot, true),
59
+ value: toPaddedHex(0n, true)
60
+ }
61
+ ]
62
+ }
63
+ ]);
64
+ }
65
+ } else {
66
+ logger.debug('Trying to get error from reverted tx without blob config');
67
+ errorMsg = await l1TxUtils.tryGetErrorFromRevertedTx(encodedForwarderData, args, undefined, []);
68
+ }
69
+ return {
70
+ receipt,
71
+ errorMsg
72
+ };
73
+ }
74
+ } catch (err) {
75
+ if (err instanceof TimeoutError) {
76
+ throw err;
77
+ }
78
+ for (const request of requests){
79
+ logger.debug('Simulating request', {
80
+ request
81
+ });
82
+ const result = await l1TxUtils.simulate(request, undefined, [
83
+ {
84
+ address: rollupAddress,
85
+ stateDiff: [
86
+ {
87
+ slot: toPaddedHex(RollupContract.checkBlobStorageSlot, true),
88
+ value: toPaddedHex(0n, true)
89
+ }
90
+ ]
91
+ }
92
+ ]).catch((err)=>formatViemError(err, request.abi));
93
+ if (result instanceof FormattedViemError) {
94
+ logger.error('Found error in simulation', result, {
95
+ to: request.to ?? 'null',
96
+ data: request.data
97
+ });
98
+ return result;
99
+ }
100
+ }
101
+ logger.warn('Failed to get error from reverted tx', {
102
+ err
103
+ });
104
+ throw err;
105
+ }
106
+ }
107
+ }
108
+ export async function deployMulticall3(l1Client, logger) {
109
+ const existing = await l1Client.getCode({
110
+ address: MULTI_CALL_3_ADDRESS
111
+ });
112
+ if (existing && existing !== '0x') {
113
+ logger.verbose('Multicall3 already deployed', {
114
+ address: MULTI_CALL_3_ADDRESS
115
+ });
116
+ return;
117
+ }
118
+ const deployer = '0x05f32b3cc3888453ff71b01135b34ff8e41263f2';
119
+ const sendEth = await l1Client.sendTransaction({
120
+ to: deployer,
121
+ value: 10n ** 17n
122
+ });
123
+ logger.info('Sent 0.1 ETH to deployer', {
124
+ deployer,
125
+ value: 10n ** 17n
126
+ });
127
+ const sendEthReceipt = await l1Client.waitForTransactionReceipt({
128
+ hash: sendEth
129
+ });
130
+ if (sendEthReceipt.status !== 'success') {
131
+ logger.error('Failed to send ETH to deployer', undefined, {
132
+ sendEthReceipt
133
+ });
134
+ throw new Error('Failed to send ETH to deployer');
135
+ } else {
136
+ logger.info('Sent 0.1 ETH to deployer', {
137
+ deployer,
138
+ value: 10n ** 17n
139
+ });
140
+ }
141
+ const tx = '0xf90f538085174876e800830f42408080b90f00608060405234801561001057600080fd5b50610ee0806100206000396000f3fe6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e1461025a578063bce38bd714610275578063c3077fa914610288578063ee82ac5e1461029b57600080fd5b80634d2301cc146101ec57806372425d9d1461022157806382ad56cb1461023457806386d516e81461024757600080fd5b80633408e470116100c65780633408e47014610191578063399542e9146101a45780633e64a696146101c657806342cbb15c146101d957600080fd5b80630f28c97d146100f8578063174dea711461011a578063252dba421461013a57806327e86d6e1461015b575b600080fd5b34801561010457600080fd5b50425b6040519081526020015b60405180910390f35b61012d610128366004610a85565b6102ba565b6040516101119190610bbe565b61014d610148366004610a85565b6104ef565b604051610111929190610bd8565b34801561016757600080fd5b50437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0140610107565b34801561019d57600080fd5b5046610107565b6101b76101b2366004610c60565b610690565b60405161011193929190610cba565b3480156101d257600080fd5b5048610107565b3480156101e557600080fd5b5043610107565b3480156101f857600080fd5b50610107610207366004610ce2565b73ffffffffffffffffffffffffffffffffffffffff163190565b34801561022d57600080fd5b5044610107565b61012d610242366004610a85565b6106ab565b34801561025357600080fd5b5045610107565b34801561026657600080fd5b50604051418152602001610111565b61012d610283366004610c60565b61085a565b6101b7610296366004610a85565b610a1a565b3480156102a757600080fd5b506101076102b6366004610d18565b4090565b60606000828067ffffffffffffffff8111156102d8576102d8610d31565b60405190808252806020026020018201604052801561031e57816020015b6040805180820190915260008152606060208201528152602001906001900390816102f65790505b5092503660005b8281101561047757600085828151811061034157610341610d60565b6020026020010151905087878381811061035d5761035d610d60565b905060200281019061036f9190610d8f565b6040810135958601959093506103886020850185610ce2565b73ffffffffffffffffffffffffffffffffffffffff16816103ac6060870187610dcd565b6040516103ba929190610e32565b60006040518083038185875af1925050503d80600081146103f7576040519150601f19603f3d011682016040523d82523d6000602084013e6103fc565b606091505b50602080850191909152901515808452908501351761046d577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b5050600101610325565b508234146104e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d756c746963616c6c333a2076616c7565206d69736d6174636800000000000060448201526064015b60405180910390fd5b50505092915050565b436060828067ffffffffffffffff81111561050c5761050c610d31565b60405190808252806020026020018201604052801561053f57816020015b606081526020019060019003908161052a5790505b5091503660005b8281101561068657600087878381811061056257610562610d60565b90506020028101906105749190610e42565b92506105836020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166105a66020850185610dcd565b6040516105b4929190610e32565b6000604051808303816000865af19150503d80600081146105f1576040519150601f19603f3d011682016040523d82523d6000602084013e6105f6565b606091505b5086848151811061060957610609610d60565b602090810291909101015290508061067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b50600101610546565b5050509250929050565b43804060606106a086868661085a565b905093509350939050565b6060818067ffffffffffffffff8111156106c7576106c7610d31565b60405190808252806020026020018201604052801561070d57816020015b6040805180820190915260008152606060208201528152602001906001900390816106e55790505b5091503660005b828110156104e657600084828151811061073057610730610d60565b6020026020010151905086868381811061074c5761074c610d60565b905060200281019061075e9190610e76565b925061076d6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166107906040850185610dcd565b60405161079e929190610e32565b6000604051808303816000865af19150503d80600081146107db576040519150601f19603f3d011682016040523d82523d6000602084013e6107e0565b606091505b506020808401919091529015158083529084013517610851577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b50600101610714565b6060818067ffffffffffffffff81111561087657610876610d31565b6040519080825280602002602001820160405280156108bc57816020015b6040805180820190915260008152606060208201528152602001906001900390816108945790505b5091503660005b82811015610a105760008482815181106108df576108df610d60565b602002602001015190508686838181106108fb576108fb610d60565b905060200281019061090d9190610e42565b925061091c6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff1661093f6020850185610dcd565b60405161094d929190610e32565b6000604051808303816000865af19150503d806000811461098a576040519150601f19603f3d011682016040523d82523d6000602084013e61098f565b606091505b506020830152151581528715610a07578051610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b506001016108c3565b5050509392505050565b6000806060610a2b60018686610690565b919790965090945092505050565b60008083601f840112610a4b57600080fd5b50813567ffffffffffffffff811115610a6357600080fd5b6020830191508360208260051b8501011115610a7e57600080fd5b9250929050565b60008060208385031215610a9857600080fd5b823567ffffffffffffffff811115610aaf57600080fd5b610abb85828601610a39565b90969095509350505050565b6000815180845260005b81811015610aed57602081850181015186830182015201610ad1565b81811115610aff576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015610bb1578583037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001895281518051151584528401516040858501819052610b9d81860183610ac7565b9a86019a9450505090830190600101610b4f565b5090979650505050505050565b602081526000610bd16020830184610b32565b9392505050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015610c52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452610c40868351610ac7565b95509284019290840190600101610c06565b509398975050505050505050565b600080600060408486031215610c7557600080fd5b83358015158114610c8557600080fd5b9250602084013567ffffffffffffffff811115610ca157600080fd5b610cad86828701610a39565b9497909650939450505050565b838152826020820152606060408201526000610cd96060830184610b32565b95945050505050565b600060208284031215610cf457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610bd157600080fd5b600060208284031215610d2a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112610dc357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e0257600080fd5b83018035915067ffffffffffffffff821115610e1d57600080fd5b602001915036819003821315610a7e57600080fd5b8183823760009101908152919050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112610dc357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610dc357600080fdfea2646970667358221220bb2b5c71a328032f97c676ae39a1ec2148d3e5d6f73d95e9b17910152d61f16264736f6c634300080c00331ca0edce47092c0f398cebf3ffc267f05c8e7076e3b89445e0fe50f6332273d4569ba01b0b9d000e19b24c5869b0fc3b22b0d6fa47cd63316875cbbd577d76e6fde086';
142
+ const deployTx = await l1Client.sendRawTransaction({
143
+ serializedTransaction: tx
144
+ });
145
+ const deployTxReceipt = await l1Client.waitForTransactionReceipt({
146
+ hash: deployTx
147
+ });
148
+ if (deployTxReceipt.status !== 'success') {
149
+ logger.error('Failed to deploy Multicall3', undefined, {
150
+ deployTxReceipt
151
+ });
152
+ throw new Error('Failed to deploy Multicall3');
153
+ } else {
154
+ logger.info('Deployed Multicall3');
155
+ }
156
+ }
@@ -0,0 +1,41 @@
1
+ import type { EpochNumber } from '@aztec/foundation/branded-types';
2
+ import { EthAddress } from '@aztec/foundation/eth-address';
3
+ import { OutboxAbi } from '@aztec/l1-artifacts/OutboxAbi';
4
+ import { type GetContractReturnType, type Hex } from 'viem';
5
+ import type { DeployAztecL1ContractsReturnType } from '../deploy_aztec_l1_contracts.js';
6
+ import type { L1ReaderConfig } from '../l1_reader.js';
7
+ import { type ViemClient } from '../types.js';
8
+ export type ViemL1Actor = {
9
+ actor: Hex;
10
+ chainId: bigint;
11
+ };
12
+ export type ViemL2Actor = {
13
+ actor: Hex;
14
+ version: bigint;
15
+ };
16
+ export type ViemL2ToL1Msg = {
17
+ sender: ViemL2Actor;
18
+ recipient: ViemL1Actor;
19
+ content: Hex;
20
+ };
21
+ export declare class OutboxContract {
22
+ readonly client: ViemClient;
23
+ private readonly outbox;
24
+ static getFromL1ContractsValues(deployL1ContractsValues: DeployAztecL1ContractsReturnType): OutboxContract;
25
+ static getFromConfig(config: L1ReaderConfig): OutboxContract;
26
+ static getEpochRootStorageSlot(epoch: EpochNumber): bigint;
27
+ constructor(client: ViemClient, address: Hex | EthAddress);
28
+ get address(): `0x${string}`;
29
+ getContract(): GetContractReturnType<typeof OutboxAbi, ViemClient>;
30
+ hasMessageBeenConsumedAtEpoch(epoch: EpochNumber, leafId: bigint): Promise<boolean>;
31
+ getRootData(epoch: EpochNumber): Promise<`0x${string}`>;
32
+ consume(message: ViemL2ToL1Msg, epoch: EpochNumber, leafIndex: bigint, path: Hex[]): Promise<`0x${string}`>;
33
+ getMessageConsumedEvents(l1BlockHash: Hex): Promise<{
34
+ epoch: bigint;
35
+ root: Hex;
36
+ messageHash: Hex;
37
+ leafId: bigint;
38
+ }[]>;
39
+ private assertWallet;
40
+ }
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0Ym94LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL291dGJveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTFELE9BQU8sRUFBRSxLQUFLLHFCQUFxQixFQUFFLEtBQUssR0FBRyxFQUE0RCxNQUFNLE1BQU0sQ0FBQztBQUd0SCxPQUFPLEtBQUssRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hGLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBaUMsS0FBSyxVQUFVLEVBQW9CLE1BQU0sYUFBYSxDQUFDO0FBRS9GLE1BQU0sTUFBTSxXQUFXLEdBQUc7SUFDeEIsS0FBSyxFQUFFLEdBQUcsQ0FBQztJQUNYLE9BQU8sRUFBRSxNQUFNLENBQUM7Q0FDakIsQ0FBQztBQUVGLE1BQU0sTUFBTSxXQUFXLEdBQUc7SUFDeEIsS0FBSyxFQUFFLEdBQUcsQ0FBQztJQUNYLE9BQU8sRUFBRSxNQUFNLENBQUM7Q0FDakIsQ0FBQztBQUVGLE1BQU0sTUFBTSxhQUFhLEdBQUc7SUFDMUIsTUFBTSxFQUFFLFdBQVcsQ0FBQztJQUNwQixTQUFTLEVBQUUsV0FBVyxDQUFDO0lBQ3ZCLE9BQU8sRUFBRSxHQUFHLENBQUM7Q0FDZCxDQUFDO0FBRUYscUJBQWEsY0FBYzthQXNCUCxNQUFNLEVBQUUsVUFBVTtJQXJCcEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQXNEO0lBRTdFLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyx1QkFBdUIsRUFBRSxnQ0FBZ0Msa0JBTXhGO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsY0FBYyxrQkFJMUM7SUFFRCxNQUFNLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLFdBQVcsVUFFaEQ7SUFFRCxZQUNrQixNQUFNLEVBQUUsVUFBVSxFQUNsQyxPQUFPLEVBQUUsR0FBRyxHQUFHLFVBQVUsRUFNMUI7SUFFRCxJQUFXLE9BQU8sa0JBRWpCO0lBRU0sV0FBVyxJQUFJLHFCQUFxQixDQUFDLE9BQU8sU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUV4RTtJQUVNLDZCQUE2QixDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBRXRFO0lBRU0sV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXLDBCQUVwQztJQUVNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLDBCQUd4RjtJQUVZLHdCQUF3QixDQUNuQyxXQUFXLEVBQUUsR0FBRyxHQUNmLE9BQU8sQ0FBQztRQUFFLEtBQUssRUFBRSxNQUFNLENBQUM7UUFBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1FBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQztRQUFDLE1BQU0sRUFBRSxNQUFNLENBQUE7S0FBRSxFQUFFLENBQUMsQ0FRM0U7SUFFRCxPQUFPLENBQUMsWUFBWTtDQU1yQiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbox.d.ts","sourceRoot":"","sources":["../../src/contracts/outbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,GAAG,EAA4D,MAAM,MAAM,CAAC;AAGtH,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAiC,KAAK,UAAU,EAAoB,MAAM,aAAa,CAAC;AAE/F,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,GAAG,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,GAAG,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,WAAW,CAAC;IACvB,OAAO,EAAE,GAAG,CAAC;CACd,CAAC;AAEF,qBAAa,cAAc;aAsBP,MAAM,EAAE,UAAU;IArBpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsD;IAE7E,MAAM,CAAC,wBAAwB,CAAC,uBAAuB,EAAE,gCAAgC,kBAMxF;IAED,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,cAAc,kBAI1C;IAED,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,WAAW,UAEhD;IAED,YACkB,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG,GAAG,UAAU,EAM1B;IAED,IAAW,OAAO,kBAEjB;IAEM,WAAW,IAAI,qBAAqB,CAAC,OAAO,SAAS,EAAE,UAAU,CAAC,CAExE;IAEM,6BAA6B,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,oBAEtE;IAEM,WAAW,CAAC,KAAK,EAAE,WAAW,0BAEpC;IAEM,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,0BAGxF;IAEY,wBAAwB,CACnC,WAAW,EAAE,GAAG,GACf,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAC;QAAC,WAAW,EAAE,GAAG,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAQ3E;IAED,OAAO,CAAC,YAAY;CAMrB"}
@@ -0,0 +1,86 @@
1
+ import { EthAddress } from '@aztec/foundation/eth-address';
2
+ import { OutboxAbi } from '@aztec/l1-artifacts/OutboxAbi';
3
+ import { encodeAbiParameters, getContract, hexToBigInt, keccak256 } from 'viem';
4
+ import { getPublicClient } from '../client.js';
5
+ import { isExtendedClient } from '../types.js';
6
+ export class OutboxContract {
7
+ client;
8
+ outbox;
9
+ static getFromL1ContractsValues(deployL1ContractsValues) {
10
+ const { l1Client, l1ContractAddresses: { outboxAddress } } = deployL1ContractsValues;
11
+ return new OutboxContract(l1Client, outboxAddress.toString());
12
+ }
13
+ static getFromConfig(config) {
14
+ const client = getPublicClient(config);
15
+ const address = config.l1Contracts.outboxAddress.toString();
16
+ return new OutboxContract(client, address);
17
+ }
18
+ static getEpochRootStorageSlot(epoch) {
19
+ return hexToBigInt(keccak256(encodeAbiParameters([
20
+ {
21
+ type: 'uint256'
22
+ },
23
+ {
24
+ type: 'uint256'
25
+ }
26
+ ], [
27
+ BigInt(epoch),
28
+ 0n
29
+ ])));
30
+ }
31
+ constructor(client, address){
32
+ this.client = client;
33
+ if (address instanceof EthAddress) {
34
+ address = address.toString();
35
+ }
36
+ this.outbox = getContract({
37
+ address,
38
+ abi: OutboxAbi,
39
+ client
40
+ });
41
+ }
42
+ get address() {
43
+ return this.outbox.address;
44
+ }
45
+ getContract() {
46
+ return this.outbox;
47
+ }
48
+ hasMessageBeenConsumedAtEpoch(epoch, leafId) {
49
+ return this.outbox.read.hasMessageBeenConsumedAtEpoch([
50
+ BigInt(epoch),
51
+ leafId
52
+ ]);
53
+ }
54
+ getRootData(epoch) {
55
+ return this.outbox.read.getRootData([
56
+ BigInt(epoch)
57
+ ]);
58
+ }
59
+ consume(message, epoch, leafIndex, path) {
60
+ const wallet = this.assertWallet();
61
+ return wallet.write.consume([
62
+ message,
63
+ BigInt(epoch),
64
+ leafIndex,
65
+ path
66
+ ]);
67
+ }
68
+ async getMessageConsumedEvents(l1BlockHash) {
69
+ const events = await this.outbox.getEvents.MessageConsumed({}, {
70
+ blockHash: l1BlockHash,
71
+ strict: true
72
+ });
73
+ return events.map((event)=>({
74
+ epoch: event.args.epoch,
75
+ root: event.args.root,
76
+ messageHash: event.args.messageHash,
77
+ leafId: event.args.leafId
78
+ }));
79
+ }
80
+ assertWallet() {
81
+ if (!isExtendedClient(this.client)) {
82
+ throw new Error('Wallet client is required for this operation');
83
+ }
84
+ return this.outbox;
85
+ }
86
+ }
@@ -1,12 +1,14 @@
1
1
  import { EthAddress } from '@aztec/foundation/eth-address';
2
2
  import { type Hex } from 'viem';
3
3
  import type { L1ContractAddresses } from '../l1_contract_addresses.js';
4
- import type { L1Clients, ViemPublicClient } from '../types.js';
4
+ import type { ViemClient } from '../types.js';
5
5
  export declare class RegistryContract {
6
- readonly client: L1Clients['publicClient'];
6
+ readonly client: ViemClient;
7
7
  address: EthAddress;
8
+ private readonly log;
8
9
  private readonly registry;
9
- constructor(client: L1Clients['publicClient'], address: Hex | EthAddress);
10
+ constructor(client: ViemClient, address: Hex | EthAddress);
11
+ getOwner(): Promise<EthAddress>;
10
12
  /**
11
13
  * Returns the address of the rollup for a given version.
12
14
  * @param version - The version of the rollup. 'canonical' can be used to get the canonical address (i.e. the latest version).
@@ -19,6 +21,9 @@ export declare class RegistryContract {
19
21
  */
20
22
  getCanonicalAddress(): Promise<EthAddress>;
21
23
  getGovernanceAddresses(): Promise<Pick<L1ContractAddresses, 'governanceProposerAddress' | 'governanceAddress'>>;
22
- static collectAddresses(client: ViemPublicClient, registryAddress: Hex | EthAddress, rollupVersion: number | bigint | 'canonical'): Promise<L1ContractAddresses>;
24
+ static collectAddresses(client: ViemClient, registryAddress: Hex | EthAddress, rollupVersion: number | bigint | 'canonical'): Promise<L1ContractAddresses>;
25
+ getNumberOfVersions(): Promise<number>;
26
+ getRollupVersions(): Promise<bigint[]>;
27
+ getRewardDistributor(): Promise<EthAddress>;
23
28
  }
24
- //# sourceMappingURL=registry.d.ts.map
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdHMvcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBSzNELE9BQU8sRUFBOEIsS0FBSyxHQUFHLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFFekUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJOUMscUJBQWEsZ0JBQWdCO2FBT1QsTUFBTSxFQUFFLFVBQVU7SUFON0IsT0FBTyxFQUFFLFVBQVUsQ0FBQztJQUUzQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBK0M7SUFDbkUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQXdEO0lBRWpGLFlBQ2tCLE1BQU0sRUFBRSxVQUFVLEVBQ2xDLE9BQU8sRUFBRSxHQUFHLEdBQUcsVUFBVSxFQU8xQjtJQUVZLFFBQVEsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBRTNDO0lBRUQ7Ozs7T0FJRztJQUNVLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsTUFBTSxHQUFHLFdBQVcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBc0J6RjtJQUVEOzs7T0FHRztJQUNVLG1CQUFtQixJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FFdEQ7SUFFWSxzQkFBc0IsSUFBSSxPQUFPLENBQzVDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSwyQkFBMkIsR0FBRyxtQkFBbUIsQ0FBQyxDQUM3RSxDQVFBO0lBRUQsT0FBb0IsZ0JBQWdCLENBQ2xDLE1BQU0sRUFBRSxVQUFVLEVBQ2xCLGVBQWUsRUFBRSxHQUFHLEdBQUcsVUFBVSxFQUNqQyxhQUFhLEVBQUUsTUFBTSxHQUFHLE1BQU0sR0FBRyxXQUFXLEdBQzNDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQXVCOUI7SUFFWSxtQkFBbUIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBR2xEO0lBRVksaUJBQWlCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBU2xEO0lBRVksb0JBQW9CLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUV2RDtDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/contracts/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D,OAAO,EAGL,KAAK,GAAG,EAIT,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAI/D,qBAAa,gBAAgB;aAIC,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC;IAHtD,OAAO,EAAE,UAAU,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgF;gBAE7E,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,GAAG,UAAU;IAQxF;;;;OAIG;IACU,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAiB1F;;;OAGG;IACU,mBAAmB,IAAI,OAAO,CAAC,UAAU,CAAC;IAS1C,sBAAsB,IAAI,OAAO,CAC5C,IAAI,CAAC,mBAAmB,EAAE,2BAA2B,GAAG,mBAAmB,CAAC,CAC7E;WAUmB,gBAAgB,CAClC,MAAM,EAAE,gBAAgB,EACxB,eAAe,EAAE,GAAG,GAAG,UAAU,EACjC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAC3C,OAAO,CAAC,mBAAmB,CAAC;CAwBhC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/contracts/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAK3D,OAAO,EAA8B,KAAK,GAAG,EAAe,MAAM,MAAM,CAAC;AAEzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,qBAAa,gBAAgB;aAOT,MAAM,EAAE,UAAU;IAN7B,OAAO,EAAE,UAAU,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA+C;IACnE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwD;IAEjF,YACkB,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG,GAAG,UAAU,EAO1B;IAEY,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,CAE3C;IAED;;;;OAIG;IACU,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAsBzF;IAED;;;OAGG;IACU,mBAAmB,IAAI,OAAO,CAAC,UAAU,CAAC,CAEtD;IAEY,sBAAsB,IAAI,OAAO,CAC5C,IAAI,CAAC,mBAAmB,EAAE,2BAA2B,GAAG,mBAAmB,CAAC,CAC7E,CAQA;IAED,OAAoB,gBAAgB,CAClC,MAAM,EAAE,UAAU,EAClB,eAAe,EAAE,GAAG,GAAG,UAAU,EACjC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,GAC3C,OAAO,CAAC,mBAAmB,CAAC,CAuB9B;IAEY,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAGlD;IAEY,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CASlD;IAEY,oBAAoB,IAAI,OAAO,CAAC,UAAU,CAAC,CAEvD;CACF"}
@@ -1,15 +1,18 @@
1
1
  import { EthAddress } from '@aztec/foundation/eth-address';
2
+ import { createLogger } from '@aztec/foundation/log';
2
3
  import { RegistryAbi } from '@aztec/l1-artifacts/RegistryAbi';
3
4
  import { TestERC20Abi } from '@aztec/l1-artifacts/TestERC20Abi';
4
5
  import { getContract } from 'viem';
5
- import { GovernanceContract } from './governance.js';
6
+ import { ReadOnlyGovernanceContract } from './governance.js';
6
7
  import { RollupContract } from './rollup.js';
7
8
  export class RegistryContract {
8
9
  client;
9
10
  address;
11
+ log;
10
12
  registry;
11
13
  constructor(client, address){
12
14
  this.client = client;
15
+ this.log = createLogger('ethereum:contracts:registry');
13
16
  if (address instanceof EthAddress) {
14
17
  address = address.toString();
15
18
  }
@@ -20,6 +23,9 @@ export class RegistryContract {
20
23
  client
21
24
  });
22
25
  }
26
+ async getOwner() {
27
+ return EthAddress.fromString(await this.registry.read.owner());
28
+ }
23
29
  /**
24
30
  * Returns the address of the rollup for a given version.
25
31
  * @param version - The version of the rollup. 'canonical' can be used to get the canonical address (i.e. the latest version).
@@ -31,33 +37,38 @@ export class RegistryContract {
31
37
  if (typeof version === 'number') {
32
38
  version = BigInt(version);
33
39
  }
34
- const snapshot = await this.registry.read.getSnapshot([
35
- version
36
- ]);
37
- const address = EthAddress.fromString(snapshot.rollup);
38
- if (address.equals(EthAddress.ZERO)) {
40
+ try {
41
+ return EthAddress.fromString(await this.registry.read.getRollup([
42
+ version
43
+ ]));
44
+ } catch {
45
+ this.log.warn(`Failed fetching rollup address for version ${version}. Retrying as index.`);
46
+ }
47
+ try {
48
+ const actualVersion = await this.registry.read.getVersion([
49
+ version
50
+ ]);
51
+ const rollupAddress = await this.registry.read.getRollup([
52
+ actualVersion
53
+ ]);
54
+ return EthAddress.fromString(rollupAddress);
55
+ } catch {
39
56
  throw new Error('Rollup address is undefined');
40
57
  }
41
- return address;
42
58
  }
43
59
  /**
44
60
  * Returns the canonical address of the rollup.
45
61
  * @returns The canonical address of the rollup. If the rollup is not set, throws an error.
46
62
  */ async getCanonicalAddress() {
47
- const snapshot = await this.registry.read.getCurrentSnapshot();
48
- const address = EthAddress.fromString(snapshot.rollup);
49
- if (address.equals(EthAddress.ZERO)) {
50
- throw new Error('Rollup address is undefined');
51
- }
52
- return address;
63
+ return EthAddress.fromString(await this.registry.read.getCanonicalRollup());
53
64
  }
54
65
  async getGovernanceAddresses() {
55
66
  const governanceAddress = await this.registry.read.getGovernance();
56
- const governance = new GovernanceContract(governanceAddress, this.client, undefined);
57
- const governanceProposer = await governance.getProposer();
67
+ const governance = new ReadOnlyGovernanceContract(governanceAddress, this.client);
68
+ const governanceProposerAddress = await governance.getGovernanceProposerAddress();
58
69
  return {
59
70
  governanceAddress: governance.address,
60
- governanceProposerAddress: governanceProposer.address
71
+ governanceProposerAddress: governanceProposerAddress
61
72
  };
62
73
  }
63
74
  static async collectAddresses(client, registryAddress, rollupVersion) {
@@ -82,4 +93,21 @@ export class RegistryContract {
82
93
  coinIssuerAddress: EthAddress.fromString(coinIssuer)
83
94
  };
84
95
  }
96
+ async getNumberOfVersions() {
97
+ const version = await this.registry.read.numberOfVersions();
98
+ return Number(version);
99
+ }
100
+ async getRollupVersions() {
101
+ const count = await this.getNumberOfVersions();
102
+ const versions = [];
103
+ for(let i = 0; i < count; i++){
104
+ versions.push(await this.registry.read.getVersion([
105
+ BigInt(i)
106
+ ]));
107
+ }
108
+ return versions;
109
+ }
110
+ async getRewardDistributor() {
111
+ return EthAddress.fromString(await this.registry.read.getRewardDistributor());
112
+ }
85
113
  }