@aztec/validator-client 1.0.0-staging.2 → 1.0.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/validator.d.ts.map +1 -1
- package/dest/validator.js +12 -35
- package/package.json +10 -10
- package/src/validator.ts +13 -48
package/dest/validator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"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"}
|
package/dest/validator.js
CHANGED
|
@@ -2,7 +2,6 @@ import { INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
|
|
|
2
2
|
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
3
3
|
import { Fr } from '@aztec/foundation/fields';
|
|
4
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
5
|
-
import { retryUntil } from '@aztec/foundation/retry';
|
|
6
5
|
import { RunningPromise } from '@aztec/foundation/running-promise';
|
|
7
6
|
import { sleep } from '@aztec/foundation/sleep';
|
|
8
7
|
import { DateProvider, Timer } from '@aztec/foundation/timer';
|
|
@@ -122,9 +121,6 @@ const MAX_PROPOSERS_OF_INVALID_BLOCKS = 1000;
|
|
|
122
121
|
const slotNumber = proposal.slotNumber.toNumber();
|
|
123
122
|
const blockNumber = proposal.blockNumber;
|
|
124
123
|
const proposer = proposal.getSender();
|
|
125
|
-
// Check that I have any address in current committee before attesting
|
|
126
|
-
const inCommittee = await this.epochCache.filterInCommittee(this.keyStore.getAddresses());
|
|
127
|
-
const partOfCommittee = inCommittee.length > 0;
|
|
128
124
|
const proposalInfo = {
|
|
129
125
|
slotNumber,
|
|
130
126
|
blockNumber,
|
|
@@ -139,9 +135,7 @@ const MAX_PROPOSERS_OF_INVALID_BLOCKS = 1000;
|
|
|
139
135
|
const invalidProposal = await this.blockProposalValidator.validate(proposal);
|
|
140
136
|
if (invalidProposal) {
|
|
141
137
|
this.log.warn(`Proposal is not valid, skipping attestation`);
|
|
142
|
-
|
|
143
|
-
this.metrics.incFailedAttestations(1, 'invalid_proposal');
|
|
144
|
-
}
|
|
138
|
+
this.metrics.incFailedAttestations(1, 'invalid_proposal');
|
|
145
139
|
return undefined;
|
|
146
140
|
}
|
|
147
141
|
// Check that the parent proposal is a block we know, otherwise reexecution would fail.
|
|
@@ -150,23 +144,10 @@ const MAX_PROPOSERS_OF_INVALID_BLOCKS = 1000;
|
|
|
150
144
|
// would not be rebroadcasted. But it also means that nodes that have not fully synced would
|
|
151
145
|
// not rebroadcast the proposal.
|
|
152
146
|
if (blockNumber > INITIAL_L2_BLOCK_NUM) {
|
|
153
|
-
const
|
|
154
|
-
const deadline = this.getReexecutionDeadline(proposal, config);
|
|
155
|
-
const currentTime = this.dateProvider.now();
|
|
156
|
-
const timeoutDurationMs = deadline.getTime() - currentTime;
|
|
157
|
-
const parentBlock = timeoutDurationMs <= 0 ? undefined : await retryUntil(async ()=>{
|
|
158
|
-
const block = await this.blockSource.getBlock(blockNumber - 1);
|
|
159
|
-
if (block) {
|
|
160
|
-
return block;
|
|
161
|
-
}
|
|
162
|
-
await this.blockSource.syncImmediate();
|
|
163
|
-
return await this.blockSource.getBlock(blockNumber - 1);
|
|
164
|
-
}, 'Force Archiver Sync', timeoutDurationMs / 1000, 0.5);
|
|
147
|
+
const parentBlock = await this.blockSource.getBlock(blockNumber - 1);
|
|
165
148
|
if (parentBlock === undefined) {
|
|
166
149
|
this.log.warn(`Parent block for ${blockNumber} not found, skipping attestation`);
|
|
167
|
-
|
|
168
|
-
this.metrics.incFailedAttestations(1, 'parent_block_not_found');
|
|
169
|
-
}
|
|
150
|
+
this.metrics.incFailedAttestations(1, 'parent_block_not_found');
|
|
170
151
|
return undefined;
|
|
171
152
|
}
|
|
172
153
|
if (!proposal.payload.header.lastArchiveRoot.equals(parentBlock.archive.root)) {
|
|
@@ -175,23 +156,25 @@ const MAX_PROPOSERS_OF_INVALID_BLOCKS = 1000;
|
|
|
175
156
|
parentBlockArchiveRoot: parentBlock.archive.root.toString(),
|
|
176
157
|
...proposalInfo
|
|
177
158
|
});
|
|
178
|
-
|
|
179
|
-
this.metrics.incFailedAttestations(1, 'parent_block_does_not_match');
|
|
180
|
-
}
|
|
159
|
+
this.metrics.incFailedAttestations(1, 'parent_block_does_not_match');
|
|
181
160
|
return undefined;
|
|
182
161
|
}
|
|
183
162
|
}
|
|
184
163
|
// Collect txs from the proposal
|
|
185
164
|
const { missing, txs } = await this.txCollector.collectForBlockProposal(proposal, proposalSender);
|
|
165
|
+
// Check that I have any address in current committee before attesting
|
|
166
|
+
const inCommittee = await this.epochCache.filterInCommittee(this.keyStore.getAddresses());
|
|
167
|
+
if (inCommittee.length === 0) {
|
|
168
|
+
this.log.verbose(`No validator in the committee, skipping attestation`);
|
|
169
|
+
return undefined;
|
|
170
|
+
}
|
|
186
171
|
// Check that all of the transactions in the proposal are available in the tx pool before attesting
|
|
187
172
|
if (missing && missing.length > 0) {
|
|
188
173
|
this.log.warn(`Missing ${missing.length}/${proposal.payload.txHashes.length} txs to attest to proposal`, {
|
|
189
174
|
...proposalInfo,
|
|
190
175
|
missing
|
|
191
176
|
});
|
|
192
|
-
|
|
193
|
-
this.metrics.incFailedAttestations(1, 'tx_not_available');
|
|
194
|
-
}
|
|
177
|
+
this.metrics.incFailedAttestations(1, 'TransactionsNotAvailableError');
|
|
195
178
|
return undefined;
|
|
196
179
|
}
|
|
197
180
|
// Check that I have the same set of l1ToL2Messages as the proposal
|
|
@@ -204,13 +187,7 @@ const MAX_PROPOSERS_OF_INVALID_BLOCKS = 1000;
|
|
|
204
187
|
computedInHash: computedInHash.toString(),
|
|
205
188
|
...proposalInfo
|
|
206
189
|
});
|
|
207
|
-
|
|
208
|
-
this.metrics.incFailedAttestations(1, 'in_hash_mismatch');
|
|
209
|
-
}
|
|
210
|
-
return undefined;
|
|
211
|
-
}
|
|
212
|
-
if (!partOfCommittee) {
|
|
213
|
-
this.log.verbose(`No validator in the committee, skipping attestation`);
|
|
190
|
+
this.metrics.incFailedAttestations(1, 'in_hash_mismatch');
|
|
214
191
|
return undefined;
|
|
215
192
|
}
|
|
216
193
|
// Try re-executing the transactions in the proposal
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/validator-client",
|
|
3
|
-
"version": "1.0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"main": "dest/index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -64,15 +64,15 @@
|
|
|
64
64
|
]
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"@aztec/constants": "1.0.0
|
|
68
|
-
"@aztec/epoch-cache": "1.0.0
|
|
69
|
-
"@aztec/ethereum": "1.0.0
|
|
70
|
-
"@aztec/foundation": "1.0.0
|
|
71
|
-
"@aztec/p2p": "1.0.0
|
|
72
|
-
"@aztec/prover-client": "1.0.0
|
|
73
|
-
"@aztec/slasher": "1.0.0
|
|
74
|
-
"@aztec/stdlib": "1.0.0
|
|
75
|
-
"@aztec/telemetry-client": "1.0.0
|
|
67
|
+
"@aztec/constants": "1.0.0",
|
|
68
|
+
"@aztec/epoch-cache": "1.0.0",
|
|
69
|
+
"@aztec/ethereum": "1.0.0",
|
|
70
|
+
"@aztec/foundation": "1.0.0",
|
|
71
|
+
"@aztec/p2p": "1.0.0",
|
|
72
|
+
"@aztec/prover-client": "1.0.0",
|
|
73
|
+
"@aztec/slasher": "1.0.0",
|
|
74
|
+
"@aztec/stdlib": "1.0.0",
|
|
75
|
+
"@aztec/telemetry-client": "1.0.0",
|
|
76
76
|
"koa": "^2.16.1",
|
|
77
77
|
"koa-router": "^12.0.0",
|
|
78
78
|
"tslib": "^2.4.0",
|
package/src/validator.ts
CHANGED
|
@@ -4,7 +4,6 @@ import { Buffer32 } from '@aztec/foundation/buffer';
|
|
|
4
4
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
5
|
import { Fr } from '@aztec/foundation/fields';
|
|
6
6
|
import { createLogger } from '@aztec/foundation/log';
|
|
7
|
-
import { retryUntil } from '@aztec/foundation/retry';
|
|
8
7
|
import { RunningPromise } from '@aztec/foundation/running-promise';
|
|
9
8
|
import { sleep } from '@aztec/foundation/sleep';
|
|
10
9
|
import { DateProvider, Timer } from '@aztec/foundation/timer';
|
|
@@ -227,10 +226,6 @@ export class ValidatorClient extends (EventEmitter as new () => WatcherEmitter)
|
|
|
227
226
|
const blockNumber = proposal.blockNumber;
|
|
228
227
|
const proposer = proposal.getSender();
|
|
229
228
|
|
|
230
|
-
// Check that I have any address in current committee before attesting
|
|
231
|
-
const inCommittee = await this.epochCache.filterInCommittee(this.keyStore.getAddresses());
|
|
232
|
-
const partOfCommittee = inCommittee.length > 0;
|
|
233
|
-
|
|
234
229
|
const proposalInfo = {
|
|
235
230
|
slotNumber,
|
|
236
231
|
blockNumber,
|
|
@@ -246,9 +241,7 @@ export class ValidatorClient extends (EventEmitter as new () => WatcherEmitter)
|
|
|
246
241
|
const invalidProposal = await this.blockProposalValidator.validate(proposal);
|
|
247
242
|
if (invalidProposal) {
|
|
248
243
|
this.log.warn(`Proposal is not valid, skipping attestation`);
|
|
249
|
-
|
|
250
|
-
this.metrics.incFailedAttestations(1, 'invalid_proposal');
|
|
251
|
-
}
|
|
244
|
+
this.metrics.incFailedAttestations(1, 'invalid_proposal');
|
|
252
245
|
return undefined;
|
|
253
246
|
}
|
|
254
247
|
|
|
@@ -258,34 +251,10 @@ export class ValidatorClient extends (EventEmitter as new () => WatcherEmitter)
|
|
|
258
251
|
// would not be rebroadcasted. But it also means that nodes that have not fully synced would
|
|
259
252
|
// not rebroadcast the proposal.
|
|
260
253
|
if (blockNumber > INITIAL_L2_BLOCK_NUM) {
|
|
261
|
-
const
|
|
262
|
-
const deadline = this.getReexecutionDeadline(proposal, config);
|
|
263
|
-
const currentTime = this.dateProvider.now();
|
|
264
|
-
const timeoutDurationMs = deadline.getTime() - currentTime;
|
|
265
|
-
const parentBlock =
|
|
266
|
-
timeoutDurationMs <= 0
|
|
267
|
-
? undefined
|
|
268
|
-
: await retryUntil(
|
|
269
|
-
async () => {
|
|
270
|
-
const block = await this.blockSource.getBlock(blockNumber - 1);
|
|
271
|
-
if (block) {
|
|
272
|
-
return block;
|
|
273
|
-
}
|
|
274
|
-
await this.blockSource.syncImmediate();
|
|
275
|
-
return await this.blockSource.getBlock(blockNumber - 1);
|
|
276
|
-
},
|
|
277
|
-
'Force Archiver Sync',
|
|
278
|
-
timeoutDurationMs / 1000, // Continue retrying until the deadline
|
|
279
|
-
0.5, // Retry every 500ms
|
|
280
|
-
);
|
|
281
|
-
|
|
254
|
+
const parentBlock = await this.blockSource.getBlock(blockNumber - 1);
|
|
282
255
|
if (parentBlock === undefined) {
|
|
283
256
|
this.log.warn(`Parent block for ${blockNumber} not found, skipping attestation`);
|
|
284
|
-
|
|
285
|
-
if (partOfCommittee) {
|
|
286
|
-
this.metrics.incFailedAttestations(1, 'parent_block_not_found');
|
|
287
|
-
}
|
|
288
|
-
|
|
257
|
+
this.metrics.incFailedAttestations(1, 'parent_block_not_found');
|
|
289
258
|
return undefined;
|
|
290
259
|
}
|
|
291
260
|
if (!proposal.payload.header.lastArchiveRoot.equals(parentBlock.archive.root)) {
|
|
@@ -294,9 +263,7 @@ export class ValidatorClient extends (EventEmitter as new () => WatcherEmitter)
|
|
|
294
263
|
parentBlockArchiveRoot: parentBlock.archive.root.toString(),
|
|
295
264
|
...proposalInfo,
|
|
296
265
|
});
|
|
297
|
-
|
|
298
|
-
this.metrics.incFailedAttestations(1, 'parent_block_does_not_match');
|
|
299
|
-
}
|
|
266
|
+
this.metrics.incFailedAttestations(1, 'parent_block_does_not_match');
|
|
300
267
|
return undefined;
|
|
301
268
|
}
|
|
302
269
|
}
|
|
@@ -304,15 +271,20 @@ export class ValidatorClient extends (EventEmitter as new () => WatcherEmitter)
|
|
|
304
271
|
// Collect txs from the proposal
|
|
305
272
|
const { missing, txs } = await this.txCollector.collectForBlockProposal(proposal, proposalSender);
|
|
306
273
|
|
|
274
|
+
// Check that I have any address in current committee before attesting
|
|
275
|
+
const inCommittee = await this.epochCache.filterInCommittee(this.keyStore.getAddresses());
|
|
276
|
+
if (inCommittee.length === 0) {
|
|
277
|
+
this.log.verbose(`No validator in the committee, skipping attestation`);
|
|
278
|
+
return undefined;
|
|
279
|
+
}
|
|
280
|
+
|
|
307
281
|
// Check that all of the transactions in the proposal are available in the tx pool before attesting
|
|
308
282
|
if (missing && missing.length > 0) {
|
|
309
283
|
this.log.warn(`Missing ${missing.length}/${proposal.payload.txHashes.length} txs to attest to proposal`, {
|
|
310
284
|
...proposalInfo,
|
|
311
285
|
missing,
|
|
312
286
|
});
|
|
313
|
-
|
|
314
|
-
this.metrics.incFailedAttestations(1, 'tx_not_available');
|
|
315
|
-
}
|
|
287
|
+
this.metrics.incFailedAttestations(1, 'TransactionsNotAvailableError');
|
|
316
288
|
return undefined;
|
|
317
289
|
}
|
|
318
290
|
|
|
@@ -326,14 +298,7 @@ export class ValidatorClient extends (EventEmitter as new () => WatcherEmitter)
|
|
|
326
298
|
computedInHash: computedInHash.toString(),
|
|
327
299
|
...proposalInfo,
|
|
328
300
|
});
|
|
329
|
-
|
|
330
|
-
this.metrics.incFailedAttestations(1, 'in_hash_mismatch');
|
|
331
|
-
}
|
|
332
|
-
return undefined;
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
if (!partOfCommittee) {
|
|
336
|
-
this.log.verbose(`No validator in the committee, skipping attestation`);
|
|
301
|
+
this.metrics.incFailedAttestations(1, 'in_hash_mismatch');
|
|
337
302
|
return undefined;
|
|
338
303
|
}
|
|
339
304
|
|