@aztec/prover-node 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.
- package/dest/bond/bond-manager.d.ts +22 -0
- package/dest/bond/bond-manager.d.ts.map +1 -0
- package/dest/bond/bond-manager.js +42 -0
- package/dest/bond/config.d.ts +8 -0
- package/dest/bond/config.d.ts.map +1 -0
- package/dest/bond/config.js +17 -0
- package/dest/bond/escrow-contract.d.ts +22 -0
- package/dest/bond/escrow-contract.d.ts.map +1 -0
- package/dest/bond/escrow-contract.js +32 -0
- package/dest/bond/factory.d.ts +9 -0
- package/dest/bond/factory.d.ts.map +1 -0
- package/dest/bond/factory.js +19 -0
- package/dest/bond/index.d.ts +3 -0
- package/dest/bond/index.d.ts.map +1 -0
- package/dest/bond/index.js +3 -0
- package/dest/bond/token-contract.d.ts +29 -0
- package/dest/bond/token-contract.d.ts.map +1 -0
- package/dest/bond/token-contract.js +58 -0
- package/dest/config.d.ts +10 -4
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +30 -9
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +39 -9
- package/dest/job/epoch-proving-job.d.ts +39 -0
- package/dest/job/epoch-proving-job.d.ts.map +1 -0
- package/dest/job/epoch-proving-job.js +127 -0
- package/dest/monitors/claims-monitor.d.ts +22 -0
- package/dest/monitors/claims-monitor.d.ts.map +1 -0
- package/dest/monitors/claims-monitor.js +37 -0
- package/dest/monitors/epoch-monitor.d.ts +20 -0
- package/dest/monitors/epoch-monitor.d.ts.map +1 -0
- package/dest/monitors/epoch-monitor.js +34 -0
- package/dest/monitors/index.d.ts +3 -0
- package/dest/monitors/index.d.ts.map +1 -0
- package/dest/monitors/index.js +3 -0
- package/dest/prover-coordination/config.d.ts +7 -0
- package/dest/prover-coordination/config.d.ts.map +1 -0
- package/dest/prover-coordination/config.js +12 -0
- package/dest/prover-coordination/factory.d.ts +4 -0
- package/dest/prover-coordination/factory.d.ts.map +1 -0
- package/dest/prover-coordination/factory.js +10 -0
- package/dest/prover-coordination/index.d.ts +3 -0
- package/dest/prover-coordination/index.d.ts.map +1 -0
- package/dest/prover-coordination/index.js +3 -0
- package/dest/prover-node.d.ts +57 -33
- package/dest/prover-node.d.ts.map +1 -1
- package/dest/prover-node.js +128 -76
- package/dest/quote-provider/http.d.ts +15 -0
- package/dest/quote-provider/http.d.ts.map +1 -0
- package/dest/quote-provider/http.js +32 -0
- package/dest/quote-provider/index.d.ts +6 -0
- package/dest/quote-provider/index.d.ts.map +1 -0
- package/dest/quote-provider/index.js +2 -0
- package/dest/quote-provider/simple.d.ts +9 -0
- package/dest/quote-provider/simple.d.ts.map +1 -0
- package/dest/quote-provider/simple.js +11 -0
- package/dest/quote-provider/utils.d.ts +4 -0
- package/dest/quote-provider/utils.d.ts.map +1 -0
- package/dest/quote-provider/utils.js +8 -0
- package/dest/quote-signer.d.ts +13 -0
- package/dest/quote-signer.d.ts.map +1 -0
- package/dest/quote-signer.js +18 -0
- package/package.json +19 -13
- package/src/bond/bond-manager.ts +48 -0
- package/src/bond/config.ts +25 -0
- package/src/bond/escrow-contract.ts +63 -0
- package/src/bond/factory.ts +48 -0
- package/src/bond/index.ts +2 -0
- package/src/bond/token-contract.ts +85 -0
- package/src/config.ts +47 -12
- package/src/factory.ts +51 -10
- package/src/job/{block-proving-job.ts → epoch-proving-job.ts} +59 -57
- package/src/monitors/claims-monitor.ts +52 -0
- package/src/monitors/epoch-monitor.ts +48 -0
- package/src/monitors/index.ts +2 -0
- package/src/prover-coordination/config.ts +17 -0
- package/src/prover-coordination/factory.ts +11 -0
- package/src/{tx-provider → prover-coordination}/index.ts +1 -2
- package/src/prover-node.ts +169 -99
- package/src/quote-provider/http.ts +47 -0
- package/src/quote-provider/index.ts +8 -0
- package/src/quote-provider/simple.ts +15 -0
- package/src/quote-provider/utils.ts +10 -0
- package/src/quote-signer.ts +24 -0
- package/dest/job/block-proving-job.d.ts +0 -33
- package/dest/job/block-proving-job.d.ts.map +0 -1
- package/dest/job/block-proving-job.js +0 -120
- package/dest/tx-provider/aztec-node-tx-provider.d.ts +0 -8
- package/dest/tx-provider/aztec-node-tx-provider.d.ts.map +0 -1
- package/dest/tx-provider/aztec-node-tx-provider.js +0 -10
- package/dest/tx-provider/config.d.ts +0 -7
- package/dest/tx-provider/config.d.ts.map +0 -1
- package/dest/tx-provider/config.js +0 -12
- package/dest/tx-provider/factory.d.ts +0 -4
- package/dest/tx-provider/factory.d.ts.map +0 -1
- package/dest/tx-provider/factory.js +0 -12
- package/dest/tx-provider/index.d.ts +0 -4
- package/dest/tx-provider/index.d.ts.map +0 -1
- package/dest/tx-provider/index.js +0 -4
- package/src/tx-provider/aztec-node-tx-provider.ts +0 -10
- package/src/tx-provider/config.ts +0 -17
- package/src/tx-provider/factory.ts +0 -13
|
@@ -0,0 +1,22 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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,CAAuD;gBAG3D,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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { createDebugLogger } 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 = createDebugLogger('aztec: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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9uZC1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JvbmQvYm9uZC1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSzFELE1BQU0sT0FBTyxXQUFXO0lBR3RCLFlBQ21CLGFBQTRCLEVBQzVCLGNBQThCO0lBQy9DLGlGQUFpRjtJQUMxRSxhQUFxQjtJQUM1QiwyREFBMkQ7SUFDcEQsWUFBb0I7UUFMVixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFFeEMsa0JBQWEsR0FBYixhQUFhLENBQVE7UUFFckIsaUJBQVksR0FBWixZQUFZLENBQVE7UUFSWixXQUFNLEdBQUcsaUJBQWlCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQVMzRSxDQUFDO0lBRUo7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLFVBQVUsQ0FBQyxlQUF3QjtRQUM5QyxNQUFNLE9BQU8sR0FBRyxlQUFlLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN0RCxNQUFNLE1BQU0sR0FBRyxlQUFlLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUU1RyxJQUFJLENBQUM7WUFDSCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM3RCxJQUFJLE9BQU8sSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLE9BQU8scUJBQXFCLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ2hGLE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxHQUFHLE9BQU8sQ0FBQztZQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsV0FBVyxvQkFBb0IsT0FBTyxjQUFjLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFFeEcsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RELElBQUksT0FBTyxHQUFHLFdBQVcsRUFBRSxDQUFDO2dCQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxPQUFPLE1BQU0sV0FBVyxFQUFFLENBQUMsQ0FBQztZQUMzRixDQUFDO1lBRUQsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUNqRixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMseUJBQXlCLFdBQVcsWUFBWSxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
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==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { EthAddress } from '@aztec/circuits.js';
|
|
2
|
+
import { type Chain, type Client, type HttpTransport, type PrivateKeyAccount, type PublicActions, type PublicRpcSchema, type WalletActions, type WalletRpcSchema } from 'viem';
|
|
3
|
+
export declare class EscrowContract {
|
|
4
|
+
private readonly client;
|
|
5
|
+
private escrow;
|
|
6
|
+
constructor(client: Client<HttpTransport, Chain, PrivateKeyAccount, [
|
|
7
|
+
...WalletRpcSchema,
|
|
8
|
+
...PublicRpcSchema
|
|
9
|
+
], PublicActions<HttpTransport, Chain> & WalletActions<Chain, PrivateKeyAccount>>, address: EthAddress);
|
|
10
|
+
/** Returns the deposit of the publisher sender address on the proof commitment escrow contract. */
|
|
11
|
+
getProverDeposit(): Promise<bigint>;
|
|
12
|
+
/**
|
|
13
|
+
* Deposits the given amount of tokens into the proof commitment escrow contract. Returns once the tx is mined.
|
|
14
|
+
* @param amount - The amount to deposit.
|
|
15
|
+
*/
|
|
16
|
+
depositProverBond(amount: bigint): Promise<void>;
|
|
17
|
+
/** Returns the sender address for the client. */
|
|
18
|
+
getSenderAddress(): EthAddress;
|
|
19
|
+
getEscrowAddress(): EthAddress;
|
|
20
|
+
getTokenAddress(): Promise<EthAddress>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=escrow-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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;AAGhD,OAAO,EACL,KAAK,KAAK,EACV,KAAK,MAAM,EAEX,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,aAAa,EAElB,KAAK,eAAe,EAErB,MAAM,MAAM,CAAC;AAEd,qBAAa,cAAc;IAOvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IANzB,OAAO,CAAC,MAAM,CAGZ;gBAGiB,MAAM,EAAE,MAAM,CAC7B,aAAa,EACb,KAAK,EACL,iBAAiB,EACjB;QAAC,GAAG,eAAe;QAAE,GAAG,eAAe;KAAC,EACxC,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAC9E,EACD,OAAO,EAAE,UAAU;IAKrB,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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNjcm93LWNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JvbmQvZXNjcm93LWNvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRSxPQUFPLEVBV0wsV0FBVyxHQUNaLE1BQU0sTUFBTSxDQUFDO0FBRWQsTUFBTSxPQUFPLGNBQWM7SUFNekIsWUFDbUIsTUFNaEIsRUFDRCxPQUFtQjtRQVBGLFdBQU0sR0FBTixNQUFNLENBTXRCO1FBR0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFRCxtR0FBbUc7SUFDNUYsS0FBSyxDQUFDLGdCQUFnQjtRQUMzQixPQUFPLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBYztRQUMzQyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDdkQsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsaURBQWlEO0lBQzFDLGdCQUFnQjtRQUNyQixPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWU7UUFDMUIsT0FBTyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type RollupAbi } from '@aztec/l1-artifacts';
|
|
2
|
+
import { type Chain, type Client, type GetContractReturnType, type HttpTransport, type PrivateKeyAccount, type PublicActions, type PublicClient, type PublicRpcSchema, type WalletActions, type WalletRpcSchema } from 'viem';
|
|
3
|
+
import { BondManager } from './bond-manager.js';
|
|
4
|
+
import { type ProverBondManagerConfig } from './config.js';
|
|
5
|
+
export declare function createBondManager(rollupContract: GetContractReturnType<typeof RollupAbi, PublicClient>, client: Client<HttpTransport, Chain, PrivateKeyAccount, [
|
|
6
|
+
...WalletRpcSchema,
|
|
7
|
+
...PublicRpcSchema
|
|
8
|
+
], PublicActions<HttpTransport, Chain> & WalletActions<Chain, PrivateKeyAccount>>, overrides?: Partial<ProverBondManagerConfig>): Promise<BondManager>;
|
|
9
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/bond/factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EACL,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,KAAK,uBAAuB,EAAqC,MAAM,aAAa,CAAC;AAI9F,wBAAsB,iBAAiB,CACrC,cAAc,EAAE,qBAAqB,CAAC,OAAO,SAAS,EAAE,YAAY,CAAC,EACrE,MAAM,EAAE,MAAM,CACZ,aAAa,EACb,KAAK,EACL,iBAAiB,EACjB;IAAC,GAAG,eAAe;IAAE,GAAG,eAAe;CAAC,EACxC,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAC9E,EACD,SAAS,GAAE,OAAO,CAAC,uBAAuB,CAAM,wBAgBjD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { EthAddress } from '@aztec/circuits.js';
|
|
2
|
+
import { compact } from '@aztec/foundation/collection';
|
|
3
|
+
import { BondManager } from './bond-manager.js';
|
|
4
|
+
import { getProverBondManagerConfigFromEnv } from './config.js';
|
|
5
|
+
import { EscrowContract } from './escrow-contract.js';
|
|
6
|
+
import { TokenContract } from './token-contract.js';
|
|
7
|
+
export async function createBondManager(rollupContract, client, overrides = {}) {
|
|
8
|
+
const config = { ...getProverBondManagerConfigFromEnv(), ...compact(overrides) };
|
|
9
|
+
const { proverMinimumEscrowAmount: minimumStake, proverTargetEscrowAmount: maybeTargetStake } = config;
|
|
10
|
+
const targetStake = maybeTargetStake ?? minimumStake * 2n;
|
|
11
|
+
const escrowContractAddress = EthAddress.fromString(await rollupContract.read.PROOF_COMMITMENT_ESCROW());
|
|
12
|
+
const escrow = new EscrowContract(client, escrowContractAddress);
|
|
13
|
+
const tokenContractAddress = await escrow.getTokenAddress();
|
|
14
|
+
const token = new TokenContract(client, tokenContractAddress);
|
|
15
|
+
// Ensure the prover has enough balance to cover escrow and try to mint otherwise if on a dev environment
|
|
16
|
+
await token.ensureBalance(targetStake * 2n);
|
|
17
|
+
return new BondManager(token, escrow, minimumStake, targetStake);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ib25kL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQWdCdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBZ0MsaUNBQWlDLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVwRCxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxjQUFxRSxFQUNyRSxNQU1DLEVBQ0QsWUFBOEMsRUFBRTtJQUVoRCxNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsaUNBQWlDLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO0lBQ2pGLE1BQU0sRUFBRSx5QkFBeUIsRUFBRSxZQUFZLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDdkcsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUUxRCxNQUFNLHFCQUFxQixHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQztJQUN6RyxNQUFNLE1BQU0sR0FBRyxJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUUscUJBQXFCLENBQUMsQ0FBQztJQUVqRSxNQUFNLG9CQUFvQixHQUFHLE1BQU0sTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzVELE1BQU0sS0FBSyxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBRTlELHlHQUF5RztJQUN6RyxNQUFNLEtBQUssQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBRTVDLE9BQU8sSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDbkUsQ0FBQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { BondManager } from './bond-manager.js';
|
|
2
|
+
export * from './factory.js';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYm9uZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsY0FBYyxjQUFjLENBQUMifQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { EthAddress } from '@aztec/circuits.js';
|
|
2
|
+
import { type Chain, type Client, type HttpTransport, type PrivateKeyAccount, type PublicActions, type PublicRpcSchema, type WalletActions, type WalletRpcSchema } from 'viem';
|
|
3
|
+
export declare class TokenContract {
|
|
4
|
+
private readonly client;
|
|
5
|
+
private token;
|
|
6
|
+
private logger;
|
|
7
|
+
constructor(client: Client<HttpTransport, Chain, PrivateKeyAccount, [
|
|
8
|
+
...WalletRpcSchema,
|
|
9
|
+
...PublicRpcSchema
|
|
10
|
+
], PublicActions<HttpTransport, Chain> & WalletActions<Chain, PrivateKeyAccount>>, address: EthAddress);
|
|
11
|
+
/**
|
|
12
|
+
* Ensures the allowed address has near-maximum allowance, or sets it otherwise.
|
|
13
|
+
* Returns once allowance tx is mined successfully.
|
|
14
|
+
* @param allowed - Who to allow.
|
|
15
|
+
*/
|
|
16
|
+
ensureAllowance(allowed: EthAddress): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Checks the sender address has enough balance.
|
|
19
|
+
* If it doesn't, it tries calling a `mint` method, available on testing environments.
|
|
20
|
+
* If it can't, it throws an error.
|
|
21
|
+
* @param amount - The balance to ensure.
|
|
22
|
+
*/
|
|
23
|
+
ensureBalance(amount: bigint): Promise<void>;
|
|
24
|
+
/** Returns the sender address. */
|
|
25
|
+
getSenderAddress(): EthAddress;
|
|
26
|
+
/** Returns the balance of the sender. */
|
|
27
|
+
getBalance(): Promise<bigint>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=token-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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;AAIhD,OAAO,EACL,KAAK,KAAK,EACV,KAAK,MAAM,EAEX,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,aAAa,EAElB,KAAK,eAAe,EAErB,MAAM,MAAM,CAAC;AAKd,qBAAa,aAAa;IAKtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,OAAO,CAAC,KAAK,CAAiG;IAC9G,OAAO,CAAC,MAAM,CAAyD;gBAGpD,MAAM,EAAE,MAAM,CAC7B,aAAa,EACb,KAAK,EACL,iBAAiB,EACjB;QAAC,GAAG,eAAe;QAAE,GAAG,eAAe;KAAC,EACxC,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAC9E,EACD,OAAO,EAAE,UAAU;IAKrB;;;;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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { EthAddress } from '@aztec/circuits.js';
|
|
2
|
+
import { createDebugLogger } 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 = createDebugLogger('aztec: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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tY29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYm9uZC90b2tlbi1jb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU5RCxPQUFPLEVBV0wsV0FBVyxHQUNaLE1BQU0sTUFBTSxDQUFDO0FBRWQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3hDLE1BQU0sYUFBYSxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUM7QUFFakMsTUFBTSxPQUFPLGFBQWE7SUFJeEIsWUFDbUIsTUFNaEIsRUFDRCxPQUFtQjtRQVBGLFdBQU0sR0FBTixNQUFNLENBTXRCO1FBVEssV0FBTSxHQUFHLGlCQUFpQixDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFZckUsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBbUI7UUFDOUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVHLElBQUksU0FBUyxHQUFHLGFBQWEsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxN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
|
package/dest/config.d.ts
CHANGED
|
@@ -3,10 +3,16 @@ import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
|
3
3
|
import { type ProverClientConfig } from '@aztec/prover-client';
|
|
4
4
|
import { type PublisherConfig, type TxSenderConfig } from '@aztec/sequencer-client';
|
|
5
5
|
import { type WorldStateConfig } from '@aztec/world-state';
|
|
6
|
-
import { type
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
proverNodeMaxPendingJobs
|
|
6
|
+
import { type ProverBondManagerConfig } from './bond/config.js';
|
|
7
|
+
import { type ProverCoordinationConfig } from './prover-coordination/config.js';
|
|
8
|
+
export type ProverNodeConfig = ArchiverConfig & ProverClientConfig & WorldStateConfig & PublisherConfig & TxSenderConfig & ProverCoordinationConfig & ProverBondManagerConfig & QuoteProviderConfig & {
|
|
9
|
+
proverNodeMaxPendingJobs: number;
|
|
10
|
+
proverNodePollingIntervalMs: number;
|
|
11
|
+
};
|
|
12
|
+
export type QuoteProviderConfig = {
|
|
13
|
+
quoteProviderBasisPointFee: number;
|
|
14
|
+
quoteProviderBondAmount: bigint;
|
|
15
|
+
quoteProviderUrl?: string;
|
|
10
16
|
};
|
|
11
17
|
export declare const proverNodeConfigMappings: ConfigMappingsType<ProverNodeConfig>;
|
|
12
18
|
export declare function getProverNodeConfigFromEnv(): ProverNodeConfig;
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAoD,MAAM,iBAAiB,CAAC;AACxG,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,kBAAkB,EAAgD,MAAM,sBAAsB,CAAC;AAC7G,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EAKpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,gBAAgB,EAAwD,MAAM,oBAAoB,CAAC;AAEjH,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAoD,MAAM,iBAAiB,CAAC;AACxG,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,kBAAkB,EAAgD,MAAM,sBAAsB,CAAC;AAC7G,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EAKpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,gBAAgB,EAAwD,MAAM,oBAAoB,CAAC;AAEjH,OAAO,EAAE,KAAK,uBAAuB,EAAmC,MAAM,kBAAkB,CAAC;AACjG,OAAO,EACL,KAAK,wBAAwB,EAG9B,MAAM,iCAAiC,CAAC;AAEzC,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAC3C,kBAAkB,GAClB,gBAAgB,GAChB,eAAe,GACf,cAAc,GACd,wBAAwB,GACxB,uBAAuB,GACvB,mBAAmB,GAAG;IACpB,wBAAwB,EAAE,MAAM,CAAC;IACjC,2BAA2B,EAAE,MAAM,CAAC;CACrC,CAAC;AAEJ,MAAM,MAAM,mBAAmB,GAAG;IAChC,0BAA0B,EAAE,MAAM,CAAC;IACnC,uBAAuB,EAAE,MAAM,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAmCF,eAAO,MAAM,wBAAwB,EAAE,kBAAkB,CAAC,gBAAgB,CAUzE,CAAC;AAEF,wBAAgB,0BAA0B,IAAI,gBAAgB,CAY7D"}
|
package/dest/config.js
CHANGED
|
@@ -1,20 +1,37 @@
|
|
|
1
1
|
import { archiverConfigMappings, getArchiverConfigFromEnv } from '@aztec/archiver';
|
|
2
|
-
import {
|
|
2
|
+
import { bigintConfigHelper, getConfigFromMappings, numberConfigHelper, } from '@aztec/foundation/config';
|
|
3
3
|
import { getProverEnvVars, proverClientConfigMappings } from '@aztec/prover-client';
|
|
4
4
|
import { getPublisherConfigFromEnv, getPublisherConfigMappings, getTxSenderConfigFromEnv, getTxSenderConfigMappings, } from '@aztec/sequencer-client';
|
|
5
5
|
import { getWorldStateConfigFromEnv, worldStateConfigMappings } from '@aztec/world-state';
|
|
6
|
-
import {
|
|
6
|
+
import { proverBondManagerConfigMappings } from './bond/config.js';
|
|
7
|
+
import { getTxProviderConfigFromEnv, proverCoordinationConfigMappings, } from './prover-coordination/config.js';
|
|
7
8
|
const specificProverNodeConfigMappings = {
|
|
8
|
-
proverNodeDisableAutomaticProving: {
|
|
9
|
-
env: 'PROVER_NODE_DISABLE_AUTOMATIC_PROVING',
|
|
10
|
-
description: 'Whether to disable automatic proving of pending blocks seen on L1',
|
|
11
|
-
...booleanConfigHelper(false),
|
|
12
|
-
},
|
|
13
9
|
proverNodeMaxPendingJobs: {
|
|
14
10
|
env: 'PROVER_NODE_MAX_PENDING_JOBS',
|
|
15
11
|
description: 'The maximum number of pending jobs for the prover node',
|
|
12
|
+
...numberConfigHelper(10),
|
|
13
|
+
},
|
|
14
|
+
proverNodePollingIntervalMs: {
|
|
15
|
+
env: 'PROVER_NODE_POLLING_INTERVAL_MS',
|
|
16
|
+
description: 'The interval in milliseconds to poll for new jobs',
|
|
17
|
+
...numberConfigHelper(1000),
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
const quoteProviderConfigMappings = {
|
|
21
|
+
quoteProviderBasisPointFee: {
|
|
22
|
+
env: 'QUOTE_PROVIDER_BASIS_POINT_FEE',
|
|
23
|
+
description: 'The basis point fee to charge for providing quotes',
|
|
16
24
|
...numberConfigHelper(100),
|
|
17
25
|
},
|
|
26
|
+
quoteProviderBondAmount: {
|
|
27
|
+
env: 'QUOTE_PROVIDER_BOND_AMOUNT',
|
|
28
|
+
description: 'The bond amount to charge for providing quotes',
|
|
29
|
+
...bigintConfigHelper(1000n),
|
|
30
|
+
},
|
|
31
|
+
quoteProviderUrl: {
|
|
32
|
+
env: 'QUOTE_PROVIDER_URL',
|
|
33
|
+
description: 'The URL of the remote quote provider. Overrides QUOTE_PROVIDER_BASIS_POINT_FEE and QUOTE_PROVIDER_BOND_AMOUNT.',
|
|
34
|
+
},
|
|
18
35
|
};
|
|
19
36
|
export const proverNodeConfigMappings = {
|
|
20
37
|
...archiverConfigMappings,
|
|
@@ -22,7 +39,9 @@ export const proverNodeConfigMappings = {
|
|
|
22
39
|
...worldStateConfigMappings,
|
|
23
40
|
...getPublisherConfigMappings('PROVER'),
|
|
24
41
|
...getTxSenderConfigMappings('PROVER'),
|
|
25
|
-
...
|
|
42
|
+
...proverCoordinationConfigMappings,
|
|
43
|
+
...quoteProviderConfigMappings,
|
|
44
|
+
...proverBondManagerConfigMappings,
|
|
26
45
|
...specificProverNodeConfigMappings,
|
|
27
46
|
};
|
|
28
47
|
export function getProverNodeConfigFromEnv() {
|
|
@@ -33,7 +52,9 @@ export function getProverNodeConfigFromEnv() {
|
|
|
33
52
|
...getPublisherConfigFromEnv('PROVER'),
|
|
34
53
|
...getTxSenderConfigFromEnv('PROVER'),
|
|
35
54
|
...getTxProviderConfigFromEnv(),
|
|
55
|
+
...getConfigFromMappings(quoteProviderConfigMappings),
|
|
36
56
|
...getConfigFromMappings(specificProverNodeConfigMappings),
|
|
57
|
+
...getConfigFromMappings(proverBondManagerConfigMappings),
|
|
37
58
|
};
|
|
38
59
|
}
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLHNCQUFzQixFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEcsT0FBTyxFQUVMLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIsa0JBQWtCLEdBQ25CLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUEyQixnQkFBZ0IsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdHLE9BQU8sRUFHTCx5QkFBeUIsRUFDekIsMEJBQTBCLEVBQzFCLHdCQUF3QixFQUN4Qix5QkFBeUIsR0FDMUIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQXlCLDBCQUEwQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFakgsT0FBTyxFQUFnQywrQkFBK0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pHLE9BQU8sRUFFTCwwQkFBMEIsRUFDMUIsZ0NBQWdDLEdBQ2pDLE1BQU0saUNBQWlDLENBQUM7QUFvQnpDLE1BQU0sZ0NBQWdDLEdBRWxDO0lBQ0Ysd0JBQXdCLEVBQUU7UUFDeEIsR0FBRyxFQUFFLDhCQUE4QjtRQUNuQyxXQUFXLEVBQUUsd0RBQXdEO1FBQ3JFLEdBQUcsa0JBQWtCLENBQUMsRUFBRSxDQUFDO0tBQzFCO0lBQ0QsMkJBQTJCLEVBQUU7UUFDM0IsR0FBRyxFQUFFLGlDQUFpQztRQUN0QyxXQUFXLEVBQUUsbURBQW1EO1FBQ2hFLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDO0tBQzVCO0NBQ0YsQ0FBQztBQUVGLE1BQU0sMkJBQTJCLEdBQTRDO0lBQzNFLDBCQUEwQixFQUFFO1FBQzFCLEdBQUcsRUFBRSxnQ0FBZ0M7UUFDckMsV0FBVyxFQUFFLG9EQUFvRDtRQUNqRSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQztLQUMzQjtJQUNELHVCQUF1QixFQUFFO1FBQ3ZCLEdBQUcsRUFBRSw0QkFBNEI7UUFDakMsV0FBVyxFQUFFLGdEQUFnRDtRQUM3RCxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQztLQUM3QjtJQUNELGdCQUFnQixFQUFFO1FBQ2hCLEdBQUcsRUFBRSxvQkFBb0I7UUFDekIsV0FBVyxFQUNULGdIQUFnSDtLQUNuSDtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBeUM7SUFDNUUsR0FBRyxzQkFBc0I7SUFDekIsR0FBRywwQkFBMEI7SUFDN0IsR0FBRyx3QkFBd0I7SUFDM0IsR0FBRywwQkFBMEIsQ0FBQyxRQUFRLENBQUM7SUFDdkMsR0FBRyx5QkFBeUIsQ0FBQyxRQUFRLENBQUM7SUFDdEMsR0FBRyxnQ0FBZ0M7SUFDbkMsR0FBRywyQkFBMkI7SUFDOUIsR0FBRywrQkFBK0I7SUFDbEMsR0FBRyxnQ0FBZ0M7Q0FDcEMsQ0FBQztBQUVGLE1BQU0sVUFBVSwwQkFBMEI7SUFDeEMsT0FBTztRQUNMLEdBQUcsd0JBQXdCLEVBQUU7UUFDN0IsR0FBRyxnQkFBZ0IsRUFBRTtRQUNyQixHQUFHLDBCQUEwQixFQUFFO1FBQy9CLEdBQUcseUJBQXlCLENBQUMsUUFBUSxDQUFDO1FBQ3RDLEdBQUcsd0JBQXdCLENBQUMsUUFBUSxDQUFDO1FBQ3JDLEdBQUcsMEJBQTBCLEVBQUU7UUFDL0IsR0FBRyxxQkFBcUIsQ0FBQywyQkFBMkIsQ0FBQztRQUNyRCxHQUFHLHFCQUFxQixDQUFDLGdDQUFnQyxDQUFDO1FBQzFELEdBQUcscUJBQXFCLENBQUMsK0JBQStCLENBQUM7S0FDMUQsQ0FBQztBQUNKLENBQUMifQ==
|
package/dest/factory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAkB,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAkB,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,uBAAuB,CAAC;AAK5E,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAO/D,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,aAAa,CAAC;AAI9E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAK9C,gDAAgD;AAChD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,gBAAgB,EACxB,IAAI,GAAE;IACJ,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,mBAAmB,CAAC,EAAE,SAAS,CAAC;IAChC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CAChB,uBAmDP"}
|
package/dest/factory.js
CHANGED
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
import { createArchiver } from '@aztec/archiver';
|
|
2
|
+
import { createEthereumChain } from '@aztec/ethereum';
|
|
3
|
+
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
2
4
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
5
|
+
import { RollupAbi } from '@aztec/l1-artifacts';
|
|
3
6
|
import { createProverClient } from '@aztec/prover-client';
|
|
4
7
|
import { L1Publisher } from '@aztec/sequencer-client';
|
|
5
8
|
import { createSimulationProvider } from '@aztec/simulator';
|
|
6
9
|
import { NoopTelemetryClient } from '@aztec/telemetry-client/noop';
|
|
7
10
|
import { createWorldStateSynchronizer } from '@aztec/world-state';
|
|
11
|
+
import { createPublicClient, getAddress, getContract, http } from 'viem';
|
|
12
|
+
import { createBondManager } from './bond/factory.js';
|
|
13
|
+
import { ClaimsMonitor } from './monitors/claims-monitor.js';
|
|
14
|
+
import { EpochMonitor } from './monitors/epoch-monitor.js';
|
|
15
|
+
import { createProverCoordination } from './prover-coordination/factory.js';
|
|
8
16
|
import { ProverNode } from './prover-node.js';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
17
|
+
import { HttpQuoteProvider } from './quote-provider/http.js';
|
|
18
|
+
import { SimpleQuoteProvider } from './quote-provider/simple.js';
|
|
19
|
+
import { QuoteSigner } from './quote-signer.js';
|
|
11
20
|
/** Creates a new prover node given a config. */
|
|
12
21
|
export async function createProverNode(config, deps = {}) {
|
|
13
22
|
const telemetry = deps.telemetry ?? new NoopTelemetryClient();
|
|
@@ -21,12 +30,33 @@ export async function createProverNode(config, deps = {}) {
|
|
|
21
30
|
const prover = await createProverClient(config, telemetry);
|
|
22
31
|
// REFACTOR: Move publisher out of sequencer package and into an L1-related package
|
|
23
32
|
const publisher = new L1Publisher(config, telemetry);
|
|
24
|
-
const txProvider = deps.aztecNodeTxProvider
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
disableAutomaticProving: config.proverNodeDisableAutomaticProving,
|
|
33
|
+
const txProvider = deps.aztecNodeTxProvider ? deps.aztecNodeTxProvider : createProverCoordination(config);
|
|
34
|
+
const quoteProvider = createQuoteProvider(config);
|
|
35
|
+
const quoteSigner = createQuoteSigner(config);
|
|
36
|
+
const proverNodeConfig = {
|
|
29
37
|
maxPendingJobs: config.proverNodeMaxPendingJobs,
|
|
30
|
-
|
|
38
|
+
pollingIntervalMs: config.proverNodePollingIntervalMs,
|
|
39
|
+
};
|
|
40
|
+
const claimsMonitor = new ClaimsMonitor(publisher, proverNodeConfig);
|
|
41
|
+
const epochMonitor = new EpochMonitor(archiver, proverNodeConfig);
|
|
42
|
+
const rollupContract = publisher.getRollupContract();
|
|
43
|
+
const walletClient = publisher.getClient();
|
|
44
|
+
const bondManager = await createBondManager(rollupContract, walletClient, config);
|
|
45
|
+
return new ProverNode(prover, publisher, archiver, archiver, archiver, worldStateSynchronizer, txProvider, simulationProvider, quoteProvider, quoteSigner, claimsMonitor, epochMonitor, bondManager, telemetry, proverNodeConfig);
|
|
31
46
|
}
|
|
32
|
-
|
|
47
|
+
function createQuoteProvider(config) {
|
|
48
|
+
return config.quoteProviderUrl
|
|
49
|
+
? new HttpQuoteProvider(config.quoteProviderUrl)
|
|
50
|
+
: new SimpleQuoteProvider(config.quoteProviderBasisPointFee, config.quoteProviderBondAmount);
|
|
51
|
+
}
|
|
52
|
+
function createQuoteSigner(config) {
|
|
53
|
+
// REFACTOR: We need a package that just returns an instance of a rollup contract ready to use
|
|
54
|
+
const { l1RpcUrl: rpcUrl, l1ChainId: chainId, l1Contracts } = config;
|
|
55
|
+
const chain = createEthereumChain(rpcUrl, chainId);
|
|
56
|
+
const client = createPublicClient({ chain: chain.chainInfo, transport: http(chain.rpcUrl) });
|
|
57
|
+
const address = getAddress(l1Contracts.rollupAddress.toString());
|
|
58
|
+
const rollupContract = getContract({ address, abi: RollupAbi, client });
|
|
59
|
+
const privateKey = config.publisherPrivateKey;
|
|
60
|
+
return QuoteSigner.new(Buffer32.fromString(privateKey), rollupContract);
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBb0IsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUs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
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type EpochProver, type L1ToL2MessageSource, type L2Block, type L2BlockSource, type MerkleTreeWriteOperations, type ProverCoordination } from '@aztec/circuit-types';
|
|
2
|
+
import { type L1Publisher } from '@aztec/sequencer-client';
|
|
3
|
+
import { type PublicProcessorFactory } from '@aztec/simulator';
|
|
4
|
+
import { type ProverNodeMetrics } from '../metrics.js';
|
|
5
|
+
/**
|
|
6
|
+
* Job that grabs a range of blocks from the unfinalised chain from L1, gets their txs given their hashes,
|
|
7
|
+
* re-executes their public calls, generates a rollup proof, and submits it to L1. This job will update the
|
|
8
|
+
* world state as part of public call execution via the public processor.
|
|
9
|
+
*/
|
|
10
|
+
export declare class EpochProvingJob {
|
|
11
|
+
private db;
|
|
12
|
+
private epochNumber;
|
|
13
|
+
private blocks;
|
|
14
|
+
private prover;
|
|
15
|
+
private publicProcessorFactory;
|
|
16
|
+
private publisher;
|
|
17
|
+
private l2BlockSource;
|
|
18
|
+
private l1ToL2MessageSource;
|
|
19
|
+
private coordination;
|
|
20
|
+
private metrics;
|
|
21
|
+
private cleanUp;
|
|
22
|
+
private state;
|
|
23
|
+
private log;
|
|
24
|
+
private uuid;
|
|
25
|
+
private runPromise;
|
|
26
|
+
constructor(db: MerkleTreeWriteOperations, epochNumber: bigint, blocks: L2Block[], prover: EpochProver, publicProcessorFactory: PublicProcessorFactory, publisher: L1Publisher, l2BlockSource: L2BlockSource, l1ToL2MessageSource: L1ToL2MessageSource, coordination: ProverCoordination, metrics: ProverNodeMetrics, cleanUp?: (job: EpochProvingJob) => Promise<void>);
|
|
27
|
+
getId(): string;
|
|
28
|
+
getState(): EpochProvingJobState;
|
|
29
|
+
/**
|
|
30
|
+
* Proves the given epoch and submits the proof to L1.
|
|
31
|
+
*/
|
|
32
|
+
run(): Promise<void>;
|
|
33
|
+
stop(): Promise<void>;
|
|
34
|
+
private getTxs;
|
|
35
|
+
private getL1ToL2Messages;
|
|
36
|
+
private processTxs;
|
|
37
|
+
}
|
|
38
|
+
export type EpochProvingJobState = 'initialized' | 'processing' | 'awaiting-prover' | 'publishing-proof' | 'completed' | 'failed';
|
|
39
|
+
//# sourceMappingURL=epoch-proving-job.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"epoch-proving-job.d.ts","sourceRoot":"","sources":["../../src/job/epoch-proving-job.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,yBAAyB,EAE9B,KAAK,kBAAkB,EAGxB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAwB,KAAK,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAIrF,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD;;;;GAIG;AACH,qBAAa,eAAe;IAQxB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;IAjBjB,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,GAAG,CAAgD;IAC3D,OAAO,CAAC,IAAI,CAAS;IAErB,OAAO,CAAC,UAAU,CAA4B;gBAGpC,EAAE,EAAE,yBAAyB,EAC7B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,OAAO,EAAE,EACjB,MAAM,EAAE,WAAW,EACnB,sBAAsB,EAAE,sBAAsB,EAC9C,SAAS,EAAE,WAAW,EACtB,aAAa,EAAE,aAAa,EAC5B,mBAAmB,EAAE,mBAAmB,EACxC,YAAY,EAAE,kBAAkB,EAChC,OAAO,EAAE,iBAAiB,EAC1B,OAAO,GAAE,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAA2B;IAK7E,KAAK,IAAI,MAAM;IAIf,QAAQ,IAAI,oBAAoB;IAIvC;;OAEG;IACU,GAAG;IA4EH,IAAI;YAOH,MAAM;IAWpB,OAAO,CAAC,iBAAiB;YAIX,UAAU;CAoBzB;AAED,MAAM,MAAM,oBAAoB,GAC5B,aAAa,GACb,YAAY,GACZ,iBAAiB,GACjB,kBAAkB,GAClB,WAAW,GACX,QAAQ,CAAC"}
|