@aztec/p2p 0.85.0-alpha-testnet.4 → 0.85.0-alpha-testnet.5
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/client/p2p_client.d.ts +3 -17
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +27 -25
- package/dest/services/libp2p/libp2p_service.d.ts +1 -1
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +2 -2
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +1 -1
- package/dest/services/service.d.ts +1 -1
- package/dest/services/service.d.ts.map +1 -1
- package/package.json +12 -12
- package/src/client/p2p_client.ts +42 -35
- package/src/services/libp2p/libp2p_service.ts +4 -1
- package/src/services/reqresp/reqresp.ts +1 -1
- package/src/services/service.ts +3 -0
|
@@ -48,17 +48,12 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApi<T> & {
|
|
|
48
48
|
* @param handler - A function taking a received block proposal and producing an attestation
|
|
49
49
|
*/
|
|
50
50
|
registerBlockProposalHandler(handler: (block: BlockProposal) => Promise<BlockAttestation | undefined>): void;
|
|
51
|
-
/**
|
|
52
|
-
* Request a list of transactions from another peer by their tx hashes.
|
|
53
|
-
* @param txHashes - Hashes of the txs to query.
|
|
54
|
-
* @returns A list of transactions or undefined if the transactions are not found.
|
|
55
|
-
*/
|
|
56
|
-
requestTxs(txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
|
|
57
51
|
/**
|
|
58
52
|
* Request a transaction from another peer by its tx hash.
|
|
59
53
|
* @param txHash - Hash of the tx to query.
|
|
60
54
|
*/
|
|
61
55
|
requestTxByHash(txHash: TxHash): Promise<Tx | undefined>;
|
|
56
|
+
requestTxsByHash(txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
|
|
62
57
|
/**
|
|
63
58
|
* Verifies the 'tx' and, if valid, adds it to local tx pool and forwards it to other peers.
|
|
64
59
|
* @param tx - The transaction.
|
|
@@ -204,16 +199,6 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
|
|
|
204
199
|
getAttestationsForSlot(slot: bigint, proposalId?: string): Promise<BlockAttestation[]>;
|
|
205
200
|
addAttestation(attestation: BlockAttestation): Promise<void>;
|
|
206
201
|
registerBlockProposalHandler(handler: (block: BlockProposal) => Promise<BlockAttestation | undefined>): void;
|
|
207
|
-
/**
|
|
208
|
-
* Requests the transactions with the given hashes from the network.
|
|
209
|
-
*
|
|
210
|
-
* If a transaction can be retrieved, it will be returned, if not an undefined
|
|
211
|
-
* will be returned. In place.
|
|
212
|
-
*
|
|
213
|
-
* @param txHashes - The hashes of the transactions to request.
|
|
214
|
-
* @returns A promise that resolves to an array of transactions or undefined.
|
|
215
|
-
*/
|
|
216
|
-
requestTxs(txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
|
|
217
202
|
/**
|
|
218
203
|
* Uses the Request Response protocol to request a transaction from the network.
|
|
219
204
|
*
|
|
@@ -323,7 +308,6 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
|
|
|
323
308
|
* @returns Empty promise.
|
|
324
309
|
*/
|
|
325
310
|
private markTxsAsMinedFromBlocks;
|
|
326
|
-
private addAttestationsToPool;
|
|
327
311
|
/**
|
|
328
312
|
* Deletes txs from these blocks.
|
|
329
313
|
* @param blocks - A list of existing blocks with txs that the P2P client needs to ensure the tx pool is reconciled with.
|
|
@@ -336,6 +320,8 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
|
|
|
336
320
|
* @returns Empty promise.
|
|
337
321
|
*/
|
|
338
322
|
private handleLatestL2Blocks;
|
|
323
|
+
/** Request txs for unproven blocks so the prover node has more chances to get them. */
|
|
324
|
+
private requestMissingTxsFromUnprovenBlocks;
|
|
339
325
|
/**
|
|
340
326
|
* Handles new proven blocks by deleting the txs in them, or by deleting the txs in blocks `keepProvenTxsFor` ago.
|
|
341
327
|
* @param blocks - A list of proven L2 blocks.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p2p_client.d.ts","sourceRoot":"","sources":["../../src/client/p2p_client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAsC,MAAM,iBAAiB,CAAC;AAC7F,OAAO,KAAK,EAEV,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,MAAM,EAEP,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"p2p_client.d.ts","sourceRoot":"","sources":["../../src/client/p2p_client.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,6 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
6
6
|
}
|
|
7
7
|
import { INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
|
|
8
8
|
import { createLogger } from '@aztec/foundation/log';
|
|
9
|
-
import { BlockAttestation, ConsensusPayload } from '@aztec/stdlib/p2p';
|
|
10
9
|
import { Attributes, TraceableL2BlockStream, WithTracer, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
|
|
11
10
|
import { getP2PDefaultConfig } from '../config.js';
|
|
12
11
|
import { ReqRespSubProtocol } from '../services/reqresp/interface.js';
|
|
@@ -210,18 +209,6 @@ import { ReqRespSubProtocol } from '../services/reqresp/interface.js';
|
|
|
210
209
|
this.p2pService.registerBlockReceivedCallback(handler);
|
|
211
210
|
}
|
|
212
211
|
/**
|
|
213
|
-
* Requests the transactions with the given hashes from the network.
|
|
214
|
-
*
|
|
215
|
-
* If a transaction can be retrieved, it will be returned, if not an undefined
|
|
216
|
-
* will be returned. In place.
|
|
217
|
-
*
|
|
218
|
-
* @param txHashes - The hashes of the transactions to request.
|
|
219
|
-
* @returns A promise that resolves to an array of transactions or undefined.
|
|
220
|
-
*/ async requestTxs(txHashes) {
|
|
221
|
-
const res = await this.p2pService.sendBatchRequest(ReqRespSubProtocol.TX, txHashes);
|
|
222
|
-
return Promise.resolve(res ?? []);
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
212
|
* Uses the Request Response protocol to request a transaction from the network.
|
|
226
213
|
*
|
|
227
214
|
* If the underlying request response protocol fails, then we return undefined.
|
|
@@ -244,10 +231,15 @@ import { ReqRespSubProtocol } from '../services/reqresp/interface.js';
|
|
|
244
231
|
/**
|
|
245
232
|
* Uses the batched Request Response protocol to request a set of transactions from the network.
|
|
246
233
|
*/ async requestTxsByHash(txHashes) {
|
|
247
|
-
const
|
|
234
|
+
const timeoutMs = 8000; // Longer timeout for now
|
|
235
|
+
const maxPeers = Math.min(Math.ceil(txHashes.length / 3), 10);
|
|
236
|
+
const maxRetryAttempts = 10; // Keep retrying within the timeout
|
|
237
|
+
const txs = await this.p2pService.sendBatchRequest(ReqRespSubProtocol.TX, txHashes, timeoutMs, maxPeers, maxRetryAttempts);
|
|
248
238
|
// Some transactions may return undefined, so we filter them out
|
|
249
239
|
const filteredTxs = txs.filter((tx)=>!!tx);
|
|
250
|
-
|
|
240
|
+
if (filteredTxs.length > 0) {
|
|
241
|
+
await this.txPool.addTxs(filteredTxs);
|
|
242
|
+
}
|
|
251
243
|
const txHashesStr = txHashes.map((tx)=>tx.toString()).join(', ');
|
|
252
244
|
this.log.debug(`Received batched txs ${txHashesStr} (${txs.length} / ${txHashes.length}}) from peers`);
|
|
253
245
|
// We return all transactions, even the not found ones to the caller, such they can handle missing items themselves.
|
|
@@ -425,15 +417,6 @@ import { ReqRespSubProtocol } from '../services/reqresp/interface.js';
|
|
|
425
417
|
await this.txPool.markAsMined(txHashes, block.number);
|
|
426
418
|
}
|
|
427
419
|
}
|
|
428
|
-
async addAttestationsToPool(blocks) {
|
|
429
|
-
const attestations = blocks.flatMap((block)=>{
|
|
430
|
-
const payload = ConsensusPayload.fromBlock(block.block);
|
|
431
|
-
return block.signatures.filter((sig)=>!sig.isEmpty).map((signature)=>new BlockAttestation(payload, signature));
|
|
432
|
-
});
|
|
433
|
-
await this.attestationPool?.addAttestations(attestations);
|
|
434
|
-
const slots = blocks.map((b)=>b.block.header.getSlot()).sort((a, b)=>Number(a - b));
|
|
435
|
-
this.log.debug(`Added ${attestations.length} attestations for slots ${slots[0]}-${slots.at(-1)} to the pool`);
|
|
436
|
-
}
|
|
437
420
|
/**
|
|
438
421
|
* Deletes txs from these blocks.
|
|
439
422
|
* @param blocks - A list of existing blocks with txs that the P2P client needs to ensure the tx pool is reconciled with.
|
|
@@ -454,7 +437,7 @@ import { ReqRespSubProtocol } from '../services/reqresp/interface.js';
|
|
|
454
437
|
return Promise.resolve();
|
|
455
438
|
}
|
|
456
439
|
await this.markTxsAsMinedFromBlocks(blocks.map((b)=>b.block));
|
|
457
|
-
|
|
440
|
+
void this.requestMissingTxsFromUnprovenBlocks(blocks.map((b)=>b.block));
|
|
458
441
|
const lastBlock = blocks.at(-1).block;
|
|
459
442
|
await Promise.all(blocks.map(async (block)=>this.synchedBlockHashes.set(block.block.number, (await block.block.hash()).toString())));
|
|
460
443
|
await this.synchedLatestBlockNumber.set(lastBlock.number);
|
|
@@ -462,6 +445,25 @@ import { ReqRespSubProtocol } from '../services/reqresp/interface.js';
|
|
|
462
445
|
this.log.verbose(`Synched to latest block ${lastBlock.number}`);
|
|
463
446
|
await this.startServiceIfSynched();
|
|
464
447
|
}
|
|
448
|
+
/** Request txs for unproven blocks so the prover node has more chances to get them. */ async requestMissingTxsFromUnprovenBlocks(blocks) {
|
|
449
|
+
try {
|
|
450
|
+
const provenBlockNumber = Math.max(await this.getSyncedProvenBlockNum(), this.provenBlockNumberAtStart);
|
|
451
|
+
const unprovenBlocks = blocks.filter((block)=>block.number > provenBlockNumber);
|
|
452
|
+
const txHashes = unprovenBlocks.flatMap((block)=>block.body.txEffects.map((txEffect)=>txEffect.txHash));
|
|
453
|
+
const missingTxHashes = await this.txPool.hasTxs(txHashes).then((availability)=>txHashes.filter((_, index)=>!availability[index]));
|
|
454
|
+
if (missingTxHashes.length > 0) {
|
|
455
|
+
this.log.verbose(`Requesting ${missingTxHashes.length} missing txs from peers for ${unprovenBlocks.length} unproven mined blocks`, {
|
|
456
|
+
missingTxHashes,
|
|
457
|
+
unprovenBlockNumbers: unprovenBlocks.map((block)=>block.number)
|
|
458
|
+
});
|
|
459
|
+
await this.requestTxsByHash(missingTxHashes);
|
|
460
|
+
}
|
|
461
|
+
} catch (err) {
|
|
462
|
+
this.log.error(`Error requesting missing txs from unproven blocks`, err, {
|
|
463
|
+
blocks: blocks.map((block)=>block.number)
|
|
464
|
+
});
|
|
465
|
+
}
|
|
466
|
+
}
|
|
465
467
|
/**
|
|
466
468
|
* Handles new proven blocks by deleting the txs in them, or by deleting the txs in blocks `keepProvenTxsFor` ago.
|
|
467
469
|
* @param blocks - A list of proven L2 blocks.
|
|
@@ -79,7 +79,7 @@ export declare class LibP2PService<T extends P2PClientType = P2PClientType.Full>
|
|
|
79
79
|
* @param requests - The requests to send to the peers
|
|
80
80
|
* @returns The responses to the requests
|
|
81
81
|
*/
|
|
82
|
-
sendBatchRequest<SubProtocol extends ReqRespSubProtocol>(protocol: SubProtocol, requests: InstanceType<SubProtocolMap[SubProtocol]['request']>[]): Promise<(InstanceType<SubProtocolMap[SubProtocol]['response']> | undefined)[]>;
|
|
82
|
+
sendBatchRequest<SubProtocol extends ReqRespSubProtocol>(protocol: SubProtocol, requests: InstanceType<SubProtocolMap[SubProtocol]['request']>[], timeoutMs?: number, maxPeers?: number, maxRetryAttempts?: number): Promise<(InstanceType<SubProtocolMap[SubProtocol]['response']> | undefined)[]>;
|
|
83
83
|
/**
|
|
84
84
|
* Get the ENR of the node
|
|
85
85
|
* @returns The ENR of the node
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p_service.d.ts","sourceRoot":"","sources":["../../../src/services/libp2p/libp2p_service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"libp2p_service.d.ts","sourceRoot":"","sources":["../../../src/services/libp2p/libp2p_service.ts"],"names":[],"mappings":"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"}
|
|
@@ -307,8 +307,8 @@ import { ReqResp } from '../reqresp/reqresp.js';
|
|
|
307
307
|
* @param protocol - The request response protocol to use
|
|
308
308
|
* @param requests - The requests to send to the peers
|
|
309
309
|
* @returns The responses to the requests
|
|
310
|
-
*/ sendBatchRequest(protocol, requests) {
|
|
311
|
-
return this.reqresp.sendBatchRequest(protocol, requests);
|
|
310
|
+
*/ sendBatchRequest(protocol, requests, timeoutMs, maxPeers, maxRetryAttempts) {
|
|
311
|
+
return this.reqresp.sendBatchRequest(protocol, requests, timeoutMs, maxPeers, maxRetryAttempts);
|
|
312
312
|
}
|
|
313
313
|
/**
|
|
314
314
|
* Get the ENR of the node
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reqresp.d.ts","sourceRoot":"","sources":["../../../src/services/reqresp/reqresp.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAAc,KAAK,eAAe,EAAiC,MAAM,yBAAyB,CAAC;AAE1G,OAAO,KAAK,EAAsB,MAAM,EAAU,MAAM,mBAAmB,CAAC;AAE5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AASrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD,OAAO,EAGL,KAAK,eAAe,EACpB,kBAAkB,EAClB,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,cAAc,EAEpB,MAAM,gBAAgB,CAAC;AASxB;;;;;;;;;;;;;GAaG;AACH,qBAAa,OAAO;IAmBhB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IAnBrB,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,0BAA0B,CAAS;IAG3C,OAAO,CAAC,mBAAmB,CAA6D;IACxF,OAAO,CAAC,qBAAqB,CAAiE;IAE9F,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,WAAW,CAA6B;IAEhD,OAAO,CAAC,eAAe,CAAkB;IAEzC,OAAO,CAAC,OAAO,CAAiB;gBAG9B,MAAM,EAAE,gBAAgB,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EAChC,eAAe,GAAE,eAAsC;IAgBzD,IAAI,MAAM,6CAET;IAED;;OAEG;IACG,KAAK,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,4BAA4B;IAiBhH;;OAEG;IACG,IAAI;IAoBV;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACG,WAAW,CAAC,WAAW,SAAS,kBAAkB,EACtD,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,GAC5D,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC;IA8D7E;;;;;;;;;;;;;;;;;;;;;OAqBG;IAQG,gBAAgB,CAAC,WAAW,SAAS,kBAAkB,EAC3D,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAChE,SAAS,SAAQ,EACjB,QAAQ,
|
|
1
|
+
{"version":3,"file":"reqresp.d.ts","sourceRoot":"","sources":["../../../src/services/reqresp/reqresp.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAAc,KAAK,eAAe,EAAiC,MAAM,yBAAyB,CAAC;AAE1G,OAAO,KAAK,EAAsB,MAAM,EAAU,MAAM,mBAAmB,CAAC;AAE5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AASrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD,OAAO,EAGL,KAAK,eAAe,EACpB,kBAAkB,EAClB,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,cAAc,EAEpB,MAAM,gBAAgB,CAAC;AASxB;;;;;;;;;;;;;GAaG;AACH,qBAAa,OAAO;IAmBhB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IAnBrB,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,0BAA0B,CAAS;IAG3C,OAAO,CAAC,mBAAmB,CAA6D;IACxF,OAAO,CAAC,qBAAqB,CAAiE;IAE9F,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,WAAW,CAA6B;IAEhD,OAAO,CAAC,eAAe,CAAkB;IAEzC,OAAO,CAAC,OAAO,CAAiB;gBAG9B,MAAM,EAAE,gBAAgB,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EAChC,eAAe,GAAE,eAAsC;IAgBzD,IAAI,MAAM,6CAET;IAED;;OAEG;IACG,KAAK,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,4BAA4B;IAiBhH;;OAEG;IACG,IAAI;IAoBV;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACG,WAAW,CAAC,WAAW,SAAS,kBAAkB,EACtD,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,GAC5D,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC;IA8D7E;;;;;;;;;;;;;;;;;;;;;OAqBG;IAQG,gBAAgB,CAAC,WAAW,SAAS,kBAAkB,EAC3D,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAChE,SAAS,SAAQ,EACjB,QAAQ,SAA+C,EACvD,gBAAgB,SAAI,GACnB,OAAO,CAAC,CAAC,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;IA6HjF;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IAKU,iBAAiB,CAC5B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,kBAAkB,EAC/B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,eAAe,CAAC;IAsC3B;;;;;;;;;OASG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAoDvB;;;;;;OAMG;YACW,WAAW;IAoCzB;;;;;;;;;;;;;;;OAeG;YAKW,aAAa;YAkEZ,cAAc;CAI9B"}
|
|
@@ -185,7 +185,7 @@ import { ReqRespStatus, ReqRespStatusError, parseStatusChunk, prettyPrintReqResp
|
|
|
185
185
|
* @returns
|
|
186
186
|
*
|
|
187
187
|
* @throws {CollectiveReqRespTimeoutError} - If the request batch exceeds the specified timeout (`timeoutMs`).
|
|
188
|
-
*/ async sendBatchRequest(subProtocol, requests, timeoutMs = 10000, maxPeers = Math.
|
|
188
|
+
*/ async sendBatchRequest(subProtocol, requests, timeoutMs = 10000, maxPeers = Math.max(10, Math.ceil(requests.length / 3)), maxRetryAttempts = 3) {
|
|
189
189
|
const responseValidator = this.subProtocolValidators[subProtocol];
|
|
190
190
|
const responses = new Array(requests.length);
|
|
191
191
|
const requestBuffers = requests.map((req)=>req.toBuffer());
|
|
@@ -43,7 +43,7 @@ export interface P2PService {
|
|
|
43
43
|
* @param requests - The requests to send to the peers
|
|
44
44
|
* @returns The responses to the requests
|
|
45
45
|
*/
|
|
46
|
-
sendBatchRequest<Protocol extends ReqRespSubProtocol>(protocol: Protocol, requests: InstanceType<SubProtocolMap[Protocol]['request']>[]): Promise<(InstanceType<SubProtocolMap[Protocol]['response']> | undefined)[]>;
|
|
46
|
+
sendBatchRequest<Protocol extends ReqRespSubProtocol>(protocol: Protocol, requests: InstanceType<SubProtocolMap[Protocol]['request']>[], timeoutMs?: number, maxPeers?: number, maxRetryAttempts?: number): Promise<(InstanceType<SubProtocolMap[Protocol]['response']> | undefined)[]>;
|
|
47
47
|
registerBlockReceivedCallback(callback: (block: BlockProposal) => Promise<BlockAttestation | undefined>): void;
|
|
48
48
|
getEnr(): ENR | undefined;
|
|
49
49
|
getPeers(includePending?: boolean): PeerInfo[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/services/service.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAErF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,YAAY,MAAM,QAAQ,CAAC;AAEvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEjF,oBAAY,kBAAkB;IAC5B,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;;OAGG;IACH,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;IAElD;;;;;;OAMG;IACH,WAAW,CAAC,QAAQ,SAAS,kBAAkB,EAC7C,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GACzD,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAE3E;;;;;;OAMG;IACH,gBAAgB,CAAC,QAAQ,SAAS,kBAAkB,EAClD,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/services/service.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAErF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,YAAY,MAAM,QAAQ,CAAC;AAEvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEjF,oBAAY,kBAAkB;IAC5B,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;;OAGG;IACH,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;IAElD;;;;;;OAMG;IACH,WAAW,CAAC,QAAQ,SAAS,kBAAkB,EAC7C,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GACzD,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAE3E;;;;;;OAMG;IACH,gBAAgB,CAAC,QAAQ,SAAS,kBAAkB,EAClD,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAC7D,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,EACjB,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;IAG/E,6BAA6B,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;IAE/G,MAAM,IAAI,GAAG,GAAG,SAAS,CAAC;IAE1B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,YAAY;IACxD;;SAEK;IACL,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;SAEK;IACL,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;;OAGG;IACH,WAAW,IAAI,GAAG,EAAE,CAAC;IAErB;;OAEG;IACH,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC;;;;OAIG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAEzC;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IACjE,IAAI,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;IAElD,SAAS,IAAI,kBAAkB,CAAC;IAEhC,MAAM,IAAI,GAAG,GAAG,SAAS,CAAC;IAE1B,iBAAiB,EAAE,GAAG,EAAE,CAAC;CAC1B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/p2p",
|
|
3
|
-
"version": "0.85.0-alpha-testnet.
|
|
3
|
+
"version": "0.85.0-alpha-testnet.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -65,16 +65,16 @@
|
|
|
65
65
|
]
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
|
-
"@aztec/constants": "0.85.0-alpha-testnet.
|
|
69
|
-
"@aztec/epoch-cache": "0.85.0-alpha-testnet.
|
|
70
|
-
"@aztec/foundation": "0.85.0-alpha-testnet.
|
|
71
|
-
"@aztec/kv-store": "0.85.0-alpha-testnet.
|
|
72
|
-
"@aztec/noir-contracts.js": "0.85.0-alpha-testnet.
|
|
73
|
-
"@aztec/noir-protocol-circuits-types": "0.85.0-alpha-testnet.
|
|
74
|
-
"@aztec/protocol-contracts": "0.85.0-alpha-testnet.
|
|
75
|
-
"@aztec/simulator": "0.85.0-alpha-testnet.
|
|
76
|
-
"@aztec/stdlib": "0.85.0-alpha-testnet.
|
|
77
|
-
"@aztec/telemetry-client": "0.85.0-alpha-testnet.
|
|
68
|
+
"@aztec/constants": "0.85.0-alpha-testnet.5",
|
|
69
|
+
"@aztec/epoch-cache": "0.85.0-alpha-testnet.5",
|
|
70
|
+
"@aztec/foundation": "0.85.0-alpha-testnet.5",
|
|
71
|
+
"@aztec/kv-store": "0.85.0-alpha-testnet.5",
|
|
72
|
+
"@aztec/noir-contracts.js": "0.85.0-alpha-testnet.5",
|
|
73
|
+
"@aztec/noir-protocol-circuits-types": "0.85.0-alpha-testnet.5",
|
|
74
|
+
"@aztec/protocol-contracts": "0.85.0-alpha-testnet.5",
|
|
75
|
+
"@aztec/simulator": "0.85.0-alpha-testnet.5",
|
|
76
|
+
"@aztec/stdlib": "0.85.0-alpha-testnet.5",
|
|
77
|
+
"@aztec/telemetry-client": "0.85.0-alpha-testnet.5",
|
|
78
78
|
"@chainsafe/discv5": "9.0.0",
|
|
79
79
|
"@chainsafe/enr": "3.0.0",
|
|
80
80
|
"@chainsafe/libp2p-gossipsub": "13.0.0",
|
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
"xxhash-wasm": "^1.1.0"
|
|
104
104
|
},
|
|
105
105
|
"devDependencies": {
|
|
106
|
-
"@aztec/archiver": "0.85.0-alpha-testnet.
|
|
106
|
+
"@aztec/archiver": "0.85.0-alpha-testnet.5",
|
|
107
107
|
"@jest/globals": "^29.5.0",
|
|
108
108
|
"@types/jest": "^29.5.0",
|
|
109
109
|
"@types/node": "^18.14.6",
|
package/src/client/p2p_client.ts
CHANGED
|
@@ -11,7 +11,7 @@ import type {
|
|
|
11
11
|
} from '@aztec/stdlib/block';
|
|
12
12
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
13
13
|
import type { P2PApi, PeerInfo } from '@aztec/stdlib/interfaces/server';
|
|
14
|
-
import { BlockAttestation, type BlockProposal,
|
|
14
|
+
import { BlockAttestation, type BlockProposal, type P2PClientType } from '@aztec/stdlib/p2p';
|
|
15
15
|
import type { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
16
16
|
import {
|
|
17
17
|
Attributes,
|
|
@@ -76,19 +76,14 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApi<T> & {
|
|
|
76
76
|
// ^ This pattern is not my favorite (md)
|
|
77
77
|
registerBlockProposalHandler(handler: (block: BlockProposal) => Promise<BlockAttestation | undefined>): void;
|
|
78
78
|
|
|
79
|
-
/**
|
|
80
|
-
* Request a list of transactions from another peer by their tx hashes.
|
|
81
|
-
* @param txHashes - Hashes of the txs to query.
|
|
82
|
-
* @returns A list of transactions or undefined if the transactions are not found.
|
|
83
|
-
*/
|
|
84
|
-
requestTxs(txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
|
|
85
|
-
|
|
86
79
|
/**
|
|
87
80
|
* Request a transaction from another peer by its tx hash.
|
|
88
81
|
* @param txHash - Hash of the tx to query.
|
|
89
82
|
*/
|
|
90
83
|
requestTxByHash(txHash: TxHash): Promise<Tx | undefined>;
|
|
91
84
|
|
|
85
|
+
requestTxsByHash(txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
|
|
86
|
+
|
|
92
87
|
/**
|
|
93
88
|
* Verifies the 'tx' and, if valid, adds it to local tx pool and forwards it to other peers.
|
|
94
89
|
* @param tx - The transaction.
|
|
@@ -432,20 +427,6 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
432
427
|
this.p2pService.registerBlockReceivedCallback(handler);
|
|
433
428
|
}
|
|
434
429
|
|
|
435
|
-
/**
|
|
436
|
-
* Requests the transactions with the given hashes from the network.
|
|
437
|
-
*
|
|
438
|
-
* If a transaction can be retrieved, it will be returned, if not an undefined
|
|
439
|
-
* will be returned. In place.
|
|
440
|
-
*
|
|
441
|
-
* @param txHashes - The hashes of the transactions to request.
|
|
442
|
-
* @returns A promise that resolves to an array of transactions or undefined.
|
|
443
|
-
*/
|
|
444
|
-
public async requestTxs(txHashes: TxHash[]): Promise<(Tx | undefined)[]> {
|
|
445
|
-
const res = await this.p2pService.sendBatchRequest(ReqRespSubProtocol.TX, txHashes);
|
|
446
|
-
return Promise.resolve(res ?? []);
|
|
447
|
-
}
|
|
448
|
-
|
|
449
430
|
/**
|
|
450
431
|
* Uses the Request Response protocol to request a transaction from the network.
|
|
451
432
|
*
|
|
@@ -472,11 +453,23 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
472
453
|
* Uses the batched Request Response protocol to request a set of transactions from the network.
|
|
473
454
|
*/
|
|
474
455
|
public async requestTxsByHash(txHashes: TxHash[]): Promise<(Tx | undefined)[]> {
|
|
475
|
-
const
|
|
456
|
+
const timeoutMs = 8000; // Longer timeout for now
|
|
457
|
+
const maxPeers = Math.min(Math.ceil(txHashes.length / 3), 10);
|
|
458
|
+
const maxRetryAttempts = 10; // Keep retrying within the timeout
|
|
459
|
+
|
|
460
|
+
const txs = await this.p2pService.sendBatchRequest(
|
|
461
|
+
ReqRespSubProtocol.TX,
|
|
462
|
+
txHashes,
|
|
463
|
+
timeoutMs,
|
|
464
|
+
maxPeers,
|
|
465
|
+
maxRetryAttempts,
|
|
466
|
+
);
|
|
476
467
|
|
|
477
468
|
// Some transactions may return undefined, so we filter them out
|
|
478
469
|
const filteredTxs = txs.filter((tx): tx is Tx => !!tx);
|
|
479
|
-
|
|
470
|
+
if (filteredTxs.length > 0) {
|
|
471
|
+
await this.txPool.addTxs(filteredTxs);
|
|
472
|
+
}
|
|
480
473
|
const txHashesStr = txHashes.map(tx => tx.toString()).join(', ');
|
|
481
474
|
this.log.debug(`Received batched txs ${txHashesStr} (${txs.length} / ${txHashes.length}}) from peers`);
|
|
482
475
|
|
|
@@ -698,16 +691,6 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
698
691
|
}
|
|
699
692
|
}
|
|
700
693
|
|
|
701
|
-
private async addAttestationsToPool(blocks: PublishedL2Block[]): Promise<void> {
|
|
702
|
-
const attestations = blocks.flatMap(block => {
|
|
703
|
-
const payload = ConsensusPayload.fromBlock(block.block);
|
|
704
|
-
return block.signatures.filter(sig => !sig.isEmpty).map(signature => new BlockAttestation(payload, signature));
|
|
705
|
-
});
|
|
706
|
-
await this.attestationPool?.addAttestations(attestations);
|
|
707
|
-
const slots = blocks.map(b => b.block.header.getSlot()).sort((a, b) => Number(a - b));
|
|
708
|
-
this.log.debug(`Added ${attestations.length} attestations for slots ${slots[0]}-${slots.at(-1)} to the pool`);
|
|
709
|
-
}
|
|
710
|
-
|
|
711
694
|
/**
|
|
712
695
|
* Deletes txs from these blocks.
|
|
713
696
|
* @param blocks - A list of existing blocks with txs that the P2P client needs to ensure the tx pool is reconciled with.
|
|
@@ -732,7 +715,8 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
732
715
|
}
|
|
733
716
|
|
|
734
717
|
await this.markTxsAsMinedFromBlocks(blocks.map(b => b.block));
|
|
735
|
-
|
|
718
|
+
void this.requestMissingTxsFromUnprovenBlocks(blocks.map(b => b.block));
|
|
719
|
+
|
|
736
720
|
const lastBlock = blocks.at(-1)!.block;
|
|
737
721
|
await Promise.all(
|
|
738
722
|
blocks.map(async block => this.synchedBlockHashes.set(block.block.number, (await block.block.hash()).toString())),
|
|
@@ -743,6 +727,29 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
743
727
|
await this.startServiceIfSynched();
|
|
744
728
|
}
|
|
745
729
|
|
|
730
|
+
/** Request txs for unproven blocks so the prover node has more chances to get them. */
|
|
731
|
+
private async requestMissingTxsFromUnprovenBlocks(blocks: L2Block[]): Promise<void> {
|
|
732
|
+
try {
|
|
733
|
+
const provenBlockNumber = Math.max(await this.getSyncedProvenBlockNum(), this.provenBlockNumberAtStart);
|
|
734
|
+
const unprovenBlocks = blocks.filter(block => block.number > provenBlockNumber);
|
|
735
|
+
const txHashes = unprovenBlocks.flatMap(block => block.body.txEffects.map(txEffect => txEffect.txHash));
|
|
736
|
+
const missingTxHashes = await this.txPool
|
|
737
|
+
.hasTxs(txHashes)
|
|
738
|
+
.then(availability => txHashes.filter((_, index) => !availability[index]));
|
|
739
|
+
if (missingTxHashes.length > 0) {
|
|
740
|
+
this.log.verbose(
|
|
741
|
+
`Requesting ${missingTxHashes.length} missing txs from peers for ${unprovenBlocks.length} unproven mined blocks`,
|
|
742
|
+
{ missingTxHashes, unprovenBlockNumbers: unprovenBlocks.map(block => block.number) },
|
|
743
|
+
);
|
|
744
|
+
await this.requestTxsByHash(missingTxHashes);
|
|
745
|
+
}
|
|
746
|
+
} catch (err) {
|
|
747
|
+
this.log.error(`Error requesting missing txs from unproven blocks`, err, {
|
|
748
|
+
blocks: blocks.map(block => block.number),
|
|
749
|
+
});
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
|
|
746
753
|
/**
|
|
747
754
|
* Handles new proven blocks by deleting the txs in them, or by deleting the txs in blocks `keepProvenTxsFor` ago.
|
|
748
755
|
* @param blocks - A list of proven L2 blocks.
|
|
@@ -435,8 +435,11 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
|
|
|
435
435
|
sendBatchRequest<SubProtocol extends ReqRespSubProtocol>(
|
|
436
436
|
protocol: SubProtocol,
|
|
437
437
|
requests: InstanceType<SubProtocolMap[SubProtocol]['request']>[],
|
|
438
|
+
timeoutMs?: number,
|
|
439
|
+
maxPeers?: number,
|
|
440
|
+
maxRetryAttempts?: number,
|
|
438
441
|
): Promise<(InstanceType<SubProtocolMap[SubProtocol]['response']> | undefined)[]> {
|
|
439
|
-
return this.reqresp.sendBatchRequest(protocol, requests);
|
|
442
|
+
return this.reqresp.sendBatchRequest(protocol, requests, timeoutMs, maxPeers, maxRetryAttempts);
|
|
440
443
|
}
|
|
441
444
|
|
|
442
445
|
/**
|
|
@@ -262,7 +262,7 @@ export class ReqResp {
|
|
|
262
262
|
subProtocol: SubProtocol,
|
|
263
263
|
requests: InstanceType<SubProtocolMap[SubProtocol]['request']>[],
|
|
264
264
|
timeoutMs = 10000,
|
|
265
|
-
maxPeers = Math.
|
|
265
|
+
maxPeers = Math.max(10, Math.ceil(requests.length / 3)),
|
|
266
266
|
maxRetryAttempts = 3,
|
|
267
267
|
): Promise<(InstanceType<SubProtocolMap[SubProtocol]['response']> | undefined)[]> {
|
|
268
268
|
const responseValidator = this.subProtocolValidators[subProtocol];
|
package/src/services/service.ts
CHANGED
|
@@ -56,6 +56,9 @@ export interface P2PService {
|
|
|
56
56
|
sendBatchRequest<Protocol extends ReqRespSubProtocol>(
|
|
57
57
|
protocol: Protocol,
|
|
58
58
|
requests: InstanceType<SubProtocolMap[Protocol]['request']>[],
|
|
59
|
+
timeoutMs?: number,
|
|
60
|
+
maxPeers?: number,
|
|
61
|
+
maxRetryAttempts?: number,
|
|
59
62
|
): Promise<(InstanceType<SubProtocolMap[Protocol]['response']> | undefined)[]>;
|
|
60
63
|
|
|
61
64
|
// Leaky abstraction: fix https://github.com/AztecProtocol/aztec-packages/issues/7963
|