@aztec/p2p 4.0.0-nightly.20260111 → 4.0.0-nightly.20260113
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/interface.d.ts +18 -5
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +9 -12
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +59 -103
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +61 -42
- 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 +225 -262
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +21 -18
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +113 -108
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts +17 -16
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.js +89 -128
- package/dest/mem_pools/attestation_pool/mocks.d.ts +7 -6
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.js +9 -8
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +4 -4
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +12 -10
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +5 -5
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +5 -5
- package/dest/msg_validators/index.d.ts +2 -2
- package/dest/msg_validators/index.d.ts.map +1 -1
- package/dest/msg_validators/index.js +1 -1
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts +9 -0
- package/dest/msg_validators/proposal_validator/block_proposal_validator.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/block_proposal_validator.js +6 -0
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts +9 -0
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/checkpoint_proposal_validator.js +6 -0
- package/dest/msg_validators/proposal_validator/index.d.ts +4 -0
- package/dest/msg_validators/proposal_validator/index.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/index.js +3 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +13 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -0
- package/dest/msg_validators/{block_proposal_validator/block_proposal_validator.js → proposal_validator/proposal_validator.js} +19 -21
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +23 -0
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -0
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +183 -0
- package/dest/services/dummy_service.d.ts +6 -2
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +3 -0
- package/dest/services/encoding.d.ts +1 -1
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/encoding.js +4 -2
- package/dest/services/libp2p/libp2p_service.d.ts +26 -10
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +218 -88
- package/dest/services/service.d.ts +16 -3
- package/dest/services/service.d.ts.map +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +25 -11
- package/dest/testbench/worker_client_manager.d.ts +1 -1
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +6 -1
- package/package.json +14 -14
- package/src/client/interface.ts +19 -4
- package/src/client/p2p_client.ts +69 -110
- package/src/mem_pools/attestation_pool/attestation_pool.ts +68 -41
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +231 -287
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +162 -140
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +141 -164
- package/src/mem_pools/attestation_pool/mocks.ts +13 -9
- package/src/msg_validators/attestation_validator/attestation_validator.ts +16 -13
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +7 -7
- package/src/msg_validators/index.ts +1 -1
- package/src/msg_validators/proposal_validator/block_proposal_validator.ts +10 -0
- package/src/msg_validators/proposal_validator/checkpoint_proposal_validator.ts +13 -0
- package/src/msg_validators/proposal_validator/index.ts +3 -0
- package/src/msg_validators/{block_proposal_validator/block_proposal_validator.ts → proposal_validator/proposal_validator.ts} +23 -28
- package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +206 -0
- package/src/services/dummy_service.ts +6 -0
- package/src/services/encoding.ts +3 -1
- package/src/services/libp2p/libp2p_service.ts +258 -94
- package/src/services/service.ts +19 -4
- package/src/testbench/p2p_client_testbench_worker.ts +34 -11
- package/src/testbench/worker_client_manager.ts +6 -1
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +0 -12
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +0 -1
- package/dest/msg_validators/block_proposal_validator/index.d.ts +0 -2
- package/dest/msg_validators/block_proposal_validator/index.d.ts.map +0 -1
- package/dest/msg_validators/block_proposal_validator/index.js +0 -1
- package/src/msg_validators/block_proposal_validator/index.ts +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
2
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
3
|
-
import {
|
|
3
|
+
import { BlockProposal, CheckpointAttestation, CheckpointProposal, type CheckpointProposalCore } from '@aztec/stdlib/p2p';
|
|
4
4
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
5
5
|
import type { AttestationPool } from './attestation_pool.js';
|
|
6
6
|
export declare const MAX_PROPOSALS_PER_SLOT = 5;
|
|
@@ -9,29 +9,32 @@ export declare class KvAttestationPool implements AttestationPool {
|
|
|
9
9
|
private store;
|
|
10
10
|
private log;
|
|
11
11
|
private metrics;
|
|
12
|
-
private attestations;
|
|
13
12
|
private proposals;
|
|
14
|
-
private
|
|
15
|
-
private
|
|
13
|
+
private checkpointAttestations;
|
|
14
|
+
private checkpointProposals;
|
|
15
|
+
private checkpointProposalsForSlot;
|
|
16
|
+
private checkpointAttestationsForProposal;
|
|
16
17
|
constructor(store: AztecAsyncKVStore, telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
|
|
17
18
|
private poolStats;
|
|
18
19
|
isEmpty(): Promise<boolean>;
|
|
19
20
|
private getProposalKey;
|
|
20
21
|
private getAttestationKey;
|
|
21
|
-
|
|
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>;
|
|
27
|
-
deleteAttestations(attestations: BlockAttestation[]): Promise<void>;
|
|
28
|
-
hasAttestation(attestation: BlockAttestation): Promise<boolean>;
|
|
22
|
+
addBlockProposal(blockProposal: BlockProposal): Promise<void>;
|
|
29
23
|
getBlockProposal(id: string): Promise<BlockProposal | undefined>;
|
|
30
24
|
hasBlockProposal(idOrProposal: string | BlockProposal): Promise<boolean>;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
25
|
+
addCheckpointProposal(proposal: CheckpointProposal): Promise<void>;
|
|
26
|
+
getCheckpointProposal(id: string): Promise<CheckpointProposalCore | undefined>;
|
|
27
|
+
hasCheckpointProposal(idOrProposal: string | CheckpointProposal): Promise<boolean>;
|
|
28
|
+
addCheckpointAttestations(attestations: CheckpointAttestation[]): Promise<void>;
|
|
29
|
+
getCheckpointAttestationsForSlot(slot: SlotNumber): Promise<CheckpointAttestation[]>;
|
|
30
|
+
getCheckpointAttestationsForSlotAndProposal(slot: SlotNumber, proposalId: string): Promise<CheckpointAttestation[]>;
|
|
31
|
+
deleteCheckpointAttestationsOlderThan(oldestSlot: SlotNumber): Promise<void>;
|
|
32
|
+
private deleteCheckpointAttestationsForSlot;
|
|
33
|
+
hasCheckpointAttestation(attestation: CheckpointAttestation): Promise<boolean>;
|
|
34
|
+
canAddProposal(_block: BlockProposal): Promise<boolean>;
|
|
35
|
+
canAddCheckpointProposal(proposal: CheckpointProposal): Promise<boolean>;
|
|
36
|
+
canAddCheckpointAttestation(attestation: CheckpointAttestation, committeeSize: number): Promise<boolean>;
|
|
37
|
+
hasReachedCheckpointProposalCap(slot: SlotNumber): Promise<boolean>;
|
|
38
|
+
hasReachedCheckpointAttestationCap(slot: SlotNumber, proposalId: string, committeeSize: number): Promise<boolean>;
|
|
36
39
|
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3ZfYXR0ZXN0YXRpb25fcG9vbC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21lbV9wb29scy9hdHRlc3RhdGlvbl9wb29sL2t2X2F0dGVzdGF0aW9uX3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSTdELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFxQyxNQUFNLGlCQUFpQixDQUFDO0FBQzVGLE9BQU8sRUFDTCxhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLGtCQUFrQixFQUNsQixLQUFLLHNCQUFzQixFQUM1QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUluRixPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU3RCxlQUFPLE1BQU0sc0JBQXNCLElBQUksQ0FBQztBQUN4QyxlQUFPLE1BQU0sc0JBQXNCLEtBQUssQ0FBQztBQUV6QyxxQkFBYSxpQkFBa0IsWUFBVyxlQUFlO0lBZXJELE9BQU8sQ0FBQyxLQUFLO0lBRWIsT0FBTyxDQUFDLEdBQUc7SUFoQmIsT0FBTyxDQUFDLE9BQU8sQ0FBNkM7SUFFNUQsT0FBTyxDQUFDLFNBQVMsQ0FHZjtJQUdGLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBZ0M7SUFDOUQsT0FBTyxDQUFDLG1CQUFtQixDQUFnQztJQUMzRCxPQUFPLENBQUMsMEJBQTBCLENBQXFDO0lBQ3ZFLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBcUM7SUFFOUUsWUFDVSxLQUFLLEVBQUUsaUJBQWlCLEVBQ2hDLFNBQVMsR0FBRSxlQUFzQyxFQUN6QyxHQUFHLHlDQUF5QyxFQVdyRDtJQUVELE9BQU8sQ0FBQyxTQUFTLENBSWY7SUFFVyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQVF2QztJQUVELE9BQU8sQ0FBQyxjQUFjO0lBWXRCLE9BQU8sQ0FBQyxpQkFBaUI7SUFJWixnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FNekU7SUFFWSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLENBVzVFO0lBRVksZ0JBQWdCLENBQUMsWUFBWSxFQUFFLE1BQU0sR0FBRyxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUdwRjtJQUVZLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBNEI5RTtJQUVZLHFCQUFxQixDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLHNCQUFzQixHQUFHLFNBQVMsQ0FBQyxDQVcxRjtJQUVZLHFCQUFxQixDQUFDLFlBQVksRUFBRSxNQUFNLEdBQUcsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUc5RjtJQUVZLHlCQUF5QixDQUFDLFlBQVksRUFBRSxxQkFBcUIsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FzQzNGO0lBRVksZ0NBQWdDLENBQUMsSUFBSSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQVNoRztJQUVZLDJDQUEyQyxDQUN0RCxJQUFJLEVBQUUsVUFBVSxFQUNoQixVQUFVLEVBQUUsTUFBTSxHQUNqQixPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQWtCbEM7SUFFWSxxQ0FBcUMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FLeEY7WUFFYSxtQ0FBbUM7SUF3QnBDLHdCQUF3QixDQUFDLFdBQVcsRUFBRSxxQkFBcUIsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBYzFGO0lBRU0sY0FBYyxDQUFDLE1BQU0sRUFBRSxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUc3RDtJQUVZLHdCQUF3QixDQUFDLFFBQVEsRUFBRSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBTXBGO0lBRVksMkJBQTJCLENBQ3RDLFdBQVcsRUFBRSxxQkFBcUIsRUFDbEMsYUFBYSxFQUFFLE1BQU0sR0FDcEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQVNsQjtJQUVZLCtCQUErQixDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUcvRTtJQUVZLGtDQUFrQyxDQUM3QyxJQUFJLEVBQUUsVUFBVSxFQUNoQixVQUFVLEVBQUUsTUFBTSxFQUNsQixhQUFhLEVBQUUsTUFBTSxHQUNwQixPQUFPLENBQUMsT0FBTyxDQUFDLENBS2xCO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,EACL,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,sBAAsB,EAC5B,MAAM,mBAAmB,CAAC;AAC3B,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;IAerD,OAAO,CAAC,KAAK;IAEb,OAAO,CAAC,GAAG;IAhBb,OAAO,CAAC,OAAO,CAA6C;IAE5D,OAAO,CAAC,SAAS,CAGf;IAGF,OAAO,CAAC,sBAAsB,CAAgC;IAC9D,OAAO,CAAC,mBAAmB,CAAgC;IAC3D,OAAO,CAAC,0BAA0B,CAAqC;IACvE,OAAO,CAAC,iCAAiC,CAAqC;IAE9E,YACU,KAAK,EAAE,iBAAiB,EAChC,SAAS,GAAE,eAAsC,EACzC,GAAG,yCAAyC,EAWrD;IAED,OAAO,CAAC,SAAS,CAIf;IAEW,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAQvC;IAED,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iBAAiB;IAIZ,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAMzE;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,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B9E;IAEY,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAW1F;IAEY,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAG9F;IAEY,yBAAyB,CAAC,YAAY,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC3F;IAEY,gCAAgC,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAShG;IAEY,2CAA2C,CACtD,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAkBlC;IAEY,qCAAqC,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAKxF;YAEa,mCAAmC;IAwBpC,wBAAwB,CAAC,WAAW,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,CAc1F;IAEM,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAG7D;IAEY,wBAAwB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAMpF;IAEY,2BAA2B,CACtC,WAAW,EAAE,qBAAqB,EAClC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC,CASlB;IAEY,+BAA+B,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAG/E;IAEY,kCAAkC,CAC7C,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC,CAKlB;CACF"}
|
|
@@ -2,7 +2,7 @@ import { SlotNumber } from '@aztec/foundation/branded-types';
|
|
|
2
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { toArray } from '@aztec/foundation/iterable';
|
|
4
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
5
|
-
import {
|
|
5
|
+
import { BlockProposal, CheckpointAttestation, CheckpointProposal } from '@aztec/stdlib/p2p';
|
|
6
6
|
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
7
7
|
import { ProposalSlotCapExceededError } from '../../errors/attestation-pool.error.js';
|
|
8
8
|
import { PoolInstrumentation, PoolName } from '../instrumentation.js';
|
|
@@ -12,27 +12,34 @@ export class KvAttestationPool {
|
|
|
12
12
|
store;
|
|
13
13
|
log;
|
|
14
14
|
metrics;
|
|
15
|
-
attestations;
|
|
16
15
|
proposals;
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
// Checkpoint attestation storage
|
|
17
|
+
checkpointAttestations;
|
|
18
|
+
checkpointProposals;
|
|
19
|
+
checkpointProposalsForSlot;
|
|
20
|
+
checkpointAttestationsForProposal;
|
|
19
21
|
constructor(store, telemetry = getTelemetryClient(), log = createLogger('aztec:attestation_pool')){
|
|
20
22
|
this.store = store;
|
|
21
23
|
this.log = log;
|
|
22
24
|
this.poolStats = async ()=>{
|
|
23
25
|
return {
|
|
24
|
-
itemCount: await this.
|
|
26
|
+
itemCount: await this.checkpointAttestations.sizeAsync()
|
|
25
27
|
};
|
|
26
28
|
};
|
|
27
|
-
this.attestations = store.openMap('attestations');
|
|
28
29
|
this.proposals = store.openMap('proposals');
|
|
29
|
-
|
|
30
|
-
this.
|
|
30
|
+
// Initialize checkpoint attestation storage
|
|
31
|
+
this.checkpointAttestations = store.openMap('checkpoint_attestations');
|
|
32
|
+
this.checkpointProposals = store.openMap('checkpoint_proposals');
|
|
33
|
+
this.checkpointProposalsForSlot = store.openMultiMap('checkpoint_proposals_for_slot');
|
|
34
|
+
this.checkpointAttestationsForProposal = store.openMultiMap('checkpoint_attestations_for_proposal');
|
|
31
35
|
this.metrics = new PoolInstrumentation(telemetry, PoolName.ATTESTATION_POOL, this.poolStats);
|
|
32
36
|
}
|
|
33
37
|
poolStats;
|
|
34
38
|
async isEmpty() {
|
|
35
|
-
for await (const _ of this.
|
|
39
|
+
for await (const _ of this.checkpointAttestations.entriesAsync()){
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
for await (const _ of this.proposals.entriesAsync()){
|
|
36
43
|
return false;
|
|
37
44
|
}
|
|
38
45
|
return true;
|
|
@@ -45,7 +52,65 @@ export class KvAttestationPool {
|
|
|
45
52
|
getAttestationKey(slot, proposalId, address) {
|
|
46
53
|
return `${this.getProposalKey(slot, proposalId)}-${address}`;
|
|
47
54
|
}
|
|
48
|
-
async
|
|
55
|
+
async addBlockProposal(blockProposal) {
|
|
56
|
+
await this.store.transactionAsync(async ()=>{
|
|
57
|
+
const proposalId = blockProposal.archive.toString();
|
|
58
|
+
// Strip signedTxs before storing to avoid persisting full tx data
|
|
59
|
+
await this.proposals.set(proposalId, blockProposal.withoutSignedTxs().toBuffer());
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
async getBlockProposal(id) {
|
|
63
|
+
const buffer = await this.proposals.getAsync(id);
|
|
64
|
+
try {
|
|
65
|
+
if (buffer && buffer.length > 0) {
|
|
66
|
+
return BlockProposal.fromBuffer(buffer);
|
|
67
|
+
}
|
|
68
|
+
} catch {
|
|
69
|
+
return Promise.resolve(undefined);
|
|
70
|
+
}
|
|
71
|
+
return Promise.resolve(undefined);
|
|
72
|
+
}
|
|
73
|
+
async hasBlockProposal(idOrProposal) {
|
|
74
|
+
const id = typeof idOrProposal === 'string' ? idOrProposal : idOrProposal.archive.toString();
|
|
75
|
+
return await this.proposals.hasAsync(id);
|
|
76
|
+
}
|
|
77
|
+
async addCheckpointProposal(proposal) {
|
|
78
|
+
if (!await this.canAddCheckpointProposal(proposal)) {
|
|
79
|
+
throw new ProposalSlotCapExceededError(`Maximum checkpoint proposals per slot reached: slot=${proposal.slotNumber} cap=${MAX_PROPOSALS_PER_SLOT} proposal=${proposal.archive.toString()}`);
|
|
80
|
+
}
|
|
81
|
+
// Extract and validate the block proposal if present
|
|
82
|
+
const blockProposal = proposal.getBlockProposal();
|
|
83
|
+
if (blockProposal && !await this.canAddProposal(blockProposal)) {
|
|
84
|
+
throw new ProposalSlotCapExceededError(`Maximum block proposals per slot reached when extracting from checkpoint: slot=${proposal.slotNumber} proposal=${blockProposal.archive.toString()}`);
|
|
85
|
+
}
|
|
86
|
+
await this.store.transactionAsync(async ()=>{
|
|
87
|
+
const slotKey = proposal.slotNumber;
|
|
88
|
+
const proposalId = proposal.archive.toString();
|
|
89
|
+
await this.checkpointProposalsForSlot.set(slotKey, proposalId);
|
|
90
|
+
// Store the checkpoint proposal as core (without lastBlock) to avoid duplication
|
|
91
|
+
await this.checkpointProposals.set(proposalId, proposal.toCore().toBuffer());
|
|
92
|
+
// Store the extracted block proposal separately
|
|
93
|
+
if (blockProposal) {
|
|
94
|
+
await this.proposals.set(blockProposal.archive.toString(), blockProposal.withoutSignedTxs().toBuffer());
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
async getCheckpointProposal(id) {
|
|
99
|
+
const buffer = await this.checkpointProposals.getAsync(id);
|
|
100
|
+
try {
|
|
101
|
+
if (buffer && buffer.length > 0) {
|
|
102
|
+
return CheckpointProposal.fromBuffer(buffer);
|
|
103
|
+
}
|
|
104
|
+
} catch {
|
|
105
|
+
return Promise.resolve(undefined);
|
|
106
|
+
}
|
|
107
|
+
return Promise.resolve(undefined);
|
|
108
|
+
}
|
|
109
|
+
async hasCheckpointProposal(idOrProposal) {
|
|
110
|
+
const id = typeof idOrProposal === 'string' ? idOrProposal : idOrProposal.archive.toString();
|
|
111
|
+
return await this.checkpointProposals.hasAsync(id);
|
|
112
|
+
}
|
|
113
|
+
async addCheckpointAttestations(attestations) {
|
|
49
114
|
await this.store.transactionAsync(async ()=>{
|
|
50
115
|
for (const attestation of attestations){
|
|
51
116
|
const slotNumber = attestation.payload.header.slotNumber;
|
|
@@ -53,7 +118,7 @@ export class KvAttestationPool {
|
|
|
53
118
|
const sender = attestation.getSender();
|
|
54
119
|
// Skip attestations with invalid signatures
|
|
55
120
|
if (!sender) {
|
|
56
|
-
this.log.warn(`Skipping attestation with invalid signature for slot ${slotNumber}`, {
|
|
121
|
+
this.log.warn(`Skipping checkpoint attestation with invalid signature for slot ${slotNumber}`, {
|
|
57
122
|
signature: attestation.signature.toString(),
|
|
58
123
|
slotNumber,
|
|
59
124
|
proposalId
|
|
@@ -61,10 +126,10 @@ export class KvAttestationPool {
|
|
|
61
126
|
continue;
|
|
62
127
|
}
|
|
63
128
|
const address = sender.toString();
|
|
64
|
-
await this.
|
|
65
|
-
await this.
|
|
66
|
-
await this.
|
|
67
|
-
this.log.verbose(`Added attestation for slot ${slotNumber} from ${address}`, {
|
|
129
|
+
await this.checkpointAttestations.set(this.getAttestationKey(slotNumber, proposalId, address), attestation.toBuffer());
|
|
130
|
+
await this.checkpointProposalsForSlot.set(slotNumber, proposalId.toString());
|
|
131
|
+
await this.checkpointAttestationsForProposal.set(this.getProposalKey(slotNumber, proposalId), this.getAttestationKey(slotNumber, proposalId, address));
|
|
132
|
+
this.log.verbose(`Added checkpoint attestation for slot ${slotNumber} from ${address}`, {
|
|
68
133
|
signature: attestation.signature.toString(),
|
|
69
134
|
slotNumber,
|
|
70
135
|
address,
|
|
@@ -73,91 +138,53 @@ export class KvAttestationPool {
|
|
|
73
138
|
}
|
|
74
139
|
});
|
|
75
140
|
}
|
|
76
|
-
async
|
|
77
|
-
const proposalIds = await toArray(this.
|
|
141
|
+
async getCheckpointAttestationsForSlot(slot) {
|
|
142
|
+
const proposalIds = await toArray(this.checkpointProposalsForSlot.getValuesAsync(slot));
|
|
78
143
|
const attestations = [];
|
|
79
144
|
for (const proposalId of proposalIds){
|
|
80
|
-
attestations.push(...await this.
|
|
145
|
+
attestations.push(...await this.getCheckpointAttestationsForSlotAndProposal(slot, proposalId));
|
|
81
146
|
}
|
|
82
147
|
return attestations;
|
|
83
148
|
}
|
|
84
|
-
async
|
|
85
|
-
const attestationIds = await toArray(this.
|
|
149
|
+
async getCheckpointAttestationsForSlotAndProposal(slot, proposalId) {
|
|
150
|
+
const attestationIds = await toArray(this.checkpointAttestationsForProposal.getValuesAsync(this.getProposalKey(slot, proposalId)));
|
|
86
151
|
const attestations = [];
|
|
87
|
-
// alternatively iterate this.attestaions starting from slot-proposal-EthAddress.zero
|
|
88
152
|
for (const id of attestationIds){
|
|
89
|
-
const buf = await this.
|
|
153
|
+
const buf = await this.checkpointAttestations.getAsync(id);
|
|
90
154
|
if (!buf) {
|
|
91
|
-
|
|
92
|
-
throw new Error('Attestation not found ' + id);
|
|
155
|
+
throw new Error('Checkpoint attestation not found ' + id);
|
|
93
156
|
}
|
|
94
|
-
const attestation =
|
|
157
|
+
const attestation = CheckpointAttestation.fromBuffer(buf);
|
|
95
158
|
attestations.push(attestation);
|
|
96
159
|
}
|
|
97
160
|
return attestations;
|
|
98
161
|
}
|
|
99
|
-
async
|
|
100
|
-
const olderThan = await toArray(this.
|
|
162
|
+
async deleteCheckpointAttestationsOlderThan(oldestSlot) {
|
|
163
|
+
const olderThan = await toArray(this.checkpointProposalsForSlot.keysAsync({
|
|
101
164
|
end: oldestSlot
|
|
102
165
|
}));
|
|
103
166
|
for (const oldSlot of olderThan){
|
|
104
|
-
await this.
|
|
167
|
+
await this.deleteCheckpointAttestationsForSlot(SlotNumber(oldSlot));
|
|
105
168
|
}
|
|
106
169
|
}
|
|
107
|
-
async
|
|
170
|
+
async deleteCheckpointAttestationsForSlot(slot) {
|
|
108
171
|
let numberOfAttestations = 0;
|
|
109
172
|
await this.store.transactionAsync(async ()=>{
|
|
110
|
-
const proposalIds = await toArray(this.
|
|
173
|
+
const proposalIds = await toArray(this.checkpointProposalsForSlot.getValuesAsync(slot));
|
|
111
174
|
for (const proposalId of proposalIds){
|
|
112
|
-
const attestations = await toArray(this.
|
|
175
|
+
const attestations = await toArray(this.checkpointAttestationsForProposal.getValuesAsync(this.getProposalKey(slot, proposalId)));
|
|
113
176
|
numberOfAttestations += attestations.length;
|
|
114
177
|
for (const attestation of attestations){
|
|
115
|
-
await this.
|
|
178
|
+
await this.checkpointAttestations.delete(attestation);
|
|
116
179
|
}
|
|
117
|
-
await this.
|
|
118
|
-
await this.
|
|
180
|
+
await this.checkpointProposals.delete(proposalId);
|
|
181
|
+
await this.checkpointAttestationsForProposal.delete(this.getProposalKey(slot, proposalId));
|
|
119
182
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
this.log.verbose(`Removed ${numberOfAttestations} attestations for slot ${slot}`);
|
|
183
|
+
await this.checkpointProposalsForSlot.delete(slot);
|
|
184
|
+
this.log.verbose(`Removed ${numberOfAttestations} checkpoint attestations for slot ${slot}`);
|
|
123
185
|
});
|
|
124
186
|
}
|
|
125
|
-
async
|
|
126
|
-
let numberOfAttestations = 0;
|
|
127
|
-
await this.store.transactionAsync(async ()=>{
|
|
128
|
-
const attestations = await toArray(this.attestationsForProposal.getValuesAsync(this.getProposalKey(slot, proposalId)));
|
|
129
|
-
numberOfAttestations += attestations.length;
|
|
130
|
-
for (const attestation of attestations){
|
|
131
|
-
await this.attestations.delete(attestation);
|
|
132
|
-
}
|
|
133
|
-
await this.proposals.delete(proposalId);
|
|
134
|
-
await this.proposalsForSlot.deleteValue(slot, proposalId);
|
|
135
|
-
await this.attestationsForProposal.delete(this.getProposalKey(slot, proposalId));
|
|
136
|
-
this.log.verbose(`Removed ${numberOfAttestations} attestations for slot ${slot} and proposal ${proposalId}`);
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
async deleteAttestations(attestations) {
|
|
140
|
-
await this.store.transactionAsync(async ()=>{
|
|
141
|
-
for (const attestation of attestations){
|
|
142
|
-
const slotNumber = attestation.payload.header.slotNumber;
|
|
143
|
-
const proposalId = attestation.archive;
|
|
144
|
-
const sender = attestation.getSender();
|
|
145
|
-
// Skip attestations with invalid signatures
|
|
146
|
-
if (!sender) {
|
|
147
|
-
this.log.warn(`Skipping deletion of attestation with invalid signature for slot ${slotNumber}`);
|
|
148
|
-
continue;
|
|
149
|
-
}
|
|
150
|
-
const address = sender.toString();
|
|
151
|
-
const key = this.getAttestationKey(slotNumber, proposalId, address);
|
|
152
|
-
if (await this.attestations.hasAsync(key)) {
|
|
153
|
-
await this.attestations.delete(key);
|
|
154
|
-
}
|
|
155
|
-
await this.attestationsForProposal.deleteValue(this.getProposalKey(slotNumber, proposalId), this.getAttestationKey(slotNumber, proposalId, address));
|
|
156
|
-
this.log.debug(`Deleted attestation for slot ${slotNumber} from ${address}`);
|
|
157
|
-
}
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
async hasAttestation(attestation) {
|
|
187
|
+
async hasCheckpointAttestation(attestation) {
|
|
161
188
|
const slotNumber = attestation.payload.header.slotNumber;
|
|
162
189
|
const proposalId = attestation.archive;
|
|
163
190
|
const sender = attestation.getSender();
|
|
@@ -167,47 +194,25 @@ export class KvAttestationPool {
|
|
|
167
194
|
}
|
|
168
195
|
const address = sender.toString();
|
|
169
196
|
const key = this.getAttestationKey(slotNumber, proposalId, address);
|
|
170
|
-
return await this.
|
|
197
|
+
return await this.checkpointAttestations.hasAsync(key);
|
|
171
198
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
if (buffer && buffer.length > 0) {
|
|
176
|
-
return BlockProposal.fromBuffer(buffer);
|
|
177
|
-
}
|
|
178
|
-
} catch {
|
|
179
|
-
return Promise.resolve(undefined);
|
|
180
|
-
}
|
|
181
|
-
return Promise.resolve(undefined);
|
|
199
|
+
canAddProposal(_block) {
|
|
200
|
+
// TODO(palla/mbps): implement proposal cap logic
|
|
201
|
+
return Promise.resolve(true);
|
|
182
202
|
}
|
|
183
|
-
async
|
|
184
|
-
|
|
185
|
-
return await this.
|
|
203
|
+
async canAddCheckpointProposal(proposal) {
|
|
204
|
+
// TODO(palla/mbps): Adjust checkpoint proposal limit to 1. Also connect to slashing condition in the caller.
|
|
205
|
+
return await this.checkpointProposals.hasAsync(proposal.archive.toString()) || !await this.hasReachedCheckpointProposalCap(proposal.slotNumber);
|
|
186
206
|
}
|
|
187
|
-
async
|
|
188
|
-
await this.
|
|
189
|
-
const slotKey = blockProposal.slotNumber;
|
|
190
|
-
const proposalId = blockProposal.archive.toString();
|
|
191
|
-
if (!await this.canAddProposal(blockProposal)) {
|
|
192
|
-
throw new ProposalSlotCapExceededError(`Maximum proposals per slot reached: slot=${slotKey} cap=${MAX_PROPOSALS_PER_SLOT} proposal=${proposalId}`);
|
|
193
|
-
}
|
|
194
|
-
await this.proposalsForSlot.set(slotKey, proposalId);
|
|
195
|
-
// Always update the stored proposal buffer so re-adds overwrite with latest data
|
|
196
|
-
await this.proposals.set(proposalId, blockProposal.toBuffer());
|
|
197
|
-
});
|
|
207
|
+
async canAddCheckpointAttestation(attestation, committeeSize) {
|
|
208
|
+
return await this.hasCheckpointAttestation(attestation) || !await this.hasReachedCheckpointAttestationCap(attestation.payload.header.slotNumber, attestation.archive.toString(), committeeSize);
|
|
198
209
|
}
|
|
199
|
-
async
|
|
200
|
-
const uniqueProposalCount = await this.
|
|
210
|
+
async hasReachedCheckpointProposalCap(slot) {
|
|
211
|
+
const uniqueProposalCount = await this.checkpointProposalsForSlot.getValueCountAsync(slot);
|
|
201
212
|
return uniqueProposalCount >= MAX_PROPOSALS_PER_SLOT;
|
|
202
213
|
}
|
|
203
|
-
async
|
|
214
|
+
async hasReachedCheckpointAttestationCap(slot, proposalId, committeeSize) {
|
|
204
215
|
const limit = committeeSize + ATTESTATION_CAP_BUFFER;
|
|
205
|
-
return await this.
|
|
206
|
-
}
|
|
207
|
-
async canAddProposal(block) {
|
|
208
|
-
return await this.proposals.hasAsync(block.archive.toString()) || !await this.hasReachedProposalCap(block.slotNumber);
|
|
209
|
-
}
|
|
210
|
-
async canAddAttestation(attestation, committeeSize) {
|
|
211
|
-
return await this.hasAttestation(attestation) || !await this.hasReachedAttestationCap(attestation.payload.header.slotNumber, attestation.archive.toString(), committeeSize);
|
|
216
|
+
return await this.checkpointAttestationsForProposal.getValueCountAsync(this.getProposalKey(slot, proposalId)) >= limit;
|
|
212
217
|
}
|
|
213
218
|
}
|
|
@@ -1,30 +1,31 @@
|
|
|
1
1
|
import type { SlotNumber } from '@aztec/foundation/branded-types';
|
|
2
|
-
import type {
|
|
2
|
+
import type { BlockProposal, CheckpointAttestation, CheckpointProposal, CheckpointProposalCore } from '@aztec/stdlib/p2p';
|
|
3
3
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
4
4
|
import type { AttestationPool } from './attestation_pool.js';
|
|
5
5
|
export declare class InMemoryAttestationPool implements AttestationPool {
|
|
6
|
-
#private;
|
|
7
6
|
private log;
|
|
8
7
|
private metrics;
|
|
9
|
-
private attestations;
|
|
10
8
|
private proposals;
|
|
9
|
+
private checkpointAttestations;
|
|
10
|
+
private checkpointProposals;
|
|
11
11
|
constructor(telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
|
|
12
12
|
private poolStats;
|
|
13
13
|
isEmpty(): Promise<boolean>;
|
|
14
|
-
getAttestationsForSlot(slot: SlotNumber): Promise<BlockAttestation[]>;
|
|
15
|
-
getAttestationsForSlotAndProposal(slot: SlotNumber, proposalId: string): Promise<BlockAttestation[]>;
|
|
16
|
-
addAttestations(attestations: BlockAttestation[]): Promise<void>;
|
|
17
|
-
deleteAttestationsOlderThan(oldestSlot: SlotNumber): Promise<void>;
|
|
18
|
-
deleteAttestationsForSlot(slot: SlotNumber): Promise<void>;
|
|
19
|
-
deleteAttestationsForSlotAndProposal(slot: SlotNumber, proposalId: string): Promise<void>;
|
|
20
|
-
deleteAttestations(attestations: BlockAttestation[]): Promise<void>;
|
|
21
|
-
hasAttestation(attestation: BlockAttestation): Promise<boolean>;
|
|
22
14
|
addBlockProposal(blockProposal: BlockProposal): Promise<void>;
|
|
23
15
|
getBlockProposal(id: string): Promise<BlockProposal | undefined>;
|
|
24
16
|
hasBlockProposal(idOrProposal: string | BlockProposal): Promise<boolean>;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
17
|
+
canAddProposal(_block: BlockProposal): Promise<boolean>;
|
|
18
|
+
addCheckpointProposal(proposal: CheckpointProposal): Promise<void>;
|
|
19
|
+
getCheckpointProposal(id: string): Promise<CheckpointProposalCore | undefined>;
|
|
20
|
+
hasCheckpointProposal(idOrProposal: string | CheckpointProposal): Promise<boolean>;
|
|
21
|
+
addCheckpointAttestations(attestations: CheckpointAttestation[]): Promise<void>;
|
|
22
|
+
getCheckpointAttestationsForSlot(slot: SlotNumber): Promise<CheckpointAttestation[]>;
|
|
23
|
+
getCheckpointAttestationsForSlotAndProposal(slot: SlotNumber, proposalId: string): Promise<CheckpointAttestation[]>;
|
|
24
|
+
deleteCheckpointAttestationsOlderThan(oldestSlot: SlotNumber): Promise<void>;
|
|
25
|
+
hasReachedCheckpointProposalCap(slot: SlotNumber): Promise<boolean>;
|
|
26
|
+
hasReachedCheckpointAttestationCap(slot: SlotNumber, proposalId: string, committeeSize: number): Promise<boolean>;
|
|
27
|
+
canAddCheckpointProposal(proposal: CheckpointProposal): Promise<boolean>;
|
|
28
|
+
canAddCheckpointAttestation(attestation: CheckpointAttestation, committeeSize: number): Promise<boolean>;
|
|
29
|
+
hasCheckpointAttestation(attestation: CheckpointAttestation): Promise<boolean>;
|
|
29
30
|
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5X2F0dGVzdGF0aW9uX3Bvb2wuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvYXR0ZXN0YXRpb25fcG9vbC9tZW1vcnlfYXR0ZXN0YXRpb25fcG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVsRSxPQUFPLEtBQUssRUFDVixhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdkIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0seUJBQXlCLENBQUM7QUFJbkYsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHN0QscUJBQWEsdUJBQXdCLFlBQVcsZUFBZTtJQWUzRCxPQUFPLENBQUMsR0FBRztJQWRiLE9BQU8sQ0FBQyxPQUFPLENBQTZDO0lBRTVELE9BQU8sQ0FBQyxTQUFTLENBQTZCO0lBSTlDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FHNUI7SUFDRixPQUFPLENBQUMsbUJBQW1CLENBQXNDO0lBRWpFLFlBQ0UsU0FBUyxHQUFFLGVBQXNDLEVBQ3pDLEdBQUcseUNBQXVDLEVBTW5EO0lBRUQsT0FBTyxDQUFDLFNBQVMsQ0FJZjtJQUVLLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBRWpDO0lBRU0sZ0JBQWdCLENBQUMsYUFBYSxFQUFFLGFBQWEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBSW5FO0lBRU0sZ0JBQWdCLENBQUMsRUFBRSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQyxDQUV0RTtJQUVNLGdCQUFnQixDQUFDLFlBQVksRUFBRSxNQUFNLEdBQUcsYUFBYSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FHOUU7SUFFTSxjQUFjLENBQUMsTUFBTSxFQUFFLGFBQWEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBRzdEO0lBSVkscUJBQXFCLENBQUMsUUFBUSxFQUFFLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0EyQjlFO0lBRU0scUJBQXFCLENBQUMsRUFBRSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsc0JBQXNCLEdBQUcsU0FBUyxDQUFDLENBRXBGO0lBRU0scUJBQXFCLENBQUMsWUFBWSxFQUFFLE1BQU0sR0FBRyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBR3hGO0lBRU0seUJBQXlCLENBQUMsWUFBWSxFQUFFLHFCQUFxQixFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQTZCckY7SUFFTSxnQ0FBZ0MsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBTTFGO0lBRU0sMkNBQTJDLENBQ2hELElBQUksRUFBRSxVQUFVLEVBQ2hCLFVBQVUsRUFBRSxNQUFNLEdBQ2pCLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBU2xDO0lBRU0scUNBQXFDLENBQUMsVUFBVSxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBa0JsRjtJQUVNLCtCQUErQixDQUFDLElBQUksRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUl6RTtJQUVNLGtDQUFrQyxDQUN2QyxJQUFJLEVBQUUsVUFBVSxFQUNoQixVQUFVLEVBQUUsTUFBTSxFQUNsQixhQUFhLEVBQUUsTUFBTSxHQUNwQixPQUFPLENBQUMsT0FBTyxDQUFDLENBSWxCO0lBRVksd0JBQXdCLENBQUMsUUFBUSxFQUFFLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FLcEY7SUFFWSwyQkFBMkIsQ0FDdEMsV0FBVyxFQUFFLHFCQUFxQixFQUNsQyxhQUFhLEVBQUUsTUFBTSxHQUNwQixPQUFPLENBQUMsT0FBTyxDQUFDLENBU2xCO0lBRU0sd0JBQXdCLENBQUMsV0FBVyxFQUFFLHFCQUFxQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FxQnBGO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory_attestation_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/memory_attestation_pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"memory_attestation_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/attestation_pool/memory_attestation_pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAInF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D,qBAAa,uBAAwB,YAAW,eAAe;IAe3D,OAAO,CAAC,GAAG;IAdb,OAAO,CAAC,OAAO,CAA6C;IAE5D,OAAO,CAAC,SAAS,CAA6B;IAI9C,OAAO,CAAC,sBAAsB,CAG5B;IACF,OAAO,CAAC,mBAAmB,CAAsC;IAEjE,YACE,SAAS,GAAE,eAAsC,EACzC,GAAG,yCAAuC,EAMnD;IAED,OAAO,CAAC,SAAS,CAIf;IAEK,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAEjC;IAEM,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAInE;IAEM,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAEtE;IAEM,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAG9E;IAEM,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAG7D;IAIY,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B9E;IAEM,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAEpF;IAEM,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAGxF;IAEM,yBAAyB,CAAC,YAAY,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BrF;IAEM,gCAAgC,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAM1F;IAEM,2CAA2C,CAChD,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,EAAE,CAAC,CASlC;IAEM,qCAAqC,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBlF;IAEM,+BAA+B,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAIzE;IAEM,kCAAkC,CACvC,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC,CAIlB;IAEY,wBAAwB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAKpF;IAEY,2BAA2B,CACtC,WAAW,EAAE,qBAAqB,EAClC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC,CASlB;IAEM,wBAAwB,CAAC,WAAW,EAAE,qBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,CAqBpF;CACF"}
|