@aztec/prover-node 0.76.1 → 0.76.3
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.
- package/dest/config.d.ts +1 -7
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +2 -23
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +3 -32
- package/dest/job/epoch-proving-job.d.ts +1 -0
- package/dest/job/epoch-proving-job.d.ts.map +1 -1
- package/dest/job/epoch-proving-job.js +4 -1
- package/dest/monitors/epoch-monitor.d.ts +0 -1
- package/dest/monitors/epoch-monitor.d.ts.map +1 -1
- package/dest/monitors/epoch-monitor.js +2 -2
- package/dest/monitors/index.d.ts +0 -1
- package/dest/monitors/index.d.ts.map +1 -1
- package/dest/monitors/index.js +1 -2
- package/dest/prover-node-publisher.d.ts +0 -7
- package/dest/prover-node-publisher.d.ts.map +1 -1
- package/dest/prover-node-publisher.js +9 -10
- package/dest/prover-node.d.ts +12 -26
- package/dest/prover-node.d.ts.map +1 -1
- package/dest/prover-node.js +24 -89
- package/package.json +20 -20
- package/src/config.ts +1 -37
- package/src/factory.ts +2 -40
- package/src/job/epoch-proving-job.ts +4 -0
- package/src/monitors/epoch-monitor.ts +1 -2
- package/src/monitors/index.ts +0 -1
- package/src/prover-node-publisher.ts +8 -10
- package/src/prover-node.ts +29 -106
- package/dest/bond/bond-manager.d.ts +0 -22
- package/dest/bond/bond-manager.d.ts.map +0 -1
- package/dest/bond/bond-manager.js +0 -42
- package/dest/bond/config.d.ts +0 -8
- package/dest/bond/config.d.ts.map +0 -1
- package/dest/bond/config.js +0 -17
- package/dest/bond/escrow-contract.d.ts +0 -19
- package/dest/bond/escrow-contract.d.ts.map +0 -1
- package/dest/bond/escrow-contract.js +0 -32
- package/dest/bond/factory.d.ts +0 -6
- package/dest/bond/factory.d.ts.map +0 -1
- package/dest/bond/factory.js +0 -17
- package/dest/bond/index.d.ts +0 -3
- package/dest/bond/index.d.ts.map +0 -1
- package/dest/bond/index.js +0 -3
- package/dest/bond/token-contract.d.ts +0 -26
- package/dest/bond/token-contract.d.ts.map +0 -1
- package/dest/bond/token-contract.js +0 -58
- package/dest/monitors/claims-monitor.d.ts +0 -24
- package/dest/monitors/claims-monitor.d.ts.map +0 -1
- package/dest/monitors/claims-monitor.js +0 -54
- package/dest/quote-provider/http.d.ts +0 -15
- package/dest/quote-provider/http.d.ts.map +0 -1
- package/dest/quote-provider/http.js +0 -33
- package/dest/quote-provider/index.d.ts +0 -6
- package/dest/quote-provider/index.d.ts.map +0 -1
- package/dest/quote-provider/index.js +0 -2
- package/dest/quote-provider/simple.d.ts +0 -9
- package/dest/quote-provider/simple.d.ts.map +0 -1
- package/dest/quote-provider/simple.js +0 -11
- package/dest/quote-provider/utils.d.ts +0 -4
- package/dest/quote-provider/utils.d.ts.map +0 -1
- package/dest/quote-provider/utils.js +0 -8
- package/dest/quote-signer.d.ts +0 -13
- package/dest/quote-signer.d.ts.map +0 -1
- package/dest/quote-signer.js +0 -18
- package/src/bond/bond-manager.ts +0 -48
- package/src/bond/config.ts +0 -25
- package/src/bond/escrow-contract.ts +0 -50
- package/src/bond/factory.ts +0 -28
- package/src/bond/index.ts +0 -2
- package/src/bond/token-contract.ts +0 -72
- package/src/monitors/claims-monitor.ts +0 -69
- package/src/quote-provider/http.ts +0 -48
- package/src/quote-provider/index.ts +0 -8
- package/src/quote-provider/simple.ts +0 -15
- package/src/quote-provider/utils.ts +0 -10
- package/src/quote-signer.ts +0 -24
package/src/prover-node.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
|
-
type EpochProofClaim,
|
|
3
|
-
type EpochProofQuote,
|
|
4
|
-
EpochProofQuotePayload,
|
|
5
2
|
type EpochProverManager,
|
|
3
|
+
EpochProvingJobTerminalState,
|
|
6
4
|
type L1ToL2MessageSource,
|
|
7
5
|
type L2Block,
|
|
8
6
|
type L2BlockSource,
|
|
@@ -34,14 +32,10 @@ import {
|
|
|
34
32
|
trackSpan,
|
|
35
33
|
} from '@aztec/telemetry-client';
|
|
36
34
|
|
|
37
|
-
import { type BondManager } from './bond/bond-manager.js';
|
|
38
35
|
import { EpochProvingJob, type EpochProvingJobState } from './job/epoch-proving-job.js';
|
|
39
36
|
import { ProverNodeMetrics } from './metrics.js';
|
|
40
|
-
import { type ClaimsMonitor, type ClaimsMonitorHandler } from './monitors/claims-monitor.js';
|
|
41
37
|
import { type EpochMonitor, type EpochMonitorHandler } from './monitors/epoch-monitor.js';
|
|
42
38
|
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';
|
|
45
39
|
|
|
46
40
|
export type ProverNodeOptions = {
|
|
47
41
|
pollingIntervalMs: number;
|
|
@@ -58,7 +52,7 @@ export type ProverNodeOptions = {
|
|
|
58
52
|
* from a tx source in the p2p network or an external node, re-executes their public functions, creates a rollup
|
|
59
53
|
* proof for the epoch, and submits it to L1.
|
|
60
54
|
*/
|
|
61
|
-
export class ProverNode implements
|
|
55
|
+
export class ProverNode implements EpochMonitorHandler, ProverNodeApi, Traceable {
|
|
62
56
|
private log = createLogger('prover-node');
|
|
63
57
|
private dateProvider = new DateProvider();
|
|
64
58
|
|
|
@@ -81,11 +75,7 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, Pr
|
|
|
81
75
|
protected readonly contractDataSource: ContractDataSource,
|
|
82
76
|
protected readonly worldState: WorldStateSynchronizer,
|
|
83
77
|
protected readonly coordination: ProverCoordination & Maybe<Service>,
|
|
84
|
-
protected readonly quoteProvider: QuoteProvider,
|
|
85
|
-
protected readonly quoteSigner: QuoteSigner,
|
|
86
|
-
protected readonly claimsMonitor: ClaimsMonitor,
|
|
87
78
|
protected readonly epochsMonitor: EpochMonitor,
|
|
88
|
-
protected readonly bondManager: BondManager,
|
|
89
79
|
options: Partial<ProverNodeOptions> = {},
|
|
90
80
|
protected readonly telemetryClient: TelemetryClient = getTelemetryClient(),
|
|
91
81
|
) {
|
|
@@ -112,89 +102,23 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, Pr
|
|
|
112
102
|
return undefined;
|
|
113
103
|
}
|
|
114
104
|
|
|
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
105
|
/**
|
|
143
|
-
* Handles
|
|
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.
|
|
106
|
+
* Handles an epoch being completed by starting a proof for it if there are no active jobs for it.
|
|
161
107
|
* @param epochNumber - The epoch number that was just completed.
|
|
162
108
|
*/
|
|
163
109
|
async handleEpochCompleted(epochNumber: bigint): Promise<void> {
|
|
164
110
|
try {
|
|
165
|
-
|
|
166
|
-
const
|
|
167
|
-
|
|
168
|
-
|
|
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}`);
|
|
111
|
+
this.log.debug('jobs', JSON.stringify(this.jobs, null, 2));
|
|
112
|
+
const activeJobs = await this.getActiveJobsForEpoch(epochNumber);
|
|
113
|
+
if (activeJobs.length > 0) {
|
|
114
|
+
this.log.info(`Not starting proof for ${epochNumber} since there are active jobs`);
|
|
174
115
|
return;
|
|
175
116
|
}
|
|
176
|
-
|
|
177
|
-
|
|
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);
|
|
117
|
+
// TODO: we probably want to skip starting a proof if we are too far into the current epoch
|
|
118
|
+
await this.startProof(epochNumber);
|
|
195
119
|
} catch (err) {
|
|
196
120
|
if (err instanceof EmptyEpochError) {
|
|
197
|
-
this.log.info(`Not
|
|
121
|
+
this.log.info(`Not starting proof for ${epochNumber} since no blocks were found`);
|
|
198
122
|
} else {
|
|
199
123
|
this.log.error(`Error handling epoch completed`, err);
|
|
200
124
|
}
|
|
@@ -202,15 +126,12 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, Pr
|
|
|
202
126
|
}
|
|
203
127
|
|
|
204
128
|
/**
|
|
205
|
-
* Starts the prover node so it periodically checks for unproven epochs in the unfinalised chain from L1 and
|
|
206
|
-
*
|
|
207
|
-
* This method returns once the prover node has deposited an initial bond into the escrow contract.
|
|
129
|
+
* Starts the prover node so it periodically checks for unproven epochs in the unfinalised chain from L1 and
|
|
130
|
+
* starts proving jobs for them.
|
|
208
131
|
*/
|
|
209
|
-
|
|
132
|
+
start() {
|
|
210
133
|
this.txFetcher.start();
|
|
211
|
-
await this.bondManager.ensureBond();
|
|
212
134
|
this.epochsMonitor.start(this);
|
|
213
|
-
this.claimsMonitor.start(this);
|
|
214
135
|
this.log.info('Started ProverNode', this.options);
|
|
215
136
|
}
|
|
216
137
|
|
|
@@ -221,7 +142,6 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, Pr
|
|
|
221
142
|
this.log.info('Stopping ProverNode');
|
|
222
143
|
await this.txFetcher.stop();
|
|
223
144
|
await this.epochsMonitor.stop();
|
|
224
|
-
await this.claimsMonitor.stop();
|
|
225
145
|
await this.prover.stop();
|
|
226
146
|
await tryStop(this.l2BlockSource);
|
|
227
147
|
this.publisher.interrupt();
|
|
@@ -232,16 +152,6 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, Pr
|
|
|
232
152
|
this.log.info('Stopped ProverNode');
|
|
233
153
|
}
|
|
234
154
|
|
|
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
155
|
/**
|
|
246
156
|
* Creates a proof for a block range. Returns once the proof has been submitted to L1.
|
|
247
157
|
*/
|
|
@@ -268,8 +178,22 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, Pr
|
|
|
268
178
|
/**
|
|
269
179
|
* Returns an array of jobs being processed.
|
|
270
180
|
*/
|
|
271
|
-
public getJobs(): Promise<{ uuid: string; status: EpochProvingJobState }[]> {
|
|
272
|
-
return Promise.resolve(
|
|
181
|
+
public getJobs(): Promise<{ uuid: string; status: EpochProvingJobState; epochNumber: number }[]> {
|
|
182
|
+
return Promise.resolve(
|
|
183
|
+
Array.from(this.jobs.entries()).map(([uuid, job]) => ({
|
|
184
|
+
uuid,
|
|
185
|
+
status: job.getState(),
|
|
186
|
+
epochNumber: Number(job.getEpochNumber()),
|
|
187
|
+
})),
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
protected async getActiveJobsForEpoch(
|
|
192
|
+
epochBigInt: bigint,
|
|
193
|
+
): Promise<{ uuid: string; status: EpochProvingJobState }[]> {
|
|
194
|
+
const jobs = await this.getJobs();
|
|
195
|
+
const epochNumber = Number(epochBigInt);
|
|
196
|
+
return jobs.filter(job => job.epochNumber === epochNumber && !EpochProvingJobTerminalState.includes(job.status));
|
|
273
197
|
}
|
|
274
198
|
|
|
275
199
|
private checkMaximumPendingJobs() {
|
|
@@ -398,7 +322,6 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, Pr
|
|
|
398
322
|
/** Extracted for testing purposes. */
|
|
399
323
|
protected async triggerMonitors() {
|
|
400
324
|
await this.epochsMonitor.work();
|
|
401
|
-
await this.claimsMonitor.work();
|
|
402
325
|
}
|
|
403
326
|
}
|
|
404
327
|
|
|
@@ -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
|
package/dest/bond/config.d.ts
DELETED
|
@@ -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"}
|
package/dest/bond/config.js
DELETED
|
@@ -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
|
package/dest/bond/factory.d.ts
DELETED
|
@@ -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"}
|
package/dest/bond/factory.js
DELETED
|
@@ -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==
|
package/dest/bond/index.d.ts
DELETED
package/dest/bond/index.d.ts.map
DELETED
|
@@ -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"}
|
package/dest/bond/index.js
DELETED
|
@@ -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"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { EthAddress } from '@aztec/circuits.js';
|
|
2
|
-
import { createLogger } from '@aztec/foundation/log';
|
|
3
|
-
import { IERC20Abi, TestERC20Abi } from '@aztec/l1-artifacts';
|
|
4
|
-
import { getContract, } from 'viem';
|
|
5
|
-
const MAX_ALLOWANCE = (1n << 256n) - 1n;
|
|
6
|
-
const MIN_ALLOWANCE = 1n << 255n;
|
|
7
|
-
export class TokenContract {
|
|
8
|
-
constructor(client, address) {
|
|
9
|
-
this.client = client;
|
|
10
|
-
this.logger = createLogger('prover-node:token-contract');
|
|
11
|
-
this.token = getContract({ address: address.toString(), abi: IERC20Abi, client });
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Ensures the allowed address has near-maximum allowance, or sets it otherwise.
|
|
15
|
-
* Returns once allowance tx is mined successfully.
|
|
16
|
-
* @param allowed - Who to allow.
|
|
17
|
-
*/
|
|
18
|
-
async ensureAllowance(allowed) {
|
|
19
|
-
const allowance = await this.token.read.allowance([this.getSenderAddress().toString(), allowed.toString()]);
|
|
20
|
-
if (allowance < MIN_ALLOWANCE) {
|
|
21
|
-
this.logger.verbose(`Approving max allowance for ${allowed.toString()}`);
|
|
22
|
-
const hash = await this.token.write.approve([allowed.toString(), MAX_ALLOWANCE]);
|
|
23
|
-
await this.client.waitForTransactionReceipt({ hash });
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Checks the sender address has enough balance.
|
|
28
|
-
* If it doesn't, it tries calling a `mint` method, available on testing environments.
|
|
29
|
-
* If it can't, it throws an error.
|
|
30
|
-
* @param amount - The balance to ensure.
|
|
31
|
-
*/
|
|
32
|
-
async ensureBalance(amount) {
|
|
33
|
-
const balance = await this.getBalance();
|
|
34
|
-
if (balance < amount) {
|
|
35
|
-
this.logger.verbose(`Balance ${balance} is below required ${amount}. Attempting mint.`);
|
|
36
|
-
const testToken = getContract({ address: this.token.address, abi: TestERC20Abi, client: this.client });
|
|
37
|
-
try {
|
|
38
|
-
await testToken.simulate.mint([this.getSenderAddress().toString(), amount - balance]);
|
|
39
|
-
const hash = await testToken.write.mint([this.getSenderAddress().toString(), amount - balance]);
|
|
40
|
-
await this.client.waitForTransactionReceipt({ hash });
|
|
41
|
-
this.logger.verbose(`Minted ${amount - balance} test tokens`);
|
|
42
|
-
}
|
|
43
|
-
catch (err) {
|
|
44
|
-
this.logger.warn(`Error minting test tokens: ${err}`);
|
|
45
|
-
throw new Error(`Insufficient balance for ${this.getSenderAddress().toString()}: ${balance} < ${amount}`);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
/** Returns the sender address. */
|
|
50
|
-
getSenderAddress() {
|
|
51
|
-
return EthAddress.fromString(this.client.account.address);
|
|
52
|
-
}
|
|
53
|
-
/** Returns the balance of the sender. */
|
|
54
|
-
async getBalance() {
|
|
55
|
-
return await this.token.read.balanceOf([this.getSenderAddress().toString()]);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tY29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYm9uZC90b2tlbi1jb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFOUQsT0FBTyxFQU1MLFdBQVcsR0FDWixNQUFNLE1BQU0sQ0FBQztBQUVkLE1BQU0sYUFBYSxHQUFHLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN4QyxNQUFNLGFBQWEsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDO0FBRWpDLE1BQU0sT0FBTyxhQUFhO0lBSXhCLFlBQTZCLE1BQWlDLEVBQUUsT0FBbUI7UUFBdEQsV0FBTSxHQUFOLE1BQU0sQ0FBMkI7UUFGdEQsV0FBTSxHQUFHLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBRzFELElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQW1CO1FBQzlDLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RyxJQUFJLFNBQVMsR0FBRyxhQUFhLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsTUFB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
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { type EpochProofClaim } from '@aztec/circuit-types';
|
|
2
|
-
import { type EthAddress } from '@aztec/circuits.js';
|
|
3
|
-
import { type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
|
|
4
|
-
import { type ProverNodePublisher } from '../prover-node-publisher.js';
|
|
5
|
-
export interface ClaimsMonitorHandler {
|
|
6
|
-
handleClaim(proofClaim: EpochProofClaim): Promise<void>;
|
|
7
|
-
}
|
|
8
|
-
export declare class ClaimsMonitor implements Traceable {
|
|
9
|
-
private readonly l1Publisher;
|
|
10
|
-
private options;
|
|
11
|
-
private runningPromise;
|
|
12
|
-
private log;
|
|
13
|
-
private handler;
|
|
14
|
-
private lastClaimEpochNumber;
|
|
15
|
-
readonly tracer: Tracer;
|
|
16
|
-
constructor(l1Publisher: ProverNodePublisher, options: {
|
|
17
|
-
pollingIntervalMs: number;
|
|
18
|
-
}, telemetry?: TelemetryClient);
|
|
19
|
-
start(handler: ClaimsMonitorHandler): void;
|
|
20
|
-
stop(): Promise<void>;
|
|
21
|
-
work(): Promise<void>;
|
|
22
|
-
protected getProverAddress(): EthAddress;
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=claims-monitor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claims-monitor.d.ts","sourceRoot":"","sources":["../../src/monitors/claims-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,UAAU,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD;AAED,qBAAa,aAAc,YAAW,SAAS;IAU3C,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,OAAO;IAVjB,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,GAAG,CAA8C;IAEzD,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,oBAAoB,CAAqB;IAEjD,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAGZ,WAAW,EAAE,mBAAmB,EACzC,OAAO,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAA;KAAE,EAC9C,SAAS,GAAE,eAAsC;IAM5C,KAAK,CAAC,OAAO,EAAE,oBAAoB;IAM7B,IAAI;IAOJ,IAAI;IAgBjB,SAAS,CAAC,gBAAgB,IAAI,UAAU;CAGzC"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { __esDecorate, __runInitializers } from "tslib";
|
|
2
|
-
import { createLogger } from '@aztec/foundation/log';
|
|
3
|
-
import { RunningPromise } from '@aztec/foundation/running-promise';
|
|
4
|
-
import { getTelemetryClient, trackSpan, } from '@aztec/telemetry-client';
|
|
5
|
-
let ClaimsMonitor = (() => {
|
|
6
|
-
var _a;
|
|
7
|
-
let _instanceExtraInitializers = [];
|
|
8
|
-
let _work_decorators;
|
|
9
|
-
return _a = class ClaimsMonitor {
|
|
10
|
-
constructor(l1Publisher, options, telemetry = getTelemetryClient()) {
|
|
11
|
-
this.l1Publisher = (__runInitializers(this, _instanceExtraInitializers), l1Publisher);
|
|
12
|
-
this.options = options;
|
|
13
|
-
this.log = createLogger('prover-node:claims-monitor');
|
|
14
|
-
this.tracer = telemetry.getTracer('ClaimsMonitor');
|
|
15
|
-
this.runningPromise = new RunningPromise(this.work.bind(this), this.log, this.options.pollingIntervalMs);
|
|
16
|
-
}
|
|
17
|
-
start(handler) {
|
|
18
|
-
this.handler = handler;
|
|
19
|
-
this.runningPromise.start();
|
|
20
|
-
this.log.info(`Started ClaimsMonitor with prover address ${this.getProverAddress().toString()}`, this.options);
|
|
21
|
-
}
|
|
22
|
-
async stop() {
|
|
23
|
-
this.log.verbose('Stopping ClaimsMonitor');
|
|
24
|
-
await this.runningPromise.stop();
|
|
25
|
-
this.log.info('Stopped ClaimsMonitor');
|
|
26
|
-
}
|
|
27
|
-
async work() {
|
|
28
|
-
const proofClaim = await this.l1Publisher.getProofClaim();
|
|
29
|
-
if (!proofClaim) {
|
|
30
|
-
this.log.trace(`Found no proof claim`);
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
if (this.lastClaimEpochNumber === undefined || proofClaim.epochToProve > this.lastClaimEpochNumber) {
|
|
34
|
-
this.log.verbose(`Found new claim for epoch ${proofClaim.epochToProve} by ${proofClaim.bondProvider.toString()}`);
|
|
35
|
-
if (proofClaim.bondProvider.equals(this.getProverAddress())) {
|
|
36
|
-
await this.handler?.handleClaim(proofClaim);
|
|
37
|
-
}
|
|
38
|
-
this.lastClaimEpochNumber = proofClaim.epochToProve;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
getProverAddress() {
|
|
42
|
-
return this.l1Publisher.getSenderAddress();
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
(() => {
|
|
46
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
47
|
-
_work_decorators = [trackSpan('ClaimsMonitor.work')];
|
|
48
|
-
__esDecorate(_a, null, _work_decorators, { kind: "method", name: "work", static: false, private: false, access: { has: obj => "work" in obj, get: obj => obj.work }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
49
|
-
if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
50
|
-
})(),
|
|
51
|
-
_a;
|
|
52
|
-
})();
|
|
53
|
-
export { ClaimsMonitor };
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhaW1zLW1vbml0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9uaXRvcnMvY2xhaW1zLW1vbml0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUlMLGtCQUFrQixFQUNsQixTQUFTLEdBQ1YsTUFBTSx5QkFBeUIsQ0FBQztJQVFwQixhQUFhOzs7O3NCQUFiLGFBQWE7WUFTeEIsWUFDbUIsV0FBZ0MsRUFDekMsT0FBc0MsRUFDOUMsWUFBNkIsa0JBQWtCLEVBQUU7Z0JBRmhDLGdCQUFXLElBVm5CLG1EQUFhLEVBVUwsV0FBVyxFQUFxQjtnQkFDekMsWUFBTyxHQUFQLE9BQU8sQ0FBK0I7Z0JBVHhDLFFBQUcsR0FBRyxZQUFZLENBQUMsNEJBQTRCLENBQUMsQ0FBQztnQkFZdkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzNHLENBQUM7WUFFTSxLQUFLLENBQUMsT0FBNkI7Z0JBQ3hDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO2dCQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyw2Q0FBNkMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakgsQ0FBQztZQUVNLEtBQUssQ0FBQyxJQUFJO2dCQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQUM7Z0JBQzNDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUN6QyxDQUFDO1lBR00sS0FBSyxDQUFDLElBQUk7Z0JBQ2YsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUMxRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7b0JBQ3ZDLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsS0FBSyxTQUFTLElBQUksVUFBVSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztvQkFDbkcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLFVBQVUsQ0FBQyxZQUFZLE9BQU8sVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2xILElBQUksVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsRUFBRSxDQUFDO3dCQUM1RCxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUM5QyxDQUFDO29CQUNELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDO2dCQUN0RCxDQUFDO1lBQ0gsQ0FBQztZQUVTLGdCQUFnQjtnQkFDeEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDN0MsQ0FBQzs7OztnQ0FuQkEsU0FBUyxDQUFDLG9CQUFvQixDQUFDO1lBQ2hDLDZKQUFhLElBQUksNkRBY2hCOzs7OztTQTdDVSxhQUFhIn0=
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { type L2Block } from '@aztec/circuit-types';
|
|
2
|
-
import { type QuoteProvider, type QuoteProviderResult } from './index.js';
|
|
3
|
-
export declare class HttpQuoteProvider implements QuoteProvider {
|
|
4
|
-
private readonly url;
|
|
5
|
-
constructor(url: string);
|
|
6
|
-
getQuote(epochNumber: number, epoch: L2Block[]): Promise<QuoteProviderResult | undefined>;
|
|
7
|
-
}
|
|
8
|
-
export type HttpQuoteRequestPayload = {
|
|
9
|
-
epochNumber: number;
|
|
10
|
-
fromBlock: number;
|
|
11
|
-
toBlock: number;
|
|
12
|
-
totalFees: string;
|
|
13
|
-
txCount: number;
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=http.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/quote-provider/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAG1E,qBAAa,iBAAkB,YAAW,aAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,MAAM;IAE3B,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;CA8BvG;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
|