@aztec/validator-client 0.86.0-nightly.20250430 → 0.86.0-nightly.20250502
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/validator.d.ts +1 -1
- package/dest/validator.d.ts.map +1 -1
- package/dest/validator.js +9 -10
- package/package.json +7 -7
- package/src/validator.ts +9 -8
package/dest/validator.d.ts
CHANGED
|
@@ -51,7 +51,7 @@ export declare class ValidatorClient extends WithTracer implements Validator {
|
|
|
51
51
|
private epochCacheUpdateLoop;
|
|
52
52
|
private blockProposalValidator;
|
|
53
53
|
constructor(keyStore: ValidatorKeyStore, epochCache: EpochCache, p2pClient: P2P, config: ValidatorClientConfig, dateProvider?: DateProvider, telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
|
|
54
|
-
private
|
|
54
|
+
private handleEpochCommitteeUpdate;
|
|
55
55
|
static new(config: ValidatorClientConfig, epochCache: EpochCache, p2pClient: P2P, dateProvider?: DateProvider, telemetry?: TelemetryClient): ValidatorClient;
|
|
56
56
|
getValidatorAddress(): EthAddress;
|
|
57
57
|
start(): Promise<void>;
|
package/dest/validator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"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"}
|
package/dest/validator.js
CHANGED
|
@@ -34,12 +34,12 @@ import { ValidatorMetrics } from './metrics.js';
|
|
|
34
34
|
this.metrics = new ValidatorMetrics(telemetry);
|
|
35
35
|
this.validationService = new ValidationService(keyStore);
|
|
36
36
|
this.blockProposalValidator = new BlockProposalValidator(epochCache);
|
|
37
|
-
// Refresh epoch cache every second to trigger alert if participation in
|
|
37
|
+
// Refresh epoch cache every second to trigger alert if participation in committee changes
|
|
38
38
|
this.myAddress = this.keyStore.getAddress();
|
|
39
|
-
this.epochCacheUpdateLoop = new RunningPromise(this.
|
|
39
|
+
this.epochCacheUpdateLoop = new RunningPromise(this.handleEpochCommitteeUpdate.bind(this), log, 1000);
|
|
40
40
|
this.log.verbose(`Initialized validator with address ${this.keyStore.getAddress().toString()}`);
|
|
41
41
|
}
|
|
42
|
-
async
|
|
42
|
+
async handleEpochCommitteeUpdate() {
|
|
43
43
|
try {
|
|
44
44
|
const { committee, epoch } = await this.epochCache.getCommittee('now');
|
|
45
45
|
if (epoch !== this.lastEpoch) {
|
|
@@ -157,7 +157,9 @@ import { ValidatorMetrics } from './metrics.js';
|
|
|
157
157
|
const txs = (await Promise.all(txHashes.map((tx)=>this.p2pClient.getTxByHash(tx)))).filter((tx)=>tx !== undefined);
|
|
158
158
|
// If we cannot request all of the transactions, then we should fail
|
|
159
159
|
if (txs.length !== txHashes.length) {
|
|
160
|
-
|
|
160
|
+
const foundTxHashes = await Promise.all(txs.map(async (tx)=>await tx.getTxHash()));
|
|
161
|
+
const missingTxHashes = txHashes.filter((txHash)=>!foundTxHashes.includes(txHash));
|
|
162
|
+
throw new TransactionsNotAvailableError(missingTxHashes);
|
|
161
163
|
}
|
|
162
164
|
// Assertion: This check will fail if re-execution is not enabled
|
|
163
165
|
if (this.blockBuilder === undefined) {
|
|
@@ -193,16 +195,13 @@ import { ValidatorMetrics } from './metrics.js';
|
|
|
193
195
|
* @param proposal - The proposal to attest to
|
|
194
196
|
*/ async ensureTransactionsAreAvailable(proposal) {
|
|
195
197
|
const txHashes = proposal.payload.txHashes;
|
|
196
|
-
const
|
|
197
|
-
const missingTxs = txHashes.filter((_, index)=>![
|
|
198
|
-
'pending',
|
|
199
|
-
'mined'
|
|
200
|
-
].includes(transactionStatuses[index] ?? ''));
|
|
198
|
+
const availability = await this.p2pClient.hasTxsInPool(txHashes);
|
|
199
|
+
const missingTxs = txHashes.filter((_, index)=>!availability[index]);
|
|
201
200
|
if (missingTxs.length === 0) {
|
|
202
201
|
return; // All transactions are available
|
|
203
202
|
}
|
|
204
203
|
this.log.verbose(`Missing ${missingTxs.length} transactions in the tx pool, requesting from the network`);
|
|
205
|
-
const requestedTxs = await this.p2pClient.
|
|
204
|
+
const requestedTxs = await this.p2pClient.requestTxsByHash(missingTxs);
|
|
206
205
|
if (requestedTxs.some((tx)=>tx === undefined)) {
|
|
207
206
|
throw new TransactionsNotAvailableError(missingTxs);
|
|
208
207
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/validator-client",
|
|
3
|
-
"version": "0.86.0-nightly.
|
|
3
|
+
"version": "0.86.0-nightly.20250502",
|
|
4
4
|
"main": "dest/index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -60,12 +60,12 @@
|
|
|
60
60
|
]
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@aztec/epoch-cache": "0.86.0-nightly.
|
|
64
|
-
"@aztec/ethereum": "0.86.0-nightly.
|
|
65
|
-
"@aztec/foundation": "0.86.0-nightly.
|
|
66
|
-
"@aztec/p2p": "0.86.0-nightly.
|
|
67
|
-
"@aztec/stdlib": "0.86.0-nightly.
|
|
68
|
-
"@aztec/telemetry-client": "0.86.0-nightly.
|
|
63
|
+
"@aztec/epoch-cache": "0.86.0-nightly.20250502",
|
|
64
|
+
"@aztec/ethereum": "0.86.0-nightly.20250502",
|
|
65
|
+
"@aztec/foundation": "0.86.0-nightly.20250502",
|
|
66
|
+
"@aztec/p2p": "0.86.0-nightly.20250502",
|
|
67
|
+
"@aztec/stdlib": "0.86.0-nightly.20250502",
|
|
68
|
+
"@aztec/telemetry-client": "0.86.0-nightly.20250502",
|
|
69
69
|
"koa": "^2.16.1",
|
|
70
70
|
"koa-router": "^12.0.0",
|
|
71
71
|
"tslib": "^2.4.0",
|
package/src/validator.ts
CHANGED
|
@@ -101,14 +101,14 @@ export class ValidatorClient extends WithTracer implements Validator {
|
|
|
101
101
|
|
|
102
102
|
this.blockProposalValidator = new BlockProposalValidator(epochCache);
|
|
103
103
|
|
|
104
|
-
// Refresh epoch cache every second to trigger alert if participation in
|
|
104
|
+
// Refresh epoch cache every second to trigger alert if participation in committee changes
|
|
105
105
|
this.myAddress = this.keyStore.getAddress();
|
|
106
|
-
this.epochCacheUpdateLoop = new RunningPromise(this.
|
|
106
|
+
this.epochCacheUpdateLoop = new RunningPromise(this.handleEpochCommitteeUpdate.bind(this), log, 1000);
|
|
107
107
|
|
|
108
108
|
this.log.verbose(`Initialized validator with address ${this.keyStore.getAddress().toString()}`);
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
private async
|
|
111
|
+
private async handleEpochCommitteeUpdate() {
|
|
112
112
|
try {
|
|
113
113
|
const { committee, epoch } = await this.epochCache.getCommittee('now');
|
|
114
114
|
if (epoch !== this.lastEpoch) {
|
|
@@ -256,7 +256,9 @@ export class ValidatorClient extends WithTracer implements Validator {
|
|
|
256
256
|
|
|
257
257
|
// If we cannot request all of the transactions, then we should fail
|
|
258
258
|
if (txs.length !== txHashes.length) {
|
|
259
|
-
|
|
259
|
+
const foundTxHashes = await Promise.all(txs.map(async tx => await tx.getTxHash()));
|
|
260
|
+
const missingTxHashes = txHashes.filter(txHash => !foundTxHashes.includes(txHash));
|
|
261
|
+
throw new TransactionsNotAvailableError(missingTxHashes);
|
|
260
262
|
}
|
|
261
263
|
|
|
262
264
|
// Assertion: This check will fail if re-execution is not enabled
|
|
@@ -300,9 +302,8 @@ export class ValidatorClient extends WithTracer implements Validator {
|
|
|
300
302
|
*/
|
|
301
303
|
async ensureTransactionsAreAvailable(proposal: BlockProposal) {
|
|
302
304
|
const txHashes: TxHash[] = proposal.payload.txHashes;
|
|
303
|
-
const
|
|
304
|
-
|
|
305
|
-
const missingTxs = txHashes.filter((_, index) => !['pending', 'mined'].includes(transactionStatuses[index] ?? ''));
|
|
305
|
+
const availability = await this.p2pClient.hasTxsInPool(txHashes);
|
|
306
|
+
const missingTxs = txHashes.filter((_, index) => !availability[index]);
|
|
306
307
|
|
|
307
308
|
if (missingTxs.length === 0) {
|
|
308
309
|
return; // All transactions are available
|
|
@@ -310,7 +311,7 @@ export class ValidatorClient extends WithTracer implements Validator {
|
|
|
310
311
|
|
|
311
312
|
this.log.verbose(`Missing ${missingTxs.length} transactions in the tx pool, requesting from the network`);
|
|
312
313
|
|
|
313
|
-
const requestedTxs = await this.p2pClient.
|
|
314
|
+
const requestedTxs = await this.p2pClient.requestTxsByHash(missingTxs);
|
|
314
315
|
if (requestedTxs.some(tx => tx === undefined)) {
|
|
315
316
|
throw new TransactionsNotAvailableError(missingTxs);
|
|
316
317
|
}
|