@aztec/ethereum 0.72.1 → 0.74.0

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 (76) hide show
  1. package/dest/{ethereum_chain.d.ts → chain.d.ts} +1 -1
  2. package/dest/chain.d.ts.map +1 -0
  3. package/dest/{ethereum_chain.js → chain.js} +1 -1
  4. package/dest/client.d.ts +16 -0
  5. package/dest/client.d.ts.map +1 -0
  6. package/dest/client.js +35 -0
  7. package/dest/contracts/empire_base.d.ts +13 -0
  8. package/dest/contracts/empire_base.d.ts.map +1 -0
  9. package/dest/contracts/empire_base.js +10 -0
  10. package/dest/contracts/forwarder.d.ts +24 -0
  11. package/dest/contracts/forwarder.d.ts.map +1 -0
  12. package/dest/contracts/forwarder.js +81 -0
  13. package/dest/contracts/governance.d.ts +14 -0
  14. package/dest/contracts/governance.d.ts.map +1 -0
  15. package/dest/contracts/governance.js +31 -0
  16. package/dest/contracts/governance_proposer.d.ts +28 -0
  17. package/dest/contracts/governance_proposer.d.ts.map +1 -0
  18. package/dest/contracts/governance_proposer.js +71 -0
  19. package/dest/contracts/index.d.ts +5 -0
  20. package/dest/contracts/index.d.ts.map +1 -1
  21. package/dest/contracts/index.js +6 -1
  22. package/dest/contracts/rollup.d.ts +96 -5
  23. package/dest/contracts/rollup.d.ts.map +1 -1
  24. package/dest/contracts/rollup.js +188 -17
  25. package/dest/contracts/slashing_proposer.d.ts +21 -0
  26. package/dest/contracts/slashing_proposer.d.ts.map +1 -0
  27. package/dest/contracts/slashing_proposer.js +37 -0
  28. package/dest/deploy_l1_contracts.d.ts +2337 -1081
  29. package/dest/deploy_l1_contracts.d.ts.map +1 -1
  30. package/dest/deploy_l1_contracts.js +48 -22
  31. package/dest/index.d.ts +4 -1
  32. package/dest/index.d.ts.map +1 -1
  33. package/dest/index.js +5 -2
  34. package/dest/l1_reader.d.ts.map +1 -1
  35. package/dest/l1_reader.js +2 -3
  36. package/dest/l1_tx_utils.d.ts +80 -18
  37. package/dest/l1_tx_utils.d.ts.map +1 -1
  38. package/dest/l1_tx_utils.js +171 -20
  39. package/dest/l1_tx_utils_with_blobs.d.ts +12 -0
  40. package/dest/l1_tx_utils_with_blobs.d.ts.map +1 -0
  41. package/dest/l1_tx_utils_with_blobs.js +61 -0
  42. package/dest/queries.d.ts +15 -0
  43. package/dest/queries.d.ts.map +1 -0
  44. package/dest/queries.js +48 -0
  45. package/dest/test/delayed_tx_utils.d.ts +8 -0
  46. package/dest/test/delayed_tx_utils.d.ts.map +1 -0
  47. package/dest/test/delayed_tx_utils.js +21 -0
  48. package/dest/test/index.d.ts +2 -1
  49. package/dest/test/index.d.ts.map +1 -1
  50. package/dest/test/index.js +3 -2
  51. package/dest/types.d.ts +3 -1
  52. package/dest/types.d.ts.map +1 -1
  53. package/dest/utils.d.ts +1 -0
  54. package/dest/utils.d.ts.map +1 -1
  55. package/dest/utils.js +40 -4
  56. package/package.json +7 -4
  57. package/src/client.ts +56 -0
  58. package/src/contracts/empire_base.ts +19 -0
  59. package/src/contracts/forwarder.ts +136 -0
  60. package/src/contracts/governance.ts +50 -0
  61. package/src/contracts/governance_proposer.ts +91 -0
  62. package/src/contracts/index.ts +5 -0
  63. package/src/contracts/rollup.ts +277 -17
  64. package/src/contracts/slashing_proposer.ts +58 -0
  65. package/src/deploy_l1_contracts.ts +74 -26
  66. package/src/index.ts +4 -1
  67. package/src/l1_reader.ts +1 -2
  68. package/src/l1_tx_utils.ts +245 -35
  69. package/src/l1_tx_utils_with_blobs.ts +86 -0
  70. package/src/queries.ts +77 -0
  71. package/src/test/delayed_tx_utils.ts +24 -0
  72. package/src/test/index.ts +2 -1
  73. package/src/types.ts +4 -0
  74. package/src/utils.ts +44 -3
  75. package/dest/ethereum_chain.d.ts.map +0 -1
  76. /package/src/{ethereum_chain.ts → chain.ts} +0 -0
