@aztec/ethereum 0.0.0-test.1 → 0.0.1-commit.017a351

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 (285) 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 +28 -4
  6. package/dest/client.d.ts.map +1 -1
  7. package/dest/client.js +73 -3
  8. package/dest/config.d.ts +70 -23
  9. package/dest/config.d.ts.map +1 -1
  10. package/dest/config.js +151 -34
  11. package/dest/constants.d.ts +1 -1
  12. package/dest/contracts/chain_state_override.d.ts +78 -0
  13. package/dest/contracts/chain_state_override.d.ts.map +1 -0
  14. package/dest/contracts/chain_state_override.js +137 -0
  15. package/dest/contracts/empire_base.d.ts +25 -8
  16. package/dest/contracts/empire_base.d.ts.map +1 -1
  17. package/dest/contracts/empire_base.js +75 -2
  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 +59 -0
  24. package/dest/contracts/fee_asset_price_oracle.d.ts +105 -0
  25. package/dest/contracts/fee_asset_price_oracle.d.ts.map +1 -0
  26. package/dest/contracts/fee_asset_price_oracle.js +656 -0
  27. package/dest/contracts/fee_juice.d.ts +6 -7
  28. package/dest/contracts/fee_juice.d.ts.map +1 -1
  29. package/dest/contracts/fee_juice.js +27 -20
  30. package/dest/contracts/governance.d.ts +131 -43
  31. package/dest/contracts/governance.d.ts.map +1 -1
  32. package/dest/contracts/governance.js +281 -87
  33. package/dest/contracts/governance_proposer.d.ts +49 -13
  34. package/dest/contracts/governance_proposer.d.ts.map +1 -1
  35. package/dest/contracts/governance_proposer.js +483 -26
  36. package/dest/contracts/gse.d.ts +32 -0
  37. package/dest/contracts/gse.d.ts.map +1 -0
  38. package/dest/contracts/gse.js +72 -0
  39. package/dest/contracts/inbox.d.ts +47 -0
  40. package/dest/contracts/inbox.d.ts.map +1 -0
  41. package/dest/contracts/inbox.js +85 -0
  42. package/dest/contracts/index.d.ts +11 -2
  43. package/dest/contracts/index.d.ts.map +1 -1
  44. package/dest/contracts/index.js +10 -1
  45. package/dest/contracts/log.d.ts +13 -0
  46. package/dest/contracts/log.d.ts.map +1 -0
  47. package/dest/contracts/log.js +1 -0
  48. package/dest/contracts/multicall.d.ts +136 -0
  49. package/dest/contracts/multicall.d.ts.map +1 -0
  50. package/dest/contracts/multicall.js +264 -0
  51. package/dest/contracts/outbox.d.ts +64 -0
  52. package/dest/contracts/outbox.d.ts.map +1 -0
  53. package/dest/contracts/outbox.js +113 -0
  54. package/dest/contracts/registry.d.ts +12 -5
  55. package/dest/contracts/registry.d.ts.map +1 -1
  56. package/dest/contracts/registry.js +74 -17
  57. package/dest/contracts/rollup.d.ts +5526 -52
  58. package/dest/contracts/rollup.d.ts.map +1 -1
  59. package/dest/contracts/rollup.js +1446 -118
  60. package/dest/contracts/slasher_contract.d.ts +44 -0
  61. package/dest/contracts/slasher_contract.d.ts.map +1 -0
  62. package/dest/contracts/slasher_contract.js +75 -0
  63. package/dest/contracts/slashing_proposer.d.ts +133 -15
  64. package/dest/contracts/slashing_proposer.d.ts.map +1 -1
  65. package/dest/contracts/slashing_proposer.js +293 -22
  66. package/dest/contracts/utils.d.ts +3 -0
  67. package/dest/contracts/utils.d.ts.map +1 -0
  68. package/dest/contracts/utils.js +11 -0
  69. package/dest/deploy_aztec_l1_contracts.d.ts +256 -0
  70. package/dest/deploy_aztec_l1_contracts.d.ts.map +1 -0
  71. package/dest/deploy_aztec_l1_contracts.js +411 -0
  72. package/dest/deploy_l1_contract.d.ts +68 -0
  73. package/dest/deploy_l1_contract.d.ts.map +1 -0
  74. package/dest/deploy_l1_contract.js +312 -0
  75. package/dest/eth-signer/eth-signer.d.ts +21 -0
  76. package/dest/eth-signer/eth-signer.d.ts.map +1 -0
  77. package/dest/eth-signer/eth-signer.js +5 -0
  78. package/dest/eth-signer/index.d.ts +2 -0
  79. package/dest/eth-signer/index.d.ts.map +1 -0
  80. package/dest/eth-signer/index.js +1 -0
  81. package/dest/forwarder_proxy.d.ts +32 -0
  82. package/dest/forwarder_proxy.d.ts.map +1 -0
  83. package/dest/forwarder_proxy.js +93 -0
  84. package/dest/generated/l1-contracts-defaults.d.ts +30 -0
  85. package/dest/generated/l1-contracts-defaults.d.ts.map +1 -0
  86. package/dest/generated/l1-contracts-defaults.js +30 -0
  87. package/dest/l1_artifacts.d.ts +79270 -0
  88. package/dest/l1_artifacts.d.ts.map +1 -0
  89. package/dest/l1_artifacts.js +151 -0
  90. package/dest/l1_contract_addresses.d.ts +61 -45
  91. package/dest/l1_contract_addresses.d.ts.map +1 -1
  92. package/dest/l1_contract_addresses.js +99 -76
  93. package/dest/l1_reader.d.ts +8 -6
  94. package/dest/l1_reader.d.ts.map +1 -1
  95. package/dest/l1_reader.js +20 -12
  96. package/dest/l1_tx_utils/config.d.ts +65 -0
  97. package/dest/l1_tx_utils/config.d.ts.map +1 -0
  98. package/dest/l1_tx_utils/config.js +109 -0
  99. package/dest/l1_tx_utils/constants.d.ts +12 -0
  100. package/dest/l1_tx_utils/constants.d.ts.map +1 -0
  101. package/dest/l1_tx_utils/constants.js +39 -0
  102. package/dest/l1_tx_utils/factory.d.ts +32 -0
  103. package/dest/l1_tx_utils/factory.d.ts.map +1 -0
  104. package/dest/l1_tx_utils/factory.js +22 -0
  105. package/dest/l1_tx_utils/fee-strategies/index.d.ts +10 -0
  106. package/dest/l1_tx_utils/fee-strategies/index.d.ts.map +1 -0
  107. package/dest/l1_tx_utils/fee-strategies/index.js +12 -0
  108. package/dest/l1_tx_utils/fee-strategies/p75_competitive.d.ts +8 -0
  109. package/dest/l1_tx_utils/fee-strategies/p75_competitive.d.ts.map +1 -0
  110. package/dest/l1_tx_utils/fee-strategies/p75_competitive.js +129 -0
  111. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.d.ts +23 -0
  112. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.d.ts.map +1 -0
  113. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.js +191 -0
  114. package/dest/l1_tx_utils/fee-strategies/types.d.ts +51 -0
  115. package/dest/l1_tx_utils/fee-strategies/types.d.ts.map +1 -0
  116. package/dest/l1_tx_utils/fee-strategies/types.js +3 -0
  117. package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts +41 -0
  118. package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts.map +1 -0
  119. package/dest/l1_tx_utils/forwarder_l1_tx_utils.js +42 -0
  120. package/dest/l1_tx_utils/index-blobs.d.ts +3 -0
  121. package/dest/l1_tx_utils/index-blobs.d.ts.map +1 -0
  122. package/dest/l1_tx_utils/index-blobs.js +2 -0
  123. package/dest/l1_tx_utils/index.d.ts +13 -0
  124. package/dest/l1_tx_utils/index.d.ts.map +1 -0
  125. package/dest/l1_tx_utils/index.js +13 -0
  126. package/dest/l1_tx_utils/interfaces.d.ts +76 -0
  127. package/dest/l1_tx_utils/interfaces.d.ts.map +1 -0
  128. package/dest/l1_tx_utils/interfaces.js +4 -0
  129. package/dest/l1_tx_utils/l1_fee_analyzer.d.ts +233 -0
  130. package/dest/l1_tx_utils/l1_fee_analyzer.d.ts.map +1 -0
  131. package/dest/l1_tx_utils/l1_fee_analyzer.js +506 -0
  132. package/dest/l1_tx_utils/l1_tx_utils.d.ts +113 -0
  133. package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -0
  134. package/dest/l1_tx_utils/l1_tx_utils.js +658 -0
  135. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts +83 -0
  136. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts.map +1 -0
  137. package/dest/l1_tx_utils/readonly_l1_tx_utils.js +328 -0
  138. package/dest/l1_tx_utils/signer.d.ts +4 -0
  139. package/dest/l1_tx_utils/signer.d.ts.map +1 -0
  140. package/dest/l1_tx_utils/signer.js +16 -0
  141. package/dest/l1_tx_utils/tx_delayer.d.ts +58 -0
  142. package/dest/l1_tx_utils/tx_delayer.d.ts.map +1 -0
  143. package/dest/l1_tx_utils/tx_delayer.js +223 -0
  144. package/dest/l1_tx_utils/types.d.ts +67 -0
  145. package/dest/l1_tx_utils/types.d.ts.map +1 -0
  146. package/dest/l1_tx_utils/types.js +26 -0
  147. package/dest/l1_tx_utils/utils.d.ts +4 -0
  148. package/dest/l1_tx_utils/utils.d.ts.map +1 -0
  149. package/dest/l1_tx_utils/utils.js +14 -0
  150. package/dest/l1_types.d.ts +6 -0
  151. package/dest/l1_types.d.ts.map +1 -0
  152. package/dest/l1_types.js +1 -0
  153. package/dest/publisher_manager.d.ts +30 -0
  154. package/dest/publisher_manager.d.ts.map +1 -0
  155. package/dest/publisher_manager.js +162 -0
  156. package/dest/queries.d.ts +17 -4
  157. package/dest/queries.d.ts.map +1 -1
  158. package/dest/queries.js +120 -12
  159. package/dest/test/chain_monitor.d.ts +95 -0
  160. package/dest/test/chain_monitor.d.ts.map +1 -0
  161. package/dest/test/chain_monitor.js +249 -0
  162. package/dest/test/eth_cheat_codes.d.ts +237 -0
  163. package/dest/test/eth_cheat_codes.d.ts.map +1 -0
  164. package/dest/test/eth_cheat_codes.js +573 -0
  165. package/dest/test/eth_cheat_codes_with_state.d.ts +2 -2
  166. package/dest/test/eth_cheat_codes_with_state.d.ts.map +1 -1
  167. package/dest/test/eth_cheat_codes_with_state.js +1 -1
  168. package/dest/test/index.d.ts +4 -3
  169. package/dest/test/index.d.ts.map +1 -1
  170. package/dest/test/index.js +3 -2
  171. package/dest/test/rollup_cheat_codes.d.ts +118 -0
  172. package/dest/test/rollup_cheat_codes.d.ts.map +1 -0
  173. package/dest/test/rollup_cheat_codes.js +344 -0
  174. package/dest/test/start_anvil.d.ts +30 -2
  175. package/dest/test/start_anvil.d.ts.map +1 -1
  176. package/dest/test/start_anvil.js +147 -24
  177. package/dest/test/upgrade_utils.d.ts +6 -5
  178. package/dest/test/upgrade_utils.d.ts.map +1 -1
  179. package/dest/test/upgrade_utils.js +23 -16
  180. package/dest/types.d.ts +62 -8
  181. package/dest/types.d.ts.map +1 -1
  182. package/dest/types.js +3 -1
  183. package/dest/utils.d.ts +25 -4
  184. package/dest/utils.d.ts.map +1 -1
  185. package/dest/utils.js +142 -91
  186. package/dest/zkPassportVerifierAddress.d.ts +15 -0
  187. package/dest/zkPassportVerifierAddress.d.ts.map +1 -0
  188. package/dest/zkPassportVerifierAddress.js +11 -0
  189. package/package.json +52 -26
  190. package/src/account.ts +5 -0
  191. package/src/client.ts +107 -5
  192. package/src/config.ts +218 -43
  193. package/src/contracts/README.md +157 -0
  194. package/src/contracts/chain_state_override.ts +200 -0
  195. package/src/contracts/empire_base.ts +77 -7
  196. package/src/contracts/errors.ts +13 -0
  197. package/src/contracts/fee_asset_handler.ts +66 -0
  198. package/src/contracts/fee_asset_price_oracle.ts +285 -0
  199. package/src/contracts/fee_juice.ts +29 -15
  200. package/src/contracts/governance.ts +343 -74
  201. package/src/contracts/governance_proposer.ts +128 -25
  202. package/src/contracts/gse.ts +88 -0
  203. package/src/contracts/inbox.ts +123 -0
  204. package/src/contracts/index.ts +10 -1
  205. package/src/contracts/log.ts +13 -0
  206. package/src/contracts/multicall.ts +296 -0
  207. package/src/contracts/outbox.ts +132 -0
  208. package/src/contracts/registry.ts +81 -26
  209. package/src/contracts/rollup.ts +1246 -90
  210. package/src/contracts/slasher_contract.ts +89 -0
  211. package/src/contracts/slashing_proposer.ts +296 -27
  212. package/src/contracts/utils.ts +14 -0
  213. package/src/deploy_aztec_l1_contracts.ts +646 -0
  214. package/src/deploy_l1_contract.ts +362 -0
  215. package/src/eth-signer/eth-signer.ts +25 -0
  216. package/src/eth-signer/index.ts +1 -0
  217. package/src/forwarder_proxy.ts +108 -0
  218. package/src/generated/l1-contracts-defaults.ts +32 -0
  219. package/src/l1_artifacts.ts +231 -0
  220. package/src/l1_contract_addresses.ts +121 -80
  221. package/src/l1_reader.ts +31 -16
  222. package/src/l1_tx_utils/README.md +177 -0
  223. package/src/l1_tx_utils/config.ts +181 -0
  224. package/src/l1_tx_utils/constants.ts +29 -0
  225. package/src/l1_tx_utils/factory.ts +64 -0
  226. package/src/l1_tx_utils/fee-strategies/index.ts +22 -0
  227. package/src/l1_tx_utils/fee-strategies/p75_competitive.ts +163 -0
  228. package/src/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.ts +245 -0
  229. package/src/l1_tx_utils/fee-strategies/types.ts +56 -0
  230. package/src/l1_tx_utils/forwarder_l1_tx_utils.ts +108 -0
  231. package/src/l1_tx_utils/index-blobs.ts +2 -0
  232. package/src/l1_tx_utils/index.ts +15 -0
  233. package/src/l1_tx_utils/interfaces.ts +86 -0
  234. package/src/l1_tx_utils/l1_fee_analyzer.ts +803 -0
  235. package/src/l1_tx_utils/l1_tx_utils.ts +789 -0
  236. package/src/l1_tx_utils/readonly_l1_tx_utils.ts +424 -0
  237. package/src/l1_tx_utils/signer.ts +28 -0
  238. package/src/l1_tx_utils/tx_delayer.ts +303 -0
  239. package/src/l1_tx_utils/types.ts +85 -0
  240. package/src/l1_tx_utils/utils.ts +16 -0
  241. package/src/l1_types.ts +6 -0
  242. package/src/publisher_manager.ts +203 -0
  243. package/src/queries.ts +149 -17
  244. package/src/test/chain_monitor.ts +307 -0
  245. package/src/test/eth_cheat_codes.ts +600 -0
  246. package/src/test/eth_cheat_codes_with_state.ts +1 -1
  247. package/src/test/index.ts +3 -2
  248. package/src/test/rollup_cheat_codes.ts +388 -0
  249. package/src/test/start_anvil.ts +189 -22
  250. package/src/test/upgrade_utils.ts +30 -21
  251. package/src/types.ts +71 -7
  252. package/src/utils.ts +164 -96
  253. package/src/zkPassportVerifierAddress.ts +15 -0
  254. package/dest/contracts/forwarder.d.ts +0 -24
  255. package/dest/contracts/forwarder.d.ts.map +0 -1
  256. package/dest/contracts/forwarder.js +0 -101
  257. package/dest/deploy_l1_contracts.d.ts +0 -21210
  258. package/dest/deploy_l1_contracts.d.ts.map +0 -1
  259. package/dest/deploy_l1_contracts.js +0 -687
  260. package/dest/eth_cheat_codes.d.ts +0 -147
  261. package/dest/eth_cheat_codes.d.ts.map +0 -1
  262. package/dest/eth_cheat_codes.js +0 -303
  263. package/dest/index.d.ts +0 -14
  264. package/dest/index.d.ts.map +0 -1
  265. package/dest/index.js +0 -13
  266. package/dest/l1_tx_utils.d.ts +0 -192
  267. package/dest/l1_tx_utils.d.ts.map +0 -1
  268. package/dest/l1_tx_utils.js +0 -641
  269. package/dest/l1_tx_utils_with_blobs.d.ts +0 -12
  270. package/dest/l1_tx_utils_with_blobs.d.ts.map +0 -1
  271. package/dest/l1_tx_utils_with_blobs.js +0 -64
  272. package/dest/test/delayed_tx_utils.d.ts +0 -8
  273. package/dest/test/delayed_tx_utils.d.ts.map +0 -1
  274. package/dest/test/delayed_tx_utils.js +0 -21
  275. package/dest/test/tx_delayer.d.ts +0 -25
  276. package/dest/test/tx_delayer.d.ts.map +0 -1
  277. package/dest/test/tx_delayer.js +0 -116
  278. package/src/contracts/forwarder.ts +0 -132
  279. package/src/deploy_l1_contracts.ts +0 -948
  280. package/src/eth_cheat_codes.ts +0 -314
  281. package/src/index.ts +0 -13
  282. package/src/l1_tx_utils.ts +0 -847
  283. package/src/l1_tx_utils_with_blobs.ts +0 -86
  284. package/src/test/delayed_tx_utils.ts +0 -24
  285. package/src/test/tx_delayer.ts +0 -163
