@aztec/ethereum 0.0.1-commit.d3ec352c → 0.0.1-commit.e3c1de76

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 (175) hide show
  1. package/dest/client.js +6 -2
  2. package/dest/config.d.ts +19 -68
  3. package/dest/config.d.ts.map +1 -1
  4. package/dest/config.js +51 -378
  5. package/dest/contracts/empire_base.d.ts +2 -1
  6. package/dest/contracts/empire_base.d.ts.map +1 -1
  7. package/dest/contracts/empire_slashing_proposer.d.ts +2 -1
  8. package/dest/contracts/empire_slashing_proposer.d.ts.map +1 -1
  9. package/dest/contracts/empire_slashing_proposer.js +22 -15
  10. package/dest/contracts/fee_asset_handler.d.ts +6 -5
  11. package/dest/contracts/fee_asset_handler.d.ts.map +1 -1
  12. package/dest/contracts/fee_asset_handler.js +11 -9
  13. package/dest/contracts/governance.d.ts +3 -1
  14. package/dest/contracts/governance.d.ts.map +1 -1
  15. package/dest/contracts/governance.js +11 -1
  16. package/dest/contracts/governance_proposer.d.ts +2 -1
  17. package/dest/contracts/governance_proposer.d.ts.map +1 -1
  18. package/dest/contracts/governance_proposer.js +395 -9
  19. package/dest/contracts/inbox.d.ts +24 -3
  20. package/dest/contracts/inbox.d.ts.map +1 -1
  21. package/dest/contracts/inbox.js +36 -1
  22. package/dest/contracts/index.d.ts +3 -1
  23. package/dest/contracts/index.d.ts.map +1 -1
  24. package/dest/contracts/index.js +2 -0
  25. package/dest/contracts/log.d.ts +13 -0
  26. package/dest/contracts/log.d.ts.map +1 -0
  27. package/dest/contracts/log.js +1 -0
  28. package/dest/contracts/multicall.d.ts +1 -1
  29. package/dest/contracts/multicall.d.ts.map +1 -1
  30. package/dest/contracts/multicall.js +2 -1
  31. package/dest/contracts/outbox.d.ts +41 -0
  32. package/dest/contracts/outbox.d.ts.map +1 -0
  33. package/dest/contracts/outbox.js +86 -0
  34. package/dest/contracts/rollup.d.ts +163 -83
  35. package/dest/contracts/rollup.d.ts.map +1 -1
  36. package/dest/contracts/rollup.js +686 -129
  37. package/dest/contracts/tally_slashing_proposer.d.ts +3 -2
  38. package/dest/contracts/tally_slashing_proposer.d.ts.map +1 -1
  39. package/dest/contracts/tally_slashing_proposer.js +8 -1
  40. package/dest/deploy_aztec_l1_contracts.d.ts +260 -0
  41. package/dest/deploy_aztec_l1_contracts.d.ts.map +1 -0
  42. package/dest/deploy_aztec_l1_contracts.js +398 -0
  43. package/dest/deploy_l1_contract.d.ts +68 -0
  44. package/dest/deploy_l1_contract.d.ts.map +1 -0
  45. package/dest/deploy_l1_contract.js +312 -0
  46. package/dest/forwarder_proxy.d.ts +32 -0
  47. package/dest/forwarder_proxy.d.ts.map +1 -0
  48. package/dest/forwarder_proxy.js +93 -0
  49. package/dest/generated/l1-contracts-defaults.d.ts +30 -0
  50. package/dest/generated/l1-contracts-defaults.d.ts.map +1 -0
  51. package/dest/generated/l1-contracts-defaults.js +30 -0
  52. package/dest/l1_artifacts.d.ts +4964 -1573
  53. package/dest/l1_artifacts.d.ts.map +1 -1
  54. package/dest/l1_contract_addresses.d.ts +1 -1
  55. package/dest/l1_contract_addresses.d.ts.map +1 -1
  56. package/dest/l1_contract_addresses.js +3 -3
  57. package/dest/l1_reader.d.ts +3 -1
  58. package/dest/l1_reader.d.ts.map +1 -1
  59. package/dest/l1_reader.js +6 -0
  60. package/dest/l1_tx_utils/config.d.ts +3 -3
  61. package/dest/l1_tx_utils/config.d.ts.map +1 -1
  62. package/dest/l1_tx_utils/config.js +17 -3
  63. package/dest/l1_tx_utils/constants.d.ts +8 -2
  64. package/dest/l1_tx_utils/constants.d.ts.map +1 -1
  65. package/dest/l1_tx_utils/constants.js +27 -2
  66. package/dest/l1_tx_utils/fee-strategies/index.d.ts +10 -0
  67. package/dest/l1_tx_utils/fee-strategies/index.d.ts.map +1 -0
  68. package/dest/l1_tx_utils/fee-strategies/index.js +12 -0
  69. package/dest/l1_tx_utils/fee-strategies/p75_competitive.d.ts +8 -0
  70. package/dest/l1_tx_utils/fee-strategies/p75_competitive.d.ts.map +1 -0
  71. package/dest/l1_tx_utils/fee-strategies/p75_competitive.js +129 -0
  72. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.d.ts +23 -0
  73. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.d.ts.map +1 -0
  74. package/dest/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.js +191 -0
  75. package/dest/l1_tx_utils/fee-strategies/types.d.ts +51 -0
  76. package/dest/l1_tx_utils/fee-strategies/types.d.ts.map +1 -0
  77. package/dest/l1_tx_utils/fee-strategies/types.js +3 -0
  78. package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts +41 -0
  79. package/dest/l1_tx_utils/forwarder_l1_tx_utils.d.ts.map +1 -0
  80. package/dest/l1_tx_utils/forwarder_l1_tx_utils.js +48 -0
  81. package/dest/l1_tx_utils/index-blobs.d.ts +3 -0
  82. package/dest/l1_tx_utils/index-blobs.d.ts.map +1 -0
  83. package/dest/l1_tx_utils/index-blobs.js +2 -0
  84. package/dest/l1_tx_utils/index.d.ts +3 -1
  85. package/dest/l1_tx_utils/index.d.ts.map +1 -1
  86. package/dest/l1_tx_utils/index.js +2 -0
  87. package/dest/l1_tx_utils/interfaces.d.ts +2 -2
  88. package/dest/l1_tx_utils/interfaces.d.ts.map +1 -1
  89. package/dest/l1_tx_utils/l1_fee_analyzer.d.ts +233 -0
  90. package/dest/l1_tx_utils/l1_fee_analyzer.d.ts.map +1 -0
  91. package/dest/l1_tx_utils/l1_fee_analyzer.js +506 -0
  92. package/dest/l1_tx_utils/l1_tx_utils.d.ts +1 -1
  93. package/dest/l1_tx_utils/l1_tx_utils.d.ts.map +1 -1
  94. package/dest/l1_tx_utils/l1_tx_utils.js +23 -10
  95. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts +4 -15
  96. package/dest/l1_tx_utils/readonly_l1_tx_utils.d.ts.map +1 -1
  97. package/dest/l1_tx_utils/readonly_l1_tx_utils.js +53 -160
  98. package/dest/publisher_manager.d.ts +3 -2
  99. package/dest/publisher_manager.d.ts.map +1 -1
  100. package/dest/publisher_manager.js +2 -2
  101. package/dest/queries.d.ts +2 -2
  102. package/dest/queries.d.ts.map +1 -1
  103. package/dest/queries.js +12 -4
  104. package/dest/test/chain_monitor.d.ts +2 -2
  105. package/dest/test/chain_monitor.d.ts.map +1 -1
  106. package/dest/test/chain_monitor.js +1 -2
  107. package/dest/test/eth_cheat_codes.d.ts +13 -1
  108. package/dest/test/eth_cheat_codes.d.ts.map +1 -1
  109. package/dest/test/eth_cheat_codes.js +4 -2
  110. package/dest/test/rollup_cheat_codes.d.ts +6 -3
  111. package/dest/test/rollup_cheat_codes.d.ts.map +1 -1
  112. package/dest/test/rollup_cheat_codes.js +26 -4
  113. package/dest/test/start_anvil.d.ts +3 -1
  114. package/dest/test/start_anvil.d.ts.map +1 -1
  115. package/dest/test/start_anvil.js +1 -1
  116. package/dest/test/tx_delayer.d.ts +1 -1
  117. package/dest/test/tx_delayer.d.ts.map +1 -1
  118. package/dest/test/tx_delayer.js +4 -3
  119. package/dest/types.d.ts +57 -2
  120. package/dest/types.d.ts.map +1 -1
  121. package/dest/utils.d.ts +16 -3
  122. package/dest/utils.d.ts.map +1 -1
  123. package/dest/utils.js +64 -0
  124. package/package.json +31 -12
  125. package/src/client.ts +2 -2
  126. package/src/config.ts +62 -457
  127. package/src/contracts/README.md +157 -0
  128. package/src/contracts/empire_base.ts +1 -1
  129. package/src/contracts/empire_slashing_proposer.ts +22 -28
  130. package/src/contracts/fee_asset_handler.ts +10 -7
  131. package/src/contracts/governance.ts +10 -1
  132. package/src/contracts/governance_proposer.ts +10 -2
  133. package/src/contracts/inbox.ts +55 -3
  134. package/src/contracts/index.ts +2 -0
  135. package/src/contracts/log.ts +13 -0
  136. package/src/contracts/multicall.ts +5 -2
  137. package/src/contracts/outbox.ts +98 -0
  138. package/src/contracts/rollup.ts +355 -95
  139. package/src/contracts/tally_slashing_proposer.ts +7 -1
  140. package/src/deploy_aztec_l1_contracts.ts +619 -0
  141. package/src/deploy_l1_contract.ts +362 -0
  142. package/src/forwarder_proxy.ts +108 -0
  143. package/src/generated/l1-contracts-defaults.ts +32 -0
  144. package/src/l1_contract_addresses.ts +22 -20
  145. package/src/l1_reader.ts +8 -0
  146. package/src/l1_tx_utils/config.ts +24 -6
  147. package/src/l1_tx_utils/constants.ts +13 -2
  148. package/src/l1_tx_utils/fee-strategies/index.ts +22 -0
  149. package/src/l1_tx_utils/fee-strategies/p75_competitive.ts +163 -0
  150. package/src/l1_tx_utils/fee-strategies/p75_competitive_blob_txs_only.ts +245 -0
  151. package/src/l1_tx_utils/fee-strategies/types.ts +56 -0
  152. package/src/l1_tx_utils/forwarder_l1_tx_utils.ts +119 -0
  153. package/src/l1_tx_utils/index-blobs.ts +2 -0
  154. package/src/l1_tx_utils/index.ts +2 -0
  155. package/src/l1_tx_utils/interfaces.ts +1 -1
  156. package/src/l1_tx_utils/l1_fee_analyzer.ts +803 -0
  157. package/src/l1_tx_utils/l1_tx_utils.ts +30 -10
  158. package/src/l1_tx_utils/readonly_l1_tx_utils.ts +67 -206
  159. package/src/publisher_manager.ts +4 -2
  160. package/src/queries.ts +11 -3
  161. package/src/test/chain_monitor.ts +3 -2
  162. package/src/test/eth_cheat_codes.ts +2 -2
  163. package/src/test/rollup_cheat_codes.ts +24 -5
  164. package/src/test/start_anvil.ts +3 -1
  165. package/src/test/tx_delayer.ts +5 -3
  166. package/src/types.ts +62 -0
  167. package/src/utils.ts +83 -1
  168. package/dest/deploy_l1_contracts.d.ts +0 -673
  169. package/dest/deploy_l1_contracts.d.ts.map +0 -1
  170. package/dest/deploy_l1_contracts.js +0 -1491
  171. package/dest/index.d.ts +0 -18
  172. package/dest/index.d.ts.map +0 -1
  173. package/dest/index.js +0 -17
  174. package/src/deploy_l1_contracts.ts +0 -1869
  175. package/src/index.ts +0 -17
