@aztec/p2p 3.0.0-nightly.20251128 → 3.0.0-nightly.20251202
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 -2
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +5 -4
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +7 -6
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +33 -32
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +9 -8
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +19 -20
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +9 -8
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +12 -10
- package/dest/mem_pools/attestation_pool/mocks.js +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +11 -11
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +1 -1
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +8 -8
- 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 +14 -13
- package/dest/testbench/p2p_client_testbench_worker.js +5 -5
- package/package.json +14 -14
- package/src/client/p2p_client.ts +6 -5
- package/src/mem_pools/attestation_pool/attestation_pool.ts +6 -5
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +45 -32
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +28 -29
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +26 -22
- package/src/mem_pools/attestation_pool/mocks.ts +1 -1
- package/src/msg_validators/attestation_validator/attestation_validator.ts +11 -13
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +1 -1
- package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +8 -8
- package/src/services/libp2p/libp2p_service.ts +14 -13
- package/src/services/tx_collection/slow_tx_collection.ts +2 -2
- package/src/testbench/p2p_client_testbench_worker.ts +5 -5
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
2
3
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
3
4
|
import type { EthAddress, L2BlockSource, L2BlockStreamEvent, L2Tips } from '@aztec/stdlib/block';
|
|
@@ -82,7 +83,7 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
|
|
|
82
83
|
sync(): Promise<void>;
|
|
83
84
|
broadcastProposal(proposal: BlockProposal): Promise<void>;
|
|
84
85
|
broadcastAttestations(attestations: BlockAttestation[]): Promise<void>;
|
|
85
|
-
getAttestationsForSlot(slot:
|
|
86
|
+
getAttestationsForSlot(slot: SlotNumber, proposalId?: string): Promise<BlockAttestation[]>;
|
|
86
87
|
addAttestations(attestations: BlockAttestation[]): Promise<void>;
|
|
87
88
|
deleteAttestation(attestation: BlockAttestation): Promise<void>;
|
|
88
89
|
registerBlockProposalHandler(handler: P2PBlockReceivedCallback): void;
|
|
@@ -195,4 +196,4 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
|
|
|
195
196
|
markTxsAsNonEvictable(txHashes: TxHash[]): Promise<void>;
|
|
196
197
|
handleAuthRequestFromPeer(authRequest: AuthRequest, peerId: PeerId): Promise<StatusMessage>;
|
|
197
198
|
}
|
|
198
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwX2NsaWVudC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9wMnBfY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQXNDLE1BQU0saUJBQWlCLENBQUM7QUFDN0YsT0FBTyxLQUFLLEVBQ1YsVUFBVSxFQUdWLGFBQWEsRUFFYixrQkFBa0IsRUFDbEIsTUFBTSxFQUVQLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQVcsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxhQUFhLEVBQUUsS0FBSyxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RixPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkQsT0FBTyxFQUVMLEtBQUssZUFBZSxFQUVwQixVQUFVLEVBR1gsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsS0FBSyxTQUFTLEVBQXVCLE1BQU0sY0FBYyxDQUFDO0FBRW5FLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTFELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RSxPQUFPLEVBQ0wsa0JBQWtC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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p2p_client.d.ts","sourceRoot":"","sources":["../../src/client/p2p_client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"p2p_client.d.ts","sourceRoot":"","sources":["../../src/client/p2p_client.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
}
|
|
7
7
|
import { INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
|
|
8
|
+
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
8
9
|
import { createLogger } from '@aztec/foundation/log';
|
|
9
10
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
10
11
|
import { getTimestampForSlot } from '@aztec/stdlib/epoch-helpers';
|
|
@@ -67,7 +68,7 @@ import { P2PClientState } from './interface.js';
|
|
|
67
68
|
this.log.debug(`Received block proposal from ${sender.toString()}`);
|
|
68
69
|
// TODO(palla/txs): Need to subtract validatorReexecuteDeadlineMs from this deadline (see ValidatorClient.getReexecutionDeadline)
|
|
69
70
|
const constants = this.txCollection.getConstants();
|
|
70
|
-
const nextSlotTimestampSeconds = Number(getTimestampForSlot(block.slotNumber
|
|
71
|
+
const nextSlotTimestampSeconds = Number(getTimestampForSlot(SlotNumber(block.slotNumber + 1), constants));
|
|
71
72
|
const deadline = new Date(nextSlotTimestampSeconds * 1000);
|
|
72
73
|
const parentBlock = await this.l2BlockSource.getBlockHeaderByArchive(block.payload.header.lastArchiveRoot);
|
|
73
74
|
if (!parentBlock) {
|
|
@@ -288,7 +289,7 @@ import { P2PClientState } from './interface.js';
|
|
|
288
289
|
await this.blockStream.sync();
|
|
289
290
|
}
|
|
290
291
|
broadcastProposal(proposal) {
|
|
291
|
-
this.log.verbose(`Broadcasting proposal for slot ${proposal.slotNumber
|
|
292
|
+
this.log.verbose(`Broadcasting proposal for slot ${proposal.slotNumber} to peers`);
|
|
292
293
|
return this.p2pService.propagate(proposal);
|
|
293
294
|
}
|
|
294
295
|
async broadcastAttestations(attestations) {
|
|
@@ -555,7 +556,7 @@ import { P2PClientState } from './interface.js';
|
|
|
555
556
|
hash: await block.block.hash().then((h)=>h.toString())
|
|
556
557
|
})));
|
|
557
558
|
await this.synchedLatestBlockNumber.set(lastBlock.number);
|
|
558
|
-
await this.synchedLatestSlot.set(lastBlock.header.getSlot());
|
|
559
|
+
await this.synchedLatestSlot.set(BigInt(lastBlock.header.getSlot()));
|
|
559
560
|
this.log.verbose(`Synched to latest block ${lastBlock.number}`);
|
|
560
561
|
await this.startServiceIfSynched();
|
|
561
562
|
}
|
|
@@ -693,7 +694,7 @@ import { P2PClientState } from './interface.js';
|
|
|
693
694
|
}
|
|
694
695
|
_ts_decorate([
|
|
695
696
|
trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
|
696
|
-
[Attributes.SLOT_NUMBER]: proposal.slotNumber
|
|
697
|
+
[Attributes.SLOT_NUMBER]: proposal.slotNumber,
|
|
697
698
|
[Attributes.BLOCK_ARCHIVE]: proposal.archive.toString(),
|
|
698
699
|
[Attributes.P2P_ID]: (await proposal.p2pMessageLoggingIdentifier()).toString()
|
|
699
700
|
}))
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SlotNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import type { BlockAttestation, BlockProposal } from '@aztec/stdlib/p2p';
|
|
2
3
|
/**
|
|
3
4
|
* An Attestation Pool contains attestations collected by a validator
|
|
@@ -45,7 +46,7 @@ export interface AttestationPool {
|
|
|
45
46
|
*
|
|
46
47
|
* @param slot - The oldest slot to keep.
|
|
47
48
|
*/
|
|
48
|
-
deleteAttestationsOlderThan(slot:
|
|
49
|
+
deleteAttestationsOlderThan(slot: SlotNumber): Promise<void>;
|
|
49
50
|
/**
|
|
50
51
|
* Delete Attestations for slot
|
|
51
52
|
*
|
|
@@ -53,7 +54,7 @@ export interface AttestationPool {
|
|
|
53
54
|
*
|
|
54
55
|
* @param slot - The slot to delete.
|
|
55
56
|
*/
|
|
56
|
-
deleteAttestationsForSlot(slot:
|
|
57
|
+
deleteAttestationsForSlot(slot: SlotNumber): Promise<void>;
|
|
57
58
|
/**
|
|
58
59
|
* Delete Attestations for slot and proposal
|
|
59
60
|
*
|
|
@@ -62,7 +63,7 @@ export interface AttestationPool {
|
|
|
62
63
|
* @param slot - The slot to delete.
|
|
63
64
|
* @param proposalId - The proposal to delete.
|
|
64
65
|
*/
|
|
65
|
-
deleteAttestationsForSlotAndProposal(slot:
|
|
66
|
+
deleteAttestationsForSlotAndProposal(slot: SlotNumber, proposalId: string): Promise<void>;
|
|
66
67
|
/**
|
|
67
68
|
* Get all Attestations for all proposals for a given slot
|
|
68
69
|
*
|
|
@@ -71,7 +72,7 @@ export interface AttestationPool {
|
|
|
71
72
|
* @param slot - The slot to query
|
|
72
73
|
* @return BlockAttestations
|
|
73
74
|
*/
|
|
74
|
-
getAttestationsForSlot(slot:
|
|
75
|
+
getAttestationsForSlot(slot: SlotNumber): Promise<BlockAttestation[]>;
|
|
75
76
|
/**
|
|
76
77
|
* Get Attestations for slot and given proposal
|
|
77
78
|
*
|
|
@@ -81,7 +82,7 @@ export interface AttestationPool {
|
|
|
81
82
|
* @param proposalId - The proposal to query
|
|
82
83
|
* @return BlockAttestations
|
|
83
84
|
*/
|
|
84
|
-
getAttestationsForSlotAndProposal(slot:
|
|
85
|
+
getAttestationsForSlotAndProposal(slot: SlotNumber, proposalId: string): Promise<BlockAttestation[]>;
|
|
85
86
|
/**
|
|
86
87
|
* Check if a specific attestation exists in the pool
|
|
87
88
|
*
|
|
@@ -113,4 +114,4 @@ export interface AttestationPool {
|
|
|
113
114
|
/** Returns whether the pool is empty. */
|
|
114
115
|
isEmpty(): Promise<boolean>;
|
|
115
116
|
}
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb25fcG9vbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21lbV9wb29scy9hdHRlc3RhdGlvbl9wb29sL2F0dGVzdGF0aW9uX3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFekU7Ozs7O0dBS0c7QUFDSCxNQUFNLFdBQVcsZUFBZTtJQUM5Qjs7T0FFRztJQUNILGdCQUFnQixDQUFDLGFBQWEsRUFBRSxhQUFhLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTlEOzs7Ozs7T0FNRztJQUNILGdCQUFnQixDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsQ0FBQztJQUVqRTs7Ozs7O09BTUc7SUFDSCxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsTUFBTSxHQUFHLGFBQWEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFekU7Ozs7T0FJRztJQUNILGVBQWUsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFakU7Ozs7T0FJRztJQUNILGtCQUFrQixDQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVwRTs7Ozs7O09BTUc7SUFDSCwyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUU3RDs7Ozs7O09BTUc7SUFDSCx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUzRDs7Ozs7OztPQU9HO0lBQ0gsb0NBQW9DLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUxRjs7Ozs7OztPQU9HO0lBQ0gsc0JBQXNCLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBRXRFOzs7Ozs7OztPQVFHO0lBQ0gsaUNBQWlDLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFFckc7Ozs7O09BS0c7SUFDSCxjQUFjLENBQUMsV0FBVyxFQUFFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVoRTs7Ozs7Ozs7T0FRRztJQUNILGNBQWMsQ0FBQyxLQUFLLEVBQUUsYUFBYSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUV2RDs7Ozs7Ozs7O09BU0c7SUFDSCxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFMUYseUNBQXlDO0lBQ3pDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7Q0FDN0IifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attestation_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/attestation_pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9D;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IAEjE;;;;;;OAMG;IACH,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEzE;;;;OAIG;IACH,eAAe,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE;;;;OAIG;IACH,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpE;;;;;;OAMG;IACH,2BAA2B,CAAC,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"attestation_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/attestation_pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9D;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IAEjE;;;;;;OAMG;IACH,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEzE;;;;OAIG;IACH,eAAe,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE;;;;OAIG;IACH,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpE;;;;;;OAMG;IACH,2BAA2B,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7D;;;;;;OAMG;IACH,yBAAyB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D;;;;;;;OAOG;IACH,oCAAoC,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1F;;;;;;;OAOG;IACH,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAEtE;;;;;;;;OAQG;IACH,iCAAiC,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAErG;;;;;OAKG;IACH,cAAc,CAAC,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhE;;;;;;;;OAQG;IACH,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvD;;;;;;;;;OASG;IACH,iBAAiB,CAAC,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE1F,yCAAyC;IACzC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7B"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { AttestationPool } from './attestation_pool.js';
|
|
2
2
|
export declare function describeAttestationPool(getAttestationPool: () => AttestationPool): void;
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb25fcG9vbF90ZXN0X3N1aXRlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWVtX3Bvb2xzL2F0dGVzdGF0aW9uX3Bvb2wvYXR0ZXN0YXRpb25fcG9vbF90ZXN0X3N1aXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlCQSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUs3RCx3QkFBZ0IsdUJBQXVCLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLFFBc1poRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attestation_pool_test_suite.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/attestation_pool_test_suite.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"attestation_pool_test_suite.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/attestation_pool_test_suite.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAK7D,wBAAgB,uBAAuB,CAAC,kBAAkB,EAAE,MAAM,eAAe,QAsZhF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { Secp256k1Signer } from '@aztec/foundation/crypto';
|
|
2
3
|
import { Fr } from '@aztec/foundation/fields';
|
|
3
4
|
import { BlockProposal as BlockProposalClass, ConsensusPayload, SignatureDomainSeparator, getHashedSignaturePayloadEthSignedMessage } from '@aztec/stdlib/p2p';
|
|
@@ -27,7 +28,7 @@ export function describeAttestationPool(getAttestationPool) {
|
|
|
27
28
|
};
|
|
28
29
|
const mockBlockProposal = (signer, slotNumber, archive = Fr.random())=>{
|
|
29
30
|
const header = makeL2BlockHeader(1, 2, slotNumber);
|
|
30
|
-
const payload = new ConsensusPayload(header.toCheckpointHeader(), archive
|
|
31
|
+
const payload = new ConsensusPayload(header.toCheckpointHeader(), archive);
|
|
31
32
|
const hash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockProposal);
|
|
32
33
|
const signature = signer.sign(hash);
|
|
33
34
|
const txHashes = [
|
|
@@ -49,14 +50,14 @@ export function describeAttestationPool(getAttestationPool) {
|
|
|
49
50
|
const archive = Fr.random();
|
|
50
51
|
const attestations = signers.slice(0, -1).map((signer)=>mockAttestation(signer, slotNumber, archive));
|
|
51
52
|
await ap.addAttestations(attestations);
|
|
52
|
-
const retrievedAttestations = await ap.getAttestationsForSlotAndProposal(
|
|
53
|
+
const retrievedAttestations = await ap.getAttestationsForSlotAndProposal(SlotNumber(slotNumber), archive.toString());
|
|
53
54
|
expect(retrievedAttestations.length).toBe(attestations.length);
|
|
54
55
|
compareAttestations(retrievedAttestations, attestations);
|
|
55
56
|
// Check hasAttestation for added attestations
|
|
56
57
|
for (const attestation of attestations){
|
|
57
58
|
expect(await ap.hasAttestation(attestation)).toBe(true);
|
|
58
59
|
}
|
|
59
|
-
const retrievedAttestationsForSlot = await ap.getAttestationsForSlot(
|
|
60
|
+
const retrievedAttestationsForSlot = await ap.getAttestationsForSlot(SlotNumber(slotNumber));
|
|
60
61
|
expect(retrievedAttestationsForSlot.length).toBe(attestations.length);
|
|
61
62
|
compareAttestations(retrievedAttestationsForSlot, attestations);
|
|
62
63
|
// Add another one
|
|
@@ -64,22 +65,22 @@ export function describeAttestationPool(getAttestationPool) {
|
|
|
64
65
|
await ap.addAttestations([
|
|
65
66
|
newAttestation
|
|
66
67
|
]);
|
|
67
|
-
const retrievedAttestationsAfterAdd = await ap.getAttestationsForSlotAndProposal(
|
|
68
|
+
const retrievedAttestationsAfterAdd = await ap.getAttestationsForSlotAndProposal(SlotNumber(slotNumber), archive.toString());
|
|
68
69
|
expect(retrievedAttestationsAfterAdd.length).toBe(attestations.length + 1);
|
|
69
70
|
compareAttestations(retrievedAttestationsAfterAdd, [
|
|
70
71
|
...attestations,
|
|
71
72
|
newAttestation
|
|
72
73
|
]);
|
|
73
74
|
expect(await ap.hasAttestation(newAttestation)).toBe(true);
|
|
74
|
-
const retrievedAttestationsForSlotAfterAdd = await ap.getAttestationsForSlot(
|
|
75
|
+
const retrievedAttestationsForSlotAfterAdd = await ap.getAttestationsForSlot(SlotNumber(slotNumber));
|
|
75
76
|
expect(retrievedAttestationsForSlotAfterAdd.length).toBe(attestations.length + 1);
|
|
76
77
|
compareAttestations(retrievedAttestationsForSlotAfterAdd, [
|
|
77
78
|
...attestations,
|
|
78
79
|
newAttestation
|
|
79
80
|
]);
|
|
80
81
|
// Delete by slot
|
|
81
|
-
await ap.deleteAttestationsForSlot(
|
|
82
|
-
const retreivedAttestationsAfterDelete = await ap.getAttestationsForSlotAndProposal(
|
|
82
|
+
await ap.deleteAttestationsForSlot(SlotNumber(slotNumber));
|
|
83
|
+
const retreivedAttestationsAfterDelete = await ap.getAttestationsForSlotAndProposal(SlotNumber(slotNumber), archive.toString());
|
|
83
84
|
expect(retreivedAttestationsAfterDelete.length).toBe(0);
|
|
84
85
|
// Check hasAttestation after deletion
|
|
85
86
|
for (const attestation of attestations){
|
|
@@ -98,7 +99,7 @@ export function describeAttestationPool(getAttestationPool) {
|
|
|
98
99
|
}
|
|
99
100
|
// Add them to store and check we end up with only one
|
|
100
101
|
await ap.addAttestations(attestations);
|
|
101
|
-
const retreivedAttestations = await ap.getAttestationsForSlotAndProposal(
|
|
102
|
+
const retreivedAttestations = await ap.getAttestationsForSlotAndProposal(SlotNumber(slotNumber), archive.toString());
|
|
102
103
|
expect(retreivedAttestations.length).toBe(1);
|
|
103
104
|
expect(retreivedAttestations[0].toBuffer()).toEqual(attestations[0].toBuffer());
|
|
104
105
|
expect(retreivedAttestations[0].getSender()?.toString()).toEqual(signer.address.toString());
|
|
@@ -106,7 +107,7 @@ export function describeAttestationPool(getAttestationPool) {
|
|
|
106
107
|
await ap.addAttestations([
|
|
107
108
|
attestations[0]
|
|
108
109
|
]);
|
|
109
|
-
expect(await ap.getAttestationsForSlotAndProposal(
|
|
110
|
+
expect(await ap.getAttestationsForSlotAndProposal(SlotNumber(slotNumber), archive.toString())).toHaveLength(1);
|
|
110
111
|
});
|
|
111
112
|
it('should store attestations by differing slot', async ()=>{
|
|
112
113
|
const slotNumbers = [
|
|
@@ -120,7 +121,7 @@ export function describeAttestationPool(getAttestationPool) {
|
|
|
120
121
|
for (const attestation of attestations){
|
|
121
122
|
const slot = attestation.payload.header.slotNumber;
|
|
122
123
|
const archive = attestation.archive.toString();
|
|
123
|
-
const retreivedAttestations = await ap.getAttestationsForSlotAndProposal(slot
|
|
124
|
+
const retreivedAttestations = await ap.getAttestationsForSlotAndProposal(slot, archive);
|
|
124
125
|
expect(retreivedAttestations.length).toBe(1);
|
|
125
126
|
expect(retreivedAttestations[0].toBuffer()).toEqual(attestation.toBuffer());
|
|
126
127
|
expect(retreivedAttestations[0].payload.header.slotNumber).toEqual(slot);
|
|
@@ -144,7 +145,7 @@ export function describeAttestationPool(getAttestationPool) {
|
|
|
144
145
|
for (const attestation of attestations){
|
|
145
146
|
const slot = attestation.payload.header.slotNumber;
|
|
146
147
|
const proposalId = attestation.archive.toString();
|
|
147
|
-
const retreivedAttestations = await ap.getAttestationsForSlotAndProposal(slot
|
|
148
|
+
const retreivedAttestations = await ap.getAttestationsForSlotAndProposal(slot, proposalId);
|
|
148
149
|
expect(retreivedAttestations.length).toBe(1);
|
|
149
150
|
expect(retreivedAttestations[0].toBuffer()).toEqual(attestation.toBuffer());
|
|
150
151
|
expect(retreivedAttestations[0].payload.header.slotNumber).toEqual(slot);
|
|
@@ -156,7 +157,7 @@ export function describeAttestationPool(getAttestationPool) {
|
|
|
156
157
|
const attestations = signers.map((signer)=>mockAttestation(signer, slotNumber, archive));
|
|
157
158
|
const proposalId = attestations[0].archive.toString();
|
|
158
159
|
await ap.addAttestations(attestations);
|
|
159
|
-
const retreivedAttestations = await ap.getAttestationsForSlotAndProposal(
|
|
160
|
+
const retreivedAttestations = await ap.getAttestationsForSlotAndProposal(SlotNumber(slotNumber), proposalId);
|
|
160
161
|
expect(retreivedAttestations.length).toBe(NUMBER_OF_SIGNERS_PER_TEST);
|
|
161
162
|
compareAttestations(retreivedAttestations, attestations);
|
|
162
163
|
// Check hasAttestation before deletion
|
|
@@ -164,7 +165,7 @@ export function describeAttestationPool(getAttestationPool) {
|
|
|
164
165
|
expect(await ap.hasAttestation(attestation)).toBe(true);
|
|
165
166
|
}
|
|
166
167
|
await ap.deleteAttestations(attestations);
|
|
167
|
-
const gottenAfterDelete = await ap.getAttestationsForSlotAndProposal(
|
|
168
|
+
const gottenAfterDelete = await ap.getAttestationsForSlotAndProposal(SlotNumber(slotNumber), proposalId);
|
|
168
169
|
expect(gottenAfterDelete.length).toBe(0);
|
|
169
170
|
// Check hasAttestation after deletion
|
|
170
171
|
for (const attestation of attestations){
|
|
@@ -177,11 +178,11 @@ export function describeAttestationPool(getAttestationPool) {
|
|
|
177
178
|
const attestations = signers.map((signer)=>mockAttestation(signer, slotNumber, archive));
|
|
178
179
|
const proposalId = attestations[0].archive.toString();
|
|
179
180
|
await ap.addAttestations(attestations);
|
|
180
|
-
const retreivedAttestations = await ap.getAttestationsForSlotAndProposal(
|
|
181
|
+
const retreivedAttestations = await ap.getAttestationsForSlotAndProposal(SlotNumber(slotNumber), proposalId);
|
|
181
182
|
expect(retreivedAttestations.length).toBe(NUMBER_OF_SIGNERS_PER_TEST);
|
|
182
183
|
compareAttestations(retreivedAttestations, attestations);
|
|
183
|
-
await ap.deleteAttestationsForSlot(
|
|
184
|
-
const retreivedAttestationsAfterDelete = await ap.getAttestationsForSlotAndProposal(
|
|
184
|
+
await ap.deleteAttestationsForSlot(SlotNumber(slotNumber));
|
|
185
|
+
const retreivedAttestationsAfterDelete = await ap.getAttestationsForSlotAndProposal(SlotNumber(slotNumber), proposalId);
|
|
185
186
|
expect(retreivedAttestationsAfterDelete.length).toBe(0);
|
|
186
187
|
});
|
|
187
188
|
it('should blanket delete attestations per slot and proposal', async ()=>{
|
|
@@ -195,13 +196,13 @@ export function describeAttestationPool(getAttestationPool) {
|
|
|
195
196
|
const proposalId2 = attestations2[0].archive.toString();
|
|
196
197
|
await ap.addAttestations(attestations);
|
|
197
198
|
await ap.addAttestations(attestations2);
|
|
198
|
-
const retreivedAttestations = await ap.getAttestationsForSlotAndProposal(
|
|
199
|
+
const retreivedAttestations = await ap.getAttestationsForSlotAndProposal(SlotNumber(slotNumber), proposalId);
|
|
199
200
|
expect(retreivedAttestations.length).toBe(NUMBER_OF_SIGNERS_PER_TEST);
|
|
200
201
|
compareAttestations(retreivedAttestations, attestations);
|
|
201
|
-
await ap.deleteAttestationsForSlotAndProposal(
|
|
202
|
-
const retreivedAttestationsAfterDelete = await ap.getAttestationsForSlotAndProposal(
|
|
202
|
+
await ap.deleteAttestationsForSlotAndProposal(SlotNumber(slotNumber), proposalId);
|
|
203
|
+
const retreivedAttestationsAfterDelete = await ap.getAttestationsForSlotAndProposal(SlotNumber(slotNumber), proposalId);
|
|
203
204
|
expect(retreivedAttestationsAfterDelete.length).toBe(0);
|
|
204
|
-
const retreivedAttestationsAfterDeleteForOtherProposal = await ap.getAttestationsForSlotAndProposal(
|
|
205
|
+
const retreivedAttestationsAfterDeleteForOtherProposal = await ap.getAttestationsForSlotAndProposal(SlotNumber(slotNumber), proposalId2);
|
|
205
206
|
expect(retreivedAttestationsAfterDeleteForOtherProposal.length).toBe(NUMBER_OF_SIGNERS_PER_TEST);
|
|
206
207
|
compareAttestations(retreivedAttestationsAfterDeleteForOtherProposal, attestations2);
|
|
207
208
|
});
|
|
@@ -219,18 +220,18 @@ export function describeAttestationPool(getAttestationPool) {
|
|
|
219
220
|
const attestations = (await Promise.all(slotNumbers.map((slotNumber)=>createAttestationsForSlot(slotNumber)))).flat();
|
|
220
221
|
const proposalId = attestations[0].archive.toString();
|
|
221
222
|
await ap.addAttestations(attestations);
|
|
222
|
-
const attestationsForSlot1 = await ap.getAttestationsForSlotAndProposal(
|
|
223
|
+
const attestationsForSlot1 = await ap.getAttestationsForSlotAndProposal(SlotNumber(1), proposalId);
|
|
223
224
|
expect(attestationsForSlot1.length).toBe(signers.length);
|
|
224
225
|
const deleteAttestationsSpy = jest.spyOn(ap, 'deleteAttestationsForSlot');
|
|
225
|
-
await ap.deleteAttestationsOlderThan(
|
|
226
|
-
const attestationsForSlot1AfterDelete = await ap.getAttestationsForSlotAndProposal(
|
|
226
|
+
await ap.deleteAttestationsOlderThan(SlotNumber(73));
|
|
227
|
+
const attestationsForSlot1AfterDelete = await ap.getAttestationsForSlotAndProposal(SlotNumber(1), proposalId);
|
|
227
228
|
expect(attestationsForSlot1AfterDelete.length).toBe(0);
|
|
228
229
|
expect(deleteAttestationsSpy).toHaveBeenCalledTimes(5);
|
|
229
|
-
expect(deleteAttestationsSpy).toHaveBeenCalledWith(
|
|
230
|
-
expect(deleteAttestationsSpy).toHaveBeenCalledWith(
|
|
231
|
-
expect(deleteAttestationsSpy).toHaveBeenCalledWith(
|
|
232
|
-
expect(deleteAttestationsSpy).toHaveBeenCalledWith(
|
|
233
|
-
expect(deleteAttestationsSpy).toHaveBeenCalledWith(
|
|
230
|
+
expect(deleteAttestationsSpy).toHaveBeenCalledWith(SlotNumber(1));
|
|
231
|
+
expect(deleteAttestationsSpy).toHaveBeenCalledWith(SlotNumber(2));
|
|
232
|
+
expect(deleteAttestationsSpy).toHaveBeenCalledWith(SlotNumber(3));
|
|
233
|
+
expect(deleteAttestationsSpy).toHaveBeenCalledWith(SlotNumber(69));
|
|
234
|
+
expect(deleteAttestationsSpy).toHaveBeenCalledWith(SlotNumber(72));
|
|
234
235
|
});
|
|
235
236
|
describe('BlockProposal in attestation pool', ()=>{
|
|
236
237
|
it('should add and retrieve block proposal', async ()=>{
|
|
@@ -279,7 +280,7 @@ export function describeAttestationPool(getAttestationPool) {
|
|
|
279
280
|
const retrievedProposal = await ap.getBlockProposal(proposalId);
|
|
280
281
|
expect(retrievedProposal).toBeDefined();
|
|
281
282
|
expect(retrievedProposal.toBuffer()).toEqual(proposal2.toBuffer());
|
|
282
|
-
expect(retrievedProposal.slotNumber
|
|
283
|
+
expect(retrievedProposal.slotNumber).toBe(SlotNumber(200));
|
|
283
284
|
});
|
|
284
285
|
it('should delete block proposal when deleting attestations for slot and proposal', async ()=>{
|
|
285
286
|
const slotNumber = 420;
|
|
@@ -295,7 +296,7 @@ export function describeAttestationPool(getAttestationPool) {
|
|
|
295
296
|
expect(retrievedProposal).toBeDefined();
|
|
296
297
|
expect(await ap.hasBlockProposal(proposalId)).toBe(true);
|
|
297
298
|
// Delete attestations for slot and proposal
|
|
298
|
-
await ap.deleteAttestationsForSlotAndProposal(
|
|
299
|
+
await ap.deleteAttestationsForSlotAndProposal(SlotNumber(slotNumber), proposalId);
|
|
299
300
|
// Proposal should be deleted
|
|
300
301
|
retrievedProposal = await ap.getBlockProposal(proposalId);
|
|
301
302
|
expect(retrievedProposal).toBeUndefined();
|
|
@@ -313,7 +314,7 @@ export function describeAttestationPool(getAttestationPool) {
|
|
|
313
314
|
expect(retrievedProposal).toBeDefined();
|
|
314
315
|
expect(await ap.hasBlockProposal(proposal)).toBe(true);
|
|
315
316
|
// Delete attestations for slot
|
|
316
|
-
await ap.deleteAttestationsForSlot(
|
|
317
|
+
await ap.deleteAttestationsForSlot(SlotNumber(slotNumber));
|
|
317
318
|
// Proposal should be deleted
|
|
318
319
|
retrievedProposal = await ap.getBlockProposal(proposalId);
|
|
319
320
|
expect(retrievedProposal).toBeUndefined();
|
|
@@ -331,7 +332,7 @@ export function describeAttestationPool(getAttestationPool) {
|
|
|
331
332
|
await ap.addAttestations(attestations);
|
|
332
333
|
// Retrieve both proposal and attestations
|
|
333
334
|
const retrievedProposal = await ap.getBlockProposal(proposalId);
|
|
334
|
-
const retrievedAttestations = await ap.getAttestationsForSlotAndProposal(
|
|
335
|
+
const retrievedAttestations = await ap.getAttestationsForSlotAndProposal(SlotNumber(slotNumber), proposalId);
|
|
335
336
|
expect(retrievedProposal).toBeDefined();
|
|
336
337
|
expect(retrievedProposal).toEqual(proposal);
|
|
337
338
|
expect(await ap.hasBlockProposal(proposalId)).toBe(true);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
2
3
|
import { BlockAttestation, BlockProposal } from '@aztec/stdlib/p2p';
|
|
3
4
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
@@ -18,19 +19,19 @@ export declare class KvAttestationPool implements AttestationPool {
|
|
|
18
19
|
private getProposalKey;
|
|
19
20
|
private getAttestationKey;
|
|
20
21
|
addAttestations(attestations: BlockAttestation[]): Promise<void>;
|
|
21
|
-
getAttestationsForSlot(slot:
|
|
22
|
-
getAttestationsForSlotAndProposal(slot:
|
|
23
|
-
deleteAttestationsOlderThan(oldestSlot:
|
|
24
|
-
deleteAttestationsForSlot(slot:
|
|
25
|
-
deleteAttestationsForSlotAndProposal(slot:
|
|
22
|
+
getAttestationsForSlot(slot: SlotNumber): Promise<BlockAttestation[]>;
|
|
23
|
+
getAttestationsForSlotAndProposal(slot: SlotNumber, proposalId: string): Promise<BlockAttestation[]>;
|
|
24
|
+
deleteAttestationsOlderThan(oldestSlot: SlotNumber): Promise<void>;
|
|
25
|
+
deleteAttestationsForSlot(slot: SlotNumber): Promise<void>;
|
|
26
|
+
deleteAttestationsForSlotAndProposal(slot: SlotNumber, proposalId: string): Promise<void>;
|
|
26
27
|
deleteAttestations(attestations: BlockAttestation[]): Promise<void>;
|
|
27
28
|
hasAttestation(attestation: BlockAttestation): Promise<boolean>;
|
|
28
29
|
getBlockProposal(id: string): Promise<BlockProposal | undefined>;
|
|
29
30
|
hasBlockProposal(idOrProposal: string | BlockProposal): Promise<boolean>;
|
|
30
31
|
addBlockProposal(blockProposal: BlockProposal): Promise<void>;
|
|
31
|
-
hasReachedProposalCap(slot:
|
|
32
|
-
hasReachedAttestationCap(slot:
|
|
32
|
+
hasReachedProposalCap(slot: SlotNumber): Promise<boolean>;
|
|
33
|
+
hasReachedAttestationCap(slot: SlotNumber, proposalId: string, committeeSize: number): Promise<boolean>;
|
|
33
34
|
canAddProposal(block: BlockProposal): Promise<boolean>;
|
|
34
35
|
canAddAttestation(attestation: BlockAttestation, committeeSize: number): Promise<boolean>;
|
|
35
36
|
}
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3ZfYXR0ZXN0YXRpb25fcG9vbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21lbV9wb29scy9hdHRlc3RhdGlvbl9wb29sL2t2X2F0dGVzdGF0aW9uX3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSTdELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFxQyxNQUFNLGlCQUFpQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0seUJBQXlCLENBQUM7QUFJbkYsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFN0QsZUFBTyxNQUFNLHNCQUFzQixJQUFJLENBQUM7QUFDeEMsZUFBTyxNQUFNLHNCQUFzQixLQUFLLENBQUM7QUFFekMscUJBQWEsaUJBQWtCLFlBQVcsZUFBZTtJQVlyRCxPQUFPLENBQUMsS0FBSztJQUViLE9BQU8sQ0FBQyxHQUFHO0lBYmIsT0FBTyxDQUFDLE9BQU8sQ0FBd0M7SUFFdkQsT0FBTyxDQUFDLFlBQVksQ0FBZ0M7SUFDcEQsT0FBTyxDQUFDLFNBQVMsQ0FHZjtJQUNGLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBcUM7SUFDN0QsT0FBTyxDQUFDLHVCQUF1QixDQUFxQztJQUVwRSxZQUNVLEtBQUssRUFBRSxpQkFBaUIsRUFDaEMsU0FBUyxHQUFFLGVBQXNDLEVBQ3pDLEdBQUcseUNBQXlDLEVBUXJEO0lBRUQsT0FBTyxDQUFDLFNBQVMsQ0FJZjtJQUVXLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBS3ZDO0lBRUQsT0FBTyxDQUFDLGNBQWM7SUFZdEIsT0FBTyxDQUFDLGlCQUFpQjtJQUlaLGVBQWUsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBbUM1RTtJQUVZLHNCQUFzQixDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FTakY7SUFFWSxpQ0FBaUMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FvQmhIO0lBRVksMkJBQTJCLENBQUMsVUFBVSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBSzlFO0lBRVkseUJBQXlCLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBdUJ0RTtJQUVZLG9DQUFvQyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBa0JyRztJQUVZLGtCQUFrQixDQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0E0Qi9FO0lBRVksY0FBYyxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBYzNFO0lBRVksZ0JBQWdCLENBQUMsRUFBRSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQyxDQVc1RTtJQUVZLGdCQUFnQixDQUFDLFlBQVksRUFBRSxNQUFNLEdBQUcsYUFBYSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FHcEY7SUFFWSxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FlekU7SUFFWSxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FHckU7SUFFWSx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBR25IO0lBRVksY0FBYyxDQUFDLEtBQUssRUFBRSxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUlsRTtJQUVZLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FTckc7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kv_attestation_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/kv_attestation_pool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"kv_attestation_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/kv_attestation_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAI7D,OAAO,KAAK,EAAE,iBAAiB,EAAqC,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAInF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,qBAAa,iBAAkB,YAAW,eAAe;IAYrD,OAAO,CAAC,KAAK;IAEb,OAAO,CAAC,GAAG;IAbb,OAAO,CAAC,OAAO,CAAwC;IAEvD,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,SAAS,CAGf;IACF,OAAO,CAAC,gBAAgB,CAAqC;IAC7D,OAAO,CAAC,uBAAuB,CAAqC;IAEpE,YACU,KAAK,EAAE,iBAAiB,EAChC,SAAS,GAAE,eAAsC,EACzC,GAAG,yCAAyC,EAQrD;IAED,OAAO,CAAC,SAAS,CAIf;IAEW,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAKvC;IAED,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iBAAiB;IAIZ,eAAe,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC5E;IAEY,sBAAsB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CASjF;IAEY,iCAAiC,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAoBhH;IAEY,2BAA2B,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAK9E;IAEY,yBAAyB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBtE;IAEY,oCAAoC,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBrG;IAEY,kBAAkB,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B/E;IAEY,cAAc,CAAC,WAAW,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAc3E;IAEY,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAW5E;IAEY,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAGpF;IAEY,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAezE;IAEY,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAGrE;IAEY,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGnH;IAEY,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAIlE;IAEY,iBAAiB,CAAC,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASrG;CACF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { Fr } from '@aztec/foundation/fields';
|
|
2
3
|
import { toArray } from '@aztec/foundation/iterable';
|
|
3
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
@@ -52,7 +53,7 @@ export class KvAttestationPool {
|
|
|
52
53
|
const sender = attestation.getSender();
|
|
53
54
|
// Skip attestations with invalid signatures
|
|
54
55
|
if (!sender) {
|
|
55
|
-
this.log.warn(`Skipping attestation with invalid signature for slot ${slotNumber
|
|
56
|
+
this.log.warn(`Skipping attestation with invalid signature for slot ${slotNumber}`, {
|
|
56
57
|
signature: attestation.signature.toString(),
|
|
57
58
|
slotNumber,
|
|
58
59
|
proposalId
|
|
@@ -61,9 +62,9 @@ export class KvAttestationPool {
|
|
|
61
62
|
}
|
|
62
63
|
const address = sender.toString();
|
|
63
64
|
await this.attestations.set(this.getAttestationKey(slotNumber, proposalId, address), attestation.toBuffer());
|
|
64
|
-
await this.proposalsForSlot.set(slotNumber
|
|
65
|
+
await this.proposalsForSlot.set(slotNumber, proposalId.toString());
|
|
65
66
|
await this.attestationsForProposal.set(this.getProposalKey(slotNumber, proposalId), this.getAttestationKey(slotNumber, proposalId, address));
|
|
66
|
-
this.log.verbose(`Added attestation for slot ${slotNumber
|
|
67
|
+
this.log.verbose(`Added attestation for slot ${slotNumber} from ${address}`, {
|
|
67
68
|
signature: attestation.signature.toString(),
|
|
68
69
|
slotNumber,
|
|
69
70
|
address,
|
|
@@ -73,8 +74,7 @@ export class KvAttestationPool {
|
|
|
73
74
|
});
|
|
74
75
|
}
|
|
75
76
|
async getAttestationsForSlot(slot) {
|
|
76
|
-
const
|
|
77
|
-
const proposalIds = await toArray(this.proposalsForSlot.getValuesAsync(slotFr.toString()));
|
|
77
|
+
const proposalIds = await toArray(this.proposalsForSlot.getValuesAsync(slot));
|
|
78
78
|
const attestations = [];
|
|
79
79
|
for (const proposalId of proposalIds){
|
|
80
80
|
attestations.push(...await this.getAttestationsForSlotAndProposal(slot, proposalId));
|
|
@@ -98,41 +98,41 @@ export class KvAttestationPool {
|
|
|
98
98
|
}
|
|
99
99
|
async deleteAttestationsOlderThan(oldestSlot) {
|
|
100
100
|
const olderThan = await toArray(this.proposalsForSlot.keysAsync({
|
|
101
|
-
end:
|
|
101
|
+
end: oldestSlot
|
|
102
102
|
}));
|
|
103
103
|
for (const oldSlot of olderThan){
|
|
104
|
-
await this.deleteAttestationsForSlot(
|
|
104
|
+
await this.deleteAttestationsForSlot(SlotNumber(oldSlot));
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
107
|
async deleteAttestationsForSlot(slot) {
|
|
108
|
-
const slotFr = new Fr(slot);
|
|
109
108
|
let numberOfAttestations = 0;
|
|
110
109
|
await this.store.transactionAsync(async ()=>{
|
|
111
|
-
const proposalIds = await toArray(this.proposalsForSlot.getValuesAsync(
|
|
110
|
+
const proposalIds = await toArray(this.proposalsForSlot.getValuesAsync(slot));
|
|
112
111
|
for (const proposalId of proposalIds){
|
|
113
|
-
const attestations = await toArray(this.attestationsForProposal.getValuesAsync(this.getProposalKey(
|
|
112
|
+
const attestations = await toArray(this.attestationsForProposal.getValuesAsync(this.getProposalKey(slot, proposalId)));
|
|
114
113
|
numberOfAttestations += attestations.length;
|
|
115
114
|
for (const attestation of attestations){
|
|
116
115
|
await this.attestations.delete(attestation);
|
|
117
116
|
}
|
|
118
117
|
await this.proposals.delete(proposalId);
|
|
119
|
-
await this.attestationsForProposal.delete(this.getProposalKey(
|
|
118
|
+
await this.attestationsForProposal.delete(this.getProposalKey(slot, proposalId));
|
|
120
119
|
}
|
|
120
|
+
// Delete from proposalsForSlot
|
|
121
|
+
await this.proposalsForSlot.delete(slot);
|
|
121
122
|
this.log.verbose(`Removed ${numberOfAttestations} attestations for slot ${slot}`);
|
|
122
123
|
});
|
|
123
124
|
}
|
|
124
125
|
async deleteAttestationsForSlotAndProposal(slot, proposalId) {
|
|
125
126
|
let numberOfAttestations = 0;
|
|
126
127
|
await this.store.transactionAsync(async ()=>{
|
|
127
|
-
const slotString = new Fr(slot).toString();
|
|
128
128
|
const attestations = await toArray(this.attestationsForProposal.getValuesAsync(this.getProposalKey(slot, proposalId)));
|
|
129
129
|
numberOfAttestations += attestations.length;
|
|
130
130
|
for (const attestation of attestations){
|
|
131
131
|
await this.attestations.delete(attestation);
|
|
132
132
|
}
|
|
133
133
|
await this.proposals.delete(proposalId);
|
|
134
|
-
await this.proposalsForSlot.deleteValue(
|
|
135
|
-
await this.attestationsForProposal.delete(this.getProposalKey(
|
|
134
|
+
await this.proposalsForSlot.deleteValue(slot, proposalId);
|
|
135
|
+
await this.attestationsForProposal.delete(this.getProposalKey(slot, proposalId));
|
|
136
136
|
this.log.verbose(`Removed ${numberOfAttestations} attestations for slot ${slot} and proposal ${proposalId}`);
|
|
137
137
|
});
|
|
138
138
|
}
|
|
@@ -144,7 +144,7 @@ export class KvAttestationPool {
|
|
|
144
144
|
const sender = attestation.getSender();
|
|
145
145
|
// Skip attestations with invalid signatures
|
|
146
146
|
if (!sender) {
|
|
147
|
-
this.log.warn(`Skipping deletion of attestation with invalid signature for slot ${slotNumber
|
|
147
|
+
this.log.warn(`Skipping deletion of attestation with invalid signature for slot ${slotNumber}`);
|
|
148
148
|
continue;
|
|
149
149
|
}
|
|
150
150
|
const address = sender.toString();
|
|
@@ -186,7 +186,7 @@ export class KvAttestationPool {
|
|
|
186
186
|
}
|
|
187
187
|
async addBlockProposal(blockProposal) {
|
|
188
188
|
await this.store.transactionAsync(async ()=>{
|
|
189
|
-
const slotKey = blockProposal.slotNumber
|
|
189
|
+
const slotKey = blockProposal.slotNumber;
|
|
190
190
|
const proposalId = blockProposal.archive.toString();
|
|
191
191
|
if (!await this.canAddProposal(blockProposal)) {
|
|
192
192
|
throw new ProposalSlotCapExceededError(`Maximum proposals per slot reached: slot=${slotKey} cap=${MAX_PROPOSALS_PER_SLOT} proposal=${proposalId}`);
|
|
@@ -197,8 +197,7 @@ export class KvAttestationPool {
|
|
|
197
197
|
});
|
|
198
198
|
}
|
|
199
199
|
async hasReachedProposalCap(slot) {
|
|
200
|
-
const
|
|
201
|
-
const uniqueProposalCount = await this.proposalsForSlot.getValueCountAsync(slotKey);
|
|
200
|
+
const uniqueProposalCount = await this.proposalsForSlot.getValueCountAsync(slot);
|
|
202
201
|
return uniqueProposalCount >= MAX_PROPOSALS_PER_SLOT;
|
|
203
202
|
}
|
|
204
203
|
async hasReachedAttestationCap(slot, proposalId, committeeSize) {
|
|
@@ -206,9 +205,9 @@ export class KvAttestationPool {
|
|
|
206
205
|
return await this.attestationsForProposal.getValueCountAsync(this.getProposalKey(slot, proposalId)) >= limit;
|
|
207
206
|
}
|
|
208
207
|
async canAddProposal(block) {
|
|
209
|
-
return await this.proposals.hasAsync(block.archive.toString()) || !await this.hasReachedProposalCap(block.slotNumber
|
|
208
|
+
return await this.proposals.hasAsync(block.archive.toString()) || !await this.hasReachedProposalCap(block.slotNumber);
|
|
210
209
|
}
|
|
211
210
|
async canAddAttestation(attestation, committeeSize) {
|
|
212
|
-
return await this.hasAttestation(attestation) || !await this.hasReachedAttestationCap(attestation.payload.header.slotNumber
|
|
211
|
+
return await this.hasAttestation(attestation) || !await this.hasReachedAttestationCap(attestation.payload.header.slotNumber, attestation.archive.toString(), committeeSize);
|
|
213
212
|
}
|
|
214
213
|
}
|