@aztec/prover-node 0.76.4-devnet-test-rc3 → 0.77.0-testnet-ignition.17

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 (96) hide show
  1. package/dest/config.d.ts +5 -8
  2. package/dest/config.d.ts.map +1 -1
  3. package/dest/config.js +24 -51
  4. package/dest/factory.d.ts +6 -3
  5. package/dest/factory.d.ts.map +1 -1
  6. package/dest/factory.js +23 -45
  7. package/dest/http.d.ts +1 -1
  8. package/dest/http.d.ts.map +1 -1
  9. package/dest/http.js +2 -4
  10. package/dest/index.js +0 -1
  11. package/dest/job/epoch-proving-job.d.ts +8 -4
  12. package/dest/job/epoch-proving-job.d.ts.map +1 -1
  13. package/dest/job/epoch-proving-job.js +233 -190
  14. package/dest/metrics.d.ts +5 -2
  15. package/dest/metrics.d.ts.map +1 -1
  16. package/dest/metrics.js +50 -25
  17. package/dest/monitors/epoch-monitor.d.ts +22 -4
  18. package/dest/monitors/epoch-monitor.d.ts.map +1 -1
  19. package/dest/monitors/epoch-monitor.js +102 -48
  20. package/dest/monitors/index.d.ts +0 -1
  21. package/dest/monitors/index.d.ts.map +1 -1
  22. package/dest/monitors/index.js +0 -2
  23. package/dest/prover-coordination/config.js +2 -3
  24. package/dest/prover-coordination/factory.d.ts +5 -5
  25. package/dest/prover-coordination/factory.d.ts.map +1 -1
  26. package/dest/prover-coordination/factory.js +11 -8
  27. package/dest/prover-coordination/index.js +0 -1
  28. package/dest/prover-node-publisher.d.ts +5 -11
  29. package/dest/prover-node-publisher.d.ts.map +1 -1
  30. package/dest/prover-node-publisher.js +68 -61
  31. package/dest/prover-node.d.ts +23 -32
  32. package/dest/prover-node.d.ts.map +1 -1
  33. package/dest/prover-node.js +237 -289
  34. package/dest/test/index.d.ts +2 -2
  35. package/dest/test/index.d.ts.map +1 -1
  36. package/dest/test/index.js +2 -1
  37. package/package.json +21 -22
  38. package/src/config.ts +18 -62
  39. package/src/factory.ts +18 -47
  40. package/src/http.ts +2 -2
  41. package/src/job/epoch-proving-job.ts +15 -13
  42. package/src/metrics.ts +26 -5
  43. package/src/monitors/epoch-monitor.ts +57 -13
  44. package/src/monitors/index.ts +0 -1
  45. package/src/prover-coordination/factory.ts +9 -12
  46. package/src/prover-node-publisher.ts +29 -24
  47. package/src/prover-node.ts +53 -128
  48. package/src/test/index.ts +2 -2
  49. package/dest/bond/bond-manager.d.ts +0 -22
  50. package/dest/bond/bond-manager.d.ts.map +0 -1
  51. package/dest/bond/bond-manager.js +0 -42
  52. package/dest/bond/config.d.ts +0 -8
  53. package/dest/bond/config.d.ts.map +0 -1
  54. package/dest/bond/config.js +0 -17
  55. package/dest/bond/escrow-contract.d.ts +0 -19
  56. package/dest/bond/escrow-contract.d.ts.map +0 -1
  57. package/dest/bond/escrow-contract.js +0 -32
  58. package/dest/bond/factory.d.ts +0 -6
  59. package/dest/bond/factory.d.ts.map +0 -1
  60. package/dest/bond/factory.js +0 -17
  61. package/dest/bond/index.d.ts +0 -3
  62. package/dest/bond/index.d.ts.map +0 -1
  63. package/dest/bond/index.js +0 -3
  64. package/dest/bond/token-contract.d.ts +0 -26
  65. package/dest/bond/token-contract.d.ts.map +0 -1
  66. package/dest/bond/token-contract.js +0 -58
  67. package/dest/monitors/claims-monitor.d.ts +0 -24
  68. package/dest/monitors/claims-monitor.d.ts.map +0 -1
  69. package/dest/monitors/claims-monitor.js +0 -54
  70. package/dest/quote-provider/http.d.ts +0 -15
  71. package/dest/quote-provider/http.d.ts.map +0 -1
  72. package/dest/quote-provider/http.js +0 -33
  73. package/dest/quote-provider/index.d.ts +0 -6
  74. package/dest/quote-provider/index.d.ts.map +0 -1
  75. package/dest/quote-provider/index.js +0 -2
  76. package/dest/quote-provider/simple.d.ts +0 -9
  77. package/dest/quote-provider/simple.d.ts.map +0 -1
  78. package/dest/quote-provider/simple.js +0 -11
  79. package/dest/quote-provider/utils.d.ts +0 -4
  80. package/dest/quote-provider/utils.d.ts.map +0 -1
  81. package/dest/quote-provider/utils.js +0 -8
  82. package/dest/quote-signer.d.ts +0 -13
  83. package/dest/quote-signer.d.ts.map +0 -1
  84. package/dest/quote-signer.js +0 -18
  85. package/src/bond/bond-manager.ts +0 -48
  86. package/src/bond/config.ts +0 -25
  87. package/src/bond/escrow-contract.ts +0 -50
  88. package/src/bond/factory.ts +0 -28
  89. package/src/bond/index.ts +0 -2
  90. package/src/bond/token-contract.ts +0 -72
  91. package/src/monitors/claims-monitor.ts +0 -69
  92. package/src/quote-provider/http.ts +0 -48
  93. package/src/quote-provider/index.ts +0 -8
  94. package/src/quote-provider/simple.ts +0 -15
  95. package/src/quote-provider/utils.ts +0 -10
  96. package/src/quote-signer.ts +0 -24