@@ -18,6 +18,8 @@ import {
18
18
 
19
19
  import { type ViemClient, isExtendedClient } from '../types.js';
20
20
 
21
+ const MAX_WAIT_TIME_SECONDS = 180;
22
+
21
23
  export function waitUntilBlock<T extends Client>(
22
24
  client: T,
23
25
  blockNumber: number | bigint,
@@ -36,7 +38,7 @@ export function waitUntilBlock<T extends Client>(
36
38
  return currentBlockNumber >= BigInt(blockNumber);
37
39
  },
38
40
  `Wait until L1 block ${blockNumber}`,
39
- timeout ?? 120,
41
+ timeout ?? MAX_WAIT_TIME_SECONDS,
40
42
  0.1,
41
43
  );
42
44
  }
@@ -66,7 +68,7 @@ export function waitUntilL1Timestamp<T extends Client>(
66
68
  return currentTs >= BigInt(timestamp);
67
69
  },
68
70
  `Wait until L1 timestamp ${timestamp}`,
69
- timeout ?? 120,
71
+ timeout ?? MAX_WAIT_TIME_SECONDS,
70
72
  0.1,
71
73
  );
72
74
  }
@@ -230,7 +232,7 @@ export function withDelayer<T extends ViemClient>(
230
232
  return Promise.resolve(txHash!);
231
233
  } else {
232
234
  const txHash = await client.sendRawTransaction(...args);
233
- logger.verbose(`Sent tx immediately ${txHash}`);
235
+ logger.debug(`Sent tx immediately ${txHash}`);
234
236
  delayer.sentTxHashes.push(txHash);
235
237
  return txHash;
236
238
  }
