@aztec/sequencer-client 0.56.0 → 0.58.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 (54) hide show
  1. package/dest/block_builder/index.d.ts +2 -2
  2. package/dest/block_builder/index.d.ts.map +1 -1
  3. package/dest/block_builder/light.d.ts +8 -12
  4. package/dest/block_builder/light.d.ts.map +1 -1
  5. package/dest/block_builder/light.js +11 -15
  6. package/dest/block_builder/orchestrator.d.ts +8 -11
  7. package/dest/block_builder/orchestrator.d.ts.map +1 -1
  8. package/dest/block_builder/orchestrator.js +3 -10
  9. package/dest/client/sequencer-client.d.ts +2 -2
  10. package/dest/client/sequencer-client.d.ts.map +1 -1
  11. package/dest/client/sequencer-client.js +3 -4
  12. package/dest/config.d.ts.map +1 -1
  13. package/dest/config.js +11 -9
  14. package/dest/global_variable_builder/global_builder.d.ts.map +1 -1
  15. package/dest/global_variable_builder/global_builder.js +2 -1
  16. package/dest/publisher/config.d.ts.map +1 -1
  17. package/dest/publisher/config.js +7 -2
  18. package/dest/publisher/index.d.ts +1 -1
  19. package/dest/publisher/index.d.ts.map +1 -1
  20. package/dest/publisher/index.js +1 -1
  21. package/dest/publisher/l1-publisher-metrics.d.ts.map +1 -1
  22. package/dest/publisher/l1-publisher-metrics.js +2 -1
  23. package/dest/publisher/l1-publisher.d.ts +52 -36
  24. package/dest/publisher/l1-publisher.d.ts.map +1 -1
  25. package/dest/publisher/l1-publisher.js +305 -117
  26. package/dest/publisher/utils.d.ts +1 -1
  27. package/dest/publisher/utils.js +1 -1
  28. package/dest/sequencer/sequencer.d.ts +6 -6
  29. package/dest/sequencer/sequencer.d.ts.map +1 -1
  30. package/dest/sequencer/sequencer.js +142 -88
  31. package/dest/tx_validator/gas_validator.d.ts.map +1 -1
  32. package/dest/tx_validator/gas_validator.js +7 -5
  33. package/dest/tx_validator/phases_validator.d.ts +1 -1
  34. package/dest/tx_validator/phases_validator.d.ts.map +1 -1
  35. package/dest/tx_validator/phases_validator.js +1 -1
  36. package/dest/tx_validator/tx_validator_factory.d.ts +9 -7
  37. package/dest/tx_validator/tx_validator_factory.d.ts.map +1 -1
  38. package/dest/tx_validator/tx_validator_factory.js +20 -10
  39. package/package.json +22 -19
  40. package/src/block_builder/index.ts +2 -2
  41. package/src/block_builder/light.ts +16 -24
  42. package/src/block_builder/orchestrator.ts +10 -18
  43. package/src/client/sequencer-client.ts +3 -9
  44. package/src/config.ts +10 -8
  45. package/src/global_variable_builder/global_builder.ts +1 -0
  46. package/src/publisher/config.ts +6 -1
  47. package/src/publisher/index.ts +1 -1
  48. package/src/publisher/l1-publisher-metrics.ts +1 -0
  49. package/src/publisher/l1-publisher.ts +435 -144
  50. package/src/publisher/utils.ts +1 -1
  51. package/src/sequencer/sequencer.ts +173 -108
  52. package/src/tx_validator/gas_validator.ts +6 -7
  53. package/src/tx_validator/phases_validator.ts +1 -1
  54. package/src/tx_validator/tx_validator_factory.ts +39 -15
@@ -1,14 +1,20 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
- import { type L2Block, type TxHash } from '@aztec/circuit-types';
3
- import { EthAddress, type Header, type Proof } from '@aztec/circuits.js';
2
+ import { type EpochProofClaim, type EpochProofQuote, type L2Block, type TxHash } from '@aztec/circuit-types';
3
+ import { AZTEC_EPOCH_DURATION, EthAddress, type FeeRecipient, type Header, type Proof, type RootRollupPublicInputs } from '@aztec/circuits.js';
4
4
  import { type Signature } from '@aztec/foundation/eth-signature';
