@aztec/ethereum 3.0.0-canary.a9708bd → 3.0.0-devnet.20251212

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 (195) hide show
  1. package/dest/account.d.ts +1 -1
  2. package/dest/chain.d.ts +1 -1
  3. package/dest/client.d.ts +2 -2
  4. package/dest/client.d.ts.map +1 -1
  5. package/dest/config.d.ts +16 -8
  6. package/dest/config.d.ts.map +1 -1
  7. package/dest/config.js +160 -62
  8. package/dest/constants.d.ts +1 -1
  9. package/dest/contracts/empire_base.d.ts +7 -6
  10. package/dest/contracts/empire_base.d.ts.map +1 -1
  11. package/dest/contracts/empire_base.js +1 -1
  12. package/dest/contracts/empire_slashing_proposer.d.ts +7 -6
  13. package/dest/contracts/empire_slashing_proposer.d.ts.map +1 -1
  14. package/dest/contracts/empire_slashing_proposer.js +9 -3
  15. package/dest/contracts/errors.d.ts +1 -1
  16. package/dest/contracts/errors.d.ts.map +1 -1
  17. package/dest/contracts/fee_asset_handler.d.ts +4 -4
  18. package/dest/contracts/fee_asset_handler.d.ts.map +1 -1
  19. package/dest/contracts/fee_juice.d.ts +1 -1
  20. package/dest/contracts/fee_juice.d.ts.map +1 -1
  21. package/dest/contracts/governance.d.ts +16 -16
  22. package/dest/contracts/governance.d.ts.map +1 -1
  23. package/dest/contracts/governance.js +7 -3
  24. package/dest/contracts/governance_proposer.d.ts +6 -6
  25. package/dest/contracts/governance_proposer.d.ts.map +1 -1
  26. package/dest/contracts/governance_proposer.js +9 -4
  27. package/dest/contracts/gse.d.ts +1 -1
  28. package/dest/contracts/gse.d.ts.map +1 -1
  29. package/dest/contracts/inbox.d.ts +1 -1
  30. package/dest/contracts/inbox.d.ts.map +1 -1
  31. package/dest/contracts/index.d.ts +1 -1
  32. package/dest/contracts/multicall.d.ts +5 -7
  33. package/dest/contracts/multicall.d.ts.map +1 -1
  34. package/dest/contracts/multicall.js +6 -4
  35. package/dest/contracts/registry.d.ts +1 -1
  36. package/dest/contracts/registry.d.ts.map +1 -1
  37. package/dest/contracts/rollup.d.ts +83 -72
  38. package/dest/contracts/rollup.d.ts.map +1 -1
  39. package/dest/contracts/rollup.js +144 -139
  40. package/dest/contracts/slasher_contract.d.ts +11 -1
  41. package/dest/contracts/slasher_contract.d.ts.map +1 -1
  42. package/dest/contracts/slasher_contract.js +18 -0
  43. package/dest/contracts/tally_slashing_proposer.d.ts +30 -9
  44. package/dest/contracts/tally_slashing_proposer.d.ts.map +1 -1
  45. package/dest/contracts/tally_slashing_proposer.js +58 -8
  46. package/dest/contracts/utils.d.ts +1 -1
  47. package/dest/deploy_l1_contracts.d.ts +477 -15
  48. package/dest/deploy_l1_contracts.d.ts.map +1 -1
  49. package/dest/deploy_l1_contracts.js +610 -386
  50. package/dest/eth-signer/eth-signer.d.ts +1 -1
  51. package/dest/eth-signer/index.d.ts +1 -1
  52. package/dest/forwarder_proxy.d.ts +32 -0
  53. package/dest/forwarder_proxy.d.ts.map +1 -0
  54. package/dest/forwarder_proxy.js +93 -0
  55. package/dest/l1_artifacts.d.ts +14258 -6015
  56. package/dest/l1_artifacts.d.ts.map +1 -1
  57. package/dest/l1_artifacts.js +10 -5
  58. package/dest/l1_contract_addresses.d.ts +8 -4
  59. package/dest/l1_contract_addresses.d.ts.map +1 -1
  60. package/dest/l1_contract_addresses.js +16 -26
  61. package/dest/l1_reader.d.ts +4 -2
  62. package/dest/l1_reader.d.ts.map +1 -1
  63. package/dest/l1_reader.js +14 -8
  64. package/dest/l1_tx_utils/config.d.ts +59 -0
  65. package/dest/l1_tx_utils/config.d.ts.map +1 -0
  66. package/dest/l1_tx_utils/config.js +96 -0
  67. package/dest/l1_tx_utils/constants.d.ts +6 -0
  68. package/dest/l1_tx_utils/constants.d.ts.map +1 -0
  69. package/dest/l1_tx_utils/constants.js +14 -0
  70. package/dest/l1_tx_utils/factory.d.ts +24 -0
  71. package/dest/l1_tx_utils/factory.d.ts.map +1 -0
  72. package/dest/l1_tx_utils/factory.js +12 -0
  73. package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts +41 -0
  74. package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts.map +1 -0
  75. package/dest/l1_tx_utils/forwarder_l1_tx_utils.js +48 -0
  76. package/dest/l1_tx_utils/index-blobs.d.ts +3 -0
  77. package/dest/l1_tx_utils/index-blobs.d.ts.map +1 -0
  78. package/dest/l1_tx_utils/index-blobs.js +2 -0
  79. package/dest/l1_tx_utils/index.d.ts +10 -0
  80. package/dest/l1_tx_utils/index.d.ts.map +1 -0
  81. package/dest/l1_tx_utils/index.js +10 -0
  82. package/dest/l1_tx_utils/interfaces.d.ts +76 -0
  83. package/dest/l1_tx_utils/interfaces.d.ts.map +1 -0
  84. package/dest/l1_tx_utils/interfaces.js +4 -0
  85. package/dest/l1_tx_utils/l1_tx_utils.d.ts +94 -0
  86. package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -0
  87. package/dest/l1_tx_utils/l1_tx_utils.js +623 -0
  88. package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts +26 -0
  89. package/dest/l1_tx_utils/l1_tx_utils_with_blobs.d.ts.map +1 -0
  90. package/dest/l1_tx_utils/l1_tx_utils_with_blobs.js +26 -0
  91. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts +94 -0
  92. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts.map +1 -0
  93. package/dest/l1_tx_utils/readonly_l1_tx_utils.js +431 -0
  94. package/dest/l1_tx_utils/signer.d.ts +4 -0
  95. package/dest/l1_tx_utils/signer.d.ts.map +1 -0
  96. package/dest/l1_tx_utils/signer.js +16 -0
  97. package/dest/l1_tx_utils/types.d.ts +67 -0
  98. package/dest/l1_tx_utils/types.d.ts.map +1 -0
  99. package/dest/l1_tx_utils/types.js +26 -0
  100. package/dest/l1_tx_utils/utils.d.ts +4 -0
  101. package/dest/l1_tx_utils/utils.d.ts.map +1 -0
  102. package/dest/l1_tx_utils/utils.js +14 -0
  103. package/dest/l1_types.d.ts +1 -1
  104. package/dest/publisher_manager.d.ts +8 -3
  105. package/dest/publisher_manager.d.ts.map +1 -1
  106. package/dest/publisher_manager.js +36 -8
  107. package/dest/queries.d.ts +1 -1
  108. package/dest/queries.d.ts.map +1 -1
  109. package/dest/queries.js +13 -12
  110. package/dest/test/chain_monitor.d.ts +33 -19
  111. package/dest/test/chain_monitor.d.ts.map +1 -1
  112. package/dest/test/chain_monitor.js +100 -33
  113. package/dest/test/delayed_tx_utils.d.ts +3 -3
  114. package/dest/test/delayed_tx_utils.d.ts.map +1 -1
  115. package/dest/test/delayed_tx_utils.js +2 -2
  116. package/dest/test/eth_cheat_codes.d.ts +36 -14
  117. package/dest/test/eth_cheat_codes.d.ts.map +1 -1
  118. package/dest/test/eth_cheat_codes.js +124 -31
  119. package/dest/test/eth_cheat_codes_with_state.d.ts +1 -1
  120. package/dest/test/eth_cheat_codes_with_state.d.ts.map +1 -1
  121. package/dest/test/index.d.ts +1 -1
  122. package/dest/test/rollup_cheat_codes.d.ts +23 -20
  123. package/dest/test/rollup_cheat_codes.d.ts.map +1 -1
  124. package/dest/test/rollup_cheat_codes.js +79 -42
  125. package/dest/test/start_anvil.d.ts +2 -1
  126. package/dest/test/start_anvil.d.ts.map +1 -1
  127. package/dest/test/start_anvil.js +2 -1
  128. package/dest/test/tx_delayer.d.ts +1 -1
  129. package/dest/test/tx_delayer.d.ts.map +1 -1
  130. package/dest/test/tx_delayer.js +3 -2
  131. package/dest/test/upgrade_utils.d.ts +1 -1
  132. package/dest/test/upgrade_utils.d.ts.map +1 -1
  133. package/dest/test/upgrade_utils.js +3 -2
  134. package/dest/types.d.ts +57 -2
  135. package/dest/types.d.ts.map +1 -1
  136. package/dest/utils.d.ts +2 -2
  137. package/dest/utils.d.ts.map +1 -1
  138. package/dest/utils.js +10 -161
  139. package/dest/zkPassportVerifierAddress.d.ts +1 -1
  140. package/dest/zkPassportVerifierAddress.js +1 -1
  141. package/package.json +27 -13
  142. package/src/client.ts +1 -1
  143. package/src/config.ts +177 -65
  144. package/src/contracts/empire_base.ts +7 -6
  145. package/src/contracts/empire_slashing_proposer.ts +18 -8
  146. package/src/contracts/fee_asset_handler.ts +1 -1
  147. package/src/contracts/governance.ts +3 -3
  148. package/src/contracts/governance_proposer.ts +14 -9
  149. package/src/contracts/multicall.ts +12 -10
  150. package/src/contracts/rollup.ts +170 -171
  151. package/src/contracts/slasher_contract.ts +22 -0
  152. package/src/contracts/tally_slashing_proposer.ts +63 -12
  153. package/src/deploy_l1_contracts.ts +610 -337
  154. package/src/forwarder_proxy.ts +108 -0
  155. package/src/l1_artifacts.ts +14 -6
  156. package/src/l1_contract_addresses.ts +17 -26
  157. package/src/l1_reader.ts +17 -9
  158. package/src/l1_tx_utils/README.md +177 -0
  159. package/src/l1_tx_utils/config.ts +161 -0
  160. package/src/l1_tx_utils/constants.ts +18 -0
  161. package/src/l1_tx_utils/factory.ts +64 -0
  162. package/src/l1_tx_utils/forwarder_l1_tx_utils.ts +119 -0
  163. package/src/l1_tx_utils/index-blobs.ts +2 -0
  164. package/src/l1_tx_utils/index.ts +12 -0
  165. package/src/l1_tx_utils/interfaces.ts +86 -0
  166. package/src/l1_tx_utils/l1_tx_utils.ts +738 -0
  167. package/src/l1_tx_utils/l1_tx_utils_with_blobs.ts +77 -0
  168. package/src/l1_tx_utils/readonly_l1_tx_utils.ts +557 -0
  169. package/src/l1_tx_utils/signer.ts +28 -0
  170. package/src/l1_tx_utils/types.ts +85 -0
  171. package/src/l1_tx_utils/utils.ts +16 -0
  172. package/src/publisher_manager.ts +51 -9
  173. package/src/queries.ts +16 -8
  174. package/src/test/chain_monitor.ts +118 -36
  175. package/src/test/delayed_tx_utils.ts +2 -2
  176. package/src/test/eth_cheat_codes.ts +149 -30
  177. package/src/test/rollup_cheat_codes.ts +94 -52
  178. package/src/test/start_anvil.ts +2 -0
  179. package/src/test/tx_delayer.ts +4 -2
  180. package/src/test/upgrade_utils.ts +3 -2
  181. package/src/types.ts +62 -0
  182. package/src/utils.ts +12 -184
  183. package/src/zkPassportVerifierAddress.ts +1 -1
  184. package/dest/index.d.ts +0 -18
  185. package/dest/index.d.ts.map +0 -1
  186. package/dest/index.js +0 -17
  187. package/dest/l1_tx_utils.d.ts +0 -250
  188. package/dest/l1_tx_utils.d.ts.map +0 -1
  189. package/dest/l1_tx_utils.js +0 -826
  190. package/dest/l1_tx_utils_with_blobs.d.ts +0 -19
  191. package/dest/l1_tx_utils_with_blobs.d.ts.map +0 -1
  192. package/dest/l1_tx_utils_with_blobs.js +0 -85
  193. package/src/index.ts +0 -17
  194. package/src/l1_tx_utils.ts +0 -1105
  195. package/src/l1_tx_utils_with_blobs.ts +0 -144