@@ -1,7 +1,5 @@
1
- import { type L1PublishProofStats } from '@aztec/circuit-types/stats';
2
- import { AGGREGATION_OBJECT_LENGTH, AZTEC_MAX_EPOCH_DURATION, type Proof } from '@aztec/circuits.js';
3
- import { type FeeRecipient, type RootRollupPublicInputs } from '@aztec/circuits.js/rollup';
4
- import { type L1TxUtils, type RollupContract } from '@aztec/ethereum';
1
+ import { AGGREGATION_OBJECT_LENGTH, AZTEC_MAX_EPOCH_DURATION } from '@aztec/constants';
2
+ import type { L1TxUtils, RollupContract } from '@aztec/ethereum';
5
3
  import { makeTuple } from '@aztec/foundation/array';
6
4
  import { areArraysEqual, times } from '@aztec/foundation/collection';
7
5
  import { EthAddress } from '@aztec/foundation/eth-address';
@@ -11,7 +9,10 @@ import { type Tuple, serializeToBuffer } from '@aztec/foundation/serialize';
11
9
  import { InterruptibleSleep } from '@aztec/foundation/sleep';
12
10
  import { Timer } from '@aztec/foundation/timer';
13
11
  import { RollupAbi } from '@aztec/l1-artifacts';
14
- import { type PublisherConfig, type TxSenderConfig } from '@aztec/sequencer-client';
12
+ import type { PublisherConfig, TxSenderConfig } from '@aztec/sequencer-client';
13
+ import type { Proof } from '@aztec/stdlib/proofs';
14
+ import type { FeeRecipient, RootRollupPublicInputs } from '@aztec/stdlib/rollup';
15
+ import type { L1PublishProofStats } from '@aztec/stdlib/stats';
15
16
  import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
16
17
 
17
18
  import { type Hex, type TransactionReceipt, encodeFunctionData } from 'viem';
@@ -85,10 +86,6 @@ export class ProverNodePublisher {
85
86
  return EthAddress.fromString(this.l1TxUtils.getSenderAddress());
86
87
  }
87
88
 