5
- import { type Fr } from '@aztec/foundation/fields';
5
+ import { Fr } from '@aztec/foundation/fields';
6
+ import { type Tuple } from '@aztec/foundation/serialize';
7
+ import { RollupAbi } from '@aztec/l1-artifacts';
6
8
  import { type TelemetryClient } from '@aztec/telemetry-client';
9
+ import { type Chain, type Client, type GetContractReturnType, type HttpTransport, type PrivateKeyAccount, type PublicActions, type PublicRpcSchema, type WalletActions, type WalletClient, type WalletRpcSchema } from 'viem';
10
+ import type * as chains from 'viem/chains';
7
11
  import { type PublisherConfig, type TxSenderConfig } from './config.js';
8
12
  /**
9
13
  * Stats for a sent transaction.
10
14
  */
11
15
  export type TransactionStats = {
16
+ /** Address of the sender. */
17
+ sender: string;
12
18
  /** Hash of the transaction. */
13
19
  transactionHash: string;
14
20
  /** Size in bytes of the tx calldata */
@@ -23,41 +29,28 @@ export type MinimalTransactionReceipt = {
23
29
  /** True if the tx was successful, false if reverted. */
24
30
  status: boolean;
25
31
  /** Hash of the transaction. */
26
- transactionHash: string;
32
+ transactionHash: `0x${string}`;
27
33
  /** Effective gas used by the tx. */
28
34
  gasUsed: bigint;
29
35
  /** Effective gas price paid by the tx. */
30
36
  gasPrice: bigint;
31
37
  /** Logs emitted in this tx. */
32
38
  logs: any[];
39
+ /** Block number in which this tx was mined. */
40
+ blockNumber: bigint;
33
41
  };
34
- /** Arguments to the process method of the rollup contract */
35
- export type L1ProcessArgs = {
36
- /** The L2 block header. */
37
- header: Buffer;
38
- /** A root of the archive tree after the L2 block is applied. */
39
- archive: Buffer;
40
- /** The L2 block's leaf in the archive tree. */
41
- blockHash: Buffer;
42
- /** L2 block body. */
43
- body: Buffer;
44
- /** L2 block tx hashes */
45
- txHashes: TxHash[];
46
- /** Attestations */
47
- attestations?: Signature[];
48
- };
49
- /** Arguments to the submitProof method of the rollup contract */
50
- export type L1SubmitProofArgs = {
51
- /** The L2 block header. */
52
- header: Buffer;
53
- /** A root of the archive tree after the L2 block is applied. */
54
- archive: Buffer;
55
- /** Identifier of the prover. */
56
- proverId: Buffer;
57
- /** The proof for the block. */
58
- proof: Buffer;
59
- /** The aggregation object for the block's proof. */
60
- aggregationObject: Buffer;
42
+ /** Arguments to the submitEpochProof method of the rollup contract */
43
+ export type L1SubmitEpochProofArgs = {
44
+ epochSize: number;
45
+ previousArchive: Fr;
46
+ endArchive: Fr;
47
+ previousBlockHash: Fr;
48
+ endBlockHash: Fr;
49
+ endTimestamp: Fr;
50
+ outHash: Fr;
51
+ proverId: Fr;
52
+ fees: Tuple<FeeRecipient, typeof AZTEC_EPOCH_DURATION>;
53
+ proof: Proof;
61
54
  };
62
55
  /**
63
56
  * Publishes L2 blocks to L1. This implementation does *not* retry a transaction in
@@ -72,13 +65,20 @@ export declare class L1Publisher {
72
65
  private sleepTimeMs;
73
66
  private interrupted;
74
67
  private metrics;
75
- private log;
68
+ protected log: import("@aztec/foundation/log").Logger;
76
69
  private rollupContract;
77
70
  private publicClient;
71
+ private walletClient;
78
72
  private account;
79
73
  static PROPOSE_GAS_GUESS: bigint;
74
+ static PROPOSE_AND_CLAIM_GAS_GUESS: bigint;
80
75
  constructor(config: TxSenderConfig & PublisherConfig, client: TelemetryClient);
81
- getSenderAddress(): Promise<EthAddress>;
76
+ getSenderAddress(): EthAddress;
77
+ getClient(): Client<HttpTransport, Chain, PrivateKeyAccount, [
78
+ ...WalletRpcSchema,
79
+ ...PublicRpcSchema
80
+ ], PublicActions<HttpTransport, Chain> & WalletActions<Chain, PrivateKeyAccount>>;
81
+ getRollupContract(): GetContractReturnType<typeof RollupAbi, WalletClient<HttpTransport, chains.Chain, PrivateKeyAccount>>;
82
82
  /**
83
83
  * @notice Calls `canProposeAtTime` with the time of the next Ethereum block and the sender address
84
84
  *
@@ -89,6 +89,11 @@ export declare class L1Publisher {
89
89
  * @return blockNumber - The L2 block number of the next L2 block
90
90
  */
91
91
  canProposeAtNextEthBlock(archive: Buffer): Promise<[bigint, bigint]>;
92
+ nextEpochToClaim(): Promise<bigint>;
93
+ getEpochForSlotNumber(slotNumber: bigint): Promise<bigint>;
94
+ getEpochToProve(): Promise<bigint | undefined>;
95
+ getProofClaim(): Promise<EpochProofClaim | undefined>;
96
+ validateProofQuote(quote: EpochProofQuote): Promise<EpochProofQuote | undefined>;
92
97
  /**
93
98
  * @notice Will call `validateHeader` to make sure that it is possible to propose
94
99
  *
@@ -109,8 +114,16 @@ export declare class L1Publisher {
109
114
  * @param block - L2 block to propose.
110
115
  * @returns True once the tx has been confirmed and is successful, false on revert or interrupt, blocks otherwise.
111
116
  */
112
- proposeL2Block(block: L2Block, attestations?: Signature[], txHashes?: TxHash[]): Promise<boolean>;
113
- submitProof(header: Header, archiveRoot: Fr, proverId: Fr, aggregationObject: Fr[], proof: Proof): Promise<boolean>;
117
+ proposeL2Block(block: L2Block, attestations?: Signature[], txHashes?: TxHash[], proofQuote?: EpochProofQuote): Promise<boolean>;
118
+ private tryGetErrorFromRevertedTx;
119
+ submitEpochProof(args: {
120
+ epochNumber: number;
121
+ fromBlock: number;
122
+ toBlock: number;
123
+ publicInputs: RootRollupPublicInputs;
124
+ proof: Proof;
125
+ }): Promise<boolean>;
126
+ private validateEpochProofSubmission;
114
127
  /**
115
128
  * Calling `interrupt` will cause any in progress call to `publishRollup` to return `false` asap.
116
129
  * Be warned, the call may return false even if the tx subsequently gets successfully mined.
@@ -120,8 +133,11 @@ export declare class L1Publisher {
120
133
  interrupt(): void;
121
134
  /** Restarts the publisher after calling `interrupt`. */
122
135
  restart(): void;
123
- private sendSubmitProofTx;
136
+ private sendSubmitEpochProofTx;
137
+ private prepareProposeTx;
138
+ private getSubmitEpochProofArgs;
124
139
  private sendProposeTx;
140
+ private sendProposeAndClaimTx;
125
141
  /**
126
142
  * Returns a tx receipt if the tx has been mined.
127
143
  * @param txHash - Hash of the tx to look for.
@@ -1 +1 @@
1
- {"version":3,"file":"l1-publisher.d.ts","sourceRoot":"","sources":["../../src/publisher/l1-publisher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"l1-publisher.d.ts","sourceRoot":"","sources":["../../src/publisher/l1-publisher.ts"],"names":[],"mappings":"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"}