package/dest/account.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  export declare function getAddressFromPrivateKey(privateKey: `0x${string}`): `0x${string}`;
2
- //# sourceMappingURL=account.d.ts.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FjY291bnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsd0JBQWdCLHdCQUF3QixDQUFDLFVBQVUsRUFBRSxLQUFLLE1BQU0sRUFBRSxHQUFHLEtBQUssTUFBTSxFQUFFLENBRWpGIn0=
package/dest/chain.d.ts CHANGED
@@ -22,4 +22,4 @@ export declare function createEthereumChain(rpcUrls: string[], _chainId: number
22
22
  * Helper function to determine if a chain id is an instance of Anvil
23
23
  */
24
24
  export declare function isAnvilTestChain(_chainId: number | string): boolean;
25
- //# sourceMappingURL=chain.d.ts.map
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW4uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jaGFpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLbEM7O0dBRUc7QUFDSCxNQUFNLFdBQVcsYUFBYTtJQUM1Qjs7T0FFRztJQUNILFNBQVMsRUFBRSxLQUFLLENBQUM7SUFFakI7O09BRUc7SUFDSCxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7Q0FDbkI7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQWdCLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxHQUFHLE1BQU0sR0FBRyxhQUFhLENBK0IvRjtBQUVEOztHQUVHO0FBQ0gsd0JBQWdCLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxNQUFNLEdBQUcsTUFBTSxHQUFHLE9BQU8sQ0FTbkUifQ==
package/dest/client.d.ts CHANGED
@@ -2,7 +2,7 @@ import type { Logger } from '@aztec/foundation/log';
2
2
  import { type Chain, type HDAccount, type LocalAccount, type PrivateKeyAccount } from 'viem';
3
3
  import type { ExtendedViemWalletClient, ViemPublicClient } from './types.js';
4
4
  type Config = {
5
- /** The RPC Url of the ethereum host. */
5
+ /** List of URLs of Ethereum RPC nodes that services will connect to (comma separated). */
6
6
  l1RpcUrls: string[];
7
7
  /** The chain ID of the ethereum host. */
8
8
  l1ChainId: number;
@@ -15,4 +15,4 @@ export declare function getPublicClient(config: Config): ViemPublicClient;
15
15
  /** Returns a viem public client after waiting for the L1 RPC node to become available. */
16
16
  export declare function waitForPublicClient(config: Config, logger?: Logger): Promise<ViemPublicClient>;
17
17
  export declare function createExtendedL1Client(rpcUrls: string[], mnemonicOrPrivateKeyOrHdAccount: string | HDAccount | PrivateKeyAccount | LocalAccount, chain?: Chain, pollingIntervalMS?: number, addressIndex?: number): ExtendedViemWalletClient;
18
- //# sourceMappingURL=client.d.ts.map
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3BELE9BQU8sRUFDTCxLQUFLLEtBQUssRUFDVixLQUFLLFNBQVMsRUFDZCxLQUFLLFlBQVksRUFDakIsS0FBSyxpQkFBaUIsRUFNdkIsTUFBTSxNQUFNLENBQUM7QUFLZCxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUU3RSxLQUFLLE1BQU0sR0FBRztJQUNaLDBGQUEwRjtJQUMxRixTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDcEIseUNBQXlDO0lBQ3pDLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsMkNBQTJDO0lBQzNDLHFCQUFxQixDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ2hDLENBQUM7QUFFRixZQUFZLEVBQUUsTUFBTSxJQUFJLG9CQUFvQixFQUFFLENBQUM7QUFJL0Msd0RBQXdEO0FBQ3hELHdCQUFnQixlQUFlLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxnQkFBZ0IsQ0FPaEU7QUFFRCwwRkFBMEY7QUFDMUYsd0JBQXNCLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUlwRztBQXlCRCx3QkFBZ0Isc0JBQXNCLENBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFDakIsK0JBQStCLEVBQUUsTUFBTSxHQUFHLFNBQVMsR0FBRyxpQkFBaUIsR0FBRyxZQUFZLEVBQ3RGLEtBQUssR0FBRSxLQUFlLEVBQ3RCLGlCQUFpQixDQUFDLEVBQUUsTUFBTSxFQUMxQixZQUFZLENBQUMsRUFBRSxNQUFNLEdBQ3BCLHdCQUF3QixDQWdCMUIifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EACL,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,iBAAiB,EAMvB,MAAM,MAAM,CAAC;AAKd,OAAO,KAAK,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE7E,KAAK,MAAM,GAAG;IACZ,wCAAwC;IACxC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,YAAY,EAAE,MAAM,IAAI,oBAAoB,EAAE,CAAC;AAI/C,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAOhE;AAED,0FAA0F;AAC1F,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAIpG;AAyBD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EAAE,EACjB,+BAA+B,EAAE,MAAM,GAAG,SAAS,GAAG,iBAAiB,GAAG,YAAY,EACtF,KAAK,GAAE,KAAe,EACtB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,YAAY,CAAC,EAAE,MAAM,GACpB,wBAAwB,CAgB1B"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EACL,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,iBAAiB,EAMvB,MAAM,MAAM,CAAC;AAKd,OAAO,KAAK,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE7E,KAAK,MAAM,GAAG;IACZ,0FAA0F;IAC1F,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,YAAY,EAAE,MAAM,IAAI,oBAAoB,EAAE,CAAC;AAI/C,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAOhE;AAED,0FAA0F;AAC1F,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAIpG;AAyBD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EAAE,EACjB,+BAA+B,EAAE,MAAM,GAAG,SAAS,GAAG,iBAAiB,GAAG,YAAY,EACtF,KAAK,GAAE,KAAe,EACtB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,YAAY,CAAC,EAAE,MAAM,GACpB,wBAAwB,CAgB1B"}
package/dest/config.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { type ConfigMappingsType, type NetworkNames } from '@aztec/foundation/config';
2
2
  import { EthAddress } from '@aztec/foundation/eth-address';
3
- import { type L1TxUtilsConfig } from './l1_tx_utils.js';
3
+ import { type L1TxUtilsConfig } from './l1_tx_utils/index.js';
4
4
  export type GenesisStateConfig = {
5
5
  /** Whether to populate the genesis state with initial fee juice for the test accounts */
6
6
  testAccounts: boolean;
@@ -16,12 +16,18 @@ export type L1ContractsConfig = {
16
16
  aztecEpochDuration: number;
17
17
  /** The target validator committee size. */
18
18
  aztecTargetCommitteeSize: number;
19
+ /** The number of epochs to lag behind the current epoch for validator selection. */
20
+ lagInEpochsForValidatorSet: number;
21
+ /** The number of epochs to lag behind the current epoch for randao selection. */
22
+ lagInEpochsForRandao: number;
19
23
  /** The number of epochs after an epoch ends that proofs are still accepted. */
20
24
  aztecProofSubmissionEpochs: number;
21
25
  /** The deposit amount for a validator */
22
26
  activationThreshold: bigint;
23
27
  /** The minimum stake for a validator. */
24
28
  ejectionThreshold: bigint;
29
+ /** The local ejection threshold for a validator. Stricter than ejectionThreshold but local to a specific rollup */
30
+ localEjectionThreshold: bigint;
25
31
  /** The slashing quorum, i.e. how many slots must signal for the same payload in a round for it to be submittable to the Slasher (defaults to slashRoundSize / 2 + 1) */
26
32
  slashingQuorum?: number;
27
33
  /** The slashing round size, i.e. how many epochs are in a slashing round */
@@ -34,6 +40,8 @@ export type L1ContractsConfig = {
34
40
  slashingVetoer: EthAddress;
35
41
  /** How many slashing rounds back we slash (ie when slashing in round N, we slash for offenses committed during epochs of round N-offset) */
36
42
  slashingOffsetInRounds: number;
43
+ /** How long slashing can be disabled for in seconds when vetoer disables it */
44
+ slashingDisableDuration: number;
37
45
  /** Type of slasher proposer */
38
46
  slasherFlavor: 'empire' | 'tally' | 'none';
39
47
  /** Minimum amount that can be slashed in tally slashing */
@@ -58,9 +66,12 @@ export declare const DefaultL1ContractsConfig: {
58
66
  aztecSlotDuration: number;
59
67
  aztecEpochDuration: number;
60
68
  aztecTargetCommitteeSize: number;
69
+ lagInEpochsForValidatorSet: number;
70
+ lagInEpochsForRandao: number;
61
71
  aztecProofSubmissionEpochs: number;
62
72
  activationThreshold: bigint;
63
73
  ejectionThreshold: bigint;
74
+ localEjectionThreshold: bigint;
64
75
  slashAmountSmall: bigint;
65
76
  slashAmountMedium: bigint;
66
77
  slashAmountLarge: bigint;
@@ -74,6 +85,7 @@ export declare const DefaultL1ContractsConfig: {
74
85
  exitDelaySeconds: number;
75
86
  slasherFlavor: "tally";
76
87
  slashingOffsetInRounds: number;
88
+ slashingDisableDuration: number;
77
89
  };
78
90
  export declare const getGovernanceConfiguration: (networkName: NetworkNames) => {
79
91
  proposeConfig: {
@@ -88,17 +100,13 @@ export declare const getGovernanceConfiguration: (networkName: NetworkNames) =>
88
100
  requiredYeaMargin: bigint;
89
101
  minimumVotes: bigint;
90
102
  };
91
- export declare const getGSEConfiguration: (networkName: NetworkNames) => {
92
- activationThreshold: bigint;
93
- ejectionThreshold: bigint;
94
- };
95
103
  export declare const getRewardConfig: (networkName: NetworkNames) => {
96
104
  sequencerBps: number;
97
105
  rewardDistributor: `0x${string}`;
98
106
  booster: `0x${string}`;
99
- blockReward: bigint;
107
+ checkpointReward: bigint;
100
108
  };
101
- export declare const getRewardBoostConfig: (networkName: NetworkNames) => {
109
+ export declare const getRewardBoostConfig: () => {
102
110
  increment: number;
103
111
  maxScore: number;
104
112
  a: number;
@@ -122,4 +130,4 @@ export declare function getGenesisStateConfigEnvVars(): GenesisStateConfig;
122
130
  * Accumulates all validation errors and throws an exception listing them all if any are found.
123
131
  */
124
132
  export declare function validateConfig(config: Omit<L1ContractsConfig, keyof L1TxUtilsConfig>): void;
125
- //# sourceMappingURL=config.d.ts.map
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUN2QixLQUFLLFlBQVksRUFPbEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFM0QsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUEyQixNQUFNLHdCQUF3QixDQUFDO0FBRXZGLE1BQU0sTUFBTSxrQkFBa0IsR0FBRztJQUMvQix5RkFBeUY7SUFDekYsWUFBWSxFQUFFLE9BQU8sQ0FBQztJQUN0Qix5RkFBeUY7SUFDekYsWUFBWSxFQUFFLE9BQU8sQ0FBQztDQUN2QixDQUFDO0FBRUYsTUFBTSxNQUFNLGlCQUFpQixHQUFHO0lBQzlCLHlDQUF5QztJQUN6QyxvQkFBb0IsRUFBRSxNQUFNLENBQUM7SUFDN0IsdUZBQXVGO0lBQ3ZGLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztJQUMxQix3Q0FBd0M7SUFDeEMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDO0lBQzNCLDJDQUEyQztJQUMzQyx3QkFBd0IsRUFBRSxNQUFNLENBQUM7SUFDakMsb0ZBQW9GO0lBQ3BGLDBCQUEwQixFQUFFLE1BQU0sQ0FBQztJQUNuQyxpRkFBaUY7SUFDakYsb0JBQW9CLEVBQUUsTUFBTSxDQUFDO0lBQzdCLCtFQUErRTtJQUMvRSwwQkFBMEIsRUFBRSxNQUFNLENBQUM7SUFDbkMseUNBQXlDO0lBQ3pDLG1CQUFtQixFQUFFLE1BQU0sQ0FBQztJQUM1Qix5Q0FBeUM7SUFDekMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO0lBQzFCLG1IQUFtSDtJQUNuSCxzQkFBc0IsRUFBRSxNQUFNLENBQUM7SUFDL0Isd0tBQXdLO0lBQ3hLLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUN4Qiw0RUFBNEU7SUFDNUUseUJBQXlCLEVBQUUsTUFBTSxDQUFDO0lBQ2xDLGdHQUFnRztJQUNoRyx3QkFBd0IsRUFBRSxNQUFNLENBQUM7SUFDakMseUdBQXlHO0lBQ3pHLDhCQUE4QixFQUFFLE1BQU0sQ0FBQztJQUN2Qyx5RUFBeUU7SUFDekUsY0FBYyxFQUFFLFVBQVUsQ0FBQztJQUMzQiw0SUFBNEk7SUFDNUksc0JBQXNCLEVBQUUsTUFBTSxDQUFDO0lBQy9CLCtFQUErRTtJQUMvRSx1QkFBdUIsRUFBRSxNQUFNLENBQUM7SUFDaEMsK0JBQStCO0lBQy9CLGFBQWEsRUFBRSxRQUFRLEdBQUcsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUMzQywyREFBMkQ7SUFDM0QsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDO0lBQ3pCLCtDQUErQztJQUMvQyxpQkFBaUIsRUFBRSxNQUFNLENBQUM7SUFDMUIscUVBQXFFO0lBQ3JFLGdCQUFnQixFQUFFLE1BQU0sQ0FBQztJQUN6QixnRUFBZ0U7SUFDaEUsd0JBQXdCLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDbEMsc0NBQXNDO0lBQ3RDLDJCQUEyQixFQUFFLE1BQU0sQ0FBQztJQUNwQyxxQ0FBcUM7SUFDckMsVUFBVSxFQUFFLE1BQU0sQ0FBQztJQUNuQixnQ0FBZ0M7SUFDaEMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDO0lBQzNCLGdEQUFnRDtJQUNoRCxnQkFBZ0IsRUFBRSxNQUFNLENBQUM7Q0FDMUIsR0FBRyxlQUFlLENBQUM7QUFFcEIsZUFBTyxNQUFNLHdCQUF3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXlCUixDQUFDO0FBMkU5QixlQUFPLE1BQU0sMEJBQTBCOzs7Ozs7Ozs7Ozs7Q0FtQnRDLENBQUM7QUFvQkYsZUFBTyxNQUFNLGVBQWU7Ozs7O0NBYzNCLENBQUM7QUFFRixlQUFPLE1BQU0sb0JBQW9COzs7Ozs7Q0FVaEMsQ0FBQztBQTJDRixlQUFPLE1BQU0sbUJBQW1COzs7Ozs7Q0FtQi9CLENBQUM7QUFFRixlQUFPLE1BQU0seUJBQXlCLEVBQUUsa0JBQWtCLENBQUMsaUJBQWlCLENBdUkzRSxDQUFDO0FBRUYsZUFBTyxNQUFNLDBCQUEwQixFQUFFLGtCQUFrQixDQUFDLGtCQUFrQixDQVc3RSxDQUFDO0FBRUYsd0JBQWdCLDJCQUEyQixJQUFJLGlCQUFpQixDQUUvRDtBQUVELHdCQUFnQiw0QkFBNEIsSUFBSSxrQkFBa0IsQ0FFakU7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQWdCLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDLEdBQUcsSUFBSSxDQW1IM0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,YAAY,EAOlB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,KAAK,eAAe,EAA2B,MAAM,kBAAkB,CAAC;AAEjF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,yFAAyF;IACzF,YAAY,EAAE,OAAO,CAAC;IACtB,yFAAyF;IACzF,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,yCAAyC;IACzC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uFAAuF;IACvF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wCAAwC;IACxC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,wBAAwB,EAAE,MAAM,CAAC;IACjC,+EAA+E;IAC/E,0BAA0B,EAAE,MAAM,CAAC;IACnC,yCAAyC;IACzC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yCAAyC;IACzC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wKAAwK;IACxK,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,yBAAyB,EAAE,MAAM,CAAC;IAClC,gGAAgG;IAChG,wBAAwB,EAAE,MAAM,CAAC;IACjC,yGAAyG;IACzG,8BAA8B,EAAE,MAAM,CAAC;IACvC,yEAAyE;IACzE,cAAc,EAAE,UAAU,CAAC;IAC3B,4IAA4I;IAC5I,sBAAsB,EAAE,MAAM,CAAC;IAC/B,+BAA+B;IAC/B,aAAa,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAC3C,2DAA2D;IAC3D,gBAAgB,EAAE,MAAM,CAAC;IACzB,+CAA+C;IAC/C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,sCAAsC;IACtC,2BAA2B,EAAE,MAAM,CAAC;IACpC,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,eAAe,CAAC;AAEpB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;CAqBR,CAAC;AA8B9B,eAAO,MAAM,0BAA0B,GAAI,aAAa,YAAY;;;;;;;;;;;;CAKnE,CAAC;AAYF,eAAO,MAAM,mBAAmB,GAAI,aAAa,YAAY;;;CAK5D,CAAC;AAmBF,eAAO,MAAM,eAAe,GAAI,aAAa,YAAY;;;;;CAKxD,CAAC;AAkBF,eAAO,MAAM,oBAAoB,GAAI,aAAa,YAAY;;;;;;CAK7D,CAAC;AAmBF,eAAO,MAAM,mBAAmB,GAAI,aAAa,YAAY;;;;;;CAK5D,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CAAC,iBAAiB,CAkH3E,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CAAC,kBAAkB,CAW7E,CAAC;AAEF,wBAAgB,2BAA2B,IAAI,iBAAiB,CAE/D;AAED,wBAAgB,4BAA4B,IAAI,kBAAkB,CAEjE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,eAAe,CAAC,GAAG,IAAI,CAmH3F"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,YAAY,EAOlB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,KAAK,eAAe,EAA2B,MAAM,wBAAwB,CAAC;AAEvF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,yFAAyF;IACzF,YAAY,EAAE,OAAO,CAAC;IACtB,yFAAyF;IACzF,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,yCAAyC;IACzC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uFAAuF;IACvF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wCAAwC;IACxC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,wBAAwB,EAAE,MAAM,CAAC;IACjC,oFAAoF;IACpF,0BAA0B,EAAE,MAAM,CAAC;IACnC,iFAAiF;IACjF,oBAAoB,EAAE,MAAM,CAAC;IAC7B,+EAA+E;IAC/E,0BAA0B,EAAE,MAAM,CAAC;IACnC,yCAAyC;IACzC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yCAAyC;IACzC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mHAAmH;IACnH,sBAAsB,EAAE,MAAM,CAAC;IAC/B,wKAAwK;IACxK,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,yBAAyB,EAAE,MAAM,CAAC;IAClC,gGAAgG;IAChG,wBAAwB,EAAE,MAAM,CAAC;IACjC,yGAAyG;IACzG,8BAA8B,EAAE,MAAM,CAAC;IACvC,yEAAyE;IACzE,cAAc,EAAE,UAAU,CAAC;IAC3B,4IAA4I;IAC5I,sBAAsB,EAAE,MAAM,CAAC;IAC/B,+EAA+E;IAC/E,uBAAuB,EAAE,MAAM,CAAC;IAChC,+BAA+B;IAC/B,aAAa,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAC3C,2DAA2D;IAC3D,gBAAgB,EAAE,MAAM,CAAC;IACzB,+CAA+C;IAC/C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,sCAAsC;IACtC,2BAA2B,EAAE,MAAM,CAAC;IACpC,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,eAAe,CAAC;AAEpB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;CAyBR,CAAC;AA2E9B,eAAO,MAAM,0BAA0B;;;;;;;;;;;;CAmBtC,CAAC;AAoBF,eAAO,MAAM,eAAe;;;;;CAc3B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;;;CAUhC,CAAC;AA2CF,eAAO,MAAM,mBAAmB;;;;;;CAmB/B,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CAAC,iBAAiB,CAuI3E,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CAAC,kBAAkB,CAW7E,CAAC;AAEF,wBAAgB,2BAA2B,IAAI,iBAAiB,CAE/D;AAED,wBAAgB,4BAA4B,IAAI,kBAAkB,CAEjE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,eAAe,CAAC,GAAG,IAAI,CAmH3F"}
package/dest/config.js CHANGED
@@ -1,27 +1,31 @@
1
1
  import { bigintConfigHelper, booleanConfigHelper, enumConfigHelper, getConfigFromMappings, numberConfigHelper, optionalNumberConfigHelper } from '@aztec/foundation/config';
2
2
  import { EthAddress } from '@aztec/foundation/eth-address';
3
- import { l1TxUtilsConfigMappings } from './l1_tx_utils.js';
3
+ import { l1TxUtilsConfigMappings } from './l1_tx_utils/index.js';
4
4
  export const DefaultL1ContractsConfig = {
5
5
  ethereumSlotDuration: 12,
6
6
  aztecSlotDuration: 36,
7
7
  aztecEpochDuration: 32,
8
8
  aztecTargetCommitteeSize: 48,
9
+ lagInEpochsForValidatorSet: 2,
10
+ lagInEpochsForRandao: 2,
9
11
  aztecProofSubmissionEpochs: 1,
10
- activationThreshold: BigInt(100e18),
11
- ejectionThreshold: BigInt(50e18),
12
- slashAmountSmall: BigInt(10e18),
13
- slashAmountMedium: BigInt(20e18),
14
- slashAmountLarge: BigInt(50e18),
12
+ activationThreshold: 100n * 10n ** 18n,
13
+ ejectionThreshold: 50n * 10n ** 18n,
14
+ localEjectionThreshold: 98n * 10n ** 18n,
15
+ slashAmountSmall: 10n * 10n ** 18n,
16
+ slashAmountMedium: 20n * 10n ** 18n,
17
+ slashAmountLarge: 50n * 10n ** 18n,
15
18
  slashingRoundSizeInEpochs: 4,
16
19
  slashingLifetimeInRounds: 5,
17
20
  slashingExecutionDelayInRounds: 0,
18
21
  slashingVetoer: EthAddress.ZERO,
19
22
  governanceProposerRoundSize: 300,
20
- manaTarget: BigInt(1e10),
23
+ manaTarget: BigInt(100e6),
21
24
  provingCostPerMana: BigInt(100),
22
25
  exitDelaySeconds: 2 * 24 * 60 * 60,
23
26
  slasherFlavor: 'tally',
24
- slashingOffsetInRounds: 2
27
+ slashingOffsetInRounds: 2,
28
+ slashingDisableDuration: 5 * 24 * 60 * 60
25
29
  };
26
30
  const LocalGovernanceConfiguration = {
27
31
  proposeConfig: {
@@ -36,79 +40,118 @@ const LocalGovernanceConfiguration = {
36
40
  requiredYeaMargin: 4n * 10n ** 16n,
37
41
  minimumVotes: 400n * 10n ** 18n
38
42
  };
39
- const TestnetGovernanceConfiguration = {
43
+ const StagingPublicGovernanceConfiguration = {
40
44
  proposeConfig: {
41
- lockDelay: 60n * 60n * 24n,
45
+ lockDelay: 60n * 60n * 24n * 30n,
42
46
  lockAmount: DefaultL1ContractsConfig.activationThreshold * 100n
43
47
  },
44
48
  votingDelay: 60n,
45
49
  votingDuration: 60n * 60n,
46
- executionDelay: 60n * 60n * 24n,
50
+ executionDelay: 60n,
47
51
  gracePeriod: 60n * 60n * 24n * 7n,
48
52
  quorum: 3n * 10n ** 17n,
49
53
  requiredYeaMargin: 4n * 10n ** 16n,
50
54
  minimumVotes: DefaultL1ContractsConfig.ejectionThreshold * 200n
51
55
  };
52
- export const getGovernanceConfiguration = (networkName)=>{
53
- if (networkName === 'alpha-testnet' || networkName === 'testnet') {
54
- return TestnetGovernanceConfiguration;
55
- }
56
- return LocalGovernanceConfiguration;
56
+ const TestnetGovernanceConfiguration = {
57
+ proposeConfig: {
58
+ lockDelay: 10n * 365n * 24n * 60n * 60n,
59
+ lockAmount: 1250n * 200_000n * 10n ** 18n
60
+ },
61
+ votingDelay: 12n * 60n * 60n,
62
+ votingDuration: 1n * 24n * 60n * 60n,
63
+ executionDelay: 12n * 60n * 60n,
64
+ gracePeriod: 1n * 24n * 60n * 60n,
65
+ quorum: 2n * 10n ** 17n,
66
+ requiredYeaMargin: 1n * 10n ** 17n,
67
+ minimumVotes: 100n * 200_000n * 10n ** 18n
57
68
  };
58
- const TestnetGSEConfiguration = {
59
- activationThreshold: BigInt(100e18),
60
- ejectionThreshold: BigInt(50e18)
69
+ const StagingIgnitionGovernanceConfiguration = {
70
+ proposeConfig: {
71
+ lockDelay: 10n * 365n * 24n * 60n * 60n,
72
+ lockAmount: 1250n * 200_000n * 10n ** 18n
73
+ },
74
+ votingDelay: 7n * 24n * 60n * 60n,
75
+ votingDuration: 7n * 24n * 60n * 60n,
76
+ executionDelay: 30n * 24n * 60n * 60n,
77
+ gracePeriod: 7n * 24n * 60n * 60n,
78
+ quorum: 2n * 10n ** 17n,
79
+ requiredYeaMargin: 1n * 10n ** 17n,
80
+ minimumVotes: 1250n * 200_000n * 10n ** 18n
61
81
  };
62
- const LocalGSEConfiguration = {
63
- activationThreshold: BigInt(100e18),
64
- ejectionThreshold: BigInt(50e18)
82
+ const MainnetGovernanceConfiguration = {
83
+ proposeConfig: {
84
+ lockDelay: 90n * 24n * 60n * 60n,
85
+ lockAmount: 258_750_000n * 10n ** 18n
86
+ },
87
+ votingDelay: 3n * 24n * 60n * 60n,
88
+ votingDuration: 7n * 24n * 60n * 60n,
89
+ executionDelay: 7n * 24n * 60n * 60n,
90
+ gracePeriod: 7n * 24n * 60n * 60n,
91
+ quorum: 2n * 10n ** 17n,
92
+ requiredYeaMargin: 33n * 10n ** 16n,
93
+ minimumVotes: 1000n * 200_000n * 10n ** 18n
65
94
  };
66
- export const getGSEConfiguration = (networkName)=>{
67
- if (networkName === 'alpha-testnet' || networkName === 'testnet') {
68
- return TestnetGSEConfiguration;
95
+ export const getGovernanceConfiguration = (networkName)=>{
96
+ switch(networkName){
97
+ case 'local':
98
+ return LocalGovernanceConfiguration;
99
+ case 'next-net':
100
+ return LocalGovernanceConfiguration;
101
+ case 'devnet':
102
+ return LocalGovernanceConfiguration;
103
+ case 'staging-public':
104
+ return StagingPublicGovernanceConfiguration;
105
+ case 'testnet':
106
+ return TestnetGovernanceConfiguration;
107
+ case 'staging-ignition':
108
+ return StagingIgnitionGovernanceConfiguration;
109
+ case 'mainnet':
110
+ return MainnetGovernanceConfiguration;
111
+ default:
112
+ throw new Error(`Unrecognized network name: ${networkName}`);
69
113
  }
70
- return LocalGSEConfiguration;
71
114
  };
72
115
  // Making a default config here as we are only using it thought the deployment
73
116
  // and do not expect to be using different setups, so having environment variables
74
117
  // for it seems overkill
75
- const LocalRewardConfig = {
76
- sequencerBps: 5000,
118
+ const DefaultRewardConfig = {
119
+ sequencerBps: 8000,
77
120
  rewardDistributor: EthAddress.ZERO.toString(),
78
121
  booster: EthAddress.ZERO.toString(),
79
- blockReward: BigInt(50e18)
122
+ checkpointReward: 500n * 10n ** 18n
80
123
  };
81
- const TestnetRewardConfig = {
82
- sequencerBps: 5000,
124
+ const MainnetRewardConfig = {
125
+ sequencerBps: 7_000,
83
126
  rewardDistributor: EthAddress.ZERO.toString(),
84
127
  booster: EthAddress.ZERO.toString(),
85
- blockReward: BigInt(50e18)
128
+ checkpointReward: 400n * 10n ** 18n
86
129
  };
87
130
  export const getRewardConfig = (networkName)=>{
88
- if (networkName === 'alpha-testnet' || networkName === 'testnet') {
89
- return TestnetRewardConfig;
131
+ switch(networkName){
132
+ case 'local':
133
+ case 'devnet':
134
+ case 'next-net':
135
+ case 'staging-public':
136
+ case 'testnet':
137
+ case 'staging-ignition':
138
+ return DefaultRewardConfig;
139
+ case 'mainnet':
140
+ return MainnetRewardConfig;
141
+ default:
142
+ throw new Error(`Unrecognized network name: ${networkName}`);
90
143
  }
91
- return LocalRewardConfig;
92
- };
93
- const LocalRewardBoostConfig = {
94
- increment: 200000,
95
- maxScore: 5000000,
96
- a: 5000,
97
- k: 1000000,
98
- minimum: 100000
99
144
  };
100
- const TestnetRewardBoostConfig = {
101
- increment: 125000,
102
- maxScore: 15000000,
103
- a: 1000,
104
- k: 1000000,
105
- minimum: 100000
106
- };
107
- export const getRewardBoostConfig = (networkName)=>{
108
- if (networkName === 'alpha-testnet' || networkName === 'testnet') {
109
- return TestnetRewardBoostConfig;
110
- }
111
- return LocalRewardBoostConfig;
145
+ export const getRewardBoostConfig = ()=>{
146
+ // The reward configuration is specified with a precision of 1e5, and we use the same across
147
+ // all networks.
148
+ return {
149
+ increment: 125_000,
150
+ maxScore: 15_000_000,
151
+ a: 1_000,
152
+ k: 1_000_000,
153
+ minimum: 100_000
154
+ };
112
155
  };
113
156
  // Similar to the above, no need for environment variables for this.
114
157
  const LocalEntryQueueConfig = {
@@ -118,18 +161,53 @@ const LocalEntryQueueConfig = {
118
161
  normalFlushSizeQuotient: 2n,
119
162
  maxQueueFlushSize: 48n
120
163
  };
121
- const TestnetEntryQueueConfig = {
122
- bootstrapValidatorSetSize: 750n,
123
- bootstrapFlushSize: 75n,
164
+ const StagingPublicEntryQueueConfig = {
165
+ bootstrapValidatorSetSize: 48n,
166
+ bootstrapFlushSize: 48n,
124
167
  normalFlushSizeMin: 1n,
125
168
  normalFlushSizeQuotient: 2475n,
126
169
  maxQueueFlushSize: 32n
127
170
  };
171
+ const TestnetEntryQueueConfig = {
172
+ bootstrapValidatorSetSize: 256n,
173
+ bootstrapFlushSize: 256n,
174
+ normalFlushSizeMin: 4n,
175
+ normalFlushSizeQuotient: 2048n,
176
+ maxQueueFlushSize: 8n
177
+ };
178
+ const StagingIgnitionEntryQueueConfig = {
179
+ bootstrapValidatorSetSize: 48n,
180
+ bootstrapFlushSize: 48n,
181
+ normalFlushSizeMin: 1n,
182
+ normalFlushSizeQuotient: 2048n,
183
+ maxQueueFlushSize: 24n
184
+ };
185
+ const MainnetEntryQueueConfig = {
186
+ bootstrapValidatorSetSize: 1_000n,
187
+ bootstrapFlushSize: 1_000n,
188
+ normalFlushSizeMin: 1n,
189
+ normalFlushSizeQuotient: 2_048n,
190
+ maxQueueFlushSize: 8n
191
+ };
128
192
  export const getEntryQueueConfig = (networkName)=>{
129
- if (networkName === 'alpha-testnet' || networkName === 'testnet') {
130
- return TestnetEntryQueueConfig;
193
+ switch(networkName){
194
+ case 'local':
195
+ return LocalEntryQueueConfig;
196
+ case 'next-net':
197
+ return LocalEntryQueueConfig;
198
+ case 'devnet':
199
+ return LocalEntryQueueConfig;
200
+ case 'staging-public':
201
+ return StagingPublicEntryQueueConfig;
202
+ case 'testnet':
203
+ return TestnetEntryQueueConfig;
204
+ case 'staging-ignition':
205
+ return StagingIgnitionEntryQueueConfig;
206
+ case 'mainnet':
207
+ return MainnetEntryQueueConfig;
208
+ default:
209
+ throw new Error(`Unrecognized network name: ${networkName}`);
131
210
  }
132
- return LocalEntryQueueConfig;
133
211
  };
134
212
  export const l1ContractsConfigMappings = {
135
213
  ethereumSlotDuration: {
@@ -152,6 +230,16 @@ export const l1ContractsConfigMappings = {
152
230
  description: 'The target validator committee size.',
153
231
  ...numberConfigHelper(DefaultL1ContractsConfig.aztecTargetCommitteeSize)
154
232
  },
233
+ lagInEpochsForValidatorSet: {
234
+ env: 'AZTEC_LAG_IN_EPOCHS_FOR_VALIDATOR_SET',
235
+ description: 'The number of epochs to lag behind the current epoch for validator selection.',
236
+ ...numberConfigHelper(DefaultL1ContractsConfig.lagInEpochsForValidatorSet)
237
+ },
238
+ lagInEpochsForRandao: {
239
+ env: 'AZTEC_LAG_IN_EPOCHS_FOR_RANDAO',
240
+ description: 'The number of epochs to lag behind the current epoch for randao selection.',
241
+ ...numberConfigHelper(DefaultL1ContractsConfig.lagInEpochsForRandao)
242
+ },
155
243
  aztecProofSubmissionEpochs: {
156
244
  env: 'AZTEC_PROOF_SUBMISSION_EPOCHS',
157
245
  description: 'The number of epochs after an epoch ends that proofs are still accepted.',
@@ -167,6 +255,11 @@ export const l1ContractsConfigMappings = {
167
255
  description: 'The minimum stake for a validator.',
168
256
  ...bigintConfigHelper(DefaultL1ContractsConfig.ejectionThreshold)
169
257
  },
258
+ localEjectionThreshold: {
259
+ env: 'AZTEC_LOCAL_EJECTION_THRESHOLD',
260
+ description: 'The local ejection threshold for a validator. Stricter than ejectionThreshold but local to a specific rollup',
261
+ ...bigintConfigHelper(DefaultL1ContractsConfig.localEjectionThreshold)
262
+ },
170
263
  slashingOffsetInRounds: {
171
264
  env: 'AZTEC_SLASHING_OFFSET_IN_ROUNDS',
172
265
  description: 'How many slashing rounds back we slash (ie when slashing in round N, we slash for offenses committed during epochs of round N-offset)',
@@ -222,6 +315,11 @@ export const l1ContractsConfigMappings = {
222
315
  parseEnv: (val)=>EthAddress.fromString(val),
223
316
  defaultValue: DefaultL1ContractsConfig.slashingVetoer
224
317
  },
318
+ slashingDisableDuration: {
319
+ env: 'AZTEC_SLASHING_DISABLE_DURATION',
320
+ description: 'How long slashing can be disabled for in seconds when vetoer disables it',
321
+ ...numberConfigHelper(DefaultL1ContractsConfig.slashingDisableDuration)
322
+ },
225
323
  governanceProposerQuorum: {
226
324
  env: 'AZTEC_GOVERNANCE_PROPOSER_QUORUM',
227
325
  description: 'The governance proposing quorum',
@@ -285,12 +383,12 @@ export function getGenesisStateConfigEnvVars() {
285
383
  errors.push(`aztecSlotDuration (${config.aztecSlotDuration}) must be a multiple of ethereumSlotDuration (${config.ethereumSlotDuration})`);
286
384
  }
287
385
  // EmpireBase constructor validations for governance/slashing proposers
288
- // From: require(QUORUM_SIZE > ROUND_SIZE / 2, Errors.GovernanceProposer__InvalidQuorumAndRoundSize(QUORUM_SIZE, ROUND_SIZE));
386
+ // From: require(QUORUM_SIZE > ROUND_SIZE / 2, Errors.EmpireBase__InvalidQuorumAndRoundSize(QUORUM_SIZE, ROUND_SIZE));
289
387
  const { governanceProposerQuorum, governanceProposerRoundSize } = config;
290
388
  if (governanceProposerQuorum !== undefined && governanceProposerQuorum <= Math.floor(governanceProposerRoundSize / 2)) {
291
389
  errors.push(`governanceProposerQuorum (${governanceProposerQuorum}) must be greater than half of governanceProposerRoundSize (${Math.floor(governanceProposerRoundSize / 2)})`);
292
390
  }
293
- // From: require(QUORUM_SIZE <= ROUND_SIZE, Errors.GovernanceProposer__QuorumCannotBeLargerThanRoundSize(QUORUM_SIZE, ROUND_SIZE));
391
+ // From: require(QUORUM_SIZE <= ROUND_SIZE, Errors.EmpireBase__QuorumCannotBeLargerThanRoundSize(QUORUM_SIZE, ROUND_SIZE));
294
392
  if (governanceProposerQuorum !== undefined && governanceProposerQuorum > governanceProposerRoundSize) {
295
393
  errors.push(`governanceProposerQuorum (${governanceProposerQuorum}) cannot be larger than governanceProposerRoundSize (${governanceProposerRoundSize})`);
296
394
  }
@@ -1,4 +1,4 @@
1
1
  import type { Hex } from 'viem';
2
2
  export declare const NULL_KEY: Hex;
3
3
  export declare const AZTEC_TEST_CHAIN_ID = 677692;
4
- //# sourceMappingURL=constants.d.ts.map
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoQyxlQUFPLE1BQU0sUUFBUSxFQUFFLEdBQStFLENBQUM7QUFDdkcsZUFBTyxNQUFNLG1CQUFtQixTQUFTLENBQUMifQ==
@@ -1,17 +1,18 @@
1
+ import type { SlotNumber } from '@aztec/foundation/branded-types';
1
2
  import type { EthAddress } from '@aztec/foundation/eth-address';
2
3
  import { Signature } from '@aztec/foundation/eth-signature';
3
4
  import { type Hex, type TypedDataDefinition } from 'viem';
4
- import type { L1TxRequest } from '../l1_tx_utils.js';
5
+ import type { L1TxRequest } from '../l1_tx_utils/index.js';
5
6
  export interface IEmpireBase {
6
7
  get address(): EthAddress;
7
8
  getRoundInfo(rollupAddress: Hex, round: bigint): Promise<{
8
- lastSignalSlot: bigint;
9
+ lastSignalSlot: SlotNumber;
9
10
  payloadWithMostSignals: Hex;
10
11
  executed: boolean;
11
12
  }>;
12
- computeRound(slot: bigint): Promise<bigint>;
13
+ computeRound(slot: SlotNumber): Promise<bigint>;
13
14
  createSignalRequest(payload: Hex): L1TxRequest;
14
- createSignalRequestWithSignature(payload: Hex, round: bigint, chainId: number, signerAddress: Hex, signer: (msg: TypedDataDefinition) => Promise<Hex>): Promise<L1TxRequest>;
15
+ createSignalRequestWithSignature(payload: Hex, slot: SlotNumber, chainId: number, signerAddress: Hex, signer: (msg: TypedDataDefinition) => Promise<Hex>): Promise<L1TxRequest>;
15
16
  }
16
17
  export declare function encodeSignal(payload: Hex): Hex;
17
18
  export declare function encodeSignalWithSignature(payload: Hex, signature: Signature): `0x${string}`;
@@ -24,5 +25,5 @@ export declare function encodeSignalWithSignature(payload: Hex, signature: Signa
24
25
  * @param account - The account to sign with (optional if hoisted on wallet client)
25
26
  * @returns The EIP-712 signature
26
27
  */
27
- export declare function signSignalWithSig(signer: (msg: TypedDataDefinition) => Promise<Hex>, payload: Hex, slot: bigint, instance: Hex, verifyingContract: Hex, chainId: number): Promise<Signature>;
28
- //# sourceMappingURL=empire_base.d.ts.map
28
+ export declare function signSignalWithSig(signer: (msg: TypedDataDefinition) => Promise<Hex>, payload: Hex, slot: SlotNumber, instance: Hex, verifyingContract: Hex, chainId: number): Promise<Signature>;
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1waXJlX2Jhc2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdHMvZW1waXJlX2Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRzVELE9BQU8sRUFBRSxLQUFLLEdBQUcsRUFBRSxLQUFLLG1CQUFtQixFQUFzQixNQUFNLE1BQU0sQ0FBQztBQUU5RSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUzRCxNQUFNLFdBQVcsV0FBVztJQUMxQixJQUFJLE9BQU8sSUFBSSxVQUFVLENBQUM7SUFDMUIsWUFBWSxDQUNWLGFBQWEsRUFBRSxHQUFHLEVBQ2xCLEtBQUssRUFBRSxNQUFNLEdBQ1osT0FBTyxDQUFDO1FBQUUsY0FBYyxFQUFFLFVBQVUsQ0FBQztRQUFDLHNCQUFzQixFQUFFLEdBQUcsQ0FBQztRQUFDLFFBQVEsRUFBRSxPQUFPLENBQUE7S0FBRSxDQUFDLENBQUM7SUFDM0YsWUFBWSxDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELG1CQUFtQixDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsV0FBVyxDQUFDO0lBQy9DLGdDQUFnQyxDQUM5QixPQUFPLEVBQUUsR0FBRyxFQUNaLElBQUksRUFBRSxVQUFVLEVBQ2hCLE9BQU8sRUFBRSxNQUFNLEVBQ2YsYUFBYSxFQUFFLEdBQUcsRUFDbEIsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLG1CQUFtQixLQUFLLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FDakQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0NBQ3pCO0FBRUQsd0JBQWdCLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FNOUM7QUFFRCx3QkFBZ0IseUJBQXlCLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxpQkFNM0U7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILHdCQUFzQixpQkFBaUIsQ0FDckMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLG1CQUFtQixLQUFLLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFDbEQsT0FBTyxFQUFFLEdBQUcsRUFDWixJQUFJLEVBQUUsVUFBVSxFQUNoQixRQUFRLEVBQUUsR0FBRyxFQUNiLGlCQUFpQixFQUFFLEdBQUcsRUFDdEIsT0FBTyxFQUFFLE1BQU0sR0FDZCxPQUFPLENBQUMsU0FBUyxDQUFDLENBOEJwQiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"empire_base.d.ts","sourceRoot":"","sources":["../../src/contracts/empire_base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAG5D,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,mBAAmB,EAAsB,MAAM,MAAM,CAAC;AAE9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,WAAW;IAC1B,IAAI,OAAO,IAAI,UAAU,CAAC;IAC1B,YAAY,CACV,aAAa,EAAE,GAAG,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,sBAAsB,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACvF,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,mBAAmB,CAAC,OAAO,EAAE,GAAG,GAAG,WAAW,CAAC;IAC/C,gCAAgC,CAC9B,OAAO,EAAE,GAAG,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,GAAG,EAClB,MAAM,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,OAAO,CAAC,GAAG,CAAC,GACjD,OAAO,CAAC,WAAW,CAAC,CAAC;CACzB;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,CAM9C;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,iBAM3E;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,OAAO,CAAC,GAAG,CAAC,EAClD,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,GAAG,EACb,iBAAiB,EAAE,GAAG,EACtB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,SAAS,CAAC,CA8BpB"}
1
+ {"version":3,"file":"empire_base.d.ts","sourceRoot":"","sources":["../../src/contracts/empire_base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAG5D,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,mBAAmB,EAAsB,MAAM,MAAM,CAAC;AAE9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,WAAW,WAAW;IAC1B,IAAI,OAAO,IAAI,UAAU,CAAC;IAC1B,YAAY,CACV,aAAa,EAAE,GAAG,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,cAAc,EAAE,UAAU,CAAC;QAAC,sBAAsB,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC3F,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,mBAAmB,CAAC,OAAO,EAAE,GAAG,GAAG,WAAW,CAAC;IAC/C,gCAAgC,CAC9B,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,GAAG,EAClB,MAAM,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,OAAO,CAAC,GAAG,CAAC,GACjD,OAAO,CAAC,WAAW,CAAC,CAAC;CACzB;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,CAM9C;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,iBAM3E;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,OAAO,CAAC,GAAG,CAAC,EAClD,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,GAAG,EACb,iBAAiB,EAAE,GAAG,EACtB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,SAAS,CAAC,CA8BpB"}
@@ -71,7 +71,7 @@ export function encodeSignalWithSignature(payload, signature) {
71
71
  };
72
72
  const message = {
73
73
  payload,
74
- slot,
74
+ slot: BigInt(slot),
75
75
  instance
76
76
  };
77
77
  const typedData = {
@@ -1,7 +1,8 @@
1
+ import { SlotNumber } from '@aztec/foundation/branded-types';
1
2
  import { EthAddress } from '@aztec/foundation/eth-address';
2
3
  import EventEmitter from 'events';
3
4
  import { type Hex, type Log, type TypedDataDefinition } from 'viem';
4
- import type { L1TxRequest, L1TxUtils } from '../l1_tx_utils.js';
5
+ import type { L1TxRequest, L1TxUtils } from '../l1_tx_utils/index.js';
5
6
  import type { ViemClient } from '../types.js';
6
7
  import { type IEmpireBase } from './empire_base.js';
7
8
  export declare class ProposalAlreadyExecutedError extends Error {
@@ -12,23 +13,23 @@ export declare class EmpireSlashingProposerContract extends EventEmitter impleme
12
13
  private readonly logger;
13
14
  private readonly proposer;
14
15
  readonly type: "empire";
15
- constructor(client: ViemClient, address: Hex);
16
+ constructor(client: ViemClient, address: Hex | EthAddress);
16
17
  get address(): EthAddress;
17
18
  getQuorumSize(): Promise<bigint>;
18
19
  getRoundSize(): Promise<bigint>;
19
20
  getLifetimeInRounds(): Promise<bigint>;
20
21
  getExecutionDelayInRounds(): Promise<bigint>;
21
22
  getCurrentRound(): Promise<bigint>;
22
- computeRound(slot: bigint): Promise<bigint>;
23
+ computeRound(slot: SlotNumber): Promise<bigint>;
23
24
  getInstance(): Promise<`0x${string}`>;
24
25
  getRoundInfo(rollupAddress: Hex, round: bigint): Promise<{
25
- lastSignalSlot: bigint;
26
+ lastSignalSlot: SlotNumber;
26
27
  payloadWithMostSignals: Hex;
27
28
  executed: boolean;
28
29
  }>;
29
30
  getPayloadSignals(rollupAddress: Hex, round: bigint, payload: Hex): Promise<bigint>;
30
31
  createSignalRequest(payload: Hex): L1TxRequest;
31
- createSignalRequestWithSignature(payload: Hex, slot: bigint, chainId: number, signerAddress: Hex, signer: (msg: TypedDataDefinition) => Promise<Hex>): Promise<L1TxRequest>;
32
+ createSignalRequestWithSignature(payload: Hex, slot: SlotNumber, chainId: number, signerAddress: Hex, signer: (msg: TypedDataDefinition) => Promise<Hex>): Promise<L1TxRequest>;
32
33
  listenToSubmittablePayloads(callback: (args: {
33
34
  payload: `0x${string}`;
34
35
  round: bigint;
@@ -62,4 +63,4 @@ export declare class EmpireSlashingProposerContract extends EventEmitter impleme
62
63
  waitForRound(round: bigint, pollingIntervalSeconds?: number): Promise<boolean>;
63
64
  executeRound(txUtils: L1TxUtils, round: bigint | number): ReturnType<typeof txUtils.sendAndMonitorTransaction>;
64
65
  }
65
- //# sourceMappingURL=empire_slashing_proposer.d.ts.map
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1waXJlX3NsYXNoaW5nX3Byb3Bvc2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL2VtcGlyZV9zbGFzaGluZ19wcm9wb3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBSzNELE9BQU8sWUFBWSxNQUFNLFFBQVEsQ0FBQztBQUNsQyxPQUFPLEVBR0wsS0FBSyxHQUFHLEVBQ1IsS0FBSyxHQUFHLEVBQ1IsS0FBSyxtQkFBbUIsRUFHekIsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBOEQsTUFBTSxrQkFBa0IsQ0FBQztBQUVoSCxxQkFBYSw0QkFBNkIsU0FBUSxLQUFLO0lBQ3JELFlBQVksS0FBSyxFQUFFLE1BQU0sRUFFeEI7Q0FDRjtBQUVELHFCQUFhLDhCQUErQixTQUFRLFlBQWEsWUFBVyxXQUFXO2FBT25FLE1BQU0sRUFBRSxVQUFVO0lBTnBDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUErRDtJQUN0RixPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBc0U7SUFFL0YsU0FBZ0IsSUFBSSxXQUFxQjtJQUV6QyxZQUNrQixNQUFNLEVBQUUsVUFBVSxFQUNsQyxPQUFPLEVBQUUsR0FBRyxHQUFHLFVBQVUsRUFRMUI7SUFFRCxJQUFXLE9BQU8sZUFFakI7SUFFTSxhQUFhLG9CQUVuQjtJQUVNLFlBQVksb0JBRWxCO0lBRU0sbUJBQW1CLG9CQUV6QjtJQUVNLHlCQUF5QixvQkFFL0I7SUFFTSxlQUFlLG9CQUVyQjtJQUVNLFlBQVksQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FFckQ7SUFFTSxXQUFXLDJCQUVqQjtJQUVZLFlBQVksQ0FDdkIsYUFBYSxFQUFFLEdBQUcsRUFDbEIsS0FBSyxFQUFFLE1BQU0sR0FDWixPQUFPLENBQUM7UUFBRSxjQUFjLEVBQUUsVUFBVSxDQUFDO1FBQUMsc0JBQXNCLEVBQUUsR0FBRyxDQUFDO1FBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQTtLQUFFLENBQUMsQ0FPekY7SUFFTSxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBRXpGO0lBRU0sbUJBQW1CLENBQUMsT0FBTyxFQUFFLEdBQUcsR0FBRyxXQUFXLENBS3BEO0lBRVksZ0NBQWdDLENBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQ1osSUFBSSxFQUFFLFVBQVUsRUFDaEIsT0FBTyxFQUFFLE1BQU0sRUFDZixhQUFhLEVBQUUsR0FBRyxFQUNsQixNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLEtBQUssT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUNqRCxPQUFPLENBQUMsV0FBVyxDQUFDLENBYXRCO0lBRU0sMkJBQTJCLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFO1FBQUUsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLENBQUM7UUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFBO0tBQUUsS0FBSyxPQUFPLCtDQWV4RztJQUVNLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRTtRQUFFLEtBQUssRUFBRSxNQUFNLENBQUM7UUFBQyxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQUUsQ0FBQTtLQUFFLEtBQUssT0FBTywrQ0Fjckc7SUFFTSxvQkFBb0IsQ0FDekIsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFO1FBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQztRQUFDLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQUMsUUFBUSxFQUFFLEtBQUssTUFBTSxFQUFFLENBQUE7S0FBRSxLQUFLLE9BQU8sK0NBZWhHO0lBRUQsNkVBQTZFO0lBQ3RFLHdCQUF3QixDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsV0FBVyxDQVMxRDtJQUVELHFFQUFxRTtJQUM5RCwrQkFBK0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFOzs7Ozs7a0JBRWpEO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEdBQUUsTUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FhdkY7SUFFWSxZQUFZLENBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQ2xCLEtBQUssRUFBRSxNQUFNLEdBQUcsTUFBTSxHQUNyQixVQUFVLENBQUMsT0FBTyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FnRHREO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"empire_slashing_proposer.d.ts","sourceRoot":"","sources":["../../src/contracts/empire_slashing_proposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAK3D,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EAGL,KAAK,GAAG,EACR,KAAK,GAAG,EACR,KAAK,mBAAmB,EAGzB,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,KAAK,WAAW,EAA8D,MAAM,kBAAkB,CAAC;AAEhH,qBAAa,4BAA6B,SAAQ,KAAK;gBACzC,KAAK,EAAE,MAAM;CAG1B;AAED,qBAAa,8BAA+B,SAAQ,YAAa,YAAW,WAAW;aAOnE,MAAM,EAAE,UAAU;IANpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+D;IACtF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsE;IAE/F,SAAgB,IAAI,EAAG,QAAQ,CAAU;gBAGvB,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG;IAMd,IAAW,OAAO,eAEjB;IAEM,aAAa;IAIb,YAAY;IAIZ,mBAAmB;IAInB,yBAAyB;IAIzB,eAAe;IAIf,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3C,WAAW;IAIL,YAAY,CACvB,aAAa,EAAE,GAAG,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,sBAAsB,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAI/E,iBAAiB,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAInF,mBAAmB,CAAC,OAAO,EAAE,GAAG,GAAG,WAAW;IAOxC,gCAAgC,CAC3C,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,GAAG,EAClB,MAAM,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,OAAO,CAAC,GAAG,CAAC,GACjD,OAAO,CAAC,WAAW,CAAC;IAehB,2BAA2B,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO;IAiBlG,wBAAwB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,KAAK,OAAO;IAgB/F,oBAAoB,CACzB,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,KAAK,OAAO;IAiBjG,6EAA6E;IACtE,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW;IAW3D,qEAAqE;IAC9D,+BAA+B,CAAC,IAAI,EAAE,GAAG,EAAE;;;;;;;IAIlD;;;;;;OAMG;IACI,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,sBAAsB,GAAE,MAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAe3E,YAAY,CACvB,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,UAAU,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC;CAiDxD"}
1
+ {"version":3,"file":"empire_slashing_proposer.d.ts","sourceRoot":"","sources":["../../src/contracts/empire_slashing_proposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAK3D,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EAGL,KAAK,GAAG,EACR,KAAK,GAAG,EACR,KAAK,mBAAmB,EAGzB,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,KAAK,WAAW,EAA8D,MAAM,kBAAkB,CAAC;AAEhH,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,YAAY,KAAK,EAAE,MAAM,EAExB;CACF;AAED,qBAAa,8BAA+B,SAAQ,YAAa,YAAW,WAAW;aAOnE,MAAM,EAAE,UAAU;IANpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+D;IACtF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsE;IAE/F,SAAgB,IAAI,WAAqB;IAEzC,YACkB,MAAM,EAAE,UAAU,EAClC,OAAO,EAAE,GAAG,GAAG,UAAU,EAQ1B;IAED,IAAW,OAAO,eAEjB;IAEM,aAAa,oBAEnB;IAEM,YAAY,oBAElB;IAEM,mBAAmB,oBAEzB;IAEM,yBAAyB,oBAE/B;IAEM,eAAe,oBAErB;IAEM,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAErD;IAEM,WAAW,2BAEjB;IAEY,YAAY,CACvB,aAAa,EAAE,GAAG,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,cAAc,EAAE,UAAU,CAAC;QAAC,sBAAsB,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAOzF;IAEM,iBAAiB,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAEzF;IAEM,mBAAmB,CAAC,OAAO,EAAE,GAAG,GAAG,WAAW,CAKpD;IAEY,gCAAgC,CAC3C,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,GAAG,EAClB,MAAM,EAAE,CAAC,GAAG,EAAE,mBAAmB,KAAK,OAAO,CAAC,GAAG,CAAC,GACjD,OAAO,CAAC,WAAW,CAAC,CAatB;IAEM,2BAA2B,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,+CAexG;IAEM,wBAAwB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,KAAK,OAAO,+CAcrG;IAEM,oBAAoB,CACzB,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,KAAK,OAAO,+CAehG;IAED,6EAA6E;IACtE,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAS1D;IAED,qEAAqE;IAC9D,+BAA+B,CAAC,IAAI,EAAE,GAAG,EAAE;;;;;;kBAEjD;IAED;;;;;;OAMG;IACI,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,sBAAsB,GAAE,MAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAavF;IAEY,YAAY,CACvB,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,UAAU,CAAC,OAAO,OAAO,CAAC,yBAAyB,CAAC,CAgDtD;CACF"}
@@ -1,3 +1,4 @@
1
+ import { SlotNumber } from '@aztec/foundation/branded-types';
1
2
  import { EthAddress } from '@aztec/foundation/eth-address';
2
3
  import { createLogger } from '@aztec/foundation/log';
3
4
  import { retryUntil } from '@aztec/foundation/retry';
@@ -19,7 +20,7 @@ export class EmpireSlashingProposerContract extends EventEmitter {
19
20
  constructor(client, address){
20
21
  super(), this.client = client, this.logger = createLogger('ethereum:contracts:empire_slashing_proposer'), this.type = 'empire';
21
22
  this.proposer = getContract({
22
- address,
23
+ address: typeof address === 'string' ? address : address.toString(),
23
24
  abi: EmpireSlashingProposerAbi,
24
25
  client
25
26
  });
@@ -44,17 +45,22 @@ export class EmpireSlashingProposerContract extends EventEmitter {
44
45
  }
45
46
  computeRound(slot) {
46
47
  return this.proposer.read.computeRound([
47
- slot
48
+ BigInt(slot)
48
49
  ]);
49
50
  }
50
51
  getInstance() {
51
52
  return this.proposer.read.getInstance();
52
53
  }
53
54
  async getRoundInfo(rollupAddress, round) {
54
- return await this.proposer.read.getRoundData([
55
+ const result = await this.proposer.read.getRoundData([
55
56
  rollupAddress,
56
57
  round
57
58
  ]);
59
+ return {
60
+ lastSignalSlot: SlotNumber.fromBigInt(result.lastSignalSlot),
61
+ payloadWithMostSignals: result.payloadWithMostSignals,
62
+ executed: result.executed
63
+ };
58
64
  }
59
65
  getPayloadSignals(rollupAddress, round, payload) {
60
66
  return this.proposer.read.signalCount([
@@ -4,4 +4,4 @@ export declare class BlockTagTooOldError extends Error {
4
4
  export declare class NoCommitteeError extends Error {
5
5
  constructor();
6
6
  }
7
- //# sourceMappingURL=errors.d.ts.map
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQkFBYSxtQkFBb0IsU0FBUSxLQUFLO0lBQzVDLFlBQVksUUFBUSxFQUFFLE1BQU0sR0FBRyxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sR0FBRyxNQUFNLEVBR2xFO0NBQ0Y7QUFFRCxxQkFBYSxnQkFBaUIsU0FBUSxLQUFLO0lBQ3pDLGNBR0M7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/contracts/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;CAIpE;AAED,qBAAa,gBAAiB,SAAQ,KAAK;;CAK1C"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/contracts/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAGlE;CACF;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,cAGC;CACF"}