88
- public getProofClaim() {
89
- return this.rollupContract.getProofClaim();
90
- }
91
-
92
89
  public async submitEpochProof(args: {
93
90
  epochNumber: number;
94
91
  fromBlock: number;
@@ -109,6 +106,12 @@ export class ProverNodePublisher {
109
106
  return false;
110
107
  }
111
108
 
109
+ try {
110
+ this.metrics.recordSenderBalance(await this.l1TxUtils.getSenderBalance(), this.l1TxUtils.getSenderAddress());
111
+ } catch (err) {
112
+ this.log.warn(`Failed to record the ETH balance of the prover node: ${err}`);
113
+ }
114
+
112
115
  // Tx was mined successfully
113
116
  if (txReceipt.status) {
114
117
  const tx = await this.l1TxUtils.getTransactionStats(txReceipt.transactionHash);
@@ -205,11 +208,12 @@ export class ProverNodePublisher {
205
208
 
206
209
  const txArgs = [
207
210
  {
208
- epochSize: argsArray[0],
209
- args: argsArray[1],
210
- fees: argsArray[2],
211
- blobPublicInputs: argsArray[3],
212
- aggregationObject: argsArray[4],
211
+ start: argsArray[0],
212
+ end: argsArray[1],
213
+ args: argsArray[2],
214
+ fees: argsArray[3],
215
+ blobPublicInputs: argsArray[4],
216
+ aggregationObject: argsArray[5],
213
217
  proof: proofHex,
214
218
  },
215
219
  ] as const;
@@ -252,16 +256,17 @@ export class ProverNodePublisher {
252
256
  proof: Proof;
253
257
  }) {
254
258
  return [
255
- BigInt(args.toBlock - args.fromBlock + 1),
256
- [
257
- args.publicInputs.previousArchive.root.toString(),
258
- args.publicInputs.endArchive.root.toString(),
259
- args.publicInputs.previousBlockHash.toString(),
260
- args.publicInputs.endBlockHash.toString(),
261
- args.publicInputs.endTimestamp.toString(),
262
- args.publicInputs.outHash.toString(),
263
- args.publicInputs.proverId.toString(),
264
- ],
259
+ BigInt(args.fromBlock),
260
+ BigInt(args.toBlock),
261
+ {
262
+ previousArchive: args.publicInputs.previousArchive.root.toString(),
263
+ endArchive: args.publicInputs.endArchive.root.toString(),
264
+ previousBlockHash: args.publicInputs.previousBlockHash.toString(),
265
+ endBlockHash: args.publicInputs.endBlockHash.toString(),
266
+ endTimestamp: args.publicInputs.endTimestamp.toBigInt(),
267
+ outHash: args.publicInputs.outHash.toString(),
268
+ proverId: EthAddress.fromField(args.publicInputs.proverId).toString(),
269
+ },
265
270
  makeTuple(AZTEC_MAX_EPOCH_DURATION * 2, i =>
266
271
  i % 2 === 0
267
272
  ? args.publicInputs.fees[i / 2].recipient.toField().toString()
@@ -1,30 +1,26 @@
1
+ import { compact } from '@aztec/foundation/collection';
2
+ import { memoize } from '@aztec/foundation/decorators';
3
+ import { createLogger } from '@aztec/foundation/log';
4
+ import { RunningPromise } from '@aztec/foundation/running-promise';
5
+ import { DateProvider } from '@aztec/foundation/timer';
6
+ import type { Maybe } from '@aztec/foundation/types';
7
+ import type { P2P } from '@aztec/p2p';
8
+ import { PublicProcessorFactory } from '@aztec/simulator/server';
9
+ import type { L2Block, L2BlockSource } from '@aztec/stdlib/block';
10
+ import type { ContractDataSource } from '@aztec/stdlib/contract';
11
+ import { getTimestampRangeForEpoch } from '@aztec/stdlib/epoch-helpers';
1
12
  import {
2
- type EpochProofClaim,
3
- type EpochProofQuote,
4
- EpochProofQuotePayload,
5
13
  type EpochProverManager,
6
- type L1ToL2MessageSource,
7
- type L2Block,
8
- type L2BlockSource,
9
- type P2PClientType,
14
+ EpochProvingJobTerminalState,
10
15
  type ProverCoordination,
11
16
  type ProverNodeApi,
12
17
  type Service,
13
- type Tx,
14
- type TxHash,
15
18
  type WorldStateSynchronizer,
16
- getTimestampRangeForEpoch,
17
19
  tryStop,
18
- } from '@aztec/circuit-types';
19
- import { type ContractDataSource } from '@aztec/circuits.js';
20
- import { compact } from '@aztec/foundation/collection';
21
- import { memoize } from '@aztec/foundation/decorators';
22
- import { createLogger } from '@aztec/foundation/log';
23
- import { RunningPromise } from '@aztec/foundation/running-promise';
24
- import { DateProvider } from '@aztec/foundation/timer';
25
- import { type Maybe } from '@aztec/foundation/types';
26
- import { type P2P } from '@aztec/p2p';
27
- import { PublicProcessorFactory } from '@aztec/simulator/server';
20
+ } from '@aztec/stdlib/interfaces/server';
21
+ import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
22
+ import type { P2PClientType } from '@aztec/stdlib/p2p';
23
+ import type { Tx, TxHash } from '@aztec/stdlib/tx';
28
24
  import {
29
25
  Attributes,
30
26
  type TelemetryClient,
@@ -34,14 +30,10 @@ import {
34
30
  trackSpan,
35
31
  } from '@aztec/telemetry-client';
36
32
 
37
- import { type BondManager } from './bond/bond-manager.js';
38
33
  import { EpochProvingJob, type EpochProvingJobState } from './job/epoch-proving-job.js';
39
34
  import { ProverNodeMetrics } from './metrics.js';
40
- import { type ClaimsMonitor, type ClaimsMonitorHandler } from './monitors/claims-monitor.js';
41
- import { type EpochMonitor, type EpochMonitorHandler } from './monitors/epoch-monitor.js';
42
- import { type ProverNodePublisher } from './prover-node-publisher.js';
43
- import { type QuoteProvider } from './quote-provider/index.js';
44
- import { type QuoteSigner } from './quote-signer.js';
35
+ import type { EpochMonitor, EpochMonitorHandler } from './monitors/epoch-monitor.js';
36
+ import type { ProverNodePublisher } from './prover-node-publisher.js';
45
37
 
46
38
  export type ProverNodeOptions = {
47
39
  pollingIntervalMs: number;
@@ -58,7 +50,7 @@ export type ProverNodeOptions = {
58
50
  * from a tx source in the p2p network or an external node, re-executes their public functions, creates a rollup
59
51
  * proof for the epoch, and submits it to L1.
60
52
  */
61
- export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, ProverNodeApi, Traceable {
53
+ export class ProverNode implements EpochMonitorHandler, ProverNodeApi, Traceable {
62
54
  private log = createLogger('prover-node');
63
55
  private dateProvider = new DateProvider();
64
56
 
@@ -81,11 +73,7 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, Pr
81
73
  protected readonly contractDataSource: ContractDataSource,
82
74
  protected readonly worldState: WorldStateSynchronizer,
83
75
  protected readonly coordination: ProverCoordination & Maybe<Service>,
84
- protected readonly quoteProvider: QuoteProvider,
85
- protected readonly quoteSigner: QuoteSigner,
86
- protected readonly claimsMonitor: ClaimsMonitor,
87
76
  protected readonly epochsMonitor: EpochMonitor,
88
- protected readonly bondManager: BondManager,
89
77
  options: Partial<ProverNodeOptions> = {},
90
78
  protected readonly telemetryClient: TelemetryClient = getTelemetryClient(),
91
79
  ) {
@@ -104,6 +92,10 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, Pr
104
92
  this.txFetcher = new RunningPromise(() => this.checkForTxs(), this.log, this.options.txGatheringIntervalMs);
105
93
  }
106
94
 
95
+ public getProverId() {
96
+ return this.prover.getProverId();
97
+ }
98
+
107
99
  public getP2P() {
108
100
  const asP2PClient = this.coordination as P2P<P2PClientType.Prover>;
109
101
  if (typeof asP2PClient.isP2PClient === 'function' && asP2PClient.isP2PClient()) {
@@ -112,89 +104,23 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, Pr
112
104
  return undefined;
113
105
  }
114
106
 
115
- async handleClaim(proofClaim: EpochProofClaim): Promise<void> {
116
- if (proofClaim.epochToProve === this.latestEpochWeAreProving) {
117
- this.log.verbose(`Already proving claim for epoch ${proofClaim.epochToProve}`);
118
- return;
119
- }
120
-
121
- const provenEpoch = await this.l2BlockSource.getProvenL2EpochNumber();
122
- if (provenEpoch !== undefined && proofClaim.epochToProve <= provenEpoch) {
123
- this.log.verbose(`Claim for epoch ${proofClaim.epochToProve} is already proven`);
124
- return;
125
- }
126
-
127
- try {
128
- await this.startProof(proofClaim.epochToProve);
129
- this.latestEpochWeAreProving = proofClaim.epochToProve;
130
- } catch (err) {
131
- this.log.error(`Error handling claim for epoch ${proofClaim.epochToProve}`, err);
132
- }
133
-
134
- try {
135
- // Staked amounts are lowered after a claim, so this is a good time for doing a top-up if needed
136
- await this.bondManager.ensureBond();
137
- } catch (err) {
138
- this.log.error(`Error ensuring prover bond after handling claim for epoch ${proofClaim.epochToProve}`, err);
139
- }
140
- }
141
-
142
107
  /**
143
- * Handles the epoch number to prove when the prover node starts by checking if there
144
- * is an existing claim for it. If not, it creates and sends a quote for it.
145
- * @param epochNumber - The epoch immediately before the current one when the prover node starts.
146
- */
147
- async handleInitialEpochSync(epochNumber: bigint): Promise<void> {
148
- try {
149
- const claim = await this.publisher.getProofClaim();
150
- if (!claim || claim.epochToProve < epochNumber) {
151
- this.log.verbose(`Handling epoch ${epochNumber} completed as initial sync`);
152
- await this.handleEpochCompleted(epochNumber);
153
- }
154
- } catch (err) {
155
- this.log.error(`Error handling initial epoch sync`, err);
156
- }
157
- }
158
-
159
- /**
160
- * Handles an epoch being completed by sending a quote for proving it.
108
+ * Handles an epoch being completed by starting a proof for it if there are no active jobs for it.
161
109
  * @param epochNumber - The epoch number that was just completed.
162
110
  */
163
- async handleEpochCompleted(epochNumber: bigint): Promise<void> {
111
+ async handleEpochReadyToProve(epochNumber: bigint): Promise<void> {
164
112
  try {
165
- // Gather data for the epoch
166
- const epochData = await this.gatherEpochData(epochNumber);
167
- const { blocks } = epochData;
168
- this.cachedEpochData = { epochNumber, ...epochData };
169
-
170
- // Construct a quote for the epoch
171
- const partialQuote = await this.quoteProvider.getQuote(Number(epochNumber), blocks);
172
- if (!partialQuote) {
173
- this.log.info(`No quote produced for epoch ${epochNumber}`);
113
+ this.log.debug('jobs', JSON.stringify(this.jobs, null, 2));
114
+ const activeJobs = await this.getActiveJobsForEpoch(epochNumber);
115
+ if (activeJobs.length > 0) {
116
+ this.log.info(`Not starting proof for ${epochNumber} since there are active jobs`);
174
117
  return;
175
118
  }
176
-
177
- // Ensure we have deposited enough funds for sending this quote
178
- await this.bondManager.ensureBond(partialQuote.bondAmount);
179
-
180
- // Assemble and sign full quote
181
- const quote = EpochProofQuotePayload.from({
182
- ...partialQuote,
183
- epochToProve: BigInt(epochNumber),
184
- prover: this.publisher.getSenderAddress(),
185
- validUntilSlot: partialQuote.validUntilSlot ?? BigInt(Number.MAX_SAFE_INTEGER), // Should we constrain this?
186
- });
187
- const signed = await this.quoteSigner.sign(quote);
188
-
189
- // Send it to the coordinator
190
- this.log.info(
191
- `Sending quote for epoch ${epochNumber} with blocks ${blocks[0].number} to ${blocks.at(-1)!.number}`,
192
- quote.toViemArgs(),
193
- );
194
- await this.doSendEpochProofQuote(signed);
119
+ // TODO: we probably want to skip starting a proof if we are too far into the current epoch
120
+ await this.startProof(epochNumber);
195
121
  } catch (err) {
196
122
  if (err instanceof EmptyEpochError) {
197
- this.log.info(`Not producing quote for ${epochNumber} since no blocks were found`);
123
+ this.log.info(`Not starting proof for ${epochNumber} since no blocks were found`);
198
124
  } else {
199
125
  this.log.error(`Error handling epoch completed`, err);
200
126
  }
@@ -202,15 +128,12 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, Pr
202
128
  }
203
129
 
204
130
  /**
205
- * Starts the prover node so it periodically checks for unproven epochs in the unfinalised chain from L1 and sends
206
- * quotes for them, as well as monitors the claims for the epochs it has sent quotes for and starts proving jobs.
207
- * This method returns once the prover node has deposited an initial bond into the escrow contract.
131
+ * Starts the prover node so it periodically checks for unproven epochs in the unfinalised chain from L1 and
132
+ * starts proving jobs for them.
208
133
  */
209
- async start() {
134
+ start() {
210
135
  this.txFetcher.start();
211
- await this.bondManager.ensureBond();
212
136
  this.epochsMonitor.start(this);
213
- this.claimsMonitor.start(this);
214
137
  this.log.info('Started ProverNode', this.options);
215
138
  }
216
139
 
@@ -221,7 +144,6 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, Pr
221
144
  this.log.info('Stopping ProverNode');
222
145
  await this.txFetcher.stop();
223
146
  await this.epochsMonitor.stop();
224
- await this.claimsMonitor.stop();
225
147
  await this.prover.stop();
226
148
  await tryStop(this.l2BlockSource);
227
149
  this.publisher.interrupt();
@@ -232,16 +154,6 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, Pr
232
154
  this.log.info('Stopped ProverNode');
233
155
  }
234
156
 
235
- /** Sends an epoch proof quote to the coordinator. */
236
- public sendEpochProofQuote(quote: EpochProofQuote): Promise<void> {
237
- this.log.info(`Sending quote for epoch`, quote.toViemArgs().quote);
238
- return this.doSendEpochProofQuote(quote);
239
- }
240
-
241
- private doSendEpochProofQuote(quote: EpochProofQuote) {
242
- return this.coordination.addEpochProofQuote(quote);
243
- }
244
-
245
157
  /**
246
158
  * Creates a proof for a block range. Returns once the proof has been submitted to L1.
247
159
  */
@@ -268,8 +180,22 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, Pr
268
180
  /**
269
181
  * Returns an array of jobs being processed.
270
182
  */
271
- public getJobs(): Promise<{ uuid: string; status: EpochProvingJobState }[]> {
272
- return Promise.resolve(Array.from(this.jobs.entries()).map(([uuid, job]) => ({ uuid, status: job.getState() })));
183
+ public getJobs(): Promise<{ uuid: string; status: EpochProvingJobState; epochNumber: number }[]> {
184
+ return Promise.resolve(
185
+ Array.from(this.jobs.entries()).map(([uuid, job]) => ({
186
+ uuid,
187
+ status: job.getState(),
188
+ epochNumber: Number(job.getEpochNumber()),
189
+ })),
190
+ );
191
+ }
192
+
193
+ protected async getActiveJobsForEpoch(
194
+ epochBigInt: bigint,
195
+ ): Promise<{ uuid: string; status: EpochProvingJobState }[]> {
196
+ const jobs = await this.getJobs();
197
+ const epochNumber = Number(epochBigInt);
198
+ return jobs.filter(job => job.epochNumber === epochNumber && !EpochProvingJobTerminalState.includes(job.status));
273
199
  }
274
200
 
275
201
  private checkMaximumPendingJobs() {
@@ -292,7 +218,7 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, Pr
292
218
 
293
219
  // Fast forward world state to right before the target block and get a fork
294
220
  this.log.verbose(`Creating proving job for epoch ${epochNumber} for block range ${fromBlock} to ${toBlock}`);
295
- await this.worldState.syncImmediate(fromBlock - 1);
221
+ await this.worldState.syncImmediate(toBlock);
296
222
 
297
223
  // Create a processor using the forked world state
298
224
  const publicProcessorFactory = new PublicProcessorFactory(
@@ -329,7 +255,7 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, Pr
329
255
  return;
330
256
  }
331
257
  const txHashes = block.body.txEffects.map(tx => tx.txHash);
332
- this.log.verbose(`Fetching ${txHashes.length} for block number ${blockNumber} from coordination`);
258
+ this.log.verbose(`Fetching ${txHashes.length} tx hashes for block number ${blockNumber} from coordination`);
333
259
  await this.coordination.getTxsByHash(txHashes); // This stores the txs in the tx pool, no need to persist them here
334
260
  this.lastBlockNumber = blockNumber;
335
261
  }
@@ -398,7 +324,6 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, Pr
398
324
  /** Extracted for testing purposes. */
399
325
  protected async triggerMonitors() {
400
326
  await this.epochsMonitor.work();
401
- await this.claimsMonitor.work();
402
327
  }
403
328
  }
404
329
 
package/src/test/index.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { type EpochProverManager } from '@aztec/circuit-types';
1
+ import type { EpochProverManager } from '@aztec/stdlib/interfaces/server';
2
2
 
3
- import { type ProverNodePublisher } from '../prover-node-publisher.js';
3
+ import type { ProverNodePublisher } from '../prover-node-publisher.js';
4
4
  import { ProverNode } from '../prover-node.js';
5
5
 
6
6
  class TestProverNode_ extends ProverNode {
@@ -1,22 +0,0 @@
1
- import { type EscrowContract } from './escrow-contract.js';
2
- import { type TokenContract } from './token-contract.js';
3
- export declare class BondManager {
4
- private readonly tokenContract;
5
- private readonly escrowContract;
6
- /** Minimum escrowed bond. A top-up will be issued once this threshold is hit. */
7
- minimumAmount: bigint;
8
- /** Target escrowed bond. Top-up will target this value. */
9
- targetAmount: bigint;
10
- private readonly logger;
11
- constructor(tokenContract: TokenContract, escrowContract: EscrowContract,
12
- /** Minimum escrowed bond. A top-up will be issued once this threshold is hit. */
13
- minimumAmount: bigint,
14
- /** Target escrowed bond. Top-up will target this value. */
15
- targetAmount: bigint);
16
- /**
17
- * Ensures the bond is at least minimumBond, or sends a tx to deposit the remaining to reach targetBond.
18
- * @param overrideMinimum - Override the minimum bond threshold. Also overrides target if it is higher.
19
- */
20
- ensureBond(overrideMinimum?: bigint): Promise<void>;
21
- }
22
- //# sourceMappingURL=bond-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bond-manager.d.ts","sourceRoot":"","sources":["../../src/bond/bond-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,qBAAa,WAAW;IAIpB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,iFAAiF;IAC1E,aAAa,EAAE,MAAM;IAC5B,2DAA2D;IACpD,YAAY,EAAE,MAAM;IAR7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4C;gBAGhD,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc;IAC/C,iFAAiF;IAC1E,aAAa,EAAE,MAAM;IAC5B,2DAA2D;IACpD,YAAY,EAAE,MAAM;IAG7B;;;OAGG;IACU,UAAU,CAAC,eAAe,CAAC,EAAE,MAAM;CA0BjD"}
@@ -1,42 +0,0 @@
1
- import { createLogger } from '@aztec/foundation/log';
2
- export class BondManager {
3
- constructor(tokenContract, escrowContract,
4
- /** Minimum escrowed bond. A top-up will be issued once this threshold is hit. */
5
- minimumAmount,
6
- /** Target escrowed bond. Top-up will target this value. */
7
- targetAmount) {
8
- this.tokenContract = tokenContract;
9
- this.escrowContract = escrowContract;
10
- this.minimumAmount = minimumAmount;
11
- this.targetAmount = targetAmount;
12
- this.logger = createLogger('prover-node:bond-manager');
13
- }
14
- /**
15
- * Ensures the bond is at least minimumBond, or sends a tx to deposit the remaining to reach targetBond.
16
- * @param overrideMinimum - Override the minimum bond threshold. Also overrides target if it is higher.
17
- */
18
- async ensureBond(overrideMinimum) {
19
- const minimum = overrideMinimum ?? this.minimumAmount;
20
- const target = overrideMinimum && overrideMinimum > this.targetAmount ? overrideMinimum : this.targetAmount;
21
- try {
22
- const current = await this.escrowContract.getProverDeposit();
23
- if (current >= minimum) {
24
- this.logger.debug(`Current prover bond ${current} is above minimum ${minimum}`);
25
- return;
26
- }
27
- const topUpAmount = target - current;
28
- this.logger.verbose(`Prover bond top-up ${topUpAmount} required to get ${current} to target ${target}`);
29
- const balance = await this.tokenContract.getBalance();
30
- if (balance < topUpAmount) {
31
- throw new Error(`Not enough balance to top-up prover bond: ${balance} < ${topUpAmount}`);
32
- }
33
- await this.tokenContract.ensureAllowance(this.escrowContract.getEscrowAddress());
34
- await this.escrowContract.depositProverBond(topUpAmount);
35
- this.logger.verbose(`Prover bond top-up of ${topUpAmount} completed`);
36
- }
37
- catch (err) {
38
- throw new Error(`Could not set prover bond: ${err}`);
39
- }
40
- }
41
- }
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9uZC1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JvbmQvYm9uZC1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUtyRCxNQUFNLE9BQU8sV0FBVztJQUd0QixZQUNtQixhQUE0QixFQUM1QixjQUE4QjtJQUMvQyxpRkFBaUY7SUFDMUUsYUFBcUI7SUFDNUIsMkRBQTJEO0lBQ3BELFlBQW9CO1FBTFYsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRXhDLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBRXJCLGlCQUFZLEdBQVosWUFBWSxDQUFRO1FBUlosV0FBTSxHQUFHLFlBQVksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBU2hFLENBQUM7SUFFSjs7O09BR0c7SUFDSSxLQUFLLENBQUMsVUFBVSxDQUFDLGVBQXdCO1FBQzlDLE1BQU0sT0FBTyxHQUFHLGVBQWUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3RELE1BQU0sTUFBTSxHQUFHLGVBQWUsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBRTVHLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzdELElBQUksT0FBTyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsT0FBTyxxQkFBcUIsT0FBTyxFQUFFLENBQUMsQ0FBQztnQkFDaEYsT0FBTztZQUNULENBQUM7WUFFRCxNQUFNLFdBQVcsR0FBRyxNQUFNLEdBQUcsT0FBTyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLHNCQUFzQixXQUFXLG9CQUFvQixPQUFPLGNBQWMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUV4RyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdEQsSUFBSSxPQUFPLEdBQUcsV0FBVyxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLE9BQU8sTUFBTSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQzNGLENBQUM7WUFFRCxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQ2pGLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsV0FBVyxZQUFZLENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNILENBQUM7Q0FDRiJ9
@@ -1,8 +0,0 @@
1
- import { type ConfigMappingsType } from '@aztec/foundation/config';
2
- export type ProverBondManagerConfig = {
3
- proverMinimumEscrowAmount: bigint;
4
- proverTargetEscrowAmount?: bigint;
5
- };
6
- export declare const proverBondManagerConfigMappings: ConfigMappingsType<ProverBondManagerConfig>;
7
- export declare function getProverBondManagerConfigFromEnv(): ProverBondManagerConfig;
8
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/bond/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAA6C,MAAM,0BAA0B,CAAC;AAE9G,MAAM,MAAM,uBAAuB,GAAG;IACpC,yBAAyB,EAAE,MAAM,CAAC;IAClC,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,kBAAkB,CAAC,uBAAuB,CAavF,CAAC;AAEF,wBAAgB,iCAAiC,IAAI,uBAAuB,CAE3E"}
@@ -1,17 +0,0 @@
1
- import { bigintConfigHelper, getConfigFromMappings } from '@aztec/foundation/config';
2
- export const proverBondManagerConfigMappings = {
3
- proverMinimumEscrowAmount: {
4
- env: 'PROVER_MINIMUM_ESCROW_AMOUNT',
5
- description: 'Minimum amount to ensure is staked in the escrow contract for this prover. Prover node will top up whenever escrow falls below this number.',
6
- ...bigintConfigHelper(100000n),
7
- },
8
- proverTargetEscrowAmount: {
9
- env: 'PROVER_TARGET_ESCROW_AMOUNT',
10
- description: 'Target amount to ensure is staked in the escrow contract for this prover. Prover node will top up to this value. Defaults to twice the minimum amount.',
11
- ...bigintConfigHelper(),
12
- },
13
- };
14
- export function getProverBondManagerConfigFromEnv() {
15
- return getConfigFromMappings(proverBondManagerConfigMappings);
16
- }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JvbmQvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMkIsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQU85RyxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBZ0Q7SUFDMUYseUJBQXlCLEVBQUU7UUFDekIsR0FBRyxFQUFFLDhCQUE4QjtRQUNuQyxXQUFXLEVBQ1QsNklBQTZJO1FBQy9JLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDO0tBQy9CO0lBQ0Qsd0JBQXdCLEVBQUU7UUFDeEIsR0FBRyxFQUFFLDZCQUE2QjtRQUNsQyxXQUFXLEVBQ1Qsd0pBQXdKO1FBQzFKLEdBQUcsa0JBQWtCLEVBQUU7S0FDeEI7Q0FDRixDQUFDO0FBRUYsTUFBTSxVQUFVLGlDQUFpQztJQUMvQyxPQUFPLHFCQUFxQixDQUEwQiwrQkFBK0IsQ0FBQyxDQUFDO0FBQ3pGLENBQUMifQ==
@@ -1,19 +0,0 @@
1
- import { EthAddress } from '@aztec/circuits.js';
2
- import { type L1Clients } from '@aztec/ethereum';
3
- export declare class EscrowContract {
4
- private readonly client;
5
- private escrow;
6
- constructor(client: L1Clients['walletClient'], address: EthAddress);
7
- /** Returns the deposit of the publisher sender address on the proof commitment escrow contract. */
8
- getProverDeposit(): Promise<bigint>;
9
- /**
10
- * Deposits the given amount of tokens into the proof commitment escrow contract. Returns once the tx is mined.
11
- * @param amount - The amount to deposit.
12
- */
13
- depositProverBond(amount: bigint): Promise<void>;
14
- /** Returns the sender address for the client. */
15
- getSenderAddress(): EthAddress;
16
- getEscrowAddress(): EthAddress;
17
- getTokenAddress(): Promise<EthAddress>;
18
- }
19
- //# sourceMappingURL=escrow-contract.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"escrow-contract.d.ts","sourceRoot":"","sources":["../../src/bond/escrow-contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAYjD,qBAAa,cAAc;IAMb,OAAO,CAAC,QAAQ,CAAC,MAAM;IALnC,OAAO,CAAC,MAAM,CAGZ;gBAE2B,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,UAAU;IAInF,mGAAmG;IACtF,gBAAgB;IAI7B;;;OAGG;IACU,iBAAiB,CAAC,MAAM,EAAE,MAAM;IAK7C,iDAAiD;IAC1C,gBAAgB,IAAI,UAAU;IAI9B,gBAAgB,IAAI,UAAU;IAIxB,eAAe,IAAI,OAAO,CAAC,UAAU,CAAC;CAGpD"}
@@ -1,32 +0,0 @@
1
- import { EthAddress } from '@aztec/circuits.js';
2
- import { IProofCommitmentEscrowAbi } from '@aztec/l1-artifacts';
3
- import { getContract, } from 'viem';
4
- export class EscrowContract {
5
- constructor(client, address) {
6
- this.client = client;
7
- this.escrow = getContract({ address: address.toString(), abi: IProofCommitmentEscrowAbi, client });
8
- }
9
- /** Returns the deposit of the publisher sender address on the proof commitment escrow contract. */
10
- async getProverDeposit() {
11
- return await this.escrow.read.deposits([this.getSenderAddress().toString()]);
12
- }
13
- /**
14
- * Deposits the given amount of tokens into the proof commitment escrow contract. Returns once the tx is mined.
15
- * @param amount - The amount to deposit.
16
- */
17
- async depositProverBond(amount) {
18
- const hash = await this.escrow.write.deposit([amount]);
19
- await this.client.waitForTransactionReceipt({ hash });
20
- }
21
- /** Returns the sender address for the client. */
22
- getSenderAddress() {
23
- return EthAddress.fromString(this.client.account.address);
24
- }
25
- getEscrowAddress() {
26
- return EthAddress.fromString(this.escrow.address);
27
- }
28
- async getTokenAddress() {
29
- return EthAddress.fromString(await this.escrow.read.token());
30
- }
31
- }
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNjcm93LWNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JvbmQvZXNjcm93LWNvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRSxPQUFPLEVBTUwsV0FBVyxHQUNaLE1BQU0sTUFBTSxDQUFDO0FBRWQsTUFBTSxPQUFPLGNBQWM7SUFNekIsWUFBNkIsTUFBaUMsRUFBRSxPQUFtQjtRQUF0RCxXQUFNLEdBQU4sTUFBTSxDQUEyQjtRQUM1RCxJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVELG1HQUFtRztJQUM1RixLQUFLLENBQUMsZ0JBQWdCO1FBQzNCLE9BQU8sTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFjO1FBQzNDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN2RCxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMseUJBQXlCLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxpREFBaUQ7SUFDMUMsZ0JBQWdCO1FBQ3JCLE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZTtRQUMxQixPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7Q0FDRiJ9
@@ -1,6 +0,0 @@
1
- import { type EthAddress } from '@aztec/circuits.js';
2
- import { type L1Clients } from '@aztec/ethereum';
3
- import { BondManager } from './bond-manager.js';
4
- import { type ProverBondManagerConfig } from './config.js';
5
- export declare function createBondManager(escrowContractAddress: EthAddress, client: L1Clients['walletClient'], overrides?: Partial<ProverBondManagerConfig>): Promise<BondManager>;
6
- //# sourceMappingURL=factory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/bond/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,KAAK,uBAAuB,EAAqC,MAAM,aAAa,CAAC;AAI9F,wBAAsB,iBAAiB,CACrC,qBAAqB,EAAE,UAAU,EACjC,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC,EACjC,SAAS,GAAE,OAAO,CAAC,uBAAuB,CAAM,wBAejD"}
@@ -1,17 +0,0 @@
1
- import { compact } from '@aztec/foundation/collection';
2
- import { BondManager } from './bond-manager.js';
3
- import { getProverBondManagerConfigFromEnv } from './config.js';
4
- import { EscrowContract } from './escrow-contract.js';
5
- import { TokenContract } from './token-contract.js';
6
- export async function createBondManager(escrowContractAddress, client, overrides = {}) {
7
- const config = { ...getProverBondManagerConfigFromEnv(), ...compact(overrides) };
8
- const { proverMinimumEscrowAmount: minimumStake, proverTargetEscrowAmount: maybeTargetStake } = config;
9
- const targetStake = maybeTargetStake ?? minimumStake * 2n;
10
- const escrow = new EscrowContract(client, escrowContractAddress);
11
- const tokenContractAddress = await escrow.getTokenAddress();
12
- const token = new TokenContract(client, tokenContractAddress);
13
- // Ensure the prover has enough balance to cover escrow and try to mint otherwise if on a dev environment
14
- await token.ensureBalance(targetStake * 2n);
15
- return new BondManager(token, escrow, minimumStake, targetStake);
16
- }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ib25kL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQWdDLGlDQUFpQyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFcEQsTUFBTSxDQUFDLEtBQUssVUFBVSxpQkFBaUIsQ0FDckMscUJBQWlDLEVBQ2pDLE1BQWlDLEVBQ2pDLFlBQThDLEVBQUU7SUFFaEQsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLGlDQUFpQyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUNqRixNQUFNLEVBQUUseUJBQXlCLEVBQUUsWUFBWSxFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ3ZHLE1BQU0sV0FBVyxHQUFHLGdCQUFnQixJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7SUFFMUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFFakUsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM1RCxNQUFNLEtBQUssR0FBRyxJQUFJLGFBQWEsQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUU5RCx5R0FBeUc7SUFDekcsTUFBTSxLQUFLLENBQUMsYUFBYSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUU1QyxPQUFPLElBQUksV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ25FLENBQUMifQ==
@@ -1,3 +0,0 @@
1
- export { BondManager } from './bond-manager.js';
2
- export * from './factory.js';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bond/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,cAAc,cAAc,CAAC"}
@@ -1,3 +0,0 @@
1
- export { BondManager } from './bond-manager.js';
2
- export * from './factory.js';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYm9uZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsY0FBYyxjQUFjLENBQUMifQ==
@@ -1,26 +0,0 @@
1
- import { EthAddress } from '@aztec/circuits.js';
2
- import { type L1Clients } from '@aztec/ethereum';
3
- export declare class TokenContract {
4
- private readonly client;
5
- private token;
6
- private logger;
7
- constructor(client: L1Clients['walletClient'], address: EthAddress);
8
- /**
9
- * Ensures the allowed address has near-maximum allowance, or sets it otherwise.
10
- * Returns once allowance tx is mined successfully.
11
- * @param allowed - Who to allow.
12
- */
13
- ensureAllowance(allowed: EthAddress): Promise<void>;
14
- /**
15
- * Checks the sender address has enough balance.
16
- * If it doesn't, it tries calling a `mint` method, available on testing environments.
17
- * If it can't, it throws an error.
18
- * @param amount - The balance to ensure.
19
- */
20
- ensureBalance(amount: bigint): Promise<void>;
21
- /** Returns the sender address. */
22
- getSenderAddress(): EthAddress;
23
- /** Returns the balance of the sender. */
24
- getBalance(): Promise<bigint>;
25
- }
26
- //# sourceMappingURL=token-contract.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"token-contract.d.ts","sourceRoot":"","sources":["../../src/bond/token-contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAgBjD,qBAAa,aAAa;IAIZ,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,KAAK,CAAiG;IAC9G,OAAO,CAAC,MAAM,CAA8C;gBAE/B,MAAM,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,UAAU;IAInF;;;;OAIG;IACU,eAAe,CAAC,OAAO,EAAE,UAAU;IAShD;;;;;OAKG;IACU,aAAa,CAAC,MAAM,EAAE,MAAM;IAiBzC,kCAAkC;IAC3B,gBAAgB,IAAI,UAAU;IAIrC,yCAAyC;IAC5B,UAAU;CAGxB"}