@aztec/p2p 0.76.4-devnet-test-rc3 → 0.76.4
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/factory.d.ts +0 -2
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +1 -3
- package/dest/client/p2p_client.d.ts +1 -22
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +1 -23
- package/dest/index.d.ts +2 -3
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +3 -4
- package/dest/mem_pools/index.d.ts +1 -2
- package/dest/mem_pools/index.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.d.ts +1 -2
- package/dest/mem_pools/instrumentation.d.ts.map +1 -1
- package/dest/mem_pools/instrumentation.js +1 -8
- package/dest/mem_pools/interface.d.ts +0 -2
- package/dest/mem_pools/interface.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.d.ts +1 -17
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +2 -55
- package/dest/test-helpers/make-test-p2p-clients.d.ts +1 -3
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +2 -3
- package/dest/testbench/p2p_client_testbench_worker.js +1 -10
- package/package.json +9 -9
- package/src/client/factory.ts +0 -4
- package/src/client/p2p_client.ts +0 -44
- package/src/index.ts +2 -3
- package/src/mem_pools/index.ts +1 -2
- package/src/mem_pools/instrumentation.ts +0 -6
- package/src/mem_pools/interface.ts +0 -2
- package/src/services/libp2p/libp2p_service.ts +0 -63
- package/src/test-helpers/make-test-p2p-clients.ts +0 -4
- package/src/testbench/p2p_client_testbench_worker.ts +0 -11
- package/dest/mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.d.ts +0 -7
- package/dest/mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.d.ts.map +0 -1
- package/dest/mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.js +0 -2
- package/dest/mem_pools/epoch_proof_quote_pool/index.d.ts +0 -4
- package/dest/mem_pools/epoch_proof_quote_pool/index.d.ts.map +0 -1
- package/dest/mem_pools/epoch_proof_quote_pool/index.js +0 -4
- package/dest/mem_pools/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.d.ts +0 -12
- package/dest/mem_pools/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.d.ts.map +0 -1
- package/dest/mem_pools/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.js +0 -30
- package/dest/mem_pools/epoch_proof_quote_pool/test_utils.d.ts +0 -8
- package/dest/mem_pools/epoch_proof_quote_pool/test_utils.d.ts.map +0 -1
- package/dest/mem_pools/epoch_proof_quote_pool/test_utils.js +0 -21
- package/dest/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.d.ts +0 -8
- package/dest/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.d.ts.map +0 -1
- package/dest/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.js +0 -16
- package/dest/msg_validators/epoch_proof_quote_validator/index.d.ts +0 -2
- package/dest/msg_validators/epoch_proof_quote_validator/index.d.ts.map +0 -1
- package/dest/msg_validators/epoch_proof_quote_validator/index.js +0 -2
- package/src/mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.ts +0 -7
- package/src/mem_pools/epoch_proof_quote_pool/index.ts +0 -3
- package/src/mem_pools/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.ts +0 -41
- package/src/mem_pools/epoch_proof_quote_pool/test_utils.ts +0 -26
- package/src/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.ts +0 -22
- package/src/msg_validators/epoch_proof_quote_validator/index.ts +0 -1
|
@@ -2,7 +2,6 @@ import {
|
|
|
2
2
|
BlockAttestation,
|
|
3
3
|
BlockProposal,
|
|
4
4
|
type ClientProtocolCircuitVerifier,
|
|
5
|
-
EpochProofQuote,
|
|
6
5
|
type Gossipable,
|
|
7
6
|
type L2BlockSource,
|
|
8
7
|
MerkleTreeId,
|
|
@@ -48,7 +47,6 @@ import { createLibp2p } from 'libp2p';
|
|
|
48
47
|
|
|
49
48
|
import { type P2PConfig } from '../../config.js';
|
|
50
49
|
import { type MemPools } from '../../mem_pools/interface.js';
|
|
51
|
-
import { EpochProofQuoteValidator } from '../../msg_validators/epoch_proof_quote_validator/index.js';
|
|
52
50
|
import { AttestationValidator, BlockProposalValidator } from '../../msg_validators/index.js';
|
|
53
51
|
import {
|
|
54
52
|
DataTxValidator,
|
|
@@ -95,7 +93,6 @@ export class LibP2PService<T extends P2PClientType> extends WithTracer implement
|
|
|
95
93
|
// Message validators
|
|
96
94
|
private attestationValidator: AttestationValidator;
|
|
97
95
|
private blockProposalValidator: BlockProposalValidator;
|
|
98
|
-
private epochProofQuoteValidator: EpochProofQuoteValidator;
|
|
99
96
|
|
|
100
97
|
// Request and response sub service
|
|
101
98
|
public reqresp: ReqResp;
|
|
@@ -143,7 +140,6 @@ export class LibP2PService<T extends P2PClientType> extends WithTracer implement
|
|
|
143
140
|
|
|
144
141
|
this.attestationValidator = new AttestationValidator(epochCache);
|
|
145
142
|
this.blockProposalValidator = new BlockProposalValidator(epochCache);
|
|
146
|
-
this.epochProofQuoteValidator = new EpochProofQuoteValidator(epochCache);
|
|
147
143
|
|
|
148
144
|
this.blockReceivedCallback = async (block: BlockProposal): Promise<BlockAttestation | undefined> => {
|
|
149
145
|
this.logger.warn(
|
|
@@ -265,11 +261,6 @@ export class LibP2PService<T extends P2PClientType> extends WithTracer implement
|
|
|
265
261
|
invalidMessageDeliveriesWeight: -20,
|
|
266
262
|
invalidMessageDeliveriesDecay: 0.5,
|
|
267
263
|
}),
|
|
268
|
-
[EpochProofQuote.p2pTopic]: createTopicScoreParams({
|
|
269
|
-
topicWeight: 1,
|
|
270
|
-
invalidMessageDeliveriesWeight: -20,
|
|
271
|
-
invalidMessageDeliveriesDecay: 0.5,
|
|
272
|
-
}),
|
|
273
264
|
},
|
|
274
265
|
}),
|
|
275
266
|
}) as (components: GossipSubComponents) => GossipSub,
|
|
@@ -343,7 +334,6 @@ export class LibP2PService<T extends P2PClientType> extends WithTracer implement
|
|
|
343
334
|
[Tx.p2pTopic]: this.validatePropagatedTxFromMessage.bind(this),
|
|
344
335
|
[BlockAttestation.p2pTopic]: this.validatePropagatedAttestationFromMessage.bind(this),
|
|
345
336
|
[BlockProposal.p2pTopic]: this.validatePropagatedBlockFromMessage.bind(this),
|
|
346
|
-
[EpochProofQuote.p2pTopic]: this.validatePropagatedEpochProofQuoteFromMessage.bind(this),
|
|
347
337
|
};
|
|
348
338
|
// When running bandwidth benchmarks, we use send blobs of data we do not want to validate
|
|
349
339
|
// NEVER switch this off in production
|
|
@@ -507,10 +497,6 @@ export class LibP2PService<T extends P2PClientType> extends WithTracer implement
|
|
|
507
497
|
const block = BlockProposal.fromBuffer(Buffer.from(message.data));
|
|
508
498
|
await this.processBlockFromPeer(block);
|
|
509
499
|
}
|
|
510
|
-
if (message.topic == EpochProofQuote.p2pTopic) {
|
|
511
|
-
const epochProofQuote = EpochProofQuote.fromBuffer(Buffer.from(message.data));
|
|
512
|
-
await this.processEpochProofQuoteFromPeer(epochProofQuote);
|
|
513
|
-
}
|
|
514
500
|
|
|
515
501
|
return;
|
|
516
502
|
}
|
|
@@ -594,17 +580,6 @@ export class LibP2PService<T extends P2PClientType> extends WithTracer implement
|
|
|
594
580
|
await this.propagate(attestation);
|
|
595
581
|
}
|
|
596
582
|
|
|
597
|
-
private async processEpochProofQuoteFromPeer(epochProofQuote: EpochProofQuote) {
|
|
598
|
-
const epoch = epochProofQuote.payload.epochToProve;
|
|
599
|
-
const prover = epochProofQuote.payload.prover.toString();
|
|
600
|
-
const p2pMessageIdentifier = await epochProofQuote.p2pMessageIdentifier();
|
|
601
|
-
this.logger.verbose(
|
|
602
|
-
`Received epoch proof quote ${p2pMessageIdentifier} by prover ${prover} for epoch ${epoch} from external peer.`,
|
|
603
|
-
{ quote: epochProofQuote.toInspect(), p2pMessageIdentifier },
|
|
604
|
-
);
|
|
605
|
-
this.mempools.epochProofQuotePool.addQuote(epochProofQuote);
|
|
606
|
-
}
|
|
607
|
-
|
|
608
583
|
/**
|
|
609
584
|
* Propagates provided message to peers.
|
|
610
585
|
* @param message - The message to propagate.
|
|
@@ -718,25 +693,6 @@ export class LibP2PService<T extends P2PClientType> extends WithTracer implement
|
|
|
718
693
|
return isValid ? TopicValidatorResult.Accept : TopicValidatorResult.Reject;
|
|
719
694
|
}
|
|
720
695
|
|
|
721
|
-
/**
|
|
722
|
-
* Validate an epoch proof quote from a peer.
|
|
723
|
-
* @param propagationSource - The peer ID of the peer that sent the epoch proof quote.
|
|
724
|
-
* @param msg - The epoch proof quote message.
|
|
725
|
-
* @returns True if the epoch proof quote is valid, false otherwise.
|
|
726
|
-
*/
|
|
727
|
-
private async validatePropagatedEpochProofQuoteFromMessage(
|
|
728
|
-
propagationSource: PeerId,
|
|
729
|
-
msg: Message,
|
|
730
|
-
): Promise<TopicValidatorResult> {
|
|
731
|
-
const epochProofQuote = EpochProofQuote.fromBuffer(Buffer.from(msg.data));
|
|
732
|
-
const isValid = await this.validateEpochProofQuote(propagationSource, epochProofQuote);
|
|
733
|
-
this.logger.trace(`validatePropagatedEpochProofQuote: ${isValid}`, {
|
|
734
|
-
[Attributes.EPOCH_NUMBER]: epochProofQuote.payload.epochToProve.toString(),
|
|
735
|
-
[Attributes.P2P_ID]: propagationSource.toString(),
|
|
736
|
-
});
|
|
737
|
-
return isValid ? TopicValidatorResult.Accept : TopicValidatorResult.Reject;
|
|
738
|
-
}
|
|
739
|
-
|
|
740
696
|
@trackSpan('Libp2pService.validatePropagatedTx', async tx => ({
|
|
741
697
|
[Attributes.TX_HASH]: (await tx.getTxHash()).toString(),
|
|
742
698
|
}))
|
|
@@ -908,25 +864,6 @@ export class LibP2PService<T extends P2PClientType> extends WithTracer implement
|
|
|
908
864
|
return true;
|
|
909
865
|
}
|
|
910
866
|
|
|
911
|
-
/**
|
|
912
|
-
* Validate an epoch proof quote.
|
|
913
|
-
*
|
|
914
|
-
* @param epochProofQuote - The epoch proof quote to validate.
|
|
915
|
-
* @returns True if the epoch proof quote is valid, false otherwise.
|
|
916
|
-
*/
|
|
917
|
-
@trackSpan('Libp2pService.validateEpochProofQuote', (_peerId, epochProofQuote) => ({
|
|
918
|
-
[Attributes.EPOCH_NUMBER]: epochProofQuote.payload.epochToProve.toString(),
|
|
919
|
-
}))
|
|
920
|
-
public async validateEpochProofQuote(peerId: PeerId, epochProofQuote: EpochProofQuote): Promise<boolean> {
|
|
921
|
-
const severity = await this.epochProofQuoteValidator.validate(epochProofQuote);
|
|
922
|
-
if (severity) {
|
|
923
|
-
this.peerManager.penalizePeer(peerId, severity);
|
|
924
|
-
return false;
|
|
925
|
-
}
|
|
926
|
-
|
|
927
|
-
return true;
|
|
928
|
-
}
|
|
929
|
-
|
|
930
867
|
public getPeerScore(peerId: PeerId): number {
|
|
931
868
|
return this.node.services.pubsub.score.score(peerId.toString());
|
|
932
869
|
}
|
|
@@ -9,7 +9,6 @@ import { createP2PClient } from '../client/index.js';
|
|
|
9
9
|
import { type P2PClient } from '../client/p2p_client.js';
|
|
10
10
|
import { type P2PConfig } from '../config.js';
|
|
11
11
|
import { type AttestationPool } from '../mem_pools/attestation_pool/attestation_pool.js';
|
|
12
|
-
import { type EpochProofQuotePool } from '../mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.js';
|
|
13
12
|
import { type TxPool } from '../mem_pools/tx_pool/index.js';
|
|
14
13
|
import { generatePeerIdPrivateKeys } from '../test-helpers/generate-peer-id-private-keys.js';
|
|
15
14
|
import { getPorts } from './get-ports.js';
|
|
@@ -18,7 +17,6 @@ import { AlwaysFalseCircuitVerifier, AlwaysTrueCircuitVerifier } from './reqresp
|
|
|
18
17
|
|
|
19
18
|
interface MakeTestP2PClientOptions {
|
|
20
19
|
mockAttestationPool: AttestationPool;
|
|
21
|
-
mockEpochProofQuotePool: EpochProofQuotePool;
|
|
22
20
|
mockTxPool: TxPool;
|
|
23
21
|
mockEpochCache: EpochCache;
|
|
24
22
|
mockWorldState: WorldStateSynchronizer;
|
|
@@ -45,7 +43,6 @@ export async function makeTestP2PClient(
|
|
|
45
43
|
p2pBaseConfig,
|
|
46
44
|
p2pConfigOverrides = {},
|
|
47
45
|
mockAttestationPool,
|
|
48
|
-
mockEpochProofQuotePool,
|
|
49
46
|
mockTxPool,
|
|
50
47
|
mockEpochCache,
|
|
51
48
|
mockWorldState,
|
|
@@ -79,7 +76,6 @@ export async function makeTestP2PClient(
|
|
|
79
76
|
const deps = {
|
|
80
77
|
txPool: mockTxPool as unknown as TxPool,
|
|
81
78
|
attestationPool: mockAttestationPool as unknown as AttestationPool,
|
|
82
|
-
epochProofQuotePool: mockEpochProofQuotePool as unknown as EpochProofQuotePool,
|
|
83
79
|
store: kvStore,
|
|
84
80
|
logger,
|
|
85
81
|
};
|
|
@@ -15,7 +15,6 @@ import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
|
|
|
15
15
|
import { type P2PConfig } from '../config.js';
|
|
16
16
|
import { createP2PClient } from '../index.js';
|
|
17
17
|
import { type AttestationPool } from '../mem_pools/attestation_pool/attestation_pool.js';
|
|
18
|
-
import { type EpochProofQuotePool } from '../mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.js';
|
|
19
18
|
import { type TxPool } from '../mem_pools/tx_pool/index.js';
|
|
20
19
|
import { AlwaysTrueCircuitVerifier } from '../test-helpers/reqresp-nodes.js';
|
|
21
20
|
|
|
@@ -48,14 +47,6 @@ function mockAttestationPool(): AttestationPool {
|
|
|
48
47
|
};
|
|
49
48
|
}
|
|
50
49
|
|
|
51
|
-
function mockEpochProofQuotePool(): EpochProofQuotePool {
|
|
52
|
-
return {
|
|
53
|
-
addQuote: () => {},
|
|
54
|
-
getQuotes: () => [],
|
|
55
|
-
deleteQuotesToEpoch: () => {},
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
|
|
59
50
|
function mockEpochCache(): EpochCacheInterface {
|
|
60
51
|
return {
|
|
61
52
|
getCommittee: () => Promise.resolve([] as EthAddress[]),
|
|
@@ -81,7 +72,6 @@ process.on('message', async msg => {
|
|
|
81
72
|
if (type === 'START') {
|
|
82
73
|
const txPool = mockTxPool();
|
|
83
74
|
const attestationPool = mockAttestationPool();
|
|
84
|
-
const epochProofQuotePool = mockEpochProofQuotePool();
|
|
85
75
|
const epochCache = mockEpochCache();
|
|
86
76
|
const worldState = {} as WorldStateSynchronizer;
|
|
87
77
|
const l2BlockSource = new MockL2BlockSource();
|
|
@@ -94,7 +84,6 @@ process.on('message', async msg => {
|
|
|
94
84
|
const deps = {
|
|
95
85
|
txPool,
|
|
96
86
|
attestationPool,
|
|
97
|
-
epochProofQuotePool,
|
|
98
87
|
store: kvStore,
|
|
99
88
|
logger,
|
|
100
89
|
};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { type EpochProofQuote } from '@aztec/circuit-types';
|
|
2
|
-
export interface EpochProofQuotePool {
|
|
3
|
-
addQuote(quote: EpochProofQuote): void;
|
|
4
|
-
getQuotes(epoch: bigint): EpochProofQuote[];
|
|
5
|
-
deleteQuotesToEpoch(epoch: bigint): void;
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=epoch_proof_quote_pool.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"epoch_proof_quote_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/epoch_proof_quote_pool/epoch_proof_quote_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IACvC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,EAAE,CAAC;IAC5C,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2hfcHJvb2ZfcXVvdGVfcG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvZXBvY2hfcHJvb2ZfcXVvdGVfcG9vbC9lcG9jaF9wcm9vZl9xdW90ZV9wb29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/epoch_proof_quote_pool/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,iBAAiB,CAAC"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export * from './epoch_proof_quote_pool.js';
|
|
2
|
-
export * from './memory_epoch_proof_quote_pool.js';
|
|
3
|
-
export * from './test_utils.js';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWVtX3Bvb2xzL2Vwb2NoX3Byb29mX3F1b3RlX3Bvb2wvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsaUJBQWlCLENBQUMifQ==
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { type EpochProofQuote } from '@aztec/circuit-types';
|
|
2
|
-
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
3
|
-
import { type EpochProofQuotePool } from './epoch_proof_quote_pool.js';
|
|
4
|
-
export declare class MemoryEpochProofQuotePool implements EpochProofQuotePool {
|
|
5
|
-
private quotes;
|
|
6
|
-
private metrics;
|
|
7
|
-
constructor(telemetry?: TelemetryClient);
|
|
8
|
-
addQuote(quote: EpochProofQuote): void;
|
|
9
|
-
getQuotes(epoch: bigint): EpochProofQuote[];
|
|
10
|
-
deleteQuotesToEpoch(epoch: bigint): void;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=memory_epoch_proof_quote_pool.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory_epoch_proof_quote_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/epoch_proof_quote_pool/memory_epoch_proof_quote_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAGnF,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,qBAAa,yBAA0B,YAAW,mBAAmB;IACnE,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,OAAO,CAAuC;gBAE1C,SAAS,GAAE,eAAsC;IAK7D,QAAQ,CAAC,KAAK,EAAE,eAAe;IAS/B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,EAAE;IAG3C,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAazC"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
2
|
-
import { PoolInstrumentation, PoolName } from '../instrumentation.js';
|
|
3
|
-
export class MemoryEpochProofQuotePool {
|
|
4
|
-
constructor(telemetry = getTelemetryClient()) {
|
|
5
|
-
this.quotes = new Map();
|
|
6
|
-
this.metrics = new PoolInstrumentation(telemetry, PoolName.EPOCH_PROOF_QUOTE_POOL);
|
|
7
|
-
}
|
|
8
|
-
addQuote(quote) {
|
|
9
|
-
const epoch = quote.payload.epochToProve;
|
|
10
|
-
if (!this.quotes.has(epoch)) {
|
|
11
|
-
this.quotes.set(epoch, []);
|
|
12
|
-
}
|
|
13
|
-
this.quotes.get(epoch).push(quote);
|
|
14
|
-
this.metrics.recordAddedObjects(1);
|
|
15
|
-
}
|
|
16
|
-
getQuotes(epoch) {
|
|
17
|
-
return this.quotes.get(epoch) || [];
|
|
18
|
-
}
|
|
19
|
-
deleteQuotesToEpoch(epoch) {
|
|
20
|
-
const expiredEpochs = Array.from(this.quotes.keys()).filter(k => k <= epoch);
|
|
21
|
-
let removedObjectsCount = 0;
|
|
22
|
-
for (const expiredEpoch of expiredEpochs) {
|
|
23
|
-
// For logging
|
|
24
|
-
removedObjectsCount += this.quotes.get(expiredEpoch)?.length || 0;
|
|
25
|
-
this.quotes.delete(expiredEpoch);
|
|
26
|
-
}
|
|
27
|
-
this.metrics.recordRemovedObjects(removedObjectsCount);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5X2Vwb2NoX3Byb29mX3F1b3RlX3Bvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWVtX3Bvb2xzL2Vwb2NoX3Byb29mX3F1b3RlX3Bvb2wvbWVtb3J5X2Vwb2NoX3Byb29mX3F1b3RlX3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUF3QixrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUd0RSxNQUFNLE9BQU8seUJBQXlCO0lBSXBDLFlBQVksWUFBNkIsa0JBQWtCLEVBQUU7UUFDM0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFzQjtRQUM3QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwQyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFDRCxTQUFTLENBQUMsS0FBYTtRQUNyQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsbUJBQW1CLENBQUMsS0FBYTtRQUMvQixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUM7UUFFN0UsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7UUFDNUIsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUN6QyxjQUFjO1lBQ2QsbUJBQW1CLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQztZQUVsRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3pELENBQUM7Q0FDRiJ9
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { EpochProofQuote, EpochProofQuotePayload } from '@aztec/circuit-types';
|
|
2
|
-
import { Secp256k1Signer } from '@aztec/foundation/crypto';
|
|
3
|
-
export declare function makeRandomEpochProofQuotePayload(): EpochProofQuotePayload;
|
|
4
|
-
export declare function makeRandomEpochProofQuote(payload?: EpochProofQuotePayload): {
|
|
5
|
-
quote: EpochProofQuote;
|
|
6
|
-
signer: Secp256k1Signer;
|
|
7
|
-
};
|
|
8
|
-
//# sourceMappingURL=test_utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test_utils.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/epoch_proof_quote_pool/test_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAG/E,OAAO,EAAE,eAAe,EAA2B,MAAM,0BAA0B,CAAC;AAEpF,wBAAgB,gCAAgC,IAAI,sBAAsB,CAQzE;AAED,wBAAgB,yBAAyB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG;IAC3E,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;CACzB,CAOA"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { EpochProofQuote, EpochProofQuotePayload } from '@aztec/circuit-types';
|
|
2
|
-
import { EthAddress } from '@aztec/circuits.js';
|
|
3
|
-
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
4
|
-
import { Secp256k1Signer, randomBigInt, randomInt } from '@aztec/foundation/crypto';
|
|
5
|
-
export function makeRandomEpochProofQuotePayload() {
|
|
6
|
-
return EpochProofQuotePayload.from({
|
|
7
|
-
basisPointFee: randomInt(10000),
|
|
8
|
-
bondAmount: 1000000000000000000n,
|
|
9
|
-
epochToProve: randomBigInt(1000000n),
|
|
10
|
-
prover: EthAddress.random(),
|
|
11
|
-
validUntilSlot: randomBigInt(1000000n),
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
export function makeRandomEpochProofQuote(payload) {
|
|
15
|
-
const signer = Secp256k1Signer.random();
|
|
16
|
-
return {
|
|
17
|
-
quote: EpochProofQuote.new(Buffer32.random(), payload ?? makeRandomEpochProofQuotePayload(), signer),
|
|
18
|
-
signer,
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF91dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZW1fcG9vbHMvZXBvY2hfcHJvb2ZfcXVvdGVfcG9vbC90ZXN0X3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXBGLE1BQU0sVUFBVSxnQ0FBZ0M7SUFDOUMsT0FBTyxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7UUFDakMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDL0IsVUFBVSxFQUFFLG9CQUFvQjtRQUNoQyxZQUFZLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUNwQyxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sRUFBRTtRQUMzQixjQUFjLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQztLQUN2QyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUFDLE9BQWdDO0lBSXhFLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUV4QyxPQUFPO1FBQ0wsS0FBSyxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sSUFBSSxnQ0FBZ0MsRUFBRSxFQUFFLE1BQU0sQ0FBQztRQUNwRyxNQUFNO0tBQ1AsQ0FBQztBQUNKLENBQUMifQ==
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { type EpochProofQuote, type P2PValidator, PeerErrorSeverity } from '@aztec/circuit-types';
|
|
2
|
-
import { type EpochCacheInterface } from '@aztec/epoch-cache';
|
|
3
|
-
export declare class EpochProofQuoteValidator implements P2PValidator<EpochProofQuote> {
|
|
4
|
-
private epochCache;
|
|
5
|
-
constructor(epochCache: EpochCacheInterface);
|
|
6
|
-
validate(message: EpochProofQuote): Promise<PeerErrorSeverity | undefined>;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=epoch_proof_quote_validator.d.ts.map
|
package/dest/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"epoch_proof_quote_validator.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,qBAAa,wBAAyB,YAAW,YAAY,CAAC,eAAe,CAAC;IAC5E,OAAO,CAAC,UAAU,CAAsB;gBAE5B,UAAU,EAAE,mBAAmB;IAI3C,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;CAW3E"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { PeerErrorSeverity } from '@aztec/circuit-types';
|
|
2
|
-
export class EpochProofQuoteValidator {
|
|
3
|
-
constructor(epochCache) {
|
|
4
|
-
this.epochCache = epochCache;
|
|
5
|
-
}
|
|
6
|
-
validate(message) {
|
|
7
|
-
const { epoch } = this.epochCache.getEpochAndSlotNow();
|
|
8
|
-
// Check that the epoch proof quote is for the current epoch
|
|
9
|
-
const epochToProve = message.payload.epochToProve;
|
|
10
|
-
if (epochToProve !== epoch && epochToProve !== epoch - 1n) {
|
|
11
|
-
return Promise.resolve(PeerErrorSeverity.HighToleranceError);
|
|
12
|
-
}
|
|
13
|
-
return Promise.resolve(undefined);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2hfcHJvb2ZfcXVvdGVfdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21zZ192YWxpZGF0b3JzL2Vwb2NoX3Byb29mX3F1b3RlX3ZhbGlkYXRvci9lcG9jaF9wcm9vZl9xdW90ZV92YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUEyQyxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR2xHLE1BQU0sT0FBTyx3QkFBd0I7SUFHbkMsWUFBWSxVQUErQjtRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQXdCO1FBQy9CLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFdkQsNERBQTREO1FBQzVELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQ2xELElBQUksWUFBWSxLQUFLLEtBQUssSUFBSSxZQUFZLEtBQUssS0FBSyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQzFELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNGIn0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/msg_validators/epoch_proof_quote_validator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export { EpochProofQuoteValidator } from './epoch_proof_quote_validator.js';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbXNnX3ZhbGlkYXRvcnMvZXBvY2hfcHJvb2ZfcXVvdGVfdmFsaWRhdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDIn0=
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { type EpochProofQuote } from '@aztec/circuit-types';
|
|
2
|
-
import { type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
3
|
-
|
|
4
|
-
import { PoolInstrumentation, PoolName } from '../instrumentation.js';
|
|
5
|
-
import { type EpochProofQuotePool } from './epoch_proof_quote_pool.js';
|
|
6
|
-
|
|
7
|
-
export class MemoryEpochProofQuotePool implements EpochProofQuotePool {
|
|
8
|
-
private quotes: Map<bigint, EpochProofQuote[]>;
|
|
9
|
-
private metrics: PoolInstrumentation<EpochProofQuote>;
|
|
10
|
-
|
|
11
|
-
constructor(telemetry: TelemetryClient = getTelemetryClient()) {
|
|
12
|
-
this.quotes = new Map();
|
|
13
|
-
this.metrics = new PoolInstrumentation(telemetry, PoolName.EPOCH_PROOF_QUOTE_POOL);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
addQuote(quote: EpochProofQuote) {
|
|
17
|
-
const epoch = quote.payload.epochToProve;
|
|
18
|
-
if (!this.quotes.has(epoch)) {
|
|
19
|
-
this.quotes.set(epoch, []);
|
|
20
|
-
}
|
|
21
|
-
this.quotes.get(epoch)!.push(quote);
|
|
22
|
-
|
|
23
|
-
this.metrics.recordAddedObjects(1);
|
|
24
|
-
}
|
|
25
|
-
getQuotes(epoch: bigint): EpochProofQuote[] {
|
|
26
|
-
return this.quotes.get(epoch) || [];
|
|
27
|
-
}
|
|
28
|
-
deleteQuotesToEpoch(epoch: bigint): void {
|
|
29
|
-
const expiredEpochs = Array.from(this.quotes.keys()).filter(k => k <= epoch);
|
|
30
|
-
|
|
31
|
-
let removedObjectsCount = 0;
|
|
32
|
-
for (const expiredEpoch of expiredEpochs) {
|
|
33
|
-
// For logging
|
|
34
|
-
removedObjectsCount += this.quotes.get(expiredEpoch)?.length || 0;
|
|
35
|
-
|
|
36
|
-
this.quotes.delete(expiredEpoch);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
this.metrics.recordRemovedObjects(removedObjectsCount);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { EpochProofQuote, EpochProofQuotePayload } from '@aztec/circuit-types';
|
|
2
|
-
import { EthAddress } from '@aztec/circuits.js';
|
|
3
|
-
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
4
|
-
import { Secp256k1Signer, randomBigInt, randomInt } from '@aztec/foundation/crypto';
|
|
5
|
-
|
|
6
|
-
export function makeRandomEpochProofQuotePayload(): EpochProofQuotePayload {
|
|
7
|
-
return EpochProofQuotePayload.from({
|
|
8
|
-
basisPointFee: randomInt(10000),
|
|
9
|
-
bondAmount: 1000000000000000000n,
|
|
10
|
-
epochToProve: randomBigInt(1000000n),
|
|
11
|
-
prover: EthAddress.random(),
|
|
12
|
-
validUntilSlot: randomBigInt(1000000n),
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export function makeRandomEpochProofQuote(payload?: EpochProofQuotePayload): {
|
|
17
|
-
quote: EpochProofQuote;
|
|
18
|
-
signer: Secp256k1Signer;
|
|
19
|
-
} {
|
|
20
|
-
const signer = Secp256k1Signer.random();
|
|
21
|
-
|
|
22
|
-
return {
|
|
23
|
-
quote: EpochProofQuote.new(Buffer32.random(), payload ?? makeRandomEpochProofQuotePayload(), signer),
|
|
24
|
-
signer,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { type EpochProofQuote, type P2PValidator, PeerErrorSeverity } from '@aztec/circuit-types';
|
|
2
|
-
import { type EpochCacheInterface } from '@aztec/epoch-cache';
|
|
3
|
-
|
|
4
|
-
export class EpochProofQuoteValidator implements P2PValidator<EpochProofQuote> {
|
|
5
|
-
private epochCache: EpochCacheInterface;
|
|
6
|
-
|
|
7
|
-
constructor(epochCache: EpochCacheInterface) {
|
|
8
|
-
this.epochCache = epochCache;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
validate(message: EpochProofQuote): Promise<PeerErrorSeverity | undefined> {
|
|
12
|
-
const { epoch } = this.epochCache.getEpochAndSlotNow();
|
|
13
|
-
|
|
14
|
-
// Check that the epoch proof quote is for the current epoch
|
|
15
|
-
const epochToProve = message.payload.epochToProve;
|
|
16
|
-
if (epochToProve !== epoch && epochToProve !== epoch - 1n) {
|
|
17
|
-
return Promise.resolve(PeerErrorSeverity.HighToleranceError);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
return Promise.resolve(undefined);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { EpochProofQuoteValidator } from './epoch_proof_quote_validator.js';
|