@aztec/p2p 0.0.1-commit.54489865 → 0.0.1-commit.592b9384
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 +1 -1
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +9 -2
- package/dest/services/data_store.d.ts +1 -1
- package/dest/services/data_store.d.ts.map +1 -1
- package/dest/services/data_store.js +10 -6
- package/dest/services/libp2p/libp2p_service.js +5 -5
- package/dest/services/reqresp/batch-tx-requester/batch_tx_requester.js +2 -2
- package/dest/services/reqresp/protocols/block_txs/block_txs_handler.js +2 -2
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts +6 -6
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/block_txs/block_txs_reqresp.js +14 -14
- package/package.json +14 -14
- package/src/client/p2p_client.ts +9 -2
- package/src/services/data_store.ts +10 -7
- package/src/services/libp2p/libp2p_service.ts +5 -5
- package/src/services/reqresp/batch-tx-requester/README.md +7 -7
- package/src/services/reqresp/batch-tx-requester/batch_tx_requester.ts +2 -2
- package/src/services/reqresp/protocols/block_txs/block_txs_handler.ts +2 -2
- package/src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts +10 -10
|
@@ -193,4 +193,4 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
|
|
|
193
193
|
markTxsAsNonEvictable(txHashes: TxHash[]): Promise<void>;
|
|
194
194
|
handleAuthRequestFromPeer(authRequest: AuthRequest, peerId: PeerId): Promise<StatusMessage>;
|
|
195
195
|
}
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwX2NsaWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9wMnBfY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUF1QixNQUFNLGlCQUFpQixDQUFDO0FBRTlFLE9BQU8sRUFDTCxLQUFLLFVBQVUsRUFFZixLQUFLLGFBQWEsRUFFbEIsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyxNQUFNLEVBRVosTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBVyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pFLE9BQU8sRUFDTCxLQUFLLGFBQWEsRUFDbEIscUJBQXFCLEVBQ3JCLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUssYUFBYSxFQUNuQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQWMsS0FBSyxlQUFlLEVBQUUsVUFBVSxFQUFpQyxNQUFNLHlCQUF5QixDQUFDO0FBRXRILE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxLQUFLLFNBQVMsRUFBdUIsTUFBTSxjQUFjLENBQUM7QUFFbkUsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFMUQsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLGFB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p2p_client.d.ts","sourceRoot":"","sources":["../../src/client/p2p_client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"p2p_client.d.ts","sourceRoot":"","sources":["../../src/client/p2p_client.ts"],"names":[],"mappings":"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"}
|
|
@@ -632,12 +632,19 @@ _dec = trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
|
632
632
|
this.initBlockStream();
|
|
633
633
|
await this.blockStream.sync();
|
|
634
634
|
}
|
|
635
|
-
broadcastProposal(proposal) {
|
|
635
|
+
async broadcastProposal(proposal) {
|
|
636
636
|
this.log.verbose(`Broadcasting proposal for slot ${proposal.slotNumber} to peers`);
|
|
637
|
+
// Store our own proposal so we can respond to req/resp requests for it
|
|
638
|
+
await this.attestationPool.addBlockProposal(proposal);
|
|
637
639
|
return this.p2pService.propagate(proposal);
|
|
638
640
|
}
|
|
639
|
-
broadcastCheckpointProposal(proposal) {
|
|
641
|
+
async broadcastCheckpointProposal(proposal) {
|
|
640
642
|
this.log.verbose(`Broadcasting checkpoint proposal for slot ${proposal.slotNumber} to peers`);
|
|
643
|
+
const blockProposal = proposal.getBlockProposal();
|
|
644
|
+
if (blockProposal) {
|
|
645
|
+
// Store our own last-block proposal so we can respond to req/resp requests for it.
|
|
646
|
+
await this.attestationPool.addBlockProposal(blockProposal);
|
|
647
|
+
}
|
|
641
648
|
return this.p2pService.propagate(proposal);
|
|
642
649
|
}
|
|
643
650
|
async broadcastCheckpointAttestations(attestations) {
|
|
@@ -24,4 +24,4 @@ export declare class AztecDatastore implements Datastore {
|
|
|
24
24
|
*/
|
|
25
25
|
private pruneMemoryDatastore;
|
|
26
26
|
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9zdG9yZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2RhdGFfc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQWlCLE1BQU0saUJBQWlCLENBQUM7QUFFeEUsT0FBTyxFQUFFLEtBQUssS0FBSyxFQUFFLEtBQUssU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLFFBQVEsRUFBRSxLQUFLLElBQUksRUFBRSxLQUFLLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVHLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBcUJyRCxxQkFBYSxjQUFlLFlBQVcsU0FBUzs7SUFPOUMsT0FBTyxDQUFDLGNBQWMsQ0FBUztJQUUvQixZQUFZLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLGNBQWMsRUFBRTs7S0FBeUIsRUFLN0U7SUFFSyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBRXBDO0lBRUssR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQWN2QztJQUVELEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUUzQztJQUVNLE9BQU8sQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FLOUQ7SUFFTSxPQUFPLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBTzlEO0lBRU0sVUFBVSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUtoRTtJQUVLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FHcEM7SUFFRCxLQUFLLElBQUksS0FBSyxDQTRCYjtJQUVELEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0EwQm5DO0lBRUQsU0FBUyxDQUFDLENBQUMsRUFBRSxRQUFRLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQXlCekM7WUFFYSxJQUFJO1lBcUJILEdBQUc7SUFrQmxCOztPQUVHO0lBQ0gsT0FBTyxDQUFDLG9CQUFvQjtDQWlCN0IifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data_store.d.ts","sourceRoot":"","sources":["../../src/services/data_store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AAExE,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,KAAK,IAAI,EAAE,KAAK,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAqBrD,qBAAa,cAAe,YAAW,SAAS;;
|
|
1
|
+
{"version":3,"file":"data_store.d.ts","sourceRoot":"","sources":["../../src/services/data_store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AAExE,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,KAAK,IAAI,EAAE,KAAK,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAqBrD,qBAAa,cAAe,YAAW,SAAS;;IAO9C,OAAO,CAAC,cAAc,CAAS;IAE/B,YAAY,EAAE,EAAE,iBAAiB,EAAE,EAAE,cAAc,EAAE;;KAAyB,EAK7E;IAEK,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAEpC;IAEK,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAcvC;IAED,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAE3C;IAEM,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAK9D;IAEM,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAO9D;IAEM,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAKhE;IAEK,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpC;IAED,KAAK,IAAI,KAAK,CA4Bb;IAED,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CA0BnC;IAED,SAAS,CAAC,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAyBzC;YAEa,IAAI;YAqBH,GAAG;IAkBlB;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAiB7B"}
|
|
@@ -8,6 +8,7 @@ class KeyNotFoundError extends Error {
|
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
export class AztecDatastore {
|
|
11
|
+
#db;
|
|
11
12
|
#memoryDatastore;
|
|
12
13
|
#dbDatastore;
|
|
13
14
|
#batchOps = [];
|
|
@@ -15,6 +16,7 @@ export class AztecDatastore {
|
|
|
15
16
|
constructor(db, { maxMemoryItems } = {
|
|
16
17
|
maxMemoryItems: 50
|
|
17
18
|
}){
|
|
19
|
+
this.#db = db;
|
|
18
20
|
this.#memoryDatastore = new Map();
|
|
19
21
|
this.#dbDatastore = db.openMap('p2p_datastore');
|
|
20
22
|
this.maxMemoryItems = maxMemoryItems;
|
|
@@ -78,13 +80,15 @@ export class AztecDatastore {
|
|
|
78
80
|
});
|
|
79
81
|
},
|
|
80
82
|
commit: async ()=>{
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
83
|
+
await this.#db.transactionAsync(async ()=>{
|
|
84
|
+
for (const op of this.#batchOps){
|
|
85
|
+
if (op.type === 'put' && op.value) {
|
|
86
|
+
await this.put(op.key, op.value);
|
|
87
|
+
} else if (op.type === 'del') {
|
|
88
|
+
await this.delete(op.key);
|
|
89
|
+
}
|
|
86
90
|
}
|
|
87
|
-
}
|
|
91
|
+
});
|
|
88
92
|
this.#batchOps = []; // Clear operations after commit
|
|
89
93
|
}
|
|
90
94
|
};
|
|
@@ -425,7 +425,7 @@ _dec = trackSpan('Libp2pService.processValidBlockProposal', async (block)=>({
|
|
|
425
425
|
[Attributes.BLOCK_ARCHIVE]: checkpoint.archive.toString(),
|
|
426
426
|
[Attributes.P2P_ID]: await checkpoint.p2pMessageLoggingIdentifier().then((i)=>i.toString())
|
|
427
427
|
})), _dec2 = trackSpan('Libp2pService.validateRequestedBlockTxs', (request)=>({
|
|
428
|
-
[Attributes.
|
|
428
|
+
[Attributes.BLOCK_ARCHIVE]: request.archiveRoot.toString()
|
|
429
429
|
})), _dec3 = trackSpan('Libp2pService.validateRequestedTx', (requestedTxHash, _responseTx)=>({
|
|
430
430
|
[Attributes.TX_HASH]: requestedTxHash.toString()
|
|
431
431
|
})), _dec4 = trackSpan('Libp2pService.validateRequestedBlock', (requestedBlockNumber, _responseBlock)=>({
|
|
@@ -1361,9 +1361,9 @@ _dec = trackSpan('Libp2pService.processValidBlockProposal', async (block)=>({
|
|
|
1361
1361
|
*/ async validateRequestedBlockTxs(request, response, peerId) {
|
|
1362
1362
|
const requestedTxValidator = this.createRequestedTxValidator();
|
|
1363
1363
|
try {
|
|
1364
|
-
if (!response.
|
|
1364
|
+
if (!response.archiveRoot.equals(request.archiveRoot)) {
|
|
1365
1365
|
this.peerManager.penalizePeer(peerId, PeerErrorSeverity.MidToleranceError);
|
|
1366
|
-
throw new ValidationError(`Received block txs for unexpected
|
|
1366
|
+
throw new ValidationError(`Received block txs for unexpected archive root: expected ${request.archiveRoot.toString()}, got ${response.archiveRoot.toString()}`);
|
|
1367
1367
|
}
|
|
1368
1368
|
if (response.txIndices.getLength() !== request.txIndices.getLength()) {
|
|
1369
1369
|
this.peerManager.penalizePeer(peerId, PeerErrorSeverity.MidToleranceError);
|
|
@@ -1386,7 +1386,7 @@ _dec = trackSpan('Libp2pService.processValidBlockProposal', async (block)=>({
|
|
|
1386
1386
|
throw new ValidationError(`Received more txs (${response.txs.length}) than requested-and-available (${maxReturnable})`);
|
|
1387
1387
|
}
|
|
1388
1388
|
// Given proposal (should have locally), ensure returned txs are valid subset and match request indices
|
|
1389
|
-
const proposal = await this.mempools.attestationPool.getBlockProposal(request.
|
|
1389
|
+
const proposal = await this.mempools.attestationPool.getBlockProposal(request.archiveRoot.toString());
|
|
1390
1390
|
if (proposal) {
|
|
1391
1391
|
// Build intersected indices
|
|
1392
1392
|
const intersectIdx = request.txIndices.getTrueIndices().filter((i)=>response.txIndices.isSet(i));
|
|
@@ -1405,7 +1405,7 @@ _dec = trackSpan('Libp2pService.processValidBlockProposal', async (block)=>({
|
|
|
1405
1405
|
}
|
|
1406
1406
|
} else {
|
|
1407
1407
|
// No local proposal, cannot check the membership/order of the returned txs
|
|
1408
|
-
this.logger.warn(`Block proposal not found for
|
|
1408
|
+
this.logger.warn(`Block proposal not found for archive root ${request.archiveRoot.toString()}; cannot validate membership/order of returned txs`);
|
|
1409
1409
|
return false;
|
|
1410
1410
|
}
|
|
1411
1411
|
await Promise.all(response.txs.map((tx)=>this.validateRequestedTx(tx, peerId, requestedTxValidator)));
|
|
@@ -482,9 +482,9 @@ import { BatchRequestTxValidator } from './tx_validator.js';
|
|
|
482
482
|
}
|
|
483
483
|
}
|
|
484
484
|
isBlockResponseValid(response) {
|
|
485
|
-
const
|
|
485
|
+
const archiveRootsMatch = this.blockProposal.archive.toString() === response.archiveRoot.toString();
|
|
486
486
|
const peerHasSomeTxsFromProposal = !response.txIndices.isEmpty();
|
|
487
|
-
return
|
|
487
|
+
return archiveRootsMatch && peerHasSomeTxsFromProposal;
|
|
488
488
|
}
|
|
489
489
|
peerHasSomeTxsWeAreMissing(_peerId, response) {
|
|
490
490
|
const txsPeerHas = new Set(this.extractHashesPeerHasFromResponse(response).map((h)=>h.toString()));
|
|
@@ -23,7 +23,7 @@ import { BlockTxsRequest, BlockTxsResponse } from './block_txs_reqresp.js';
|
|
|
23
23
|
cause: err
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
|
-
const blockProposal = await attestationPool.getBlockProposal(request.
|
|
26
|
+
const blockProposal = await attestationPool.getBlockProposal(request.archiveRoot.toString());
|
|
27
27
|
let requestedTxsHashes;
|
|
28
28
|
if (request.txHashes.length > 0) {
|
|
29
29
|
requestedTxsHashes = request.txHashes;
|
|
@@ -46,7 +46,7 @@ import { BlockTxsRequest, BlockTxsResponse } from './block_txs_reqresp.js';
|
|
|
46
46
|
const requestedIndices = new Set(request.txIndices.getTrueIndices());
|
|
47
47
|
requestedTxsHashes = blockProposal.txHashes.filter((_, idx)=>requestedIndices.has(idx));
|
|
48
48
|
const responseTxs = (await txPool.getTxsByHash(requestedTxsHashes)).filter((tx)=>!!tx);
|
|
49
|
-
const response = new BlockTxsResponse(request.
|
|
49
|
+
const response = new BlockTxsResponse(request.archiveRoot, new TxArray(...responseTxs), responseBitVector);
|
|
50
50
|
return response.toBuffer();
|
|
51
51
|
};
|
|
52
52
|
}
|
|
@@ -7,12 +7,12 @@ import { BitVector } from './bitvector.js';
|
|
|
7
7
|
* Request message for requesting specific transactions from a block
|
|
8
8
|
*/
|
|
9
9
|
export declare class BlockTxsRequest {
|
|
10
|
-
readonly
|
|
10
|
+
readonly archiveRoot: Fr;
|
|
11
11
|
readonly txHashes: TxHashArray;
|
|
12
12
|
readonly txIndices: BitVector;
|
|
13
|
-
constructor(
|
|
13
|
+
constructor(archiveRoot: Fr, txHashes: TxHashArray, txIndices: BitVector);
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* Creates new BlockTxsRequest given proposal and missing tx hashes
|
|
16
16
|
*
|
|
17
17
|
* @param: blockProposal - The block proposal for which we are making request
|
|
18
18
|
* @param: missingTxHashes - Tx hashes from the proposal we are missing
|
|
@@ -37,10 +37,10 @@ export declare class BlockTxsRequest {
|
|
|
37
37
|
* Response message containing requested transactions from a block
|
|
38
38
|
*/
|
|
39
39
|
export declare class BlockTxsResponse {
|
|
40
|
-
readonly
|
|
40
|
+
readonly archiveRoot: Fr;
|
|
41
41
|
readonly txs: TxArray;
|
|
42
42
|
readonly txIndices: BitVector;
|
|
43
|
-
constructor(
|
|
43
|
+
constructor(archiveRoot: Fr, txs: TxArray, txIndices: BitVector);
|
|
44
44
|
/**
|
|
45
45
|
* Deserializes the BlockTxResponse object from a Buffer
|
|
46
46
|
* @param buffer - Buffer or BufferReader object to deserialize
|
|
@@ -56,4 +56,4 @@ export declare class BlockTxsResponse {
|
|
|
56
56
|
toBuffer(): Buffer;
|
|
57
57
|
static empty(): BlockTxsResponse;
|
|
58
58
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tfdHhzX3JlcXJlc3AuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9yZXFyZXNwL3Byb3RvY29scy9ibG9ja190eHMvYmxvY2tfdHhzX3JlcXJlc3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQXFCLE1BQU0sNkJBQTZCLENBQUM7QUFDOUUsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDOztHQUVHO0FBQ0gscUJBQWEsZUFBZTtJQUd4QixRQUFRLENBQUMsV0FBVyxFQUFFLEVBQUU7SUFFeEIsUUFBUSxDQUFDLFFBQVEsRUFBRSxXQUFXO0lBSzlCLFFBQVEsQ0FBQyxTQUFTLEVBQUUsU0FBUztJQVQvQixZQUVXLFdBQVcsRUFBRSxFQUFFLEVBRWYsUUFBUSxFQUFFLFdBQVcsRUFLckIsU0FBUyxFQUFFLFNBQVMsRUFDM0I7SUFFSjs7Ozs7Ozs7b0NBUWdDO0lBQ2hDLE1BQU0sQ0FBQyw4QkFBOEIsQ0FDbkMsYUFBYSxFQUFFLGFBQWEsRUFDNUIsZUFBZSxFQUFFLE1BQU0sRUFBRSxFQUN6QixtQkFBbUIsVUFBUSxHQUMxQixlQUFlLEdBQUcsU0FBUyxDQW9CN0I7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFlBQVksR0FBRyxlQUFlLENBT2hFO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxJQUFJLE1BQU0sQ0FFakI7Q0FDRjtBQUVEOztHQUVHO0FBQ0gscUJBQWEsZ0JBQWdCO0lBRXpCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsRUFBRTtJQUN4QixRQUFRLENBQUMsR0FBRyxFQUFFLE9BQU87SUFHckIsUUFBUSxDQUFDLFNBQVMsRUFBRSxTQUFTO0lBTC9CLFlBQ1csV0FBVyxFQUFFLEVBQUUsRUFDZixHQUFHLEVBQUUsT0FBTyxFQUdaLFNBQVMsRUFBRSxTQUFTLEVBQzNCO0lBRUo7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxZQUFZLEdBQUcsZ0JBQWdCLENBT2pFO0lBRUQ7Ozs7O09BS0c7SUFDSCxRQUFRLElBQUksTUFBTSxDQUVqQjtJQUVELE1BQU0sQ0FBQyxLQUFLLElBQUksZ0JBQWdCLENBRS9CO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block_txs_reqresp.d.ts","sourceRoot":"","sources":["../../../../../src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,qBAAa,eAAe;IAGxB,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"block_txs_reqresp.d.ts","sourceRoot":"","sources":["../../../../../src/services/reqresp/protocols/block_txs/block_txs_reqresp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,qBAAa,eAAe;IAGxB,QAAQ,CAAC,WAAW,EAAE,EAAE;IAExB,QAAQ,CAAC,QAAQ,EAAE,WAAW;IAK9B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAT/B,YAEW,WAAW,EAAE,EAAE,EAEf,QAAQ,EAAE,WAAW,EAKrB,SAAS,EAAE,SAAS,EAC3B;IAEJ;;;;;;;;oCAQgC;IAChC,MAAM,CAAC,8BAA8B,CACnC,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,MAAM,EAAE,EACzB,mBAAmB,UAAQ,GAC1B,eAAe,GAAG,SAAS,CAoB7B;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,eAAe,CAOhE;IAED;;;OAGG;IACH,QAAQ,IAAI,MAAM,CAEjB;CACF;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAEzB,QAAQ,CAAC,WAAW,EAAE,EAAE;IACxB,QAAQ,CAAC,GAAG,EAAE,OAAO;IAGrB,QAAQ,CAAC,SAAS,EAAE,SAAS;IAL/B,YACW,WAAW,EAAE,EAAE,EACf,GAAG,EAAE,OAAO,EAGZ,SAAS,EAAE,SAAS,EAC3B;IAEJ;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,gBAAgB,CAOjE;IAED;;;;;OAKG;IACH,QAAQ,IAAI,MAAM,CAEjB;IAED,MAAM,CAAC,KAAK,IAAI,gBAAgB,CAE/B;CACF"}
|
|
@@ -5,22 +5,22 @@ import { BitVector } from './bitvector.js';
|
|
|
5
5
|
/**
|
|
6
6
|
* Request message for requesting specific transactions from a block
|
|
7
7
|
*/ export class BlockTxsRequest {
|
|
8
|
-
|
|
8
|
+
archiveRoot;
|
|
9
9
|
txHashes;
|
|
10
10
|
txIndices;
|
|
11
|
-
constructor(//
|
|
12
|
-
|
|
11
|
+
constructor(// Archive root after the proposed block is applied (proposal identifier)
|
|
12
|
+
archiveRoot, // Hashes of txs we are requesting
|
|
13
13
|
txHashes, // BitVector indicating which txs from the proposal we are requesting
|
|
14
14
|
// 1 means we want the tx, 0 means we don't
|
|
15
15
|
// If we know peer has the Block Proposal then we can use this BitVector
|
|
16
16
|
// Otherwise we can use this optimization
|
|
17
17
|
txIndices){
|
|
18
|
-
this.
|
|
18
|
+
this.archiveRoot = archiveRoot;
|
|
19
19
|
this.txHashes = txHashes;
|
|
20
20
|
this.txIndices = txIndices;
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
23
|
+
* Creates new BlockTxsRequest given proposal and missing tx hashes
|
|
24
24
|
*
|
|
25
25
|
* @param: blockProposal - The block proposal for which we are making request
|
|
26
26
|
* @param: missingTxHashes - Tx hashes from the proposal we are missing
|
|
@@ -47,17 +47,17 @@ import { BitVector } from './bitvector.js';
|
|
|
47
47
|
* @returns An instance of BlockTxRequest
|
|
48
48
|
*/ static fromBuffer(buffer) {
|
|
49
49
|
const reader = BufferReader.asReader(buffer);
|
|
50
|
-
const
|
|
50
|
+
const archiveRoot = Fr.fromBuffer(reader);
|
|
51
51
|
const txHashes = TxHashArray.fromBuffer(reader);
|
|
52
52
|
const txIndices = BitVector.fromBuffer(reader);
|
|
53
|
-
return new BlockTxsRequest(
|
|
53
|
+
return new BlockTxsRequest(archiveRoot, txHashes, txIndices);
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
56
|
* Serializes the BlockTxRequest object into a Buffer
|
|
57
57
|
* @returns Buffer representation of the BlockTxRequest object
|
|
58
58
|
*/ toBuffer() {
|
|
59
59
|
return serializeToBuffer([
|
|
60
|
-
this.
|
|
60
|
+
this.archiveRoot,
|
|
61
61
|
this.txHashes.toBuffer(),
|
|
62
62
|
this.txIndices.toBuffer()
|
|
63
63
|
]);
|
|
@@ -66,13 +66,13 @@ import { BitVector } from './bitvector.js';
|
|
|
66
66
|
/**
|
|
67
67
|
* Response message containing requested transactions from a block
|
|
68
68
|
*/ export class BlockTxsResponse {
|
|
69
|
-
|
|
69
|
+
archiveRoot;
|
|
70
70
|
txs;
|
|
71
71
|
txIndices;
|
|
72
|
-
constructor(
|
|
72
|
+
constructor(archiveRoot, txs, // BitVector indicating which txs from the proposal are available at the peer
|
|
73
73
|
// 1 means the tx is available, 0 means it is not
|
|
74
74
|
txIndices){
|
|
75
|
-
this.
|
|
75
|
+
this.archiveRoot = archiveRoot;
|
|
76
76
|
this.txs = txs;
|
|
77
77
|
this.txIndices = txIndices;
|
|
78
78
|
}
|
|
@@ -82,10 +82,10 @@ import { BitVector } from './bitvector.js';
|
|
|
82
82
|
* @returns An instance of BlockTxResponse
|
|
83
83
|
*/ static fromBuffer(buffer) {
|
|
84
84
|
const reader = BufferReader.asReader(buffer);
|
|
85
|
-
const
|
|
85
|
+
const archiveRoot = Fr.fromBuffer(reader);
|
|
86
86
|
const txs = TxArray.fromBuffer(reader);
|
|
87
87
|
const txIndices = BitVector.fromBuffer(reader);
|
|
88
|
-
return new BlockTxsResponse(
|
|
88
|
+
return new BlockTxsResponse(archiveRoot, txs, txIndices);
|
|
89
89
|
}
|
|
90
90
|
/**
|
|
91
91
|
* Serializes the BlockTxResponse object into a Buffer
|
|
@@ -94,7 +94,7 @@ import { BitVector } from './bitvector.js';
|
|
|
94
94
|
* @returns Buffer representation of the BlockTxResponse object
|
|
95
95
|
*/ toBuffer() {
|
|
96
96
|
return serializeToBuffer([
|
|
97
|
-
this.
|
|
97
|
+
this.archiveRoot,
|
|
98
98
|
this.txs.toBuffer(),
|
|
99
99
|
this.txIndices.toBuffer()
|
|
100
100
|
]);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/p2p",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.592b9384",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -67,17 +67,17 @@
|
|
|
67
67
|
]
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@aztec/constants": "0.0.1-commit.
|
|
71
|
-
"@aztec/epoch-cache": "0.0.1-commit.
|
|
72
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
73
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
74
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
75
|
-
"@aztec/noir-contracts.js": "0.0.1-commit.
|
|
76
|
-
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.
|
|
77
|
-
"@aztec/protocol-contracts": "0.0.1-commit.
|
|
78
|
-
"@aztec/simulator": "0.0.1-commit.
|
|
79
|
-
"@aztec/stdlib": "0.0.1-commit.
|
|
80
|
-
"@aztec/telemetry-client": "0.0.1-commit.
|
|
70
|
+
"@aztec/constants": "0.0.1-commit.592b9384",
|
|
71
|
+
"@aztec/epoch-cache": "0.0.1-commit.592b9384",
|
|
72
|
+
"@aztec/ethereum": "0.0.1-commit.592b9384",
|
|
73
|
+
"@aztec/foundation": "0.0.1-commit.592b9384",
|
|
74
|
+
"@aztec/kv-store": "0.0.1-commit.592b9384",
|
|
75
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.592b9384",
|
|
76
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.592b9384",
|
|
77
|
+
"@aztec/protocol-contracts": "0.0.1-commit.592b9384",
|
|
78
|
+
"@aztec/simulator": "0.0.1-commit.592b9384",
|
|
79
|
+
"@aztec/stdlib": "0.0.1-commit.592b9384",
|
|
80
|
+
"@aztec/telemetry-client": "0.0.1-commit.592b9384",
|
|
81
81
|
"@chainsafe/libp2p-gossipsub": "13.0.0",
|
|
82
82
|
"@chainsafe/libp2p-noise": "^15.0.0",
|
|
83
83
|
"@chainsafe/libp2p-yamux": "^6.0.2",
|
|
@@ -104,8 +104,8 @@
|
|
|
104
104
|
"xxhash-wasm": "^1.1.0"
|
|
105
105
|
},
|
|
106
106
|
"devDependencies": {
|
|
107
|
-
"@aztec/archiver": "0.0.1-commit.
|
|
108
|
-
"@aztec/world-state": "0.0.1-commit.
|
|
107
|
+
"@aztec/archiver": "0.0.1-commit.592b9384",
|
|
108
|
+
"@aztec/world-state": "0.0.1-commit.592b9384",
|
|
109
109
|
"@jest/globals": "^30.0.0",
|
|
110
110
|
"@types/jest": "^30.0.0",
|
|
111
111
|
"@types/node": "^22.15.17",
|
package/src/client/p2p_client.ts
CHANGED
|
@@ -326,8 +326,10 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
326
326
|
[Attributes.BLOCK_ARCHIVE]: proposal.archive.toString(),
|
|
327
327
|
[Attributes.P2P_ID]: (await proposal.p2pMessageLoggingIdentifier()).toString(),
|
|
328
328
|
}))
|
|
329
|
-
public broadcastProposal(proposal: BlockProposal): Promise<void> {
|
|
329
|
+
public async broadcastProposal(proposal: BlockProposal): Promise<void> {
|
|
330
330
|
this.log.verbose(`Broadcasting proposal for slot ${proposal.slotNumber} to peers`);
|
|
331
|
+
// Store our own proposal so we can respond to req/resp requests for it
|
|
332
|
+
await this.attestationPool.addBlockProposal(proposal);
|
|
331
333
|
return this.p2pService.propagate(proposal);
|
|
332
334
|
}
|
|
333
335
|
|
|
@@ -336,8 +338,13 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
336
338
|
[Attributes.BLOCK_ARCHIVE]: proposal.archive.toString(),
|
|
337
339
|
[Attributes.P2P_ID]: (await proposal.p2pMessageLoggingIdentifier()).toString(),
|
|
338
340
|
}))
|
|
339
|
-
public broadcastCheckpointProposal(proposal: CheckpointProposal): Promise<void> {
|
|
341
|
+
public async broadcastCheckpointProposal(proposal: CheckpointProposal): Promise<void> {
|
|
340
342
|
this.log.verbose(`Broadcasting checkpoint proposal for slot ${proposal.slotNumber} to peers`);
|
|
343
|
+
const blockProposal = proposal.getBlockProposal();
|
|
344
|
+
if (blockProposal) {
|
|
345
|
+
// Store our own last-block proposal so we can respond to req/resp requests for it.
|
|
346
|
+
await this.attestationPool.addBlockProposal(blockProposal);
|
|
347
|
+
}
|
|
341
348
|
return this.p2pService.propagate(proposal);
|
|
342
349
|
}
|
|
343
350
|
|
|
@@ -24,6 +24,7 @@ class KeyNotFoundError extends Error {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
export class AztecDatastore implements Datastore {
|
|
27
|
+
#db: AztecAsyncKVStore;
|
|
27
28
|
#memoryDatastore: Map<string, MemoryItem>;
|
|
28
29
|
#dbDatastore: AztecAsyncMap<string, Uint8Array>;
|
|
29
30
|
|
|
@@ -32,9 +33,9 @@ export class AztecDatastore implements Datastore {
|
|
|
32
33
|
private maxMemoryItems: number;
|
|
33
34
|
|
|
34
35
|
constructor(db: AztecAsyncKVStore, { maxMemoryItems } = { maxMemoryItems: 50 }) {
|
|
36
|
+
this.#db = db;
|
|
35
37
|
this.#memoryDatastore = new Map();
|
|
36
38
|
this.#dbDatastore = db.openMap('p2p_datastore');
|
|
37
|
-
|
|
38
39
|
this.maxMemoryItems = maxMemoryItems;
|
|
39
40
|
}
|
|
40
41
|
|
|
@@ -106,13 +107,15 @@ export class AztecDatastore implements Datastore {
|
|
|
106
107
|
});
|
|
107
108
|
},
|
|
108
109
|
commit: async () => {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
110
|
+
await this.#db.transactionAsync(async () => {
|
|
111
|
+
for (const op of this.#batchOps) {
|
|
112
|
+
if (op.type === 'put' && op.value) {
|
|
113
|
+
await this.put(op.key, op.value);
|
|
114
|
+
} else if (op.type === 'del') {
|
|
115
|
+
await this.delete(op.key);
|
|
116
|
+
}
|
|
114
117
|
}
|
|
115
|
-
}
|
|
118
|
+
});
|
|
116
119
|
this.#batchOps = []; // Clear operations after commit
|
|
117
120
|
},
|
|
118
121
|
};
|
|
@@ -1214,7 +1214,7 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
|
|
|
1214
1214
|
* @returns True if the requested block transactions are valid, false otherwise.
|
|
1215
1215
|
*/
|
|
1216
1216
|
@trackSpan('Libp2pService.validateRequestedBlockTxs', request => ({
|
|
1217
|
-
[Attributes.
|
|
1217
|
+
[Attributes.BLOCK_ARCHIVE]: request.archiveRoot.toString(),
|
|
1218
1218
|
}))
|
|
1219
1219
|
private async validateRequestedBlockTxs(
|
|
1220
1220
|
request: BlockTxsRequest,
|
|
@@ -1224,10 +1224,10 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
|
|
|
1224
1224
|
const requestedTxValidator = this.createRequestedTxValidator();
|
|
1225
1225
|
|
|
1226
1226
|
try {
|
|
1227
|
-
if (!response.
|
|
1227
|
+
if (!response.archiveRoot.equals(request.archiveRoot)) {
|
|
1228
1228
|
this.peerManager.penalizePeer(peerId, PeerErrorSeverity.MidToleranceError);
|
|
1229
1229
|
throw new ValidationError(
|
|
1230
|
-
`Received block txs for unexpected
|
|
1230
|
+
`Received block txs for unexpected archive root: expected ${request.archiveRoot.toString()}, got ${response.archiveRoot.toString()}`,
|
|
1231
1231
|
);
|
|
1232
1232
|
}
|
|
1233
1233
|
|
|
@@ -1257,7 +1257,7 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
|
|
|
1257
1257
|
}
|
|
1258
1258
|
|
|
1259
1259
|
// Given proposal (should have locally), ensure returned txs are valid subset and match request indices
|
|
1260
|
-
const proposal = await this.mempools.attestationPool.getBlockProposal(request.
|
|
1260
|
+
const proposal = await this.mempools.attestationPool.getBlockProposal(request.archiveRoot.toString());
|
|
1261
1261
|
if (proposal) {
|
|
1262
1262
|
// Build intersected indices
|
|
1263
1263
|
const intersectIdx = request.txIndices.getTrueIndices().filter(i => response.txIndices.isSet(i));
|
|
@@ -1277,7 +1277,7 @@ export class LibP2PService<T extends P2PClientType = P2PClientType.Full> extends
|
|
|
1277
1277
|
} else {
|
|
1278
1278
|
// No local proposal, cannot check the membership/order of the returned txs
|
|
1279
1279
|
this.logger.warn(
|
|
1280
|
-
`Block proposal not found for
|
|
1280
|
+
`Block proposal not found for archive root ${request.archiveRoot.toString()}; cannot validate membership/order of returned txs`,
|
|
1281
1281
|
);
|
|
1282
1282
|
return false;
|
|
1283
1283
|
}
|
|
@@ -71,7 +71,7 @@ The requester classifies peers into three categories to optimize fetching:
|
|
|
71
71
|
### Blind Phase → Smart Phase Transition
|
|
72
72
|
|
|
73
73
|
Peers transition from "dumb" to "smart" when they respond with a valid `BlockTxsResponse` containing:
|
|
74
|
-
1. A matching `
|
|
74
|
+
1. A matching `archiveRoot`
|
|
75
75
|
2. A non-empty `txIndices` BitVector indicating which transactions they have
|
|
76
76
|
3. At least one transaction we're still missing
|
|
77
77
|
|
|
@@ -81,10 +81,10 @@ Peers transition from "dumb" to "smart" when they respond with a valid `BlockTxs
|
|
|
81
81
|
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
|
82
82
|
│ │ Initial State: All peers are "dumb" (except pinned peer) │ │
|
|
83
83
|
│ │ │ │
|
|
84
|
-
│ │ Request: [
|
|
84
|
+
│ │ Request: [archiveRoot, txHashes (full list), txIndices (BitVector)] │ │
|
|
85
85
|
│ │ └─ Include full hashes because peer may not have proposal │ │
|
|
86
86
|
│ │ │ │
|
|
87
|
-
│ │ Response: [
|
|
87
|
+
│ │ Response: [archiveRoot, txs[], txIndices (what peer has)] │ │
|
|
88
88
|
│ │ └─ Tells us exactly which txs this peer can provide │ │
|
|
89
89
|
│ └────────────────────────────────────────────────────────────────────────┘ │
|
|
90
90
|
└──────────────────────────────────────────────────────────────────────────────┘
|
|
@@ -97,10 +97,10 @@ Peers transition from "dumb" to "smart" when they respond with a valid `BlockTxs
|
|
|
97
97
|
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
|
98
98
|
│ │ Peer promoted to "smart" - we know exactly what they have │ │
|
|
99
99
|
│ │ │ │
|
|
100
|
-
│ │ Request: [
|
|
100
|
+
│ │ Request: [archiveRoot, txIndices (BitVector only)] │ │
|
|
101
101
|
│ │ └─ No need for full hashes, peer has the proposal │ │
|
|
102
102
|
│ │ │ │
|
|
103
|
-
│ │ Response: [
|
|
103
|
+
│ │ Response: [archiveRoot, txs[], txIndices (updated availability)] │ │
|
|
104
104
|
│ │ └─ May have received more txs since last response │ │
|
|
105
105
|
│ └────────────────────────────────────────────────────────────────────────┘ │
|
|
106
106
|
└──────────────────────────────────────────────────────────────────────────────┘
|
|
@@ -152,7 +152,7 @@ The `BatchTxRequester` runs three types of workers concurrently:
|
|
|
152
152
|
|
|
153
153
|
```typescript
|
|
154
154
|
class BlockTxsRequest {
|
|
155
|
-
|
|
155
|
+
archiveRoot: Fr; // Archive root after the proposed block is applied
|
|
156
156
|
txHashes: TxHashArray; // Full tx hashes (for dumb peers without proposal)
|
|
157
157
|
txIndices: BitVector; // Which txs from proposal we're requesting (1 = want)
|
|
158
158
|
}
|
|
@@ -162,7 +162,7 @@ class BlockTxsRequest {
|
|
|
162
162
|
|
|
163
163
|
```typescript
|
|
164
164
|
class BlockTxsResponse {
|
|
165
|
-
|
|
165
|
+
archiveRoot: Fr; // Echo back the proposal archive root
|
|
166
166
|
txs: TxArray; // Actual transaction data
|
|
167
167
|
txIndices: BitVector; // Which txs the peer has available (1 = have)
|
|
168
168
|
}
|
|
@@ -605,9 +605,9 @@ export class BatchTxRequester {
|
|
|
605
605
|
}
|
|
606
606
|
|
|
607
607
|
private isBlockResponseValid(response: BlockTxsResponse): boolean {
|
|
608
|
-
const
|
|
608
|
+
const archiveRootsMatch = this.blockProposal.archive.toString() === response.archiveRoot.toString();
|
|
609
609
|
const peerHasSomeTxsFromProposal = !response.txIndices.isEmpty();
|
|
610
|
-
return
|
|
610
|
+
return archiveRootsMatch && peerHasSomeTxsFromProposal;
|
|
611
611
|
}
|
|
612
612
|
|
|
613
613
|
private peerHasSomeTxsWeAreMissing(_peerId: PeerId, response: BlockTxsResponse): boolean {
|
|
@@ -31,7 +31,7 @@ export function reqRespBlockTxsHandler(attestationPool: AttestationPool, txPool:
|
|
|
31
31
|
throw new ReqRespStatusError(ReqRespStatus.BADLY_FORMED_REQUEST, { cause: err });
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
const blockProposal = await attestationPool.getBlockProposal(request.
|
|
34
|
+
const blockProposal = await attestationPool.getBlockProposal(request.archiveRoot.toString());
|
|
35
35
|
|
|
36
36
|
let requestedTxsHashes;
|
|
37
37
|
if (request.txHashes.length > 0) {
|
|
@@ -60,7 +60,7 @@ export function reqRespBlockTxsHandler(attestationPool: AttestationPool, txPool:
|
|
|
60
60
|
requestedTxsHashes = blockProposal.txHashes.filter((_, idx) => requestedIndices.has(idx));
|
|
61
61
|
|
|
62
62
|
const responseTxs = (await txPool.getTxsByHash(requestedTxsHashes)).filter(tx => !!tx);
|
|
63
|
-
const response = new BlockTxsResponse(request.
|
|
63
|
+
const response = new BlockTxsResponse(request.archiveRoot, new TxArray(...responseTxs), responseBitVector);
|
|
64
64
|
|
|
65
65
|
return response.toBuffer();
|
|
66
66
|
};
|
|
@@ -10,8 +10,8 @@ import { BitVector } from './bitvector.js';
|
|
|
10
10
|
*/
|
|
11
11
|
export class BlockTxsRequest {
|
|
12
12
|
constructor(
|
|
13
|
-
//
|
|
14
|
-
readonly
|
|
13
|
+
// Archive root after the proposed block is applied (proposal identifier)
|
|
14
|
+
readonly archiveRoot: Fr,
|
|
15
15
|
// Hashes of txs we are requesting
|
|
16
16
|
readonly txHashes: TxHashArray,
|
|
17
17
|
// BitVector indicating which txs from the proposal we are requesting
|
|
@@ -22,7 +22,7 @@ export class BlockTxsRequest {
|
|
|
22
22
|
) {}
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
|
-
*
|
|
25
|
+
* Creates new BlockTxsRequest given proposal and missing tx hashes
|
|
26
26
|
*
|
|
27
27
|
* @param: blockProposal - The block proposal for which we are making request
|
|
28
28
|
* @param: missingTxHashes - Tx hashes from the proposal we are missing
|
|
@@ -63,11 +63,11 @@ export class BlockTxsRequest {
|
|
|
63
63
|
*/
|
|
64
64
|
static fromBuffer(buffer: Buffer | BufferReader): BlockTxsRequest {
|
|
65
65
|
const reader = BufferReader.asReader(buffer);
|
|
66
|
-
const
|
|
66
|
+
const archiveRoot = Fr.fromBuffer(reader);
|
|
67
67
|
const txHashes = TxHashArray.fromBuffer(reader);
|
|
68
68
|
const txIndices = BitVector.fromBuffer(reader);
|
|
69
69
|
|
|
70
|
-
return new BlockTxsRequest(
|
|
70
|
+
return new BlockTxsRequest(archiveRoot, txHashes, txIndices);
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
/**
|
|
@@ -75,7 +75,7 @@ export class BlockTxsRequest {
|
|
|
75
75
|
* @returns Buffer representation of the BlockTxRequest object
|
|
76
76
|
*/
|
|
77
77
|
toBuffer(): Buffer {
|
|
78
|
-
return serializeToBuffer([this.
|
|
78
|
+
return serializeToBuffer([this.archiveRoot, this.txHashes.toBuffer(), this.txIndices.toBuffer()]);
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
|
|
@@ -84,7 +84,7 @@ export class BlockTxsRequest {
|
|
|
84
84
|
*/
|
|
85
85
|
export class BlockTxsResponse {
|
|
86
86
|
constructor(
|
|
87
|
-
readonly
|
|
87
|
+
readonly archiveRoot: Fr,
|
|
88
88
|
readonly txs: TxArray, // List of transactions we requested and peer has
|
|
89
89
|
// BitVector indicating which txs from the proposal are available at the peer
|
|
90
90
|
// 1 means the tx is available, 0 means it is not
|
|
@@ -98,11 +98,11 @@ export class BlockTxsResponse {
|
|
|
98
98
|
*/
|
|
99
99
|
static fromBuffer(buffer: Buffer | BufferReader): BlockTxsResponse {
|
|
100
100
|
const reader = BufferReader.asReader(buffer);
|
|
101
|
-
const
|
|
101
|
+
const archiveRoot = Fr.fromBuffer(reader);
|
|
102
102
|
const txs = TxArray.fromBuffer(reader);
|
|
103
103
|
const txIndices = BitVector.fromBuffer(reader);
|
|
104
104
|
|
|
105
|
-
return new BlockTxsResponse(
|
|
105
|
+
return new BlockTxsResponse(archiveRoot, txs, txIndices);
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
/**
|
|
@@ -112,7 +112,7 @@ export class BlockTxsResponse {
|
|
|
112
112
|
* @returns Buffer representation of the BlockTxResponse object
|
|
113
113
|
*/
|
|
114
114
|
toBuffer(): Buffer {
|
|
115
|
-
return serializeToBuffer([this.
|
|
115
|
+
return serializeToBuffer([this.archiveRoot, this.txs.toBuffer(), this.txIndices.toBuffer()]);
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
static empty(): BlockTxsResponse {
|