package/src/types.ts CHANGED
@@ -5,6 +5,7 @@ import type {
5
5
  Client,
6
6
  FallbackTransport,
7
7
  GetContractReturnType,
8
+ Hex,
8
9
  HttpTransport,
9
10
  PublicActions,
10
11
  PublicClient,
@@ -16,6 +17,67 @@ import type {
16
17
  /** Type for a viem public client */
17
18
  export type ViemPublicClient = PublicClient<FallbackTransport<HttpTransport[]>, Chain>;
18
19
 
20
+ export type PublicRpcDebugSchema = [
21
+ {
22
+ Method: 'debug_traceTransaction';
23
+ Parameters: [txHash: `0x${string}`, options: { tracer: 'callTracer' }];
24
+ ReturnType: DebugCallTrace;
25
+ },
26
+ {
27
+ Method: 'trace_transaction';
28
+ Parameters: [txHash: `0x${string}`];
29
+ ReturnType: TraceTransactionResponse[];
30
+ },
31
+ ];
32
+
33
+ /** Return type for a debug_traceTransaction call */
34
+ export type DebugCallTrace = {
35
+ from: Hex;
36
+ to?: Hex;
37
+ type: string;
38
+ input?: Hex;
39
+ output?: Hex;
40
+ gas?: Hex;
41
+ gasUsed?: Hex;
42
+ value?: Hex;
43
+ error?: string;
44
+ calls?: DebugCallTrace[];
45
+ };
46
+
47
+ /** Action object for a trace_transaction call */
48
+ export type TraceAction = {
49
+ from: Hex;
50
+ to?: Hex;
51
+ callType: string;
52
+ gas?: Hex;
53
+ input?: Hex;
54
+ value?: Hex;
55
+ };
56
+
57
+ /** Result object for a trace_transaction call */
58
+ export type TraceResult = {
59
+ gasUsed?: Hex;
60
+ output?: Hex;
61
+ };
62
+
63
+ /** Return type for a single trace in trace_transaction response */
64
+ export type TraceTransactionResponse = {
65
+ action: TraceAction;
66
+ result?: TraceResult;
67
+ error?: string;
68
+ subtraces: number;
69
+ traceAddress: number[];
70
+ type: string;
71
+ };
72
+
73
+ /** Type for a viem public client with support for debug methods */
74
+ export type ViemPublicDebugClient = PublicClient<
75
+ FallbackTransport<HttpTransport[]>,
76
+ Chain,
77
+ undefined,
78
+ [...PublicRpcSchema, ...PublicRpcDebugSchema]
79
+ >;
80
+
19
81
  export type ExtendedViemWalletClient = Client<
20
82
  FallbackTransport<readonly HttpTransport[]>,
21
83
  Chain,
package/src/utils.ts CHANGED
@@ -1,18 +1,21 @@
1
- import type { Fr } from '@aztec/foundation/fields';
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import type { Logger } from '@aztec/foundation/log';
3
3
  import { ErrorsAbi } from '@aztec/l1-artifacts/ErrorsAbi';
4
4
 
5
5
  import {
6
6
  type Abi,
7
+ type AbiItem,
7
8
  BaseError,
8
9
  type ContractEventName,
9
10
  ContractFunctionRevertedError,
10
11
  type DecodeEventLogReturnType,
12
+ type FormattedTransaction,
11
13
  type Hex,
12
14
  type Log,
13
15
  decodeErrorResult,
14
16
  decodeEventLog,
15
17
  } from 'viem';
18
+ import { formatAbiItem, formatAbiParams } from 'viem/utils';
16
19
 
17
20
  export interface L2Claim {
18
21
  claimSecret: Fr;
@@ -92,6 +95,57 @@ export function prettyLogViemErrorMsg(err: any) {
92
95
  return err?.message ?? err;
93
96
  }
94
97
 
98
+ export function mergeAbis(abis: Abi[]): Abi {
99
+ let merged: Abi = [];
100
+ const seen = new Set<string>();
101
+
102
+ for (const abi of abis) {
103
+ for (const item of abi) {
104
+ const key = getAbiItemKey(item);
105
+ if (!seen.has(key)) {
106
+ seen.add(key);
107
+ merged = [...merged, item];
108
+ }
109
+ }
110
+ }
111
+
112
+ return merged;
113
+ }
114
+
115
+ function getAbiItemKey(item: AbiItem): string {
116
+ if (item.type === 'function') {
117
+ const signature = formatAbiItem(item);
118
+ const outputs = formatAbiParams(item.outputs);
119
+ const stateMutability = typeof item.stateMutability === 'string' ? item.stateMutability : '';
120
+ return `function:${signature}:${outputs}:${stateMutability}`;
121
+ }
122
+
123
+ if (item.type === 'event') {
124
+ const signature = formatAbiItem(item);
125
+ const indexed = (item.inputs ?? []).map(input => ((input as { indexed?: boolean }).indexed ? '1' : '0')).join('');
126
+ const anonymous = item.anonymous ? 'anonymous' : 'not-anonymous';
127
+ return `event:${signature}:${indexed}:${anonymous}`;
128
+ }
129
+
130
+ if (item.type === 'error') {
131
+ const signature = formatAbiItem(item);
132
+ return `error:${signature}`;
133
+ }
134
+
135
+ if (item.type === 'constructor') {
136
+ const inputs = formatAbiParams(item.inputs);
137
+ const stateMutability = typeof item.stateMutability === 'string' ? item.stateMutability : '';
138
+ return `constructor::${inputs}:${stateMutability}`;
139
+ }
140
+
141
+ if (item.type === 'fallback' || item.type === 'receive') {
142
+ const stateMutability = typeof item.stateMutability === 'string' ? item.stateMutability : '';
143
+ return `${item.type}:::${stateMutability}`;
144
+ }
145
+
146
+ return 'unknown';
147
+ }
148
+
95
149
  function getNestedErrorData(error: unknown): string | undefined {
96
150
  // If nothing, bail
97
151
  if (!error) {
@@ -233,3 +287,31 @@ export function tryGetCustomErrorName(err: any) {
233
287
  return undefined;
234
288
  }
235
289
  }
290
+
291
+ /**
292
+ * Type guard to check if a transaction is a blob transaction (EIP-4844).
293
+ * Blob transactions have maxFeePerBlobGas and blobVersionedHashes fields.
294
+ */
295
+ export function isBlobTransaction(tx: FormattedTransaction): tx is FormattedTransaction & {
296
+ maxFeePerBlobGas: bigint;
297
+ blobVersionedHashes: readonly Hex[];
298
+ } {
299
+ return (
300
+ 'maxFeePerBlobGas' in tx &&
301
+ tx.maxFeePerBlobGas !== undefined &&
302
+ 'blobVersionedHashes' in tx &&
303
+ tx.blobVersionedHashes !== undefined
304
+ );
305
+ }
306
+
307
+ /**
308
+ * Calculates a percentile from an array of bigints
309
+ */
310
+ export function calculatePercentile(values: bigint[], percentile: number): bigint {
311
+ if (values.length === 0) {
312
+ return 0n;
313
+ }
314
+ const sorted = [...values].sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));
315
+ const index = Math.ceil((sorted.length - 1) * (percentile / 100));
316
+ return sorted[index];
317
+ }