@@ -22,4 +22,4 @@ export declare function createEthereumChain(rpcUrl: string, _chainId: number | s
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=ethereum_chain.d.ts.map
25
+ //# sourceMappingURL=chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../src/chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,MAAM,CAAC;AAKlC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,SAAS,EAAE,KAAK,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CA+B5F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CASnE"}
@@ -53,4 +53,4 @@ export function isAnvilTestChain(_chainId) {
53
53
  const testChains = [foundry.id, AZTEC_TEST_CHAIN_ID];
54
54
  return testChains.includes(chainId);
55
55
  }
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoZXJldW1fY2hhaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXRoZXJldW1fY2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWlCckQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUFjLEVBQUUsUUFBeUI7SUFDM0UsSUFBSSxPQUFlLENBQUM7SUFDcEIsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNqQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDdEIsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLEdBQUcsUUFBUSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ1osT0FBTztZQUNMLFNBQVMsRUFBRTtnQkFDVCxFQUFFLEVBQUUsT0FBTztnQkFDWCxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRTt3QkFDUCxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUM7cUJBQ2Y7aUJBQ0Y7Z0JBQ0QsY0FBYyxFQUFFO29CQUNkLFFBQVEsRUFBRSxFQUFFO29CQUNaLElBQUksRUFBRSxPQUFPO29CQUNiLE1BQU0sRUFBRSxLQUFLO2lCQUNkO2FBQ0Y7WUFDRCxNQUFNO1NBQ1AsQ0FBQztJQUNKLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTztZQUNMLFNBQVMsRUFBRSxPQUFPO1lBQ2xCLE1BQU07U0FDUCxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxRQUF5QjtJQUN4RCxJQUFJLE9BQWUsQ0FBQztJQUNwQixJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQztJQUN0QixDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sR0FBRyxRQUFRLENBQUM7SUFDckIsQ0FBQztJQUNELE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3JELE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QyxDQUFDIn0=
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWlCckQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxNQUFjLEVBQUUsUUFBeUI7SUFDM0UsSUFBSSxPQUFlLENBQUM7SUFDcEIsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNqQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDdEIsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLEdBQUcsUUFBUSxDQUFDO0lBQ3JCLENBQUM7SUFDRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ1osT0FBTztZQUNMLFNBQVMsRUFBRTtnQkFDVCxFQUFFLEVBQUUsT0FBTztnQkFDWCxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRTt3QkFDUCxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUM7cUJBQ2Y7aUJBQ0Y7Z0JBQ0QsY0FBYyxFQUFFO29CQUNkLFFBQVEsRUFBRSxFQUFFO29CQUNaLElBQUksRUFBRSxPQUFPO29CQUNiLE1BQU0sRUFBRSxLQUFLO2lCQUNkO2FBQ0Y7WUFDRCxNQUFNO1NBQ1AsQ0FBQztJQUNKLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTztZQUNMLFNBQVMsRUFBRSxPQUFPO1lBQ2xCLE1BQU07U0FDUCxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxRQUF5QjtJQUN4RCxJQUFJLE9BQWUsQ0FBQztJQUNwQixJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQztJQUN0QixDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sR0FBRyxRQUFRLENBQUM7SUFDckIsQ0FBQztJQUNELE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3JELE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QyxDQUFDIn0=
@@ -0,0 +1,16 @@
1
+ import { type Logger } from '@aztec/foundation/log';
2
+ import { type ViemPublicClient } from './types.js';
3
+ type Config = {
4
+ /** The RPC Url of the ethereum host. */
5
+ l1RpcUrl: string;
6
+ /** The chain ID of the ethereum host. */
7
+ l1ChainId: number;
8
+ /** The polling interval viem uses in ms */
9
+ viemPollingIntervalMS?: number;
10
+ };
11
+ /** Returns a viem public client given the L1 config. */
12
+ export declare function getPublicClient(config: Config): ViemPublicClient;
13
+ /** Returns a viem public client after waiting for the L1 RPC node to become available. */
14
+ export declare function waitForPublicClient(config: Config, logger?: Logger): Promise<ViemPublicClient>;
15
+ export {};
16
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAMpD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,KAAK,MAAM,GAAG;IACZ,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AAIF,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"}
package/dest/client.js ADDED
@@ -0,0 +1,35 @@
1
+ import { retryUntil } from '@aztec/foundation/retry';
2
+ import { createPublicClient, http } from 'viem';
3
+ import { createEthereumChain } from './chain.js';
4
+ // TODO: Use these methods to abstract the creation of viem clients.
5
+ /** Returns a viem public client given the L1 config. */
6
+ export function getPublicClient(config) {
7
+ const chain = createEthereumChain(config.l1RpcUrl, config.l1ChainId);
8
+ return createPublicClient({
9
+ chain: chain.chainInfo,
10
+ transport: http(chain.rpcUrl),
11
+ pollingInterval: config.viemPollingIntervalMS,
12
+ });
13
+ }
14
+ /** Returns a viem public client after waiting for the L1 RPC node to become available. */
15
+ export async function waitForPublicClient(config, logger) {
16
+ const client = getPublicClient(config);
17
+ await waitForRpc(client, config, logger);
18
+ return client;
19
+ }
20
+ async function waitForRpc(client, config, logger) {
21
+ const l1ChainId = await retryUntil(async () => {
22
+ let chainId = 0;
23
+ try {
24
+ chainId = await client.getChainId();
25
+ }
26
+ catch (err) {
27
+ logger?.warn(`Failed to connect to Ethereum node at ${config.l1RpcUrl}. Retrying...`);
28
+ }
29
+ return chainId;
30
+ }, `L1 RPC url at ${config.l1RpcUrl}`, 600, 1);
31
+ if (l1ChainId !== config.l1ChainId) {
32
+ throw new Error(`Ethereum node at ${config.l1RpcUrl} has chain ID ${l1ChainId} but expected ${config.l1ChainId}`);
33
+ }
34
+ }
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFZakQsb0VBQW9FO0FBRXBFLHdEQUF3RDtBQUN4RCxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQWM7SUFDNUMsTUFBTSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckUsT0FBTyxrQkFBa0IsQ0FBQztRQUN4QixLQUFLLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDdEIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzdCLGVBQWUsRUFBRSxNQUFNLENBQUMscUJBQXFCO0tBQzlDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCwwRkFBMEY7QUFDMUYsTUFBTSxDQUFDLEtBQUssVUFBVSxtQkFBbUIsQ0FBQyxNQUFjLEVBQUUsTUFBZTtJQUN2RSxNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsTUFBTSxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6QyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsS0FBSyxVQUFVLFVBQVUsQ0FBQyxNQUF3QixFQUFFLE1BQWMsRUFBRSxNQUFlO0lBQ2pGLE1BQU0sU0FBUyxHQUFHLE1BQU0sVUFBVSxDQUNoQyxLQUFLLElBQUksRUFBRTtRQUNULElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUM7WUFDSCxPQUFPLEdBQUcsTUFBTSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEMsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixNQUFNLEVBQUUsSUFBSSxDQUFDLHlDQUF5QyxNQUFNLENBQUMsUUFBUSxlQUFlLENBQUMsQ0FBQztRQUN4RixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQyxFQUNELGlCQUFpQixNQUFNLENBQUMsUUFBUSxFQUFFLEVBQ2xDLEdBQUcsRUFDSCxDQUFDLENBQ0YsQ0FBQztJQUVGLElBQUksU0FBUyxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixNQUFNLENBQUMsUUFBUSxpQkFBaUIsU0FBUyxpQkFBaUIsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDcEgsQ0FBQztBQUNILENBQUMifQ==
@@ -0,0 +1,13 @@
1
+ import { type Hex } from 'viem';
2
+ import { type L1TxRequest } from '../l1_tx_utils.js';
3
+ export interface IEmpireBase {
4
+ getRoundInfo(rollupAddress: Hex, round: bigint): Promise<{
5
+ lastVote: bigint;
6
+ leader: Hex;
7
+ executed: boolean;
8
+ }>;
9
+ computeRound(slot: bigint): Promise<bigint>;
10
+ createVoteRequest(payload: Hex): L1TxRequest;
11
+ }
12
+ export declare function encodeVote(payload: Hex): Hex;
13
+ //# sourceMappingURL=empire_base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empire_base.d.ts","sourceRoot":"","sources":["../../src/contracts/empire_base.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,GAAG,EAAsB,MAAM,MAAM,CAAC;AAEpD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC/G,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,iBAAiB,CAAC,OAAO,EAAE,GAAG,GAAG,WAAW,CAAC;CAC9C;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,CAM5C"}
@@ -0,0 +1,10 @@
1
+ import { EmpireBaseAbi } from '@aztec/l1-artifacts/EmpireBaseAbi';
2
+ import { encodeFunctionData } from 'viem';
3
+ export function encodeVote(payload) {
4
+ return encodeFunctionData({
5
+ abi: EmpireBaseAbi,
6
+ functionName: 'vote',
7
+ args: [payload],
8
+ });
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1waXJlX2Jhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL2VtcGlyZV9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVsRSxPQUFPLEVBQVksa0JBQWtCLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFVcEQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxPQUFZO0lBQ3JDLE9BQU8sa0JBQWtCLENBQUM7UUFDeEIsR0FBRyxFQUFFLGFBQWE7UUFDbEIsWUFBWSxFQUFFLE1BQU07UUFDcEIsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDO0tBQ2hCLENBQUMsQ0FBQztBQUNMLENBQUMifQ==
@@ -0,0 +1,24 @@
1
+ import { type Logger } from '@aztec/foundation/log';
2
+ import { type Account, type Chain, type Hex, type HttpTransport, type PublicClient, type WalletClient } from 'viem';
3
+ import { type L1Clients } from '../deploy_l1_contracts.js';
4
+ import { type L1BlobInputs, type L1GasConfig, type L1TxRequest, type L1TxUtils } from '../l1_tx_utils.js';
5
+ export declare class ForwarderContract {
6
+ readonly client: L1Clients['publicClient'];
7
+ readonly rollupAddress: Hex;
8
+ private readonly forwarder;
9
+ constructor(client: L1Clients['publicClient'], address: Hex, rollupAddress: Hex);
10
+ static create(owner: Hex, walletClient: WalletClient<HttpTransport, Chain, Account>, publicClient: PublicClient<HttpTransport, Chain>, logger: Logger, rollupAddress: Hex): Promise<ForwarderContract>;
11
+ getAddress(): `0x${string}`;
12
+ forward(requests: L1TxRequest[], l1TxUtils: L1TxUtils, gasConfig: L1GasConfig | undefined, blobConfig: L1BlobInputs | undefined, logger: Logger): Promise<{
13
+ receipt: import("viem").TransactionReceipt;
14
+ gasPrice: import("../l1_tx_utils.js").GasPrice;
15
+ stats: import("../l1_tx_utils.js").TransactionStats | undefined;
16
+ errorMsg?: undefined;
17
+ } | {
18
+ receipt: import("viem").TransactionReceipt;
19
+ gasPrice: import("../l1_tx_utils.js").GasPrice;
20
+ errorMsg: string | undefined;
21
+ stats?: undefined;
22
+ }>;
23
+ }
24
+ //# sourceMappingURL=forwarder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forwarder.d.ts","sourceRoot":"","sources":["../../src/contracts/forwarder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,KAAK,EAGV,KAAK,GAAG,EACR,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EAGlB,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG1G,qBAAa,iBAAiB;aAGA,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC;aAAgC,aAAa,EAAE,GAAG;IAF/G,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiF;gBAE/E,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,EAAkB,aAAa,EAAE,GAAG;WAIlG,MAAM,CACjB,KAAK,EAAE,GAAG,EACV,YAAY,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC,EACzD,YAAY,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,EAChD,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,GAAG;IAwBb,UAAU;IAIJ,OAAO,CAClB,QAAQ,EAAE,WAAW,EAAE,EACvB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,WAAW,GAAG,SAAS,EAClC,UAAU,EAAE,YAAY,GAAG,SAAS,EACpC,MAAM,EAAE,MAAM;;;;;;;;;;;CAqEjB"}
@@ -0,0 +1,81 @@
1
+ import { toHex } from '@aztec/foundation/bigint-buffer';
2
+ import { ForwarderAbi, ForwarderBytecode } from '@aztec/l1-artifacts';
3
+ import { encodeFunctionData, getContract, } from 'viem';
4
+ import { deployL1Contract } from '../deploy_l1_contracts.js';
5
+ import { RollupContract } from './rollup.js';
6
+ export class ForwarderContract {
7
+ constructor(client, address, rollupAddress) {
8
+ this.client = client;
9
+ this.rollupAddress = rollupAddress;
10
+ this.forwarder = getContract({ address, abi: ForwarderAbi, client });
11
+ }
12
+ static async create(owner, walletClient, publicClient, logger, rollupAddress) {
13
+ logger.info('Deploying forwarder contract');
14
+ const { address, txHash } = await deployL1Contract(walletClient, publicClient, ForwarderAbi, ForwarderBytecode, [owner], owner, undefined, logger);
15
+ if (txHash) {
16
+ await publicClient.waitForTransactionReceipt({ hash: txHash });
17
+ }
18
+ logger.info(`Forwarder contract deployed at ${address} with owner ${owner}`);
19
+ return new ForwarderContract(publicClient, address.toString(), rollupAddress);
20
+ }
21
+ getAddress() {
22
+ return this.forwarder.address;
23
+ }
24
+ async forward(requests, l1TxUtils, gasConfig, blobConfig, logger) {
25
+ requests = requests.filter(request => request.to !== null);
26
+ const toArgs = requests.map(request => request.to);
27
+ const dataArgs = requests.map(request => request.data);
28
+ const forwarderFunctionData = {
29
+ abi: ForwarderAbi,
30
+ functionName: 'forward',
31
+ args: [toArgs, dataArgs],
32
+ };
33
+ const encodedForwarderData = encodeFunctionData(forwarderFunctionData);
34
+ const { receipt, gasPrice } = await l1TxUtils.sendAndMonitorTransaction({
35
+ to: this.forwarder.address,
36
+ data: encodedForwarderData,
37
+ }, gasConfig, blobConfig);
38
+ if (receipt.status === 'success') {
39
+ const stats = await l1TxUtils.getTransactionStats(receipt.transactionHash);
40
+ return { receipt, gasPrice, stats };
41
+ }
42
+ else {
43
+ logger.error('Forwarder transaction failed', undefined, { receipt });
44
+ const args = {
45
+ ...forwarderFunctionData,
46
+ address: this.forwarder.address,
47
+ };
48
+ let errorMsg;
49
+ if (blobConfig) {
50
+ const maxFeePerBlobGas = blobConfig.maxFeePerBlobGas ?? gasPrice.maxFeePerBlobGas;
51
+ if (maxFeePerBlobGas === undefined) {
52
+ errorMsg = 'maxFeePerBlobGas is required to get the error message';
53
+ }
54
+ else {
55
+ logger.debug('Trying to get error from reverted tx with blob config');
56
+ errorMsg = await l1TxUtils.tryGetErrorFromRevertedTx(encodedForwarderData, args, {
57
+ blobs: blobConfig.blobs,
58
+ kzg: blobConfig.kzg,
59
+ maxFeePerBlobGas,
60
+ }, [
61
+ {
62
+ address: this.rollupAddress,
63
+ stateDiff: [
64
+ {
65
+ slot: toHex(RollupContract.checkBlobStorageSlot, true),
66
+ value: toHex(0n, true),
67
+ },
68
+ ],
69
+ },
70
+ ]);
71
+ }
72
+ }
73
+ else {
74
+ logger.debug('Trying to get error from reverted tx without blob config');
75
+ errorMsg = await l1TxUtils.tryGetErrorFromRevertedTx(encodedForwarderData, args, undefined, []);
76
+ }
77
+ return { receipt, gasPrice, errorMsg };
78
+ }
79
+ }
80
+ }
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yd2FyZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyYWN0cy9mb3J3YXJkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXhELE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RSxPQUFPLEVBU0wsa0JBQWtCLEVBQ2xCLFdBQVcsR0FDWixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdDLE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsWUFBNEIsTUFBaUMsRUFBRSxPQUFZLEVBQWtCLGFBQWtCO1FBQW5GLFdBQU0sR0FBTixNQUFNLENBQTJCO1FBQWdDLGtCQUFhLEdBQWIsYUFBYSxDQUFLO1FBQzdHLElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ2pCLEtBQVUsRUFDVixZQUF5RCxFQUN6RCxZQUFnRCxFQUNoRCxNQUFjLEVBQ2QsYUFBa0I7UUFFbEIsTUFBTSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBRTVDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxnQkFBZ0IsQ0FDaEQsWUFBWSxFQUNaLFlBQVksRUFDWixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLENBQUMsS0FBSyxDQUFDLEVBQ1AsS0FBSyxFQUNMLFNBQVMsRUFDVCxNQUFNLENBQ1AsQ0FBQztRQUVGLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLFlB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
@@ -0,0 +1,14 @@
1
+ import { EthAddress } from '@aztec/foundation/eth-address';
2
+ import { type Chain, type Hex, type HttpTransport, type PublicClient } from 'viem';
3
+ import { type L1ContractAddresses } from '../l1_contract_addresses.js';
4
+ import { GovernanceProposerContract } from './governance_proposer.js';
5
+ export type L1GovernanceContractAddresses = Pick<L1ContractAddresses, 'governanceAddress' | 'rollupAddress' | 'registryAddress' | 'governanceProposerAddress'>;
6
+ export declare class GovernanceContract {
7
+ readonly client: PublicClient<HttpTransport, Chain>;
8
+ private readonly governance;
9
+ constructor(client: PublicClient<HttpTransport, Chain>, address: Hex);
10
+ get address(): EthAddress;
11
+ getProposer(): Promise<GovernanceProposerContract>;
12
+ getGovernanceAddresses(): Promise<L1GovernanceContractAddresses>;
13
+ }
14
+ //# sourceMappingURL=governance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/contracts/governance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EACL,KAAK,KAAK,EAEV,KAAK,GAAG,EACR,KAAK,aAAa,EAClB,KAAK,YAAY,EAElB,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAC9C,mBAAmB,EACnB,mBAAmB,GAAG,eAAe,GAAG,iBAAiB,GAAG,2BAA2B,CACxF,CAAC;AAEF,qBAAa,kBAAkB;aAGD,MAAM,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC;IAFtE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkF;gBAEjF,MAAM,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG;IAIpF,IAAW,OAAO,eAEjB;IAEY,WAAW;IAKX,sBAAsB,IAAI,OAAO,CAAC,6BAA6B,CAAC;CAa9E"}
@@ -0,0 +1,31 @@
1
+ import { EthAddress } from '@aztec/foundation/eth-address';
2
+ import { GovernanceAbi } from '@aztec/l1-artifacts';
3
+ import { getContract, } from 'viem';
4
+ import { GovernanceProposerContract } from './governance_proposer.js';
5
+ export class GovernanceContract {
6
+ constructor(client, address) {
7
+ this.client = client;
8
+ this.governance = getContract({ address, abi: GovernanceAbi, client });
9
+ }
10
+ get address() {
11
+ return EthAddress.fromString(this.governance.address);
12
+ }
13
+ async getProposer() {
14
+ const governanceProposerAddress = EthAddress.fromString(await this.governance.read.governanceProposer());
15
+ return new GovernanceProposerContract(this.client, governanceProposerAddress.toString());
16
+ }
17
+ async getGovernanceAddresses() {
18
+ const governanceProposer = await this.getProposer();
19
+ const [rollupAddress, registryAddress] = await Promise.all([
20
+ governanceProposer.getRollupAddress(),
21
+ governanceProposer.getRegistryAddress(),
22
+ ]);
23
+ return {
24
+ governanceAddress: this.address,
25
+ rollupAddress,
26
+ registryAddress,
27
+ governanceProposerAddress: governanceProposer.address,
28
+ };
29
+ }
30
+ }
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ292ZXJuYW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdHMvZ292ZXJuYW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXBELE9BQU8sRUFNTCxXQUFXLEdBQ1osTUFBTSxNQUFNLENBQUM7QUFHZCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQU90RSxNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLFlBQTRCLE1BQTBDLEVBQUUsT0FBWTtRQUF4RCxXQUFNLEdBQU4sTUFBTSxDQUFvQztRQUNwRSxJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU0sS0FBSyxDQUFDLFdBQVc7UUFDdEIsTUFBTSx5QkFBeUIsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pHLE9BQU8sSUFBSSwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLHlCQUF5QixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVNLEtBQUssQ0FBQyxzQkFBc0I7UUFDakMsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwRCxNQUFNLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUN6RCxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRTtZQUNyQyxrQkFBa0IsQ0FBQyxrQkFBa0IsRUFBRTtTQUN4QyxDQUFDLENBQUM7UUFDSCxPQUFPO1lBQ0wsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDL0IsYUFBYTtZQUNiLGVBQWU7WUFDZix5QkFBeUIsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO1NBQ3RELENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
@@ -0,0 +1,28 @@
1
+ import { EthAddress } from '@aztec/foundation/eth-address';
2
+ import { type Hex, type TransactionReceipt } from 'viem';
3
+ import type { L1Clients } from '../deploy_l1_contracts.js';
4
+ import type { GasPrice, L1TxRequest, L1TxUtils } from '../l1_tx_utils.js';
5
+ import { type IEmpireBase } from './empire_base.js';
6
+ export declare class GovernanceProposerContract implements IEmpireBase {
7
+ readonly client: L1Clients['publicClient'];
8
+ private readonly proposer;
9
+ constructor(client: L1Clients['publicClient'], address: Hex);
10
+ get address(): EthAddress;
11
+ getRollupAddress(): Promise<EthAddress>;
12
+ getRegistryAddress(): Promise<EthAddress>;
13
+ getQuorumSize(): Promise<bigint>;
14
+ getRoundSize(): Promise<bigint>;
15
+ computeRound(slot: bigint): Promise<bigint>;
16
+ getRoundInfo(rollupAddress: Hex, round: bigint): Promise<{
17
+ lastVote: bigint;
18
+ leader: Hex;
19
+ executed: boolean;
20
+ }>;
21
+ getProposalVotes(rollupAddress: Hex, round: bigint, proposal: Hex): Promise<bigint>;
22
+ createVoteRequest(payload: Hex): L1TxRequest;
23
+ executeProposal(round: bigint, l1TxUtils: L1TxUtils): Promise<{
24
+ receipt: TransactionReceipt;
25
+ gasPrice: GasPrice;
26
+ }>;
27
+ }
28
+ //# sourceMappingURL=governance_proposer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance_proposer.d.ts","sourceRoot":"","sources":["../../src/contracts/governance_proposer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EAGL,KAAK,GAAG,EAGR,KAAK,kBAAkB,EAGxB,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,KAAK,WAAW,EAAc,MAAM,kBAAkB,CAAC;AAEhE,qBAAa,0BAA2B,YAAW,WAAW;aAGhC,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC;IAF7D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0F;gBAEvF,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG;IAI3E,IAAW,OAAO,eAEjB;IAEY,gBAAgB;IAKhB,kBAAkB;IAIxB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAIhC,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrC,YAAY,CACvB,aAAa,EAAE,GAAG,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IASzD,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAInF,iBAAiB,CAAC,OAAO,EAAE,GAAG,GAAG,WAAW;IAO5C,eAAe,CACpB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC;QACT,OAAO,EAAE,kBAAkB,CAAC;QAC5B,QAAQ,EAAE,QAAQ,CAAC;KACpB,CAAC;CAUH"}
@@ -0,0 +1,71 @@
1
+ import { __esDecorate, __runInitializers } from "tslib";
2
+ import { memoize } from '@aztec/foundation/decorators';
3
+ import { EthAddress } from '@aztec/foundation/eth-address';
4
+ import { GovernanceProposerAbi } from '@aztec/l1-artifacts';
5
+ import { encodeFunctionData, getContract, } from 'viem';
6
+ import { encodeVote } from './empire_base.js';
7
+ let GovernanceProposerContract = (() => {
8
+ var _a;
9
+ let _instanceExtraInitializers = [];
10
+ let _getRegistryAddress_decorators;
11
+ return _a = class GovernanceProposerContract {
12
+ constructor(client, address) {
13
+ this.client = (__runInitializers(this, _instanceExtraInitializers), client);
14
+ this.proposer = getContract({ address, abi: GovernanceProposerAbi, client });
15
+ }
16
+ get address() {
17
+ return EthAddress.fromString(this.proposer.address);
18
+ }
19
+ async getRollupAddress() {
20
+ return EthAddress.fromString(await this.proposer.read.getInstance());
21
+ }
22
+ async getRegistryAddress() {
23
+ return EthAddress.fromString(await this.proposer.read.REGISTRY());
24
+ }
25
+ getQuorumSize() {
26
+ return this.proposer.read.N();
27
+ }
28
+ getRoundSize() {
29
+ return this.proposer.read.M();
30
+ }
31
+ computeRound(slot) {
32
+ return this.proposer.read.computeRound([slot]);
33
+ }
34
+ async getRoundInfo(rollupAddress, round) {
35
+ const roundInfo = await this.proposer.read.rounds([rollupAddress, round]);
36
+ return {
37
+ lastVote: roundInfo[0],
38
+ leader: roundInfo[1],
39
+ executed: roundInfo[2],
40
+ };
41
+ }
42
+ getProposalVotes(rollupAddress, round, proposal) {
43
+ return this.proposer.read.yeaCount([rollupAddress, round, proposal]);
44
+ }
45
+ createVoteRequest(payload) {
46
+ return {
47
+ to: this.address.toString(),
48
+ data: encodeVote(payload),
49
+ };
50
+ }
51
+ executeProposal(round, l1TxUtils) {
52
+ return l1TxUtils.sendAndMonitorTransaction({
53
+ to: this.address.toString(),
54
+ data: encodeFunctionData({
55
+ abi: this.proposer.abi,
56
+ functionName: 'executeProposal',
57
+ args: [round],
58
+ }),
59
+ });
60
+ }
61
+ },
62
+ (() => {
63
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
64
+ _getRegistryAddress_decorators = [memoize];
65
+ __esDecorate(_a, null, _getRegistryAddress_decorators, { kind: "method", name: "getRegistryAddress", static: false, private: false, access: { has: obj => "getRegistryAddress" in obj, get: obj => obj.getRegistryAddress }, metadata: _metadata }, null, _instanceExtraInitializers);
66
+ if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
67
+ })(),
68
+ _a;
69
+ })();
70
+ export { GovernanceProposerContract };
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ292ZXJuYW5jZV9wcm9wb3Nlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdHMvZ292ZXJuYW5jZV9wcm9wb3Nlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU1RCxPQUFPLEVBT0wsa0JBQWtCLEVBQ2xCLFdBQVcsR0FDWixNQUFNLE1BQU0sQ0FBQztBQUlkLE9BQU8sRUFBb0IsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7SUFFbkQsMEJBQTBCOzs7O3NCQUExQiwwQkFBMEI7WUFHckMsWUFBNEIsTUFBaUMsRUFBRSxPQUFZO2dCQUEvQyxXQUFNLElBSHZCLG1EQUEwQixFQUdULE1BQU0sRUFBMkI7Z0JBQzNELElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQy9FLENBQUM7WUFFRCxJQUFXLE9BQU87Z0JBQ2hCLE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RELENBQUM7WUFFTSxLQUFLLENBQUMsZ0JBQWdCO2dCQUMzQixPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZFLENBQUM7WUFHTSxLQUFLLENBQUMsa0JBQWtCO2dCQUM3QixPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFFTSxhQUFhO2dCQUNsQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hDLENBQUM7WUFFTSxZQUFZO2dCQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hDLENBQUM7WUFFTSxZQUFZLENBQUMsSUFBWTtnQkFDOUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2pELENBQUM7WUFFTSxLQUFLLENBQUMsWUFBWSxDQUN2QixhQUFrQixFQUNsQixLQUFhO2dCQUViLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQzFFLE9BQU87b0JBQ0wsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7b0JBQ3RCLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO29CQUNwQixRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztpQkFDdkIsQ0FBQztZQUNKLENBQUM7WUFFTSxnQkFBZ0IsQ0FBQyxhQUFrQixFQUFFLEtBQWEsRUFBRSxRQUFhO2dCQUN0RSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUN2RSxDQUFDO1lBRU0saUJBQWlCLENBQUMsT0FBWTtnQkFDbkMsT0FBTztvQkFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7b0JBQzNCLElBQUksRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDO2lCQUMxQixDQUFDO1lBQ0osQ0FBQztZQUVNLGVBQWUsQ0FDcEIsS0FBYSxFQUNiLFNBQW9CO2dCQUtwQixPQUFPLFNBQVMsQ0FBQyx5QkFBeUIsQ0FBQztvQkFDekMsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO29CQUMzQixJQUFJLEVBQUUsa0JBQWtCLENBQUM7d0JBQ3ZCLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUc7d0JBQ3RCLFlBQVksRUFBRSxpQkFBaUI7d0JBQy9CLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQztxQkFDZCxDQUFDO2lCQUNILENBQUMsQ0FBQztZQUNMLENBQUM7Ozs7OENBdkRBLE9BQU87WUFDUix1TUFBYSxrQkFBa0IsNkRBRTlCOzs7OztTQWxCVSwwQkFBMEIifQ==
@@ -1,2 +1,7 @@
1
+ export * from './empire_base.js';
2
+ export * from './forwarder.js';
3
+ export * from './governance.js';
4
+ export * from './governance_proposer.js';
1
5
  export * from './rollup.js';
6
+ export * from './slashing_proposer.js';
2
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC"}
@@ -1,2 +1,7 @@
1
+ export * from './empire_base.js';
2
+ export * from './forwarder.js';
3
+ export * from './governance.js';
4
+ export * from './governance_proposer.js';
1
5
  export * from './rollup.js';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDIn0=
6
+ export * from './slashing_proposer.js';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyx3QkFBd0IsQ0FBQyJ9
@@ -1,14 +1,37 @@
1
- import { AztecAddress } from '@aztec/foundation/aztec-address';
2
- import { type Chain, type Hex, type HttpTransport, type PublicClient } from 'viem';
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ import { EthAddress } from '@aztec/foundation/eth-address';
4
+ import type { ViemSignature } from '@aztec/foundation/eth-signature';
5
+ import { type Account, type Chain, type Hex, type HttpTransport, type PublicClient } from 'viem';
3
6
  import { type DeployL1Contracts } from '../deploy_l1_contracts.js';
7
+ import { type L1ContractAddresses } from '../l1_contract_addresses.js';
4
8
  import { type L1ReaderConfig } from '../l1_reader.js';
9
+ import { SlashingProposerContract } from './slashing_proposer.js';
10
+ export type L1RollupContractAddresses = Pick<L1ContractAddresses, 'rollupAddress' | 'inboxAddress' | 'outboxAddress' | 'feeJuicePortalAddress' | 'feeJuiceAddress' | 'stakingAssetAddress' | 'rewardDistributorAddress'>;
11
+ export type EpochProofQuoteViemArgs = {
12
+ epochToProve: bigint;
13
+ validUntilSlot: bigint;
14
+ bondAmount: bigint;
15
+ prover: `0x${string}`;
16
+ basisPointFee: number;
17
+ };
5
18
  export declare class RollupContract {
6
19
  readonly client: PublicClient<HttpTransport, Chain>;
7
20
  private readonly rollup;
21
+ static get checkBlobStorageSlot(): bigint;
22
+ static getFromL1ContractsValues(deployL1ContractsValues: DeployL1Contracts): RollupContract;
23
+ static getFromConfig(config: L1ReaderConfig): RollupContract;
8
24
  constructor(client: PublicClient<HttpTransport, Chain>, address: Hex);
9
- get address(): AztecAddress;
25
+ get address(): `0x${string}`;
26
+ getSlashingProposer(): Promise<SlashingProposerContract>;
10
27
  getL1StartBlock(): Promise<bigint>;
11
28
  getL1GenesisTime(): Promise<bigint>;
29
+ getClaimDurationInL2Slots(): Promise<bigint>;
30
+ getEpochDuration(): Promise<bigint>;
31
+ getSlotDuration(): Promise<bigint>;
32
+ getTargetCommitteeSize(): Promise<bigint>;
33
+ getMinimumStake(): Promise<bigint>;
34
+ getSlashingProposerAddress(): Promise<EthAddress>;
12
35
  getBlockNumber(): Promise<bigint>;
13
36
  getProvenBlockNumber(): Promise<bigint>;
14
37
  getSlotNumber(): Promise<bigint>;
@@ -17,8 +40,76 @@ export declare class RollupContract {
17
40
  getCurrentSampleSeed(): Promise<bigint>;
18
41
  getCurrentEpochCommittee(): Promise<readonly `0x${string}`[]>;
19
42
  getCurrentProposer(): Promise<`0x${string}`>;
43
+ getProposerAt(timestamp: bigint): Promise<`0x${string}`>;
44
+ getBlock(blockNumber: bigint): Promise<{
45
+ feeHeader: {
46
+ excessMana: bigint;
47
+ feeAssetPriceNumerator: bigint;
48
+ manaUsed: bigint;
49
+ provingCostPerManaNumerator: bigint;
50
+ congestionCost: bigint;
51
+ };
52
+ archive: `0x${string}`;
53
+ blockHash: `0x${string}`;
54
+ slotNumber: bigint;
55
+ }>;
56
+ getProofCommitmentEscrow(): Promise<`0x${string}`>;
57
+ getTips(): Promise<{
58
+ pendingBlockNumber: bigint;
59
+ provenBlockNumber: bigint;
60
+ }>;
61
+ getTimestampForSlot(slot: bigint): Promise<bigint>;
20
62
  getEpochNumber(blockNumber?: bigint): Promise<bigint>;
21
- static getFromL1ContractsValues(deployL1ContractsValues: DeployL1Contracts): RollupContract;
22
- static getFromConfig(config: L1ReaderConfig): RollupContract;
63
+ getRollupAddresses(): Promise<L1RollupContractAddresses>;
64
+ getEpochNumberForSlotNumber(slotNumber: bigint): Promise<bigint>;
65
+ getEpochProofPublicInputs(args: readonly [
66
+ bigint,
67
+ readonly [
68
+ `0x${string}`,
69
+ `0x${string}`,
70
+ `0x${string}`,
71
+ `0x${string}`,
72
+ `0x${string}`,
73
+ `0x${string}`,
74
+ `0x${string}`
75
+ ],
76
+ readonly `0x${string}`[],
77
+ `0x${string}`,
78
+ `0x${string}`
79
+ ]): Promise<readonly `0x${string}`[]>;
80
+ getProofClaim(): Promise<{
81
+ epochToProve: bigint;
82
+ basisPointFee: bigint;
83
+ bondAmount: bigint;
84
+ bondProvider: EthAddress;
85
+ proposerClaimant: EthAddress;
86
+ } | undefined>;
87
+ getClaimableEpoch(): Promise<bigint | undefined>;
88
+ getEpochToProve(): Promise<bigint | undefined>;
89
+ validateProofQuote(quote: {
90
+ quote: EpochProofQuoteViemArgs;
91
+ signature: ViemSignature;
92
+ }, account: `0x${string}` | Account, slotDuration: bigint | number): Promise<void>;
93
+ validateHeader(args: readonly [
94
+ `0x${string}`,
95
+ ViemSignature[],
96
+ `0x${string}`,
97
+ bigint,
98
+ `0x${string}`,
99
+ {
100
+ ignoreDA: boolean;
101
+ ignoreSignatures: boolean;
102
+ }
103
+ ], account: `0x${string}` | Account): Promise<void>;
104
+ /**
105
+ * @notice Calls `canProposeAtTime` with the time of the next Ethereum block and the sender address
106
+ *
107
+ * @dev Throws if unable to propose
108
+ *
109
+ * @param archive - The archive that we expect to be current state
110
+ * @return [slot, blockNumber] - If you can propose, the L2 slot number and L2 block number of the next Ethereum block,
111
+ * @throws otherwise
112
+ */
113
+ canProposeAtNextEthBlock(archive: Buffer, account: `0x${string}` | Account, slotDuration: bigint | number): Promise<[bigint, bigint]>;
23
114
  }
24
115
  //# sourceMappingURL=rollup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/contracts/rollup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAI/D,OAAO,EACL,KAAK,KAAK,EAEV,KAAK,GAAG,EACR,KAAK,aAAa,EAClB,KAAK,YAAY,EAIlB,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,qBAAa,cAAc;aAGG,MAAM,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC;IAFtE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8E;gBAEzE,MAAM,EAAE,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG;IAIpF,IAAW,OAAO,iBAEjB;IAGD,eAAe;IAKf,gBAAgB;IAIhB,cAAc;IAId,oBAAoB;IAIpB,aAAa;IAIb,cAAc,CAAC,SAAS,EAAE,MAAM;IAIhC,eAAe,CAAC,SAAS,EAAE,MAAM;IAIjC,oBAAoB;IAIpB,wBAAwB;IAIxB,kBAAkB;IAIZ,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM;IAKzC,MAAM,CAAC,wBAAwB,CAAC,uBAAuB,EAAE,iBAAiB;IAQ1E,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,cAAc;CAQ5C"}
1
+ {"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/contracts/rollup.ts"],"names":[],"mappings":"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"}