@aztec/prover-node 0.57.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 +3 -3
- package/dest/bond/bond-manager.d.ts.map +1 -1
- package/dest/bond/bond-manager.js +1 -1
- package/dest/bond/config.d.ts +2 -2
- package/dest/bond/config.d.ts.map +1 -1
- package/dest/bond/config.js +6 -6
- package/dest/bond/factory.d.ts.map +1 -1
- package/dest/bond/factory.js +5 -4
- package/dest/job/epoch-proving-job.d.ts +5 -3
- package/dest/job/epoch-proving-job.d.ts.map +1 -1
- package/dest/job/epoch-proving-job.js +14 -6
- package/dest/prover-node.d.ts +3 -3
- package/dest/prover-node.d.ts.map +1 -1
- package/dest/prover-node.js +7 -9
- package/package.json +14 -14
- package/src/bond/bond-manager.ts +3 -3
- package/src/bond/config.ts +7 -7
- package/src/bond/factory.ts +4 -3
- package/src/job/epoch-proving-job.ts +16 -4
- package/src/prover-node.ts +8 -11
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { type EscrowContract } from './escrow-contract.js';
|
|
2
2
|
import { type TokenContract } from './token-contract.js';
|
|
3
3
|
export declare class BondManager {
|
|
4
|
-
readonly tokenContract
|
|
5
|
-
readonly escrowContract
|
|
4
|
+
private readonly tokenContract;
|
|
5
|
+
private readonly escrowContract;
|
|
6
6
|
/** Minimum escrowed bond. A top-up will be issued once this threshold is hit. */
|
|
7
7
|
minimumAmount: bigint;
|
|
8
8
|
/** Target escrowed bond. Top-up will target this value. */
|
|
9
9
|
targetAmount: bigint;
|
|
10
|
-
private logger;
|
|
10
|
+
private readonly logger;
|
|
11
11
|
constructor(tokenContract: TokenContract, escrowContract: EscrowContract,
|
|
12
12
|
/** Minimum escrowed bond. A top-up will be issued once this threshold is hit. */
|
|
13
13
|
minimumAmount: bigint,
|
|
@@ -1 +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;
|
|
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"}
|
|
@@ -39,4 +39,4 @@ export class BondManager {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9uZC1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JvbmQvYm9uZC1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSzFELE1BQU0sT0FBTyxXQUFXO0lBR3RCLFlBQ21CLGFBQTRCLEVBQzVCLGNBQThCO0lBQy9DLGlGQUFpRjtJQUMxRSxhQUFxQjtJQUM1QiwyREFBMkQ7SUFDcEQsWUFBb0I7UUFMVixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFFeEMsa0JBQWEsR0FBYixhQUFhLENBQVE7UUFFckIsaUJBQVksR0FBWixZQUFZLENBQVE7UUFSWixXQUFNLEdBQUcsaUJBQWlCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQVMzRSxDQUFDO0lBRUo7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLFVBQVUsQ0FBQyxlQUF3QjtRQUM5QyxNQUFNLE9BQU8sR0FBRyxlQUFlLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN0RCxNQUFNLE1BQU0sR0FBRyxlQUFlLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUU1RyxJQUFJLENBQUM7WUFDSCxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM3RCxJQUFJLE9BQU8sSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLE9BQU8scUJBQXFCLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ2hGLE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxHQUFHLE9BQU8sQ0FBQztZQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsV0FBVyxvQkFBb0IsT0FBTyxjQUFjLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFFeEcsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RELElBQUksT0FBTyxHQUFHLFdBQVcsRUFBRSxDQUFDO2dCQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxPQUFPLE1BQU0sV0FBVyxFQUFFLENBQUMsQ0FBQztZQUMzRixDQUFDO1lBRUQsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUNqRixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMseUJBQXlCLFdBQVcsWUFBWSxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
|
package/dest/bond/config.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
2
2
|
export type ProverBondManagerConfig = {
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
proverMinimumEscrowAmount: bigint;
|
|
4
|
+
proverTargetEscrowAmount?: bigint;
|
|
5
5
|
};
|
|
6
6
|
export declare const proverBondManagerConfigMappings: ConfigMappingsType<ProverBondManagerConfig>;
|
|
7
7
|
export declare function getProverBondManagerConfigFromEnv(): ProverBondManagerConfig;
|
|
@@ -1 +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,
|
|
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
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { bigintConfigHelper, getConfigFromMappings } from '@aztec/foundation/config';
|
|
2
2
|
export const proverBondManagerConfigMappings = {
|
|
3
|
-
|
|
4
|
-
env: '
|
|
3
|
+
proverMinimumEscrowAmount: {
|
|
4
|
+
env: 'PROVER_MINIMUM_ESCROW_AMOUNT',
|
|
5
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
6
|
...bigintConfigHelper(100000n),
|
|
7
7
|
},
|
|
8
|
-
|
|
9
|
-
env: '
|
|
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 the minimum amount.',
|
|
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
11
|
...bigintConfigHelper(),
|
|
12
12
|
},
|
|
13
13
|
};
|
|
14
14
|
export function getProverBondManagerConfigFromEnv() {
|
|
15
15
|
return getConfigFromMappings(proverBondManagerConfigMappings);
|
|
16
16
|
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JvbmQvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMkIsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQU85RyxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBZ0Q7SUFDMUYseUJBQXlCLEVBQUU7UUFDekIsR0FBRyxFQUFFLDhCQUE4QjtRQUNuQyxXQUFXLEVBQ1QsNklBQTZJO1FBQy9JLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDO0tBQy9CO0lBQ0Qsd0JBQXdCLEVBQUU7UUFDeEIsR0FBRyxFQUFFLDZCQUE2QjtRQUNsQyxXQUFXLEVBQ1Qsd0pBQXdKO1FBQzFKLEdBQUcsa0JBQWtCLEVBQUU7S0FDeEI7Q0FDRixDQUFDO0FBRUYsTUFBTSxVQUFVLGlDQUFpQztJQUMvQyxPQUFPLHFCQUFxQixDQUEwQiwrQkFBK0IsQ0FBQyxDQUFDO0FBQ3pGLENBQUMifQ==
|
|
@@ -1 +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,
|
|
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"}
|
package/dest/bond/factory.js
CHANGED
|
@@ -6,13 +6,14 @@ import { EscrowContract } from './escrow-contract.js';
|
|
|
6
6
|
import { TokenContract } from './token-contract.js';
|
|
7
7
|
export async function createBondManager(rollupContract, client, overrides = {}) {
|
|
8
8
|
const config = { ...getProverBondManagerConfigFromEnv(), ...compact(overrides) };
|
|
9
|
-
const {
|
|
9
|
+
const { proverMinimumEscrowAmount: minimumStake, proverTargetEscrowAmount: maybeTargetStake } = config;
|
|
10
|
+
const targetStake = maybeTargetStake ?? minimumStake * 2n;
|
|
10
11
|
const escrowContractAddress = EthAddress.fromString(await rollupContract.read.PROOF_COMMITMENT_ESCROW());
|
|
11
12
|
const escrow = new EscrowContract(client, escrowContractAddress);
|
|
12
13
|
const tokenContractAddress = await escrow.getTokenAddress();
|
|
13
14
|
const token = new TokenContract(client, tokenContractAddress);
|
|
14
15
|
// Ensure the prover has enough balance to cover escrow and try to mint otherwise if on a dev environment
|
|
15
|
-
await token.ensureBalance(
|
|
16
|
-
return new BondManager(token, escrow, minimumStake, targetStake
|
|
16
|
+
await token.ensureBalance(targetStake * 2n);
|
|
17
|
+
return new BondManager(token, escrow, minimumStake, targetStake);
|
|
17
18
|
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ib25kL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQWdCdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBZ0MsaUNBQWlDLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVwRCxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxjQUFxRSxFQUNyRSxNQU1DLEVBQ0QsWUFBOEMsRUFBRTtJQUVoRCxNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsaUNBQWlDLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO0lBQ2pGLE1BQU0sRUFBRSx5QkFBeUIsRUFBRSxZQUFZLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDdkcsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUUxRCxNQUFNLHFCQUFxQixHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQztJQUN6RyxNQUFNLE1BQU0sR0FBRyxJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUUscUJBQXFCLENBQUMsQ0FBQztJQUVqRSxNQUFNLG9CQUFvQixHQUFHLE1BQU0sTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzVELE1BQU0sS0FBSyxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBRTlELHlHQUF5RztJQUN6RyxNQUFNLEtBQUssQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBRTVDLE9BQU8sSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDbkUsQ0FBQyJ9
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type EpochProver, type L1ToL2MessageSource, type L2Block, type L2BlockSource, type ProverCoordination } from '@aztec/circuit-types';
|
|
1
|
+
import { type EpochProver, type L1ToL2MessageSource, type L2Block, type L2BlockSource, type MerkleTreeWriteOperations, type ProverCoordination } from '@aztec/circuit-types';
|
|
2
2
|
import { type L1Publisher } from '@aztec/sequencer-client';
|
|
3
3
|
import { type PublicProcessorFactory } from '@aztec/simulator';
|
|
4
4
|
import { type ProverNodeMetrics } from '../metrics.js';
|
|
@@ -8,6 +8,7 @@ import { type ProverNodeMetrics } from '../metrics.js';
|
|
|
8
8
|
* world state as part of public call execution via the public processor.
|
|
9
9
|
*/
|
|
10
10
|
export declare class EpochProvingJob {
|
|
11
|
+
private db;
|
|
11
12
|
private epochNumber;
|
|
12
13
|
private blocks;
|
|
13
14
|
private prover;
|
|
@@ -21,14 +22,15 @@ export declare class EpochProvingJob {
|
|
|
21
22
|
private state;
|
|
22
23
|
private log;
|
|
23
24
|
private uuid;
|
|
24
|
-
|
|
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>);
|
|
25
27
|
getId(): string;
|
|
26
28
|
getState(): EpochProvingJobState;
|
|
27
29
|
/**
|
|
28
30
|
* Proves the given epoch and submits the proof to L1.
|
|
29
31
|
*/
|
|
30
32
|
run(): Promise<void>;
|
|
31
|
-
stop(): void
|
|
33
|
+
stop(): Promise<void>;
|
|
32
34
|
private getTxs;
|
|
33
35
|
private getL1ToL2Messages;
|
|
34
36
|
private processTxs;
|
|
@@ -1 +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,
|
|
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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EmptyTxValidator, } from '@aztec/circuit-types';
|
|
2
2
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
3
|
+
import { promiseWithResolvers } from '@aztec/foundation/promise';
|
|
3
4
|
import { Timer } from '@aztec/foundation/timer';
|
|
4
5
|
import * as crypto from 'node:crypto';
|
|
5
6
|
/**
|
|
@@ -8,7 +9,8 @@ import * as crypto from 'node:crypto';
|
|
|
8
9
|
* world state as part of public call execution via the public processor.
|
|
9
10
|
*/
|
|
10
11
|
export class EpochProvingJob {
|
|
11
|
-
constructor(epochNumber, blocks, prover, publicProcessorFactory, publisher, l2BlockSource, l1ToL2MessageSource, coordination, metrics, cleanUp = () => Promise.resolve()) {
|
|
12
|
+
constructor(db, epochNumber, blocks, prover, publicProcessorFactory, publisher, l2BlockSource, l1ToL2MessageSource, coordination, metrics, cleanUp = () => Promise.resolve()) {
|
|
13
|
+
this.db = db;
|
|
12
14
|
this.epochNumber = epochNumber;
|
|
13
15
|
this.blocks = blocks;
|
|
14
16
|
this.prover = prover;
|
|
@@ -38,11 +40,13 @@ export class EpochProvingJob {
|
|
|
38
40
|
this.log.info(`Starting epoch proving job`, { epochSize, epochNumber, uuid: this.uuid });
|
|
39
41
|
this.state = 'processing';
|
|
40
42
|
const timer = new Timer();
|
|
43
|
+
const { promise, resolve } = promiseWithResolvers();
|
|
44
|
+
this.runPromise = promise;
|
|
41
45
|
try {
|
|
42
46
|
this.prover.startNewEpoch(epochNumber, epochSize);
|
|
43
47
|
// Get the genesis header if the first block of the epoch is the first block of the chain
|
|
44
48
|
let previousHeader = this.blocks[0].number === 1
|
|
45
|
-
? this.
|
|
49
|
+
? this.db.getInitialHeader()
|
|
46
50
|
: await this.l2BlockSource.getBlockHeader(this.blocks[0].number - 1);
|
|
47
51
|
for (const block of this.blocks) {
|
|
48
52
|
// Gather all data to prove this block
|
|
@@ -65,7 +69,7 @@ export class EpochProvingJob {
|
|
|
65
69
|
// Start block proving
|
|
66
70
|
await this.prover.startNewBlock(txCount, globalVariables, l1ToL2Messages);
|
|
67
71
|
// Process public fns
|
|
68
|
-
const publicProcessor = this.publicProcessorFactory.create(previousHeader, globalVariables);
|
|
72
|
+
const publicProcessor = this.publicProcessorFactory.create(this.db, previousHeader, globalVariables);
|
|
69
73
|
await this.processTxs(publicProcessor, txs, txCount);
|
|
70
74
|
this.log.verbose(`Processed all txs for block`, {
|
|
71
75
|
blockNumber: block.number,
|
|
@@ -73,7 +77,7 @@ export class EpochProvingJob {
|
|
|
73
77
|
uuid: this.uuid,
|
|
74
78
|
});
|
|
75
79
|
// Mark block as completed and update archive tree
|
|
76
|
-
await this.prover.setBlockCompleted();
|
|
80
|
+
await this.prover.setBlockCompleted(block.header);
|
|
77
81
|
previousHeader = block.header;
|
|
78
82
|
}
|
|
79
83
|
this.state = 'awaiting-prover';
|
|
@@ -92,10 +96,14 @@ export class EpochProvingJob {
|
|
|
92
96
|
}
|
|
93
97
|
finally {
|
|
94
98
|
await this.cleanUp(this);
|
|
99
|
+
resolve();
|
|
95
100
|
}
|
|
96
101
|
}
|
|
97
|
-
stop() {
|
|
102
|
+
async stop() {
|
|
98
103
|
this.prover.cancel();
|
|
104
|
+
if (this.runPromise) {
|
|
105
|
+
await this.runPromise;
|
|
106
|
+
}
|
|
99
107
|
}
|
|
100
108
|
async getTxs(txHashes) {
|
|
101
109
|
const txs = await Promise.all(txHashes.map(txHash => this.coordination.getTxByHash(txHash).then(tx => [txHash, tx])));
|
|
@@ -116,4 +124,4 @@ export class EpochProvingJob {
|
|
|
116
124
|
return processedTxs;
|
|
117
125
|
}
|
|
118
126
|
}
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2gtcHJvdmluZy1qb2IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvam9iL2Vwb2NoLXByb3Zpbmctam9iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsR0FVakIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJaEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFJdEM7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBTzFCLFlBQ1UsRUFBNkIsRUFDN0IsV0FBbUIsRUFDbkIsTUFBaUIsRUFDakIsTUFBbUIsRUFDbkIsc0JBQThDLEVBQzlDLFNBQXNCLEVBQ3RCLGFBQTRCLEVBQzVCLG1CQUF3QyxFQUN4QyxZQUFnQyxFQUNoQyxPQUEwQixFQUMxQixVQUFtRCxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO1FBVjFFLE9BQUUsR0FBRixFQUFFLENBQTJCO1FBQzdCLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ25CLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsV0FBTSxHQUFOLE1BQU0sQ0FBYTtRQUNuQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLGNBQVMsR0FBVCxTQUFTLENBQWE7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxpQkFBWSxHQUFaLFlBQVksQ0FBb0I7UUFDaEMsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFDMUIsWUFBTyxHQUFQLE9BQU8sQ0FBbUU7UUFqQjVFLFVBQUssR0FBeUIsYUFBYSxDQUFDO1FBQzVDLFFBQUcsR0FB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
|
package/dest/prover-node.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { type EpochProofClaim, type EpochProofQuote, type EpochProverManager, type L1ToL2MessageSource, type L2Block, type L2BlockSource, type
|
|
1
|
+
import { type EpochProofClaim, type EpochProofQuote, type EpochProverManager, type L1ToL2MessageSource, type L2Block, type L2BlockSource, type MerkleTreeWriteOperations, type ProverCoordination, type WorldStateSynchronizer } from '@aztec/circuit-types';
|
|
2
|
+
import { type ContractDataSource } from '@aztec/circuits.js';
|
|
2
3
|
import { type L1Publisher } from '@aztec/sequencer-client';
|
|
3
4
|
import { PublicProcessorFactory, type SimulationProvider } from '@aztec/simulator';
|
|
4
5
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
5
|
-
import { type ContractDataSource } from '@aztec/types/contracts';
|
|
6
6
|
import { type BondManager } from './bond/bond-manager.js';
|
|
7
7
|
import { EpochProvingJob, type EpochProvingJobState } from './job/epoch-proving-job.js';
|
|
8
8
|
import { type ClaimsMonitor, type ClaimsMonitorHandler } from './monitors/claims-monitor.js';
|
|
@@ -88,7 +88,7 @@ export declare class ProverNode implements ClaimsMonitorHandler, EpochMonitorHan
|
|
|
88
88
|
private checkMaximumPendingJobs;
|
|
89
89
|
private createProvingJob;
|
|
90
90
|
/** Extracted for testing purposes. */
|
|
91
|
-
protected doCreateEpochProvingJob(epochNumber: bigint, blocks: L2Block[], db:
|
|
91
|
+
protected doCreateEpochProvingJob(epochNumber: bigint, blocks: L2Block[], db: MerkleTreeWriteOperations, publicProcessorFactory: PublicProcessorFactory, cleanUp: () => Promise<void>): EpochProvingJob;
|
|
92
92
|
/** Extracted for testing purposes. */
|
|
93
93
|
protected triggerMonitors(): Promise<void>;
|
|
94
94
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prover-node.d.ts","sourceRoot":"","sources":["../src/prover-node.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,eAAe,EAEpB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,
|
|
1
|
+
{"version":3,"file":"prover-node.d.ts","sourceRoot":"","sources":["../src/prover-node.ts"],"names":[],"mappings":"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"}
|
package/dest/prover-node.js
CHANGED
|
@@ -128,7 +128,7 @@ export class ProverNode {
|
|
|
128
128
|
await this.prover.stop();
|
|
129
129
|
await this.l2BlockSource.stop();
|
|
130
130
|
this.publisher.interrupt();
|
|
131
|
-
this.jobs.
|
|
131
|
+
await Promise.all(Array.from(this.jobs.values()).map(job => job.stop()));
|
|
132
132
|
await this.worldState.stop();
|
|
133
133
|
this.log.info('Stopped ProverNode');
|
|
134
134
|
}
|
|
@@ -180,16 +180,14 @@ export class ProverNode {
|
|
|
180
180
|
}
|
|
181
181
|
const fromBlock = blocks[0].number;
|
|
182
182
|
const toBlock = blocks.at(-1).number;
|
|
183
|
-
if ((await this.worldState.status()).syncedToL2Block >= fromBlock) {
|
|
184
|
-
throw new Error(`Cannot create proving job for block ${fromBlock} as it is behind the current world state`);
|
|
185
|
-
}
|
|
186
183
|
// Fast forward world state to right before the target block and get a fork
|
|
187
184
|
this.log.verbose(`Creating proving job for epoch ${epochNumber} for block range ${fromBlock} to ${toBlock}`);
|
|
188
|
-
|
|
185
|
+
await this.worldState.syncImmediate(fromBlock - 1);
|
|
186
|
+
const db = await this.worldState.fork(fromBlock - 1);
|
|
189
187
|
// Create a processor using the forked world state
|
|
190
|
-
const publicProcessorFactory = new PublicProcessorFactory(
|
|
188
|
+
const publicProcessorFactory = new PublicProcessorFactory(this.contractDataSource, this.simulator, this.telemetryClient);
|
|
191
189
|
const cleanUp = async () => {
|
|
192
|
-
await db.
|
|
190
|
+
await db.close();
|
|
193
191
|
this.jobs.delete(job.getId());
|
|
194
192
|
};
|
|
195
193
|
const job = this.doCreateEpochProvingJob(epochNumber, blocks, db, publicProcessorFactory, cleanUp);
|
|
@@ -198,7 +196,7 @@ export class ProverNode {
|
|
|
198
196
|
}
|
|
199
197
|
/** Extracted for testing purposes. */
|
|
200
198
|
doCreateEpochProvingJob(epochNumber, blocks, db, publicProcessorFactory, cleanUp) {
|
|
201
|
-
return new EpochProvingJob(epochNumber, blocks, this.prover.createEpochProver(db), publicProcessorFactory, this.publisher, this.l2BlockSource, this.l1ToL2MessageSource, this.coordination, this.metrics, cleanUp);
|
|
199
|
+
return new EpochProvingJob(db, epochNumber, blocks, this.prover.createEpochProver(db), publicProcessorFactory, this.publisher, this.l2BlockSource, this.l1ToL2MessageSource, this.coordination, this.metrics, cleanUp);
|
|
202
200
|
}
|
|
203
201
|
/** Extracted for testing purposes. */
|
|
204
202
|
async triggerMonitors() {
|
|
@@ -206,4 +204,4 @@ export class ProverNode {
|
|
|
206
204
|
await this.claimsMonitor.work();
|
|
207
205
|
}
|
|
208
206
|
}
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvdmVyLW5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHNCQUFzQixHQVF2QixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsc0JBQXNCLEVBQTJCLE1BQU0sa0JBQWtCLENBQUM7QUFJbkYsT0FBTyxFQUFFLGVBQWUsRUFBNkIsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFXakQ7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQVFyQixZQUNtQixNQUEwQixFQUMxQixTQUFzQixFQUN0QixhQUE0QixFQUM1QixtQkFBd0MsRUFDeEMsa0JBQXNDLEVBQ3RDLFVBQWtDLEVBQ2xDLFlBQWdDLEVBQ2hDLFNBQTZCLEVBQzdCLGFBQTRCLEVBQzVCLFdBQXdCLEVBQ3hCLGFBQTRCLEVBQzVCLGFBQTJCLEVBQzNCLFdBQXdCLEVBQ3hCLGVBQWdDLEVBQ2pELFVBQXNDLEVBQUU7UUFkdkIsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFDMUIsY0FBUyxHQUFULFNBQVMsQ0FBYTtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsZUFBVSxHQUFWLFVBQVUsQ0FBd0I7UUFDbEMsaUJBQVksR0FBWixZQUFZLENBQW9CO1FBQ2hDLGNBQVMsR0FBVCxTQUFTLENBQW9CO1FBQzdCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGtCQUFhLEdB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/prover-node",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.58.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js"
|
|
@@ -52,19 +52,19 @@
|
|
|
52
52
|
]
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@aztec/archiver": "0.
|
|
56
|
-
"@aztec/circuit-types": "0.
|
|
57
|
-
"@aztec/circuits.js": "0.
|
|
58
|
-
"@aztec/ethereum": "0.
|
|
59
|
-
"@aztec/foundation": "0.
|
|
60
|
-
"@aztec/kv-store": "0.
|
|
61
|
-
"@aztec/l1-artifacts": "0.
|
|
62
|
-
"@aztec/prover-client": "0.
|
|
63
|
-
"@aztec/sequencer-client": "0.
|
|
64
|
-
"@aztec/simulator": "0.
|
|
65
|
-
"@aztec/telemetry-client": "0.
|
|
66
|
-
"@aztec/types": "0.
|
|
67
|
-
"@aztec/world-state": "0.
|
|
55
|
+
"@aztec/archiver": "0.58.0",
|
|
56
|
+
"@aztec/circuit-types": "0.58.0",
|
|
57
|
+
"@aztec/circuits.js": "0.58.0",
|
|
58
|
+
"@aztec/ethereum": "0.58.0",
|
|
59
|
+
"@aztec/foundation": "0.58.0",
|
|
60
|
+
"@aztec/kv-store": "0.58.0",
|
|
61
|
+
"@aztec/l1-artifacts": "0.58.0",
|
|
62
|
+
"@aztec/prover-client": "0.58.0",
|
|
63
|
+
"@aztec/sequencer-client": "0.58.0",
|
|
64
|
+
"@aztec/simulator": "0.58.0",
|
|
65
|
+
"@aztec/telemetry-client": "0.58.0",
|
|
66
|
+
"@aztec/types": "0.58.0",
|
|
67
|
+
"@aztec/world-state": "0.58.0",
|
|
68
68
|
"source-map-support": "^0.5.21",
|
|
69
69
|
"tslib": "^2.4.0",
|
|
70
70
|
"viem": "^2.7.15"
|
package/src/bond/bond-manager.ts
CHANGED
|
@@ -4,11 +4,11 @@ import { type EscrowContract } from './escrow-contract.js';
|
|
|
4
4
|
import { type TokenContract } from './token-contract.js';
|
|
5
5
|
|
|
6
6
|
export class BondManager {
|
|
7
|
-
private logger = createDebugLogger('aztec:prover-node:bond-manager');
|
|
7
|
+
private readonly logger = createDebugLogger('aztec:prover-node:bond-manager');
|
|
8
8
|
|
|
9
9
|
constructor(
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
private readonly tokenContract: TokenContract,
|
|
11
|
+
private readonly escrowContract: EscrowContract,
|
|
12
12
|
/** Minimum escrowed bond. A top-up will be issued once this threshold is hit. */
|
|
13
13
|
public minimumAmount: bigint,
|
|
14
14
|
/** Target escrowed bond. Top-up will target this value. */
|
package/src/bond/config.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { type ConfigMappingsType, bigintConfigHelper, getConfigFromMappings } from '@aztec/foundation/config';
|
|
2
2
|
|
|
3
3
|
export type ProverBondManagerConfig = {
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
proverMinimumEscrowAmount: bigint;
|
|
5
|
+
proverTargetEscrowAmount?: bigint;
|
|
6
6
|
};
|
|
7
7
|
|
|
8
8
|
export const proverBondManagerConfigMappings: ConfigMappingsType<ProverBondManagerConfig> = {
|
|
9
|
-
|
|
10
|
-
env: '
|
|
9
|
+
proverMinimumEscrowAmount: {
|
|
10
|
+
env: 'PROVER_MINIMUM_ESCROW_AMOUNT',
|
|
11
11
|
description:
|
|
12
12
|
'Minimum amount to ensure is staked in the escrow contract for this prover. Prover node will top up whenever escrow falls below this number.',
|
|
13
13
|
...bigintConfigHelper(100000n),
|
|
14
14
|
},
|
|
15
|
-
|
|
16
|
-
env: '
|
|
15
|
+
proverTargetEscrowAmount: {
|
|
16
|
+
env: 'PROVER_TARGET_ESCROW_AMOUNT',
|
|
17
17
|
description:
|
|
18
|
-
'Target amount to ensure is staked in the escrow contract for this prover. Prover node will top up to this value. Defaults to the minimum amount.',
|
|
18
|
+
'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.',
|
|
19
19
|
...bigintConfigHelper(),
|
|
20
20
|
},
|
|
21
21
|
};
|
package/src/bond/factory.ts
CHANGED
|
@@ -32,7 +32,8 @@ export async function createBondManager(
|
|
|
32
32
|
overrides: Partial<ProverBondManagerConfig> = {},
|
|
33
33
|
) {
|
|
34
34
|
const config = { ...getProverBondManagerConfigFromEnv(), ...compact(overrides) };
|
|
35
|
-
const {
|
|
35
|
+
const { proverMinimumEscrowAmount: minimumStake, proverTargetEscrowAmount: maybeTargetStake } = config;
|
|
36
|
+
const targetStake = maybeTargetStake ?? minimumStake * 2n;
|
|
36
37
|
|
|
37
38
|
const escrowContractAddress = EthAddress.fromString(await rollupContract.read.PROOF_COMMITMENT_ESCROW());
|
|
38
39
|
const escrow = new EscrowContract(client, escrowContractAddress);
|
|
@@ -41,7 +42,7 @@ export async function createBondManager(
|
|
|
41
42
|
const token = new TokenContract(client, tokenContractAddress);
|
|
42
43
|
|
|
43
44
|
// Ensure the prover has enough balance to cover escrow and try to mint otherwise if on a dev environment
|
|
44
|
-
await token.ensureBalance(
|
|
45
|
+
await token.ensureBalance(targetStake * 2n);
|
|
45
46
|
|
|
46
|
-
return new BondManager(token, escrow, minimumStake, targetStake
|
|
47
|
+
return new BondManager(token, escrow, minimumStake, targetStake);
|
|
47
48
|
}
|
|
@@ -4,12 +4,14 @@ import {
|
|
|
4
4
|
type L1ToL2MessageSource,
|
|
5
5
|
type L2Block,
|
|
6
6
|
type L2BlockSource,
|
|
7
|
+
type MerkleTreeWriteOperations,
|
|
7
8
|
type ProcessedTx,
|
|
8
9
|
type ProverCoordination,
|
|
9
10
|
type Tx,
|
|
10
11
|
type TxHash,
|
|
11
12
|
} from '@aztec/circuit-types';
|
|
12
13
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
14
|
+
import { promiseWithResolvers } from '@aztec/foundation/promise';
|
|
13
15
|
import { Timer } from '@aztec/foundation/timer';
|
|
14
16
|
import { type L1Publisher } from '@aztec/sequencer-client';
|
|
15
17
|
import { type PublicProcessor, type PublicProcessorFactory } from '@aztec/simulator';
|
|
@@ -28,7 +30,10 @@ export class EpochProvingJob {
|
|
|
28
30
|
private log = createDebugLogger('aztec:epoch-proving-job');
|
|
29
31
|
private uuid: string;
|
|
30
32
|
|
|
33
|
+
private runPromise: Promise<void> | undefined;
|
|
34
|
+
|
|
31
35
|
constructor(
|
|
36
|
+
private db: MerkleTreeWriteOperations,
|
|
32
37
|
private epochNumber: bigint,
|
|
33
38
|
private blocks: L2Block[],
|
|
34
39
|
private prover: EpochProver,
|
|
@@ -61,13 +66,16 @@ export class EpochProvingJob {
|
|
|
61
66
|
this.state = 'processing';
|
|
62
67
|
const timer = new Timer();
|
|
63
68
|
|
|
69
|
+
const { promise, resolve } = promiseWithResolvers<void>();
|
|
70
|
+
this.runPromise = promise;
|
|
71
|
+
|
|
64
72
|
try {
|
|
65
73
|
this.prover.startNewEpoch(epochNumber, epochSize);
|
|
66
74
|
|
|
67
75
|
// Get the genesis header if the first block of the epoch is the first block of the chain
|
|
68
76
|
let previousHeader =
|
|
69
77
|
this.blocks[0].number === 1
|
|
70
|
-
? this.
|
|
78
|
+
? this.db.getInitialHeader()
|
|
71
79
|
: await this.l2BlockSource.getBlockHeader(this.blocks[0].number - 1);
|
|
72
80
|
|
|
73
81
|
for (const block of this.blocks) {
|
|
@@ -94,7 +102,7 @@ export class EpochProvingJob {
|
|
|
94
102
|
await this.prover.startNewBlock(txCount, globalVariables, l1ToL2Messages);
|
|
95
103
|
|
|
96
104
|
// Process public fns
|
|
97
|
-
const publicProcessor = this.publicProcessorFactory.create(previousHeader, globalVariables);
|
|
105
|
+
const publicProcessor = this.publicProcessorFactory.create(this.db, previousHeader, globalVariables);
|
|
98
106
|
await this.processTxs(publicProcessor, txs, txCount);
|
|
99
107
|
this.log.verbose(`Processed all txs for block`, {
|
|
100
108
|
blockNumber: block.number,
|
|
@@ -103,7 +111,7 @@ export class EpochProvingJob {
|
|
|
103
111
|
});
|
|
104
112
|
|
|
105
113
|
// Mark block as completed and update archive tree
|
|
106
|
-
await this.prover.setBlockCompleted();
|
|
114
|
+
await this.prover.setBlockCompleted(block.header);
|
|
107
115
|
previousHeader = block.header;
|
|
108
116
|
}
|
|
109
117
|
|
|
@@ -123,11 +131,15 @@ export class EpochProvingJob {
|
|
|
123
131
|
this.state = 'failed';
|
|
124
132
|
} finally {
|
|
125
133
|
await this.cleanUp(this);
|
|
134
|
+
resolve();
|
|
126
135
|
}
|
|
127
136
|
}
|
|
128
137
|
|
|
129
|
-
public stop() {
|
|
138
|
+
public async stop() {
|
|
130
139
|
this.prover.cancel();
|
|
140
|
+
if (this.runPromise) {
|
|
141
|
+
await this.runPromise;
|
|
142
|
+
}
|
|
131
143
|
}
|
|
132
144
|
|
|
133
145
|
private async getTxs(txHashes: TxHash[]): Promise<Tx[]> {
|
package/src/prover-node.ts
CHANGED
|
@@ -6,16 +6,16 @@ import {
|
|
|
6
6
|
type L1ToL2MessageSource,
|
|
7
7
|
type L2Block,
|
|
8
8
|
type L2BlockSource,
|
|
9
|
-
type
|
|
9
|
+
type MerkleTreeWriteOperations,
|
|
10
10
|
type ProverCoordination,
|
|
11
11
|
type WorldStateSynchronizer,
|
|
12
12
|
} from '@aztec/circuit-types';
|
|
13
|
+
import { type ContractDataSource } from '@aztec/circuits.js';
|
|
13
14
|
import { compact } from '@aztec/foundation/collection';
|
|
14
15
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
15
16
|
import { type L1Publisher } from '@aztec/sequencer-client';
|
|
16
17
|
import { PublicProcessorFactory, type SimulationProvider } from '@aztec/simulator';
|
|
17
18
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
18
|
-
import { type ContractDataSource } from '@aztec/types/contracts';
|
|
19
19
|
|
|
20
20
|
import { type BondManager } from './bond/bond-manager.js';
|
|
21
21
|
import { EpochProvingJob, type EpochProvingJobState } from './job/epoch-proving-job.js';
|
|
@@ -167,7 +167,7 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler {
|
|
|
167
167
|
await this.prover.stop();
|
|
168
168
|
await this.l2BlockSource.stop();
|
|
169
169
|
this.publisher.interrupt();
|
|
170
|
-
this.jobs.
|
|
170
|
+
await Promise.all(Array.from(this.jobs.values()).map(job => job.stop()));
|
|
171
171
|
await this.worldState.stop();
|
|
172
172
|
this.log.info('Stopped ProverNode');
|
|
173
173
|
}
|
|
@@ -228,24 +228,20 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler {
|
|
|
228
228
|
const fromBlock = blocks[0].number;
|
|
229
229
|
const toBlock = blocks.at(-1)!.number;
|
|
230
230
|
|
|
231
|
-
if ((await this.worldState.status()).syncedToL2Block >= fromBlock) {
|
|
232
|
-
throw new Error(`Cannot create proving job for block ${fromBlock} as it is behind the current world state`);
|
|
233
|
-
}
|
|
234
|
-
|
|
235
231
|
// Fast forward world state to right before the target block and get a fork
|
|
236
232
|
this.log.verbose(`Creating proving job for epoch ${epochNumber} for block range ${fromBlock} to ${toBlock}`);
|
|
237
|
-
|
|
233
|
+
await this.worldState.syncImmediate(fromBlock - 1);
|
|
234
|
+
const db = await this.worldState.fork(fromBlock - 1);
|
|
238
235
|
|
|
239
236
|
// Create a processor using the forked world state
|
|
240
237
|
const publicProcessorFactory = new PublicProcessorFactory(
|
|
241
|
-
db,
|
|
242
238
|
this.contractDataSource,
|
|
243
239
|
this.simulator,
|
|
244
240
|
this.telemetryClient,
|
|
245
241
|
);
|
|
246
242
|
|
|
247
243
|
const cleanUp = async () => {
|
|
248
|
-
await db.
|
|
244
|
+
await db.close();
|
|
249
245
|
this.jobs.delete(job.getId());
|
|
250
246
|
};
|
|
251
247
|
|
|
@@ -258,11 +254,12 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler {
|
|
|
258
254
|
protected doCreateEpochProvingJob(
|
|
259
255
|
epochNumber: bigint,
|
|
260
256
|
blocks: L2Block[],
|
|
261
|
-
db:
|
|
257
|
+
db: MerkleTreeWriteOperations,
|
|
262
258
|
publicProcessorFactory: PublicProcessorFactory,
|
|
263
259
|
cleanUp: () => Promise<void>,
|
|
264
260
|
) {
|
|
265
261
|
return new EpochProvingJob(
|
|
262
|
+
db,
|
|
266
263
|
epochNumber,
|
|
267
264
|
blocks,
|
|
268
265
|
this.prover.createEpochProver(db),
|