@@ -2,10 +2,10 @@ import { EthAddress } from '@aztec/foundation/eth-address';
2
2
  import { schemas } from '@aztec/foundation/schemas';
3
3
  import { z } from 'zod';
4
4
  /**
5
- * The names of the current L1 contract addresses.
5
+ * Required L1 contract address keys.
6
6
  * NOTE: When changing this list, make sure to update CLI & CI scripts accordingly.
7
7
  * For reference: https://github.com/AztecProtocol/aztec-packages/pull/5553
8
- */ export const L1ContractsNames = [
8
+ */ const REQUIRED_L1_CONTRACT_ADDRESS_KEYS = [
9
9
  'rollupAddress',
10
10
  'registryAddress',
11
11
  'inboxAddress',
@@ -18,80 +18,103 @@ import { z } from 'zod';
18
18
  'governanceAddress',
19
19
  'stakingAssetAddress'
20
20
  ];
21
+ /** Optional L1 contract address keys — present only in some deployments. */ export const OPTIONAL_L1_CONTRACT_ADDRESS_KEYS = [
22
+ 'feeAssetHandlerAddress',
23
+ 'stakingAssetHandlerAddress',
24
+ 'zkPassportVerifierAddress',
25
+ 'gseAddress',
26
+ 'dateGatedRelayerAddress'
27
+ ];
28
+ /**
29
+ * Names of required L1 contract addresses.
30
+ * NOTE: When changing the set of contracts, update CLI & CI scripts accordingly.
31
+ * For reference: https://github.com/AztecProtocol/aztec-packages/pull/5553
32
+ */ export const L1ContractsNames = REQUIRED_L1_CONTRACT_ADDRESS_KEYS;
33
+ const parseEnv = (val)=>EthAddress.fromString(val);
34
+ const addrEnv = (description, env)=>({
35
+ description,
36
+ parseEnv,
37
+ ...env && {
38
+ env
39
+ }
40
+ });
41
+ /**
42
+ * Config mapping for all L1 contract addresses.
43
+ * This is the single source of truth for which contract addresses exist and how to parse them.
44
+ */ export const l1ContractAddressesMapping = {
45
+ rollupAddress: addrEnv('The deployed L1 rollup contract address.'),
46
+ registryAddress: addrEnv('The deployed L1 registry contract address.', 'REGISTRY_CONTRACT_ADDRESS'),
47
+ inboxAddress: addrEnv('The deployed L1 inbox contract address.'),
48
+ outboxAddress: addrEnv('The deployed L1 outbox contract address.'),
49
+ feeJuiceAddress: addrEnv('The deployed L1 Fee Juice contract address.'),
50
+ feeJuicePortalAddress: addrEnv('The deployed L1 Fee Juice portal contract address.'),
51
+ coinIssuerAddress: addrEnv('The deployed L1 coinIssuer contract address'),
52
+ rewardDistributorAddress: addrEnv('The deployed L1 rewardDistributor contract address'),
53
+ governanceProposerAddress: addrEnv('The deployed L1 governanceProposer contract address'),
54
+ governanceAddress: addrEnv('The deployed L1 governance contract address'),
55
+ stakingAssetAddress: addrEnv('The deployed L1 staking asset contract address.'),
56
+ feeAssetHandlerAddress: addrEnv('The deployed L1 feeAssetHandler contract address', 'FEE_ASSET_HANDLER_CONTRACT_ADDRESS'),
57
+ stakingAssetHandlerAddress: addrEnv('The deployed L1 stakingAssetHandler contract address'),
58
+ zkPassportVerifierAddress: addrEnv('The deployed L1 ZK passport verifier contract address'),
59
+ gseAddress: addrEnv('The deployed L1 GSE contract address'),
60
+ dateGatedRelayerAddress: addrEnv('The deployed L1 date-gated relayer contract address')
61
+ };
21
62
  export const L1ContractAddressesSchema = z.object({
22
- rollupAddress: schemas.EthAddress,
23
- registryAddress: schemas.EthAddress,
24
- inboxAddress: schemas.EthAddress,
25
- outboxAddress: schemas.EthAddress,
26
- feeJuiceAddress: schemas.EthAddress,
27
- stakingAssetAddress: schemas.EthAddress,
28
- feeJuicePortalAddress: schemas.EthAddress,
29
- coinIssuerAddress: schemas.EthAddress,
30
- rewardDistributorAddress: schemas.EthAddress,
31
- governanceProposerAddress: schemas.EthAddress,
32
- governanceAddress: schemas.EthAddress,
33
- slashFactoryAddress: schemas.EthAddress.optional()
63
+ ...Object.fromEntries(REQUIRED_L1_CONTRACT_ADDRESS_KEYS.map((k)=>[
64
+ k,
65
+ schemas.EthAddress
66
+ ])),
67
+ ...Object.fromEntries(OPTIONAL_L1_CONTRACT_ADDRESS_KEYS.map((k)=>[
68
+ k,
69
+ schemas.EthAddress.optional()
70
+ ]))
34
71
  });
35
- const parseEnv = (val)=>EthAddress.fromString(val);
36
- export const l1ContractAddressesMapping = {
37
- rollupAddress: {
38
- env: 'ROLLUP_CONTRACT_ADDRESS',
39
- description: 'The deployed L1 rollup contract address.',
40
- parseEnv
41
- },
42
- registryAddress: {
43
- env: 'REGISTRY_CONTRACT_ADDRESS',
44
- description: 'The deployed L1 registry contract address.',
45
- parseEnv
46
- },
47
- inboxAddress: {
48
- env: 'INBOX_CONTRACT_ADDRESS',
49
- description: 'The deployed L1 inbox contract address.',
50
- parseEnv
51
- },
52
- outboxAddress: {
53
- env: 'OUTBOX_CONTRACT_ADDRESS',
54
- description: 'The deployed L1 outbox contract address.',
55
- parseEnv
56
- },
57
- feeJuiceAddress: {
58
- env: 'FEE_JUICE_CONTRACT_ADDRESS',
59
- description: 'The deployed L1 Fee Juice contract address.',
60
- parseEnv
61
- },
62
- stakingAssetAddress: {
63
- env: 'STAKING_ASSET_CONTRACT_ADDRESS',
64
- description: 'The deployed L1 staking asset contract address.',
65
- parseEnv
66
- },
67
- feeJuicePortalAddress: {
68
- env: 'FEE_JUICE_PORTAL_CONTRACT_ADDRESS',
69
- description: 'The deployed L1 Fee Juice portal contract address.',
70
- parseEnv
71
- },
72
- coinIssuerAddress: {
73
- env: 'COIN_ISSUER_CONTRACT_ADDRESS',
74
- description: 'The deployed L1 coinIssuer contract address',
75
- parseEnv
76
- },
77
- rewardDistributorAddress: {
78
- env: 'REWARD_DISTRIBUTOR_CONTRACT_ADDRESS',
79
- description: 'The deployed L1 rewardDistributor contract address',
80
- parseEnv
81
- },
82
- governanceProposerAddress: {
83
- env: 'GOVERNANCE_PROPOSER_CONTRACT_ADDRESS',
84
- description: 'The deployed L1 governanceProposer contract address',
85
- parseEnv
86
- },
87
- governanceAddress: {
88
- env: 'GOVERNANCE_CONTRACT_ADDRESS',
89
- description: 'The deployed L1 governance contract address',
90
- parseEnv
91
- },
92
- slashFactoryAddress: {
93
- env: 'SLASH_FACTORY_CONTRACT_ADDRESS',
94
- description: 'The deployed L1 slashFactory contract address',
95
- parseEnv
72
+ /**
73
+ * Selects entries from {@link l1ContractAddressesMapping} so composed configs can reuse the same
74
+ * env vars, descriptions, and parsers without duplicating definitions.
75
+ *
76
+ * @example
77
+ * ```ts
78
+ * const mappings = {
79
+ * ...pickL1ContractAddressMappings('rollupAddress'),
80
+ * nodeId: { ... },
81
+ * };
82
+ * ```
83
+ */ export function pickL1ContractAddressMappings(...keys) {
84
+ return Object.fromEntries(keys.map((key)=>[
85
+ key,
86
+ l1ContractAddressesMapping[key]
87
+ ]));
88
+ }
89
+ /**
90
+ * Like {@link pickL1ContractAddressMappings}, but returns a fragment of {@link L1ContractAddressesSchema}'s shape for
91
+ * spreading into `z.object({ ...pickL1ContractAddressesSchemaShape('rollupAddress'), localField: z... })`.
92
+ */ export function pickL1ContractAddressesSchema(...keys) {
93
+ return Object.fromEntries(keys.map((key)=>[
94
+ key,
95
+ L1ContractAddressesSchema.shape[key]
96
+ ]));
97
+ }
98
+ /** Builds an {@link L1ContractAddresses} object from config that stores those fields at the top level. */ export function pickL1ContractAddresses(config) {
99
+ const result = {};
100
+ for (const key of REQUIRED_L1_CONTRACT_ADDRESS_KEYS){
101
+ result[key] = config[key];
96
102
  }
97
- };
103
+ for (const key of OPTIONAL_L1_CONTRACT_ADDRESS_KEYS){
104
+ const v = config[key];
105
+ if (v !== undefined) {
106
+ result[key] = v;
107
+ }
108
+ }
109
+ return result;
110
+ }
111
+ export function randomL1ContractAddresses(includeOptional = false) {
112
+ const keys = includeOptional ? [
113
+ ...L1ContractsNames,
114
+ ...OPTIONAL_L1_CONTRACT_ADDRESS_KEYS
115
+ ] : L1ContractsNames;
116
+ return Object.fromEntries(keys.map((name)=>[
117
+ name,
118
+ EthAddress.random()
119
+ ]));
120
+ }
@@ -1,16 +1,18 @@
1
1
  import { type ConfigMappingsType } from '@aztec/foundation/config';
2
2
  import { type L1ContractAddresses } from './l1_contract_addresses.js';
3
3
  /** Configuration of the L1GlobalReader. */
4
- export interface L1ReaderConfig {
5
- /** The RPC Url of the ethereum host. */
4
+ export type L1ReaderConfig = {
5
+ /** List of URLs of Ethereum RPC nodes that services will connect to (comma separated). */
6
6
  l1RpcUrls: string[];
7
+ /** The RPC Url of the ethereum debug host for trace and debug methods. */
8
+ l1DebugRpcUrls: string[];
7
9
  /** The chain ID of the ethereum host. */
8
10
  l1ChainId: number;
9
- /** The deployed l1 contract addresses */
10
- l1Contracts: L1ContractAddresses;
11
11
  /** The polling interval viem uses in ms */
12
12
  viemPollingIntervalMS: number;
13
- }
13
+ /** Timeout for HTTP requests to the L1 RPC node in ms. */
14
+ l1HttpTimeoutMS?: number;
15
+ } & L1ContractAddresses;
14
16
  export declare const l1ReaderConfigMappings: ConfigMappingsType<L1ReaderConfig>;
15
17
  export declare function getL1ReaderConfigFromEnv(): L1ReaderConfig;
16
- //# sourceMappingURL=l1_reader.d.ts.map
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDFfcmVhZGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbDFfcmVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUl4QixNQUFNLDBCQUEwQixDQUFDO0FBRWxDLE9BQU8sRUFBRSxLQUFLLG1CQUFtQixFQUE4QixNQUFNLDRCQUE0QixDQUFDO0FBRWxHLDJDQUEyQztBQUMzQyxNQUFNLE1BQU0sY0FBYyxHQUFHO0lBQzNCLDBGQUEwRjtJQUMxRixTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDcEIsMEVBQTBFO0lBQzFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUN6Qix5Q0FBeUM7SUFDekMsU0FBUyxFQUFFLE1BQU0sQ0FBQztJQUNsQiwyQ0FBMkM7SUFDM0MscUJBQXFCLEVBQUUsTUFBTSxDQUFDO0lBQzlCLDBEQUEwRDtJQUMxRCxlQUFlLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDMUIsR0FBRyxtQkFBbUIsQ0FBQztBQUV4QixlQUFPLE1BQU0sc0JBQXNCLEVBQUUsa0JBQWtCLENBQUMsY0FBYyxDQTZCckUsQ0FBQztBQUVGLHdCQUFnQix3QkFBd0IsSUFBSSxjQUFjLENBRXpEIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"l1_reader.d.ts","sourceRoot":"","sources":["../src/l1_reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAA6C,MAAM,0BAA0B,CAAC;AAE9G,OAAO,EAAE,KAAK,mBAAmB,EAA8B,MAAM,4BAA4B,CAAC;AAElG,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,WAAW,EAAE,mBAAmB,CAAC;IACjC,2CAA2C;IAC3C,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CAAC,cAAc,CAqBrE,CAAC;AAEF,wBAAgB,wBAAwB,IAAI,cAAc,CAEzD"}
1
+ {"version":3,"file":"l1_reader.d.ts","sourceRoot":"","sources":["../src/l1_reader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,mBAAmB,EAA8B,MAAM,4BAA4B,CAAC;AAElG,2CAA2C;AAC3C,MAAM,MAAM,cAAc,GAAG;IAC3B,0FAA0F;IAC1F,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,0EAA0E;IAC1E,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,0DAA0D;IAC1D,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,mBAAmB,CAAC;AAExB,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CAAC,cAAc,CA6BrE,CAAC;AAEF,wBAAgB,wBAAwB,IAAI,cAAc,CAEzD"}
package/dest/l1_reader.js CHANGED
@@ -1,26 +1,34 @@
1
- import { getConfigFromMappings, numberConfigHelper } from '@aztec/foundation/config';
1
+ import { getConfigFromMappings, numberConfigHelper, optionalNumberConfigHelper } from '@aztec/foundation/config';
2
2
  import { l1ContractAddressesMapping } from './l1_contract_addresses.js';
3
3
  export const l1ReaderConfigMappings = {
4
- l1RpcUrls: {
5
- env: 'ETHEREUM_HOSTS',
6
- description: 'The RPC Url of the ethereum host.',
7
- parseEnv: (val)=>val.split(',').map((url)=>url.trim())
8
- },
9
4
  l1ChainId: {
10
5
  env: 'L1_CHAIN_ID',
11
- parseEnv: (val)=>+val,
12
- defaultValue: 31337,
6
+ ...optionalNumberConfigHelper(),
13
7
  description: 'The chain ID of the ethereum host.'
14
8
  },
15
- l1Contracts: {
16
- description: 'The deployed L1 contract addresses',
17
- nested: l1ContractAddressesMapping
9
+ l1RpcUrls: {
10
+ env: 'ETHEREUM_HOSTS',
11
+ description: 'List of URLs of Ethereum RPC nodes that services will connect to (comma separated).',
12
+ parseEnv: (val)=>val.split(',').map((url)=>url.trim()),
13
+ defaultValue: []
14
+ },
15
+ l1DebugRpcUrls: {
16
+ env: 'ETHEREUM_DEBUG_HOSTS',
17
+ description: 'The RPC Url of the ethereum debug host for trace and debug methods.',
18
+ parseEnv: (val)=>val.split(',').map((url)=>url.trim()),
19
+ defaultValue: []
18
20
  },
19
21
  viemPollingIntervalMS: {
20
22
  env: 'L1_READER_VIEM_POLLING_INTERVAL_MS',
21
23
  description: 'The polling interval viem uses in ms',
22
24
  ...numberConfigHelper(1_000)
23
- }
25
+ },
26
+ l1HttpTimeoutMS: {
27
+ env: 'ETHEREUM_HTTP_TIMEOUT_MS',
28
+ description: 'Timeout for HTTP requests to the L1 RPC node in ms.',
29
+ ...optionalNumberConfigHelper()
30
+ },
31
+ ...l1ContractAddressesMapping
24
32
  };
25
33
  export function getL1ReaderConfigFromEnv() {
26
34
  return getConfigFromMappings(l1ReaderConfigMappings);
@@ -0,0 +1,65 @@
1
+ import { type ConfigMappingsType } from '@aztec/foundation/config';
2
+ export interface L1TxUtilsConfig {
3
+ /**
4
+ * How much to increase calculated gas limit.
5
+ */
6
+ gasLimitBufferPercentage?: number;
7
+ /**
8
+ * Maximum gas price in gwei
9
+ */
10
+ maxGwei?: number;
11
+ /**
12
+ * Maximum blob fee per gas in gwei
13
+ */
14
+ maxBlobGwei?: number;
15
+ /**
16
+ * Priority fee bump percentage
17
+ */
18
+ priorityFeeBumpPercentage?: number;
19
+ /**
20
+ * How much to increase priority fee by each attempt (percentage)
21
+ */
22
+ priorityFeeRetryBumpPercentage?: number;
23
+ /**
24
+ * Minimum priority fee per gas in Gwei. Acts as a floor for the computed priority fee.
25
+ */
26
+ minimumPriorityFeePerGas?: number;
27
+ /**
28
+ * Maximum number of speed-up attempts
29
+ */
30
+ maxSpeedUpAttempts?: number;
31
+ /**
32
+ * How often to check tx status
33
+ */
34
+ checkIntervalMs?: number;
35
+ /**
36
+ * How long before considering tx stalled
37
+ */
38
+ stallTimeMs?: number;
39
+ /**
40
+ * How long to wait for a tx to be mined before giving up
41
+ */
42
+ txTimeoutMs?: number;
43
+ /**
44
+ * Whether to attempt to cancel a tx if it's not mined after txTimeoutMs
45
+ */
46
+ cancelTxOnTimeout?: boolean;
47
+ /**
48
+ * How long to wait for a cancellation tx to be mined after its last attempt before giving up
49
+ */
50
+ txCancellationFinalTimeoutMs?: number;
51
+ /**
52
+ * How long a tx nonce can be unseen in the mempool before considering it dropped
53
+ */
54
+ txUnseenConsideredDroppedMs?: number;
55
+ /** Enable tx delayer. When true, wraps the viem client to intercept and delay txs. Test-only. */
56
+ enableDelayer?: boolean;
57
+ /** Max seconds into an L1 slot for tx inclusion. Txs sent later are deferred to next slot. Only used when enableDelayer is true. */
58
+ txDelayerMaxInclusionTimeIntoSlot?: number;
59
+ /** How many seconds an L1 slot lasts. */
60
+ ethereumSlotDuration?: number;
61
+ }
62
+ export declare const l1TxUtilsConfigMappings: ConfigMappingsType<L1TxUtilsConfig>;
63
+ export declare const defaultL1TxUtilsConfig: Required<L1TxUtilsConfig>;
64
+ export declare function getL1TxUtilsConfigEnvVars(): L1TxUtilsConfig;
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbDFfdHhfdXRpbHMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQU94QixNQUFNLDBCQUEwQixDQUFDO0FBRWxDLE1BQU0sV0FBVyxlQUFlO0lBQzlCOztPQUVHO0lBQ0gsd0JBQXdCLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDbEM7O09BRUc7SUFDSCxPQUFPLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDakI7O09BRUc7SUFDSCxXQUFXLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDckI7O09BRUc7SUFDSCx5QkFBeUIsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNuQzs7T0FFRztJQUNILDhCQUE4QixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3hDOztPQUVHO0lBQ0gsd0JBQXdCLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDbEM7O09BRUc7SUFDSCxrQkFBa0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUM1Qjs7T0FFRztJQUNILGVBQWUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUN6Qjs7T0FFRztJQUNILFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNyQjs7T0FFRztJQUNILFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNyQjs7T0FFRztJQUNILGlCQUFpQixDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQzVCOztPQUVHO0lBQ0gsNEJBQTRCLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDdEM7O09BRUc7SUFDSCwyQkFBMkIsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNyQyxpR0FBaUc7SUFDakcsYUFBYSxDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQ3hCLG9JQUFvSTtJQUNwSSxpQ0FBaUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUMzQyx5Q0FBeUM7SUFDekMsb0JBQW9CLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDL0I7QUFFRCxlQUFPLE1BQU0sdUJBQXVCLEVBQUUsa0JBQWtCLENBQUMsZUFBZSxDQTZGdkUsQ0FBQztBQUdGLGVBQU8sTUFBTSxzQkFBc0IsMkJBRUwsQ0FBQztBQUUvQix3QkFBZ0IseUJBQXlCLElBQUksZUFBZSxDQUUzRCJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/l1_tx_utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAOxB,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC;;OAEG;IACH,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC;;OAEG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,iGAAiG;IACjG,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oIAAoI;IACpI,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,yCAAyC;IACzC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,CAAC,eAAe,CA6FvE,CAAC;AAGF,eAAO,MAAM,sBAAsB,2BAEL,CAAC;AAE/B,wBAAgB,yBAAyB,IAAI,eAAe,CAE3D"}
@@ -0,0 +1,109 @@
1
+ import { booleanConfigHelper, floatConfigHelper, getConfigFromMappings, getDefaultConfig, numberConfigHelper, optionalNumberConfigHelper } from '@aztec/foundation/config';
2
+ export const l1TxUtilsConfigMappings = {
3
+ gasLimitBufferPercentage: {
4
+ description: 'How much to increase calculated gas limit by (percentage)',
5
+ env: 'L1_GAS_LIMIT_BUFFER_PERCENTAGE',
6
+ ...numberConfigHelper(20)
7
+ },
8
+ maxGwei: {
9
+ description: 'Maximum gas price in gwei to be used for transactions.',
10
+ env: 'L1_GAS_PRICE_MAX',
11
+ fallback: [
12
+ 'L1_FEE_PER_GAS_GWEI_MAX'
13
+ ],
14
+ ...floatConfigHelper(2000)
15
+ },
16
+ maxBlobGwei: {
17
+ description: 'Maximum blob fee per gas in gwei',
18
+ env: 'L1_BLOB_FEE_PER_GAS_MAX',
19
+ fallback: [
20
+ 'L1_BLOB_FEE_PER_GAS_GWEI_MAX'
21
+ ],
22
+ ...floatConfigHelper(3000)
23
+ },
24
+ priorityFeeBumpPercentage: {
25
+ description: 'How much to increase priority fee by each attempt (percentage)',
26
+ env: 'L1_PRIORITY_FEE_BUMP_PERCENTAGE',
27
+ ...numberConfigHelper(20)
28
+ },
29
+ priorityFeeRetryBumpPercentage: {
30
+ description: 'How much to increase priority fee by each retry attempt (percentage)',
31
+ env: 'L1_PRIORITY_FEE_RETRY_BUMP_PERCENTAGE',
32
+ ...numberConfigHelper(50)
33
+ },
34
+ minimumPriorityFeePerGas: {
35
+ description: 'Minimum priority fee per gas in Gwei. Acts as a floor for the computed priority fee. If network conditions require a higher fee, the higher fee will be used.',
36
+ env: 'L1_MINIMUM_PRIORITY_FEE_PER_GAS_GWEI',
37
+ fallback: [
38
+ 'L1_FIXED_PRIORITY_FEE_PER_GAS',
39
+ 'L1_FIXED_PRIORITY_FEE_PER_GAS_GWEI'
40
+ ],
41
+ deprecatedFallback: [
42
+ {
43
+ env: 'L1_FIXED_PRIORITY_FEE_PER_GAS',
44
+ message: deprecatedFixedFeeMessage('L1_FIXED_PRIORITY_FEE_PER_GAS')
45
+ },
46
+ {
47
+ env: 'L1_FIXED_PRIORITY_FEE_PER_GAS_GWEI',
48
+ message: deprecatedFixedFeeMessage('L1_FIXED_PRIORITY_FEE_PER_GAS_GWEI')
49
+ }
50
+ ],
51
+ ...floatConfigHelper(0)
52
+ },
53
+ maxSpeedUpAttempts: {
54
+ description: 'Maximum number of speed-up attempts',
55
+ env: 'L1_TX_MONITOR_MAX_ATTEMPTS',
56
+ ...numberConfigHelper(3)
57
+ },
58
+ checkIntervalMs: {
59
+ description: 'How often to check tx status',
60
+ env: 'L1_TX_MONITOR_CHECK_INTERVAL_MS',
61
+ ...numberConfigHelper(1_000)
62
+ },
63
+ stallTimeMs: {
64
+ description: 'How long before considering tx stalled',
65
+ env: 'L1_TX_MONITOR_STALL_TIME_MS',
66
+ ...numberConfigHelper(12_000)
67
+ },
68
+ txTimeoutMs: {
69
+ description: 'How long to wait for a tx to be mined before giving up. Set to 0 to disable.',
70
+ env: 'L1_TX_MONITOR_TX_TIMEOUT_MS',
71
+ ...numberConfigHelper(120_000)
72
+ },
73
+ cancelTxOnTimeout: {
74
+ description: "Whether to attempt to cancel a tx if it's not mined after txTimeoutMs",
75
+ env: 'L1_TX_MONITOR_CANCEL_TX_ON_TIMEOUT',
76
+ ...booleanConfigHelper(true)
77
+ },
78
+ txCancellationFinalTimeoutMs: {
79
+ description: 'How long to wait for a cancellation tx after its last attempt before giving up',
80
+ env: 'L1_TX_MONITOR_TX_CANCELLATION_TIMEOUT_MS',
81
+ ...numberConfigHelper(24 * 12 * 1000)
82
+ },
83
+ txUnseenConsideredDroppedMs: {
84
+ description: 'How long a tx nonce can be unseen in the mempool before considering it dropped',
85
+ env: 'L1_TX_MONITOR_TX_UNSEEN_CONSIDERED_DROPPED_MS',
86
+ ...numberConfigHelper(6 * 12 * 1000)
87
+ },
88
+ enableDelayer: {
89
+ description: 'Enable tx delayer for testing.',
90
+ ...booleanConfigHelper(false)
91
+ },
92
+ txDelayerMaxInclusionTimeIntoSlot: {
93
+ description: 'Max seconds into L1 slot for tx inclusion when delayer is enabled.',
94
+ ...optionalNumberConfigHelper()
95
+ },
96
+ ethereumSlotDuration: {
97
+ env: 'ETHEREUM_SLOT_DURATION',
98
+ description: 'How many seconds an L1 slot lasts.',
99
+ ...numberConfigHelper(12)
100
+ }
101
+ };
102
+ // We abuse the fact that all mappings above have a non null default value and force-type this to Required
103
+ export const defaultL1TxUtilsConfig = getDefaultConfig(l1TxUtilsConfigMappings);
104
+ export function getL1TxUtilsConfigEnvVars() {
105
+ return getConfigFromMappings(l1TxUtilsConfigMappings);
106
+ }
107
+ function deprecatedFixedFeeMessage(envVar) {
108
+ return `Environment variable ${envVar} is deprecated. It is now used as a MINIMUM priority fee rather than a fixed value. ` + 'Please use L1_MINIMUM_PRIORITY_FEE_PER_GAS_GWEI instead. If network conditions require a higher fee, the higher fee will be used.';
109
+ }
@@ -0,0 +1,12 @@
1
+ export declare const WEI_CONST = 1000000000n;
2
+ export declare const MAX_L1_TX_LIMIT = 16777216n;
3
+ export declare const MIN_REPLACEMENT_BUMP_PERCENTAGE = 10;
4
+ export declare const MIN_BLOB_REPLACEMENT_BUMP_PERCENTAGE = 100;
5
+ export declare const BLOCK_TIME_MS = 12000;
6
+ export declare const GAS_PER_BLOB = 131072n;
7
+ export declare const BLOB_CAPACITY_SCHEDULE: {
8
+ timestamp: number;
9
+ target: number;
10
+ max: number;
11
+ }[];
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbDFfdHhfdXRpbHMvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLGVBQU8sTUFBTSxTQUFTLGNBQWlCLENBQUM7QUFHeEMsZUFBTyxNQUFNLGVBQWUsWUFBYyxDQUFDO0FBSTNDLGVBQU8sTUFBTSwrQkFBK0IsS0FBSyxDQUFDO0FBSWxELGVBQU8sTUFBTSxvQ0FBb0MsTUFBTSxDQUFDO0FBR3hELGVBQU8sTUFBTSxhQUFhLFFBQVMsQ0FBQztBQUdwQyxlQUFPLE1BQU0sWUFBWSxVQUFVLENBQUM7QUFHcEMsZUFBTyxNQUFNLHNCQUFzQjs7OztHQUtsQyxDQUFDIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/l1_tx_utils/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,SAAS,cAAiB,CAAC;AAGxC,eAAO,MAAM,eAAe,YAAc,CAAC;AAI3C,eAAO,MAAM,+BAA+B,KAAK,CAAC;AAIlD,eAAO,MAAM,oCAAoC,MAAM,CAAC;AAGxD,eAAO,MAAM,aAAa,QAAS,CAAC;AAGpC,eAAO,MAAM,YAAY,UAAU,CAAC;AAGpC,eAAO,MAAM,sBAAsB;;;;GAKlC,CAAC"}
@@ -0,0 +1,39 @@
1
+ // 1_000_000_000 Gwei = 1 ETH
2
+ // 1_000_000_000 Wei = 1 Gwei
3
+ // 1_000_000_000_000_000_000 Wei = 1 ETH
4
+ export const WEI_CONST = 1_000_000_000n;
5
+ // EIP-7825: protocol-level cap on tx gas limit (2^24). Clients reject above this.
6
+ export const MAX_L1_TX_LIMIT = 16_777_216n;
7
+ // setting a minimum bump percentage to 10% due to geth's implementation
8
+ // https://github.com/ethereum/go-ethereum/blob/e3d61e6db028c412f74bc4d4c7e117a9e29d0de0/core/txpool/legacypool/list.go#L298
9
+ export const MIN_REPLACEMENT_BUMP_PERCENTAGE = 10;
10
+ // setting a minimum bump percentage to 100% due to geth's implementation
11
+ // https://github.com/ethereum/go-ethereum/blob/e3d61e6db028c412f74bc4d4c7e117a9e29d0de0/core/txpool/blobpool/config.go#L34
12
+ export const MIN_BLOB_REPLACEMENT_BUMP_PERCENTAGE = 100;
13
+ // Avg ethereum block time is ~12s
14
+ export const BLOCK_TIME_MS = 12_000;
15
+ // Gas per blob (EIP-4844)
16
+ export const GAS_PER_BLOB = 131072n;
17
+ // Blob capacity schedule based on Ethereum upgrades
18
+ export const BLOB_CAPACITY_SCHEDULE = [
19
+ {
20
+ timestamp: 1734357600,
21
+ target: 14,
22
+ max: 21
23
+ },
24
+ {
25
+ timestamp: 1733752800,
26
+ target: 10,
27
+ max: 15
28
+ },
29
+ {
30
+ timestamp: 1733234400,
31
+ target: 6,
32
+ max: 9
33
+ },
34
+ {
35
+ timestamp: 0,
36
+ target: 6,
37
+ max: 9
38
+ }
39
+ ];
@@ -0,0 +1,32 @@
1
+ import type { BlobKzgInstance } from '@aztec/blob-lib/types';
2
+ import { EthAddress } from '@aztec/foundation/eth-address';
3
+ import type { Logger } from '@aztec/foundation/log';
4
+ import { DateProvider } from '@aztec/foundation/timer';
5
+ import type { EthSigner } from '../eth-signer/eth-signer.js';
6
+ import type { ExtendedViemWalletClient, ViemClient } from '../types.js';
7
+ import type { L1TxUtilsConfig } from './config.js';
8
+ import type { IL1TxMetrics, IL1TxStore } from './interfaces.js';
9
+ import { L1TxUtils } from './l1_tx_utils.js';
10
+ import { Delayer } from './tx_delayer.js';
11
+ import type { SigningCallback } from './types.js';
12
+ /** Source of signing capability: either a wallet client or a separate client + signer. */
13
+ export type L1SignerSource = ExtendedViemWalletClient | {
14
+ client: ViemClient;
15
+ signer: EthSigner;
16
+ };
17
+ export declare function resolveSignerSource(source: L1SignerSource): {
18
+ client: ViemClient;
19
+ address: EthAddress;
20
+ signingCallback: SigningCallback;
21
+ };
22
+ export declare function createL1TxUtils(source: L1SignerSource, deps?: {
23
+ logger?: Logger;
24
+ dateProvider?: DateProvider;
25
+ store?: IL1TxStore;
26
+ metrics?: IL1TxMetrics;
27
+ kzg?: BlobKzgInstance;
28
+ delayer?: Delayer;
29
+ }, config?: Partial<L1TxUtilsConfig> & {
30
+ debugMaxGasLimit?: boolean;
31
+ }): L1TxUtils;
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2wxX3R4X3V0aWxzL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEUsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFN0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVsRCwwRkFBMEY7QUFDMUYsTUFBTSxNQUFNLGNBQWMsR0FBRyx3QkFBd0IsR0FBRztJQUFFLE1BQU0sRUFBRSxVQUFVLENBQUM7SUFBQyxNQUFNLEVBQUUsU0FBUyxDQUFBO0NBQUUsQ0FBQztBQUVsRyx3QkFBZ0IsbUJBQW1CLENBQUMsTUFBTSxFQUFFLGNBQWMsR0FBRztJQUMzRCxNQUFNLEVBQUUsVUFBVSxDQUFDO0lBQ25CLE9BQU8sRUFBRSxVQUFVLENBQUM7SUFDcEIsZUFBZSxFQUFFLGVBQWUsQ0FBQztDQUNsQyxDQWNBO0FBRUQsd0JBQWdCLGVBQWUsQ0FDN0IsTUFBTSxFQUFFLGNBQWMsRUFDdEIsSUFBSSxDQUFDLEVBQUU7SUFDTCxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDaEIsWUFBWSxDQUFDLEVBQUUsWUFBWSxDQUFDO0lBQzVCLEtBQUssQ0FBQyxFQUFFLFVBQVUsQ0FBQztJQUNuQixPQUFPLENBQUMsRUFBRSxZQUFZLENBQUM7SUFDdkIsR0FBRyxDQUFDLEVBQUUsZUFBZSxDQUFDO0lBQ3RCLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQztDQUNuQixFQUNELE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRztJQUFFLGdCQUFnQixDQUFDLEVBQUUsT0FBTyxDQUFBO0NBQUUsR0FDakUsU0FBUyxDQWVYIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/l1_tx_utils/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,0FAA0F;AAC1F,MAAM,MAAM,cAAc,GAAG,wBAAwB,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC;AAElG,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG;IAC3D,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,UAAU,CAAC;IACpB,eAAe,EAAE,eAAe,CAAC;CAClC,CAcA;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,cAAc,EACtB,IAAI,CAAC,EAAE;IACL,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,EACD,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAE,GACjE,SAAS,CAeX"}
@@ -0,0 +1,22 @@
1
+ import { EthAddress } from '@aztec/foundation/eth-address';
2
+ import { L1TxUtils } from './l1_tx_utils.js';
3
+ import { createViemSigner } from './signer.js';
4
+ export function resolveSignerSource(source) {
5
+ if ('account' in source && source.account) {
6
+ return {
7
+ client: source,
8
+ address: EthAddress.fromString(source.account.address),
9
+ signingCallback: createViemSigner(source)
10
+ };
11
+ }
12
+ const { client, signer } = source;
13
+ return {
14
+ client,
15
+ address: signer.address,
16
+ signingCallback: async (tx, _addr)=>(await signer.signTransaction(tx)).toViemTransactionSignature()
17
+ };
18
+ }
19
+ export function createL1TxUtils(source, deps, config) {
20
+ const { client, address, signingCallback } = resolveSignerSource(source);
21
+ return new L1TxUtils(client, address, signingCallback, deps?.logger, deps?.dateProvider, config, config?.debugMaxGasLimit ?? false, deps?.store, deps?.metrics, deps?.kzg, deps?.delayer);
22
+ }
@@ -0,0 +1,10 @@
1
+ import type { PriorityFeeStrategy } from './types.js';
2
+ export { HISTORICAL_BLOCK_COUNT, type PriorityFeeStrategy, type PriorityFeeStrategyContext, type PriorityFeeStrategyResult, } from './types.js';
3
+ export { P75AllTxsPriorityFeeStrategy } from './p75_competitive.js';
4
+ export { P75BlobTxsOnlyPriorityFeeStrategy } from './p75_competitive_blob_txs_only.js';
5
+ /**
6
+ * Default list of priority fee strategies to analyze.
7
+ * Add more strategies here for comparison.
8
+ */
9
+ export declare const DEFAULT_PRIORITY_FEE_STRATEGIES: PriorityFeeStrategy[];
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sMV90eF91dGlscy9mZWUtc3RyYXRlZ2llcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV0RCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLEtBQUssbUJBQW1CLEVBQ3hCLEtBQUssMEJBQTBCLEVBQy9CLEtBQUsseUJBQXlCLEdBQy9CLE1BQU0sWUFBWSxDQUFDO0FBRXBCLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXZGOzs7R0FHRztBQUNILGVBQU8sTUFBTSwrQkFBK0IsRUFBRSxtQkFBbUIsRUFHaEUsQ0FBQyJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/l1_tx_utils/fee-strategies/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,OAAO,EACL,sBAAsB,EACtB,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,GAC/B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,iCAAiC,EAAE,MAAM,oCAAoC,CAAC;AAEvF;;;GAGG;AACH,eAAO,MAAM,+BAA+B,EAAE,mBAAmB,EAGhE,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { P75AllTxsPriorityFeeStrategy } from './p75_competitive.js';
2
+ import { P75BlobTxsOnlyPriorityFeeStrategy } from './p75_competitive_blob_txs_only.js';
3
+ export { HISTORICAL_BLOCK_COUNT } from './types.js';
4
+ export { P75AllTxsPriorityFeeStrategy } from './p75_competitive.js';
5
+ export { P75BlobTxsOnlyPriorityFeeStrategy } from './p75_competitive_blob_txs_only.js';
6
+ /**
7
+ * Default list of priority fee strategies to analyze.
8
+ * Add more strategies here for comparison.
9
+ */ export const DEFAULT_PRIORITY_FEE_STRATEGIES = [
10
+ P75AllTxsPriorityFeeStrategy,
11
+ P75BlobTxsOnlyPriorityFeeStrategy
12
+ ];
@@ -0,0 +1,8 @@
1
+ import { type PriorityFeeStrategy } from './types.js';
2
+ /**
3
+ * Our current competitive priority fee strategy.
4
+ * Analyzes p75 of pending transactions and 5-block fee history to determine a competitive priority fee.
5
+ * Falls back to network estimate if data is unavailable.
6
+ */
7
+ export declare const P75AllTxsPriorityFeeStrategy: PriorityFeeStrategy;
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDc1X2NvbXBldGl0aXZlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbDFfdHhfdXRpbHMvZmVlLXN0cmF0ZWdpZXMvcDc1X2NvbXBldGl0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFFTCxLQUFLLG1CQUFtQixFQUd6QixNQUFNLFlBQVksQ0FBQztBQUVwQjs7OztHQUlHO0FBQ0gsZUFBTyxNQUFNLDRCQUE0QixFQUFFLG1CQStJMUMsQ0FBQyJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"p75_competitive.d.ts","sourceRoot":"","sources":["../../../src/l1_tx_utils/fee-strategies/p75_competitive.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,mBAAmB,EAGzB,MAAM,YAAY,CAAC;AAEpB;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,mBA+I1C,CAAC"}