@aztec/p2p 0.0.1-commit.3469e52 → 0.0.1-commit.59e663cd
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/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +3 -3
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts +3 -2
- package/dest/mem_pools/tx_pool/eviction/eviction_manager.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts +3 -2
- package/dest/mem_pools/tx_pool/eviction/eviction_strategy.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts +3 -3
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.js +8 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts +3 -3
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.js +2 -0
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +3 -3
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/attestation_validator.js +40 -9
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts +3 -3
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.d.ts.map +1 -1
- package/dest/msg_validators/attestation_validator/fisherman_attestation_validator.js +11 -4
- package/dest/msg_validators/clock_tolerance.d.ts +21 -0
- package/dest/msg_validators/clock_tolerance.d.ts.map +1 -0
- package/dest/msg_validators/clock_tolerance.js +37 -0
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts +3 -3
- package/dest/msg_validators/proposal_validator/proposal_validator.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator.js +46 -15
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts +3 -3
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.d.ts.map +1 -1
- package/dest/msg_validators/proposal_validator/proposal_validator_test_suite.js +66 -11
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
- package/dest/services/libp2p/libp2p_service.d.ts +5 -5
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +24 -24
- package/dest/services/reqresp/interface.d.ts +3 -3
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/interface.js +2 -2
- package/dest/services/tx_collection/slow_tx_collection.d.ts +3 -3
- package/dest/services/tx_collection/slow_tx_collection.d.ts.map +1 -1
- package/dest/services/tx_collection/tx_collection.d.ts +5 -5
- package/dest/services/tx_collection/tx_collection.d.ts.map +1 -1
- package/dest/services/tx_provider.d.ts +3 -3
- package/dest/services/tx_provider.d.ts.map +1 -1
- package/dest/test-helpers/index.d.ts +2 -1
- package/dest/test-helpers/index.d.ts.map +1 -1
- package/dest/test-helpers/index.js +1 -0
- package/dest/test-helpers/test_tx_provider.d.ts +40 -0
- package/dest/test-helpers/test_tx_provider.d.ts.map +1 -0
- package/dest/test-helpers/test_tx_provider.js +41 -0
- package/dest/testbench/p2p_client_testbench_worker.js +2 -1
- package/package.json +14 -14
- package/src/client/p2p_client.ts +5 -5
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +2 -2
- package/src/mem_pools/tx_pool/eviction/eviction_manager.ts +2 -1
- package/src/mem_pools/tx_pool/eviction/eviction_strategy.ts +2 -1
- package/src/mem_pools/tx_pool/eviction/fee_payer_balance_eviction_rule.ts +10 -7
- package/src/mem_pools/tx_pool/eviction/invalid_txs_after_reorg_rule.ts +4 -2
- package/src/msg_validators/attestation_validator/attestation_validator.ts +25 -13
- package/src/msg_validators/attestation_validator/fisherman_attestation_validator.ts +6 -6
- package/src/msg_validators/clock_tolerance.ts +51 -0
- package/src/msg_validators/proposal_validator/proposal_validator.ts +21 -14
- package/src/msg_validators/proposal_validator/proposal_validator_test_suite.ts +53 -14
- package/src/msg_validators/tx_validator/block_header_validator.ts +3 -1
- package/src/services/libp2p/libp2p_service.ts +39 -29
- package/src/services/reqresp/interface.ts +2 -2
- package/src/services/tx_collection/slow_tx_collection.ts +2 -2
- package/src/services/tx_collection/tx_collection.ts +4 -4
- package/src/services/tx_provider.ts +2 -2
- package/src/test-helpers/index.ts +1 -0
- package/src/test-helpers/test_tx_provider.ts +64 -0
- package/src/testbench/p2p_client_testbench_worker.ts +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
2
|
-
import {
|
|
2
|
+
import { L2Block } from '@aztec/stdlib/block';
|
|
3
3
|
import { TxArray, TxHashArray } from '@aztec/stdlib/tx';
|
|
4
4
|
import { AuthRequest, AuthResponse } from './protocols/auth.js';
|
|
5
5
|
import { BlockTxsRequest, BlockTxsResponse } from './protocols/block_txs/block_txs_reqresp.js';
|
|
@@ -90,7 +90,7 @@ export const DEFAULT_SUB_PROTOCOL_VALIDATORS = {
|
|
|
90
90
|
},
|
|
91
91
|
[ReqRespSubProtocol.BLOCK]: {
|
|
92
92
|
request: Fr,
|
|
93
|
-
response:
|
|
93
|
+
response: L2Block
|
|
94
94
|
},
|
|
95
95
|
[ReqRespSubProtocol.AUTH]: {
|
|
96
96
|
request: AuthRequest,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
2
|
import { type Logger } from '@aztec/foundation/log';
|
|
3
3
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
4
|
-
import type {
|
|
4
|
+
import type { L2Block } from '@aztec/stdlib/block';
|
|
5
5
|
import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
6
6
|
import { type Tx, TxHash } from '@aztec/stdlib/tx';
|
|
7
7
|
import { type ReqRespInterface } from '../reqresp/interface.js';
|
|
@@ -30,7 +30,7 @@ export declare class SlowTxCollection {
|
|
|
30
30
|
stop(): Promise<void>;
|
|
31
31
|
trigger(): Promise<void>;
|
|
32
32
|
/** Starts collecting the given tx hashes for the given L2Block in the slow loop */
|
|
33
|
-
startCollecting(block:
|
|
33
|
+
startCollecting(block: L2Block, txHashes: TxHash[]): void;
|
|
34
34
|
private collectMissingTxsFromNode;
|
|
35
35
|
private collectMissingTxsViaReqResp;
|
|
36
36
|
/** Retrieves all missing txs for the slow collection process. This is, all missing txs that are not part of a fast request. */
|
|
@@ -50,4 +50,4 @@ export declare class SlowTxCollection {
|
|
|
50
50
|
/** Computes the proof submission deadline for a given slot, a tx mined in this slot is no longer interesting after this deadline */
|
|
51
51
|
private getDeadlineForSlot;
|
|
52
52
|
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xvd190eF9jb2xsZWN0aW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvdHhfY29sbGVjdGlvbi9zbG93X3R4X2NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBMkIsTUFBTSxpQ0FBaUMsQ0FBQztBQUV2RixPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFHbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxLQUFLLGlCQUFpQixFQUE2QyxNQUFNLDZCQUE2QixDQUFDO0FBQ2hILE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVwRixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0MscUJBQWEsZ0JBQWdCO0lBV3pCLE9BQU8sQ0FBQyxPQUFPO0lBQ2YsT0FBTyxDQUFDLEtBQUs7SUFDYixPQUFPLENBQUMsZ0JBQWdCO0lBQ3hCLE9BQU8sQ0FBQyxjQUFjO0lBQ3RCLE9BQU8sQ0FBQyxTQUFTO0lBQ2pCLE9BQU8sQ0FBQyxNQUFNO0lBQ2QsT0FBTyxDQUFDLFlBQVk7SUFDcEIsT0FBTyxDQUFDLEdBQUc7SUFqQmIsbUVBQW1FO0lBQ25FLE9BQU8sQ0FBQyxVQUFVLENBQXlDO0lBRTNELCtEQUErRDtJQUMvRCxPQUFPLENBQUMsd0JBQXdCLENBQW1CO0lBRW5ELHFFQUFxRTtJQUNyRSxPQUFPLENBQUMseUJBQXlCLENBQWlCO0lBRWxELFlBQ1UsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxrQkFBa0IsQ0FBQyxFQUNuRCxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQ2pCLGdCQUFnQixFQUFFLGdCQUFnQixFQUNsQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLDJCQUEyQixDQUFDLEVBQ25FLFNBQVMsRUFBRSxpQkFBaUIsRUFDNUIsTUFBTSxFQUFFLGtCQUFrQixFQUMxQixZQUFZLEdBQUUsWUFBaUMsRUFDL0MsR0FBRyxHQUFFLE1BQWtELEVBZ0JoRTtJQUVNLGtCQUFrQixhQUV4QjtJQUVNLEtBQUssU0FHWDtJQUVZLElBQUksa0JBS2hCO0lBRVksT0FBTyxrQkFLbkI7SUFFRCxtRkFBbUY7SUFDNUUsZUFBZSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQW9CeEQ7WUFHYSx5QkFBeUI7WUFpQ3pCLDJCQUEyQjtJQXNDekMsK0hBQStIO0lBQy9ILE9BQU8sQ0FBQyw4QkFBOEI7SUFxQnRDLDhHQUE4RztJQUN2RyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FJL0I7SUFFRDs7O09BR0c7SUFDSSwyQkFBMkIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxHQUFHLElBQUksQ0FNakU7SUFFRDs7O09BR0c7SUFDSSw0QkFBNEIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxHQUFHLElBQUksQ0FNbEU7SUFFRCxvSUFBb0k7SUFDcEksT0FBTyxDQUFDLGtCQUFrQjtDQU0zQiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slow_tx_collection.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/slow_tx_collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2B,MAAM,iCAAiC,CAAC;AAEvF,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"slow_tx_collection.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/slow_tx_collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2B,MAAM,iCAAiC,CAAC;AAEvF,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAGlE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,KAAK,iBAAiB,EAA6C,MAAM,6BAA6B,CAAC;AAChH,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,KAAK,gBAAgB,EAAsB,MAAM,yBAAyB,CAAC;AAEpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,qBAAa,gBAAgB;IAWzB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,GAAG;IAjBb,mEAAmE;IACnE,OAAO,CAAC,UAAU,CAAyC;IAE3D,+DAA+D;IAC/D,OAAO,CAAC,wBAAwB,CAAmB;IAEnD,qEAAqE;IACrE,OAAO,CAAC,yBAAyB,CAAiB;IAElD,YACU,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EACnD,KAAK,EAAE,QAAQ,EAAE,EACjB,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,IAAI,CAAC,gBAAgB,EAAE,2BAA2B,CAAC,EACnE,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,kBAAkB,EAC1B,YAAY,GAAE,YAAiC,EAC/C,GAAG,GAAE,MAAkD,EAgBhE;IAEM,kBAAkB,aAExB;IAEM,KAAK,SAGX;IAEY,IAAI,kBAKhB;IAEY,OAAO,kBAKnB;IAED,mFAAmF;IAC5E,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAoBxD;YAGa,yBAAyB;YAiCzB,2BAA2B;IAsCzC,+HAA+H;IAC/H,OAAO,CAAC,8BAA8B;IAqBtC,8GAA8G;IACvG,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAI/B;IAED;;;OAGG;IACI,2BAA2B,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAMjE;IAED;;;OAGG;IACI,4BAA4B,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAMlE;IAED,oIAAoI;IACpI,OAAO,CAAC,kBAAkB;CAM3B"}
|
|
@@ -2,7 +2,7 @@ import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
|
2
2
|
import { type Logger } from '@aztec/foundation/log';
|
|
3
3
|
import { type PromiseWithResolvers } from '@aztec/foundation/promise';
|
|
4
4
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
5
|
-
import type {
|
|
5
|
+
import type { L2Block, L2BlockInfo } from '@aztec/stdlib/block';
|
|
6
6
|
import type { L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
7
7
|
import type { BlockProposal } from '@aztec/stdlib/p2p';
|
|
8
8
|
import { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
@@ -23,7 +23,7 @@ export type MissingTxInfo = {
|
|
|
23
23
|
};
|
|
24
24
|
export type FastCollectionRequestInput = {
|
|
25
25
|
type: 'block';
|
|
26
|
-
block:
|
|
26
|
+
block: L2Block;
|
|
27
27
|
} | {
|
|
28
28
|
type: 'proposal';
|
|
29
29
|
blockProposal: BlockProposal;
|
|
@@ -77,14 +77,14 @@ export declare class TxCollection {
|
|
|
77
77
|
/** Returns L1 rollup constants. */
|
|
78
78
|
getConstants(): L1RollupConstants;
|
|
79
79
|
/** Starts collecting the given tx hashes for the given L2Block in the slow loop */
|
|
80
|
-
startCollecting(block:
|
|
80
|
+
startCollecting(block: L2Block, txHashes: TxHash[]): void;
|
|
81
81
|
/** Collects the set of txs for the given block proposal as fast as possible */
|
|
82
82
|
collectFastForProposal(blockProposal: BlockProposal, blockNumber: BlockNumber, txHashes: TxHash[] | string[], opts: {
|
|
83
83
|
deadline: Date;
|
|
84
84
|
pinnedPeer?: PeerId;
|
|
85
85
|
}): Promise<Tx[]>;
|
|
86
86
|
/** Collects the set of txs for the given mined block as fast as possible */
|
|
87
|
-
collectFastForBlock(block:
|
|
87
|
+
collectFastForBlock(block: L2Block, txHashes: TxHash[] | string[], opts: {
|
|
88
88
|
deadline: Date;
|
|
89
89
|
pinnedPeer?: PeerId;
|
|
90
90
|
}): Promise<Tx[]>;
|
|
@@ -107,4 +107,4 @@ export declare class TxCollection {
|
|
|
107
107
|
stopCollectingForBlocksAfter(blockNumber: BlockNumber): void;
|
|
108
108
|
private reconcileFoundTxsWithPool;
|
|
109
109
|
}
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfY29sbGVjdGlvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3R4X2NvbGxlY3Rpb24vdHhfY29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxLQUFLLG9CQUFvQixFQUFrQixNQUFNLDJCQUEyQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0Is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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx_collection.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/tx_collection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,KAAK,oBAAoB,EAAkB,MAAM,2BAA2B,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"tx_collection.d.ts","sourceRoot":"","sources":["../../../src/services/tx_collection/tx_collection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
2
|
import { type Logger } from '@aztec/foundation/log';
|
|
3
|
-
import type {
|
|
3
|
+
import type { L2Block } from '@aztec/stdlib/block';
|
|
4
4
|
import type { ITxProvider } from '@aztec/stdlib/interfaces/server';
|
|
5
5
|
import type { BlockProposal } from '@aztec/stdlib/p2p';
|
|
6
6
|
import { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
@@ -35,7 +35,7 @@ export declare class TxProvider implements ITxProvider {
|
|
|
35
35
|
missingTxs: TxHash[];
|
|
36
36
|
}>;
|
|
37
37
|
/** Gathers txs from the tx pool, remote rpc nodes, and reqresp. */
|
|
38
|
-
getTxsForBlock(block:
|
|
38
|
+
getTxsForBlock(block: L2Block, opts: {
|
|
39
39
|
deadline: Date;
|
|
40
40
|
}): Promise<{
|
|
41
41
|
txs: Tx[];
|
|
@@ -48,4 +48,4 @@ export declare class TxProvider implements ITxProvider {
|
|
|
48
48
|
private extractFromProposal;
|
|
49
49
|
private processProposalTxs;
|
|
50
50
|
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfcHJvdmlkZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy90eF9wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFOUQsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBZSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHlCQUF5QixDQUFDO0FBRW5GLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWhELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUE4QixZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUU3RTs7O0dBR0c7QUFDSCxxQkFBYSxVQUFXLFlBQVcsV0FBVztJQUkxQyxPQUFPLENBQUMsWUFBWTtJQUNwQixPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxXQUFXO0lBQ25CLE9BQU8sQ0FBQyxHQUFHO0lBTmIsU0FBUyxDQUFDLGVBQWUsRUFBRSx5QkFBeUIsQ0FBQztJQUVyRCxZQUNVLFlBQVksRUFBRSxZQUFZLEVBQzFCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLEVBQ3hDLEdBQUcsR0FBRSxNQUF5QyxFQUN0RCxNQUFNLEdBQUUsZUFBc0MsRUFHL0M7SUFFRCxzREFBc0Q7SUFDekMsZUFBZSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUE7S0FBRSxDQUFDLENBa0I3RjtJQUVELGtGQUFrRjtJQUMzRSxzQkFBc0IsQ0FDM0IsYUFBYSxFQUFFLGFBQWEsRUFDNUIsV0FBVyxFQUFFLFdBQVcsRUFDeEIsSUFBSSxFQUFFO1FBQUUsVUFBVSxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFBO0tBQUUsR0FDdkQsT0FBTyxDQUFDO1FBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFBO0tBQUUsQ0FBQyxDQU85QztJQUVELG1FQUFtRTtJQUM1RCxjQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7UUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFBO0tBQUUsR0FBRyxPQUFPLENBQUM7UUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUE7S0FBRSxDQUFDLENBTzVHO1lBRWEsMkJBQTJCO0lBZ0N6QyxPQUFPLENBQUMsUUFBUTtZQUtGLG9CQUFvQjtZQXlGcEIsY0FBYztJQVk1QixPQUFPLENBQUMsbUJBQW1CO1lBT2Isa0JBQWtCO0NBT2pDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx_provider.d.ts","sourceRoot":"","sources":["../../src/services/tx_provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"tx_provider.d.ts","sourceRoot":"","sources":["../../src/services/tx_provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAA8B,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACjG,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7E;;;GAGG;AACH,qBAAa,UAAW,YAAW,WAAW;IAI1C,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,GAAG;IANb,SAAS,CAAC,eAAe,EAAE,yBAAyB,CAAC;IAErD,YACU,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EACxC,GAAG,GAAE,MAAyC,EACtD,MAAM,GAAE,eAAsC,EAG/C;IAED,sDAAsD;IACzC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAkB7F;IAED,kFAAkF;IAC3E,sBAAsB,CAC3B,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE,GACvD,OAAO,CAAC;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAO9C;IAED,mEAAmE;IAC5D,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAO5G;YAEa,2BAA2B;IAgCzC,OAAO,CAAC,QAAQ;YAKF,oBAAoB;YAyFpB,cAAc;IAY5B,OAAO,CAAC,mBAAmB;YAOb,kBAAkB;CAOjC"}
|
|
@@ -4,4 +4,5 @@ export * from './make-enrs.js';
|
|
|
4
4
|
export * from './make-test-p2p-clients.js';
|
|
5
5
|
export * from './reqresp-nodes.js';
|
|
6
6
|
export * from './mock-pubsub.js';
|
|
7
|
-
|
|
7
|
+
export * from './test_tx_provider.js';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0LWhlbHBlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx1QkFBdUIsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC;AACnD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import type { L2Block } from '@aztec/stdlib/block';
|
|
3
|
+
import type { ITxProvider } from '@aztec/stdlib/interfaces/server';
|
|
4
|
+
import type { BlockProposal } from '@aztec/stdlib/p2p';
|
|
5
|
+
import { type Tx, TxHash } from '@aztec/stdlib/tx';
|
|
6
|
+
import type { PeerId } from '@libp2p/interface';
|
|
7
|
+
/**
|
|
8
|
+
* Test transaction provider that can be seeded with transactions.
|
|
9
|
+
* Returns seeded txs when requested by hash, useful for testing block
|
|
10
|
+
* proposal handling without requiring a full P2P network.
|
|
11
|
+
*/
|
|
12
|
+
export declare class TestTxProvider implements ITxProvider {
|
|
13
|
+
private txs;
|
|
14
|
+
/** Seed transactions that will be returned when requested. */
|
|
15
|
+
seed(txs: Tx[]): void;
|
|
16
|
+
/** Clear all seeded transactions. */
|
|
17
|
+
clear(): void;
|
|
18
|
+
/** Returns txs from the seeded collection given their hashes. */
|
|
19
|
+
getAvailableTxs(txHashes: TxHash[]): Promise<{
|
|
20
|
+
txs: Tx[];
|
|
21
|
+
missingTxs: TxHash[];
|
|
22
|
+
}>;
|
|
23
|
+
/** Get txs for a block proposal, returning any seeded txs that match the requested hashes. */
|
|
24
|
+
getTxsForBlockProposal(blockProposal: BlockProposal, _blockNumber: BlockNumber, _opts: {
|
|
25
|
+
pinnedPeer: PeerId | undefined;
|
|
26
|
+
deadline: Date;
|
|
27
|
+
}): Promise<{
|
|
28
|
+
txs: Tx[];
|
|
29
|
+
missingTxs: TxHash[];
|
|
30
|
+
}>;
|
|
31
|
+
/** Get txs for a block, returning any seeded txs that match the tx effects in the block. */
|
|
32
|
+
getTxsForBlock(block: L2Block, _opts: {
|
|
33
|
+
deadline: Date;
|
|
34
|
+
}): Promise<{
|
|
35
|
+
txs: Tx[];
|
|
36
|
+
missingTxs: TxHash[];
|
|
37
|
+
}>;
|
|
38
|
+
private getTxsByHashes;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdF90eF9wcm92aWRlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QtaGVscGVycy90ZXN0X3R4X3Byb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRDs7OztHQUlHO0FBQ0gscUJBQWEsY0FBZSxZQUFXLFdBQVc7SUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBOEI7SUFFekMsOERBQThEO0lBQzlELElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLFFBSWI7SUFFRCxxQ0FBcUM7SUFDckMsS0FBSyxTQUVKO0lBRUQsaUVBQWlFO0lBQ2pFLGVBQWUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFBO0tBQUUsQ0FBQyxDQUVoRjtJQUVELDhGQUE4RjtJQUM5RixzQkFBc0IsQ0FDcEIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsWUFBWSxFQUFFLFdBQVcsRUFDekIsS0FBSyxFQUFFO1FBQUUsVUFBVSxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFBO0tBQUUsR0FDeEQsT0FBTyxDQUFDO1FBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUFBO0tBQUUsQ0FBQyxDQUU5QztJQUVELDRGQUE0RjtJQUM1RixjQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7UUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFBO0tBQUUsR0FBRyxPQUFPLENBQUM7UUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUE7S0FBRSxDQUFDLENBR3RHO0lBRUQsT0FBTyxDQUFDLGNBQWM7Q0FldkIifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test_tx_provider.d.ts","sourceRoot":"","sources":["../../src/test-helpers/test_tx_provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;GAIG;AACH,qBAAa,cAAe,YAAW,WAAW;IAChD,OAAO,CAAC,GAAG,CAA8B;IAEzC,8DAA8D;IAC9D,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,QAIb;IAED,qCAAqC;IACrC,KAAK,SAEJ;IAED,iEAAiE;IACjE,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAEhF;IAED,8FAA8F;IAC9F,sBAAsB,CACpB,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,WAAW,EACzB,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE,GACxD,OAAO,CAAC;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAE9C;IAED,4FAA4F;IAC5F,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAGtG;IAED,OAAO,CAAC,cAAc;CAevB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test transaction provider that can be seeded with transactions.
|
|
3
|
+
* Returns seeded txs when requested by hash, useful for testing block
|
|
4
|
+
* proposal handling without requiring a full P2P network.
|
|
5
|
+
*/ export class TestTxProvider {
|
|
6
|
+
txs = new Map();
|
|
7
|
+
/** Seed transactions that will be returned when requested. */ seed(txs) {
|
|
8
|
+
for (const tx of txs){
|
|
9
|
+
this.txs.set(tx.getTxHash().toString(), tx);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
/** Clear all seeded transactions. */ clear() {
|
|
13
|
+
this.txs.clear();
|
|
14
|
+
}
|
|
15
|
+
/** Returns txs from the seeded collection given their hashes. */ getAvailableTxs(txHashes) {
|
|
16
|
+
return this.getTxsByHashes(txHashes);
|
|
17
|
+
}
|
|
18
|
+
/** Get txs for a block proposal, returning any seeded txs that match the requested hashes. */ getTxsForBlockProposal(blockProposal, _blockNumber, _opts) {
|
|
19
|
+
return this.getTxsByHashes(blockProposal.txHashes);
|
|
20
|
+
}
|
|
21
|
+
/** Get txs for a block, returning any seeded txs that match the tx effects in the block. */ getTxsForBlock(block, _opts) {
|
|
22
|
+
const txHashes = block.body.txEffects.map((txEffect)=>txEffect.txHash);
|
|
23
|
+
return this.getTxsByHashes(txHashes);
|
|
24
|
+
}
|
|
25
|
+
getTxsByHashes(txHashes) {
|
|
26
|
+
const txs = [];
|
|
27
|
+
const missingTxs = [];
|
|
28
|
+
for (const txHash of txHashes){
|
|
29
|
+
const tx = this.txs.get(txHash.toString());
|
|
30
|
+
if (tx) {
|
|
31
|
+
txs.push(tx);
|
|
32
|
+
} else {
|
|
33
|
+
missingTxs.push(txHash);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return Promise.resolve({
|
|
37
|
+
txs,
|
|
38
|
+
missingTxs
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/p2p",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.59e663cd",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -67,17 +67,17 @@
|
|
|
67
67
|
]
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@aztec/constants": "0.0.1-commit.
|
|
71
|
-
"@aztec/epoch-cache": "0.0.1-commit.
|
|
72
|
-
"@aztec/ethereum": "0.0.1-commit.
|
|
73
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
74
|
-
"@aztec/kv-store": "0.0.1-commit.
|
|
75
|
-
"@aztec/noir-contracts.js": "0.0.1-commit.
|
|
76
|
-
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.
|
|
77
|
-
"@aztec/protocol-contracts": "0.0.1-commit.
|
|
78
|
-
"@aztec/simulator": "0.0.1-commit.
|
|
79
|
-
"@aztec/stdlib": "0.0.1-commit.
|
|
80
|
-
"@aztec/telemetry-client": "0.0.1-commit.
|
|
70
|
+
"@aztec/constants": "0.0.1-commit.59e663cd",
|
|
71
|
+
"@aztec/epoch-cache": "0.0.1-commit.59e663cd",
|
|
72
|
+
"@aztec/ethereum": "0.0.1-commit.59e663cd",
|
|
73
|
+
"@aztec/foundation": "0.0.1-commit.59e663cd",
|
|
74
|
+
"@aztec/kv-store": "0.0.1-commit.59e663cd",
|
|
75
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.59e663cd",
|
|
76
|
+
"@aztec/noir-protocol-circuits-types": "0.0.1-commit.59e663cd",
|
|
77
|
+
"@aztec/protocol-contracts": "0.0.1-commit.59e663cd",
|
|
78
|
+
"@aztec/simulator": "0.0.1-commit.59e663cd",
|
|
79
|
+
"@aztec/stdlib": "0.0.1-commit.59e663cd",
|
|
80
|
+
"@aztec/telemetry-client": "0.0.1-commit.59e663cd",
|
|
81
81
|
"@chainsafe/libp2p-gossipsub": "13.0.0",
|
|
82
82
|
"@chainsafe/libp2p-noise": "^15.0.0",
|
|
83
83
|
"@chainsafe/libp2p-yamux": "^6.0.2",
|
|
@@ -104,8 +104,8 @@
|
|
|
104
104
|
"xxhash-wasm": "^1.1.0"
|
|
105
105
|
},
|
|
106
106
|
"devDependencies": {
|
|
107
|
-
"@aztec/archiver": "0.0.1-commit.
|
|
108
|
-
"@aztec/world-state": "0.0.1-commit.
|
|
107
|
+
"@aztec/archiver": "0.0.1-commit.59e663cd",
|
|
108
|
+
"@aztec/world-state": "0.0.1-commit.59e663cd",
|
|
109
109
|
"@jest/globals": "^30.0.0",
|
|
110
110
|
"@types/jest": "^30.0.0",
|
|
111
111
|
"@types/node": "^22.15.17",
|
package/src/client/p2p_client.ts
CHANGED
|
@@ -6,7 +6,7 @@ import type { AztecAsyncKVStore, AztecAsyncSingleton } from '@aztec/kv-store';
|
|
|
6
6
|
import { L2TipsKVStore } from '@aztec/kv-store/stores';
|
|
7
7
|
import {
|
|
8
8
|
type EthAddress,
|
|
9
|
-
type
|
|
9
|
+
type L2Block,
|
|
10
10
|
type L2BlockSource,
|
|
11
11
|
L2BlockStream,
|
|
12
12
|
type L2BlockStreamEvent,
|
|
@@ -659,7 +659,7 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
659
659
|
* @param blocks - A list of existing blocks with txs that the P2P client needs to ensure the tx pool is reconciled with.
|
|
660
660
|
* @returns Empty promise.
|
|
661
661
|
*/
|
|
662
|
-
private async markTxsAsMinedFromBlocks(blocks:
|
|
662
|
+
private async markTxsAsMinedFromBlocks(blocks: L2Block[]): Promise<void> {
|
|
663
663
|
for (const block of blocks) {
|
|
664
664
|
const txHashes = block.body.txEffects.map(txEffect => txEffect.txHash);
|
|
665
665
|
await this.txPool.markAsMined(txHashes, block.header);
|
|
@@ -671,7 +671,7 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
671
671
|
* @param blocks - A list of existing blocks with txs that the P2P client needs to ensure the tx pool is reconciled with.
|
|
672
672
|
* @returns Empty promise.
|
|
673
673
|
*/
|
|
674
|
-
private async handleLatestL2Blocks(blocks:
|
|
674
|
+
private async handleLatestL2Blocks(blocks: L2Block[]): Promise<void> {
|
|
675
675
|
if (!blocks.length) {
|
|
676
676
|
return Promise.resolve();
|
|
677
677
|
}
|
|
@@ -686,7 +686,7 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
686
686
|
}
|
|
687
687
|
|
|
688
688
|
/** Request txs for unproven blocks so the prover node has more chances to get them. */
|
|
689
|
-
private async startCollectingMissingTxs(blocks:
|
|
689
|
+
private async startCollectingMissingTxs(blocks: L2Block[]): Promise<void> {
|
|
690
690
|
try {
|
|
691
691
|
// TODO(#15435): If the archiver has lagged behind L1, the reported proven block number may
|
|
692
692
|
// be much lower than the actual one, and it does not update until the pending chain is
|
|
@@ -719,7 +719,7 @@ export class P2PClient<T extends P2PClientType = P2PClientType.Full>
|
|
|
719
719
|
* @param blocks - A list of finalized L2 blocks.
|
|
720
720
|
* @returns Empty promise.
|
|
721
721
|
*/
|
|
722
|
-
private async handleFinalizedL2Blocks(blocks:
|
|
722
|
+
private async handleFinalizedL2Blocks(blocks: L2Block[]): Promise<void> {
|
|
723
723
|
if (!blocks.length) {
|
|
724
724
|
return Promise.resolve();
|
|
725
725
|
}
|
|
@@ -6,7 +6,7 @@ import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
|
6
6
|
import type { TypedEventEmitter } from '@aztec/foundation/types';
|
|
7
7
|
import type { AztecAsyncKVStore, AztecAsyncMap, AztecAsyncMultiMap } from '@aztec/kv-store';
|
|
8
8
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
9
|
-
import type { MerkleTreeReadOperations,
|
|
9
|
+
import type { MerkleTreeReadOperations, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
10
10
|
import { ChonkProof } from '@aztec/stdlib/proofs';
|
|
11
11
|
import type { TxAddedToPoolStats } from '@aztec/stdlib/stats';
|
|
12
12
|
import { BlockHeader, Tx, TxHash } from '@aztec/stdlib/tx';
|
|
@@ -99,7 +99,7 @@ export class AztecKVTxPool
|
|
|
99
99
|
constructor(
|
|
100
100
|
store: AztecAsyncKVStore,
|
|
101
101
|
archive: AztecAsyncKVStore,
|
|
102
|
-
worldState:
|
|
102
|
+
worldState: WorldStateSynchronizer,
|
|
103
103
|
telemetry: TelemetryClient = getTelemetryClient(),
|
|
104
104
|
config: TxPoolOptions = {},
|
|
105
105
|
log = createLogger('p2p:tx_pool'),
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { findIndexInSortedArray, insertIntoSortedArray } from '@aztec/foundation/array';
|
|
2
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
5
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
@@ -50,7 +51,7 @@ export class EvictionManager {
|
|
|
50
51
|
await this.runEvictionRules(ctx);
|
|
51
52
|
}
|
|
52
53
|
|
|
53
|
-
public async evictAfterChainPrune(blockNumber:
|
|
54
|
+
public async evictAfterChainPrune(blockNumber: BlockNumber): Promise<void> {
|
|
54
55
|
const ctx: EvictionContext = {
|
|
55
56
|
event: EvictionEvent.CHAIN_PRUNED,
|
|
56
57
|
blockNumber,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { BlockNumber } from '@aztec/foundation/branded-types';
|
|
1
2
|
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
2
3
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
4
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
@@ -24,7 +25,7 @@ export type EvictionContext =
|
|
|
24
25
|
}
|
|
25
26
|
| {
|
|
26
27
|
event: typeof EvictionEvent.CHAIN_PRUNED;
|
|
27
|
-
blockNumber:
|
|
28
|
+
blockNumber: BlockNumber;
|
|
28
29
|
}
|
|
29
30
|
| {
|
|
30
31
|
event: typeof EvictionEvent.BLOCK_MINED;
|
|
@@ -2,7 +2,7 @@ import { createLogger } from '@aztec/foundation/log';
|
|
|
2
2
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
3
3
|
import { computeFeePayerBalanceStorageSlot } from '@aztec/protocol-contracts/fee-juice';
|
|
4
4
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
|
-
import type {
|
|
5
|
+
import type { WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
6
6
|
import { DatabasePublicStateSource, type MerkleTreeReadOperations } from '@aztec/stdlib/trees';
|
|
7
7
|
import type { TxHash } from '@aztec/stdlib/tx';
|
|
8
8
|
|
|
@@ -22,7 +22,7 @@ export class FeePayerBalanceEvictionRule implements EvictionRule {
|
|
|
22
22
|
|
|
23
23
|
private log = createLogger('p2p:mempool:tx_pool:fee_payer_balance_eviction_rule');
|
|
24
24
|
|
|
25
|
-
constructor(private worldState:
|
|
25
|
+
constructor(private worldState: WorldStateSynchronizer) {}
|
|
26
26
|
|
|
27
27
|
async evict(context: EvictionContext, txPool: TxPoolOperations): Promise<EvictionResult> {
|
|
28
28
|
try {
|
|
@@ -31,11 +31,12 @@ export class FeePayerBalanceEvictionRule implements EvictionRule {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
if (context.event === EvictionEvent.BLOCK_MINED) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
);
|
|
34
|
+
const blockNumber = context.block.getBlockNumber();
|
|
35
|
+
// Ensure world state is synced to this block before accessing the snapshot.
|
|
36
|
+
// This handles the race where a block is added to the archiver
|
|
37
|
+
// but the world state hasn't synced it yet.
|
|
38
|
+
await this.worldState.syncImmediate(blockNumber);
|
|
39
|
+
return await this.evictForFeePayers(context.feePayers, this.worldState.getSnapshot(blockNumber), txPool);
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
// TODO: fix this edge-case
|
|
@@ -49,6 +50,8 @@ export class FeePayerBalanceEvictionRule implements EvictionRule {
|
|
|
49
50
|
// -----
|
|
50
51
|
// Proposed fix: evict only if node is synched
|
|
51
52
|
if (context.event === EvictionEvent.CHAIN_PRUNED) {
|
|
53
|
+
// Ensure world state is synced to this block before accessing the snapshot.
|
|
54
|
+
await this.worldState.syncImmediate(context.blockNumber);
|
|
52
55
|
const feePayers = await txPool.getPendingFeePayers();
|
|
53
56
|
return await this.evictForFeePayers(feePayers, this.worldState.getSnapshot(context.blockNumber), txPool);
|
|
54
57
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { findIndexInSortedArray, insertIntoSortedArray } from '@aztec/foundation/array';
|
|
2
2
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
|
-
import type {
|
|
4
|
+
import type { WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
5
5
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
6
6
|
import type { TxHash } from '@aztec/stdlib/tx';
|
|
7
7
|
|
|
@@ -26,7 +26,7 @@ export class InvalidTxsAfterReorgRule implements EvictionRule {
|
|
|
26
26
|
|
|
27
27
|
private log = createLogger('p2p:mempool:tx_pool:invalid_txs_after_reorg_rule');
|
|
28
28
|
|
|
29
|
-
public constructor(private worldState:
|
|
29
|
+
public constructor(private worldState: WorldStateSynchronizer) {}
|
|
30
30
|
|
|
31
31
|
async evict(context: EvictionContext, txPool: TxPoolOperations): Promise<EvictionResult> {
|
|
32
32
|
if (context.event !== EvictionEvent.CHAIN_PRUNED) {
|
|
@@ -46,6 +46,8 @@ export class InvalidTxsAfterReorgRule implements EvictionRule {
|
|
|
46
46
|
insertIntoSortedArray(uniqueBlockHashes, blockHash, Fr.cmp, false);
|
|
47
47
|
});
|
|
48
48
|
|
|
49
|
+
// Ensure world state is synced to this block before accessing the snapshot.
|
|
50
|
+
await this.worldState.syncImmediate(context.blockNumber);
|
|
49
51
|
const db = this.worldState.getSnapshot(context.blockNumber);
|
|
50
52
|
const blocksFromDb = await db.findLeafIndices(MerkleTreeId.ARCHIVE, uniqueBlockHashes);
|
|
51
53
|
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import type { EpochCacheInterface } from '@aztec/epoch-cache';
|
|
2
2
|
import { NoCommitteeError } from '@aztec/ethereum/contracts';
|
|
3
3
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
type CheckpointAttestation,
|
|
6
|
+
type P2PValidator,
|
|
7
|
+
PeerErrorSeverity,
|
|
8
|
+
type ValidationResult,
|
|
9
|
+
} from '@aztec/stdlib/p2p';
|
|
10
|
+
|
|
11
|
+
import { isWithinClockTolerance } from '../clock_tolerance.js';
|
|
5
12
|
|
|
6
13
|
export class CheckpointAttestationValidator implements P2PValidator<CheckpointAttestation> {
|
|
7
14
|
protected epochCache: EpochCacheInterface;
|
|
@@ -12,30 +19,35 @@ export class CheckpointAttestationValidator implements P2PValidator<CheckpointAt
|
|
|
12
19
|
this.logger = createLogger('p2p:checkpoint-attestation-validator');
|
|
13
20
|
}
|
|
14
21
|
|
|
15
|
-
async validate(message: CheckpointAttestation): Promise<
|
|
22
|
+
async validate(message: CheckpointAttestation): Promise<ValidationResult> {
|
|
16
23
|
const slotNumber = message.payload.header.slotNumber;
|
|
17
24
|
|
|
18
25
|
try {
|
|
19
26
|
const { currentSlot, nextSlot } = this.epochCache.getCurrentAndNextSlot();
|
|
20
27
|
|
|
21
28
|
if (slotNumber !== currentSlot && slotNumber !== nextSlot) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
29
|
+
// Check if message is for previous slot and within clock tolerance
|
|
30
|
+
if (!isWithinClockTolerance(slotNumber, currentSlot, this.epochCache)) {
|
|
31
|
+
this.logger.warn(
|
|
32
|
+
`Checkpoint attestation slot ${slotNumber} is not current (${currentSlot}) or next (${nextSlot}) slot`,
|
|
33
|
+
);
|
|
34
|
+
return { result: 'reject', severity: PeerErrorSeverity.HighToleranceError };
|
|
35
|
+
}
|
|
36
|
+
this.logger.debug(`Ignoring checkpoint attestation for previous slot ${slotNumber} within clock tolerance`);
|
|
37
|
+
return { result: 'ignore' };
|
|
26
38
|
}
|
|
27
39
|
|
|
28
40
|
// Verify the signature is valid
|
|
29
41
|
const attester = message.getSender();
|
|
30
42
|
if (attester === undefined) {
|
|
31
43
|
this.logger.warn(`Invalid signature in checkpoint attestation for slot ${slotNumber}`);
|
|
32
|
-
return PeerErrorSeverity.LowToleranceError;
|
|
44
|
+
return { result: 'reject', severity: PeerErrorSeverity.LowToleranceError };
|
|
33
45
|
}
|
|
34
46
|
|
|
35
47
|
// Verify the attester is in the committee for this slot
|
|
36
48
|
if (!(await this.epochCache.isInCommittee(slotNumber, attester))) {
|
|
37
49
|
this.logger.warn(`Attester ${attester.toString()} is not in committee for slot ${slotNumber}`);
|
|
38
|
-
return PeerErrorSeverity.HighToleranceError;
|
|
50
|
+
return { result: 'reject', severity: PeerErrorSeverity.HighToleranceError };
|
|
39
51
|
}
|
|
40
52
|
|
|
41
53
|
// Verify the proposer signature matches the expected proposer for the attestation's slot
|
|
@@ -45,26 +57,26 @@ export class CheckpointAttestationValidator implements P2PValidator<CheckpointAt
|
|
|
45
57
|
const expectedProposer = await this.epochCache.getProposerAttesterAddressInSlot(slotNumber);
|
|
46
58
|
if (!expectedProposer) {
|
|
47
59
|
this.logger.warn(`No proposer defined for slot ${slotNumber}`);
|
|
48
|
-
return PeerErrorSeverity.HighToleranceError;
|
|
60
|
+
return { result: 'reject', severity: PeerErrorSeverity.HighToleranceError };
|
|
49
61
|
}
|
|
50
62
|
if (!proposer) {
|
|
51
63
|
this.logger.warn(`Invalid proposer signature in checkpoint attestation for slot ${slotNumber}`);
|
|
52
|
-
return PeerErrorSeverity.LowToleranceError;
|
|
64
|
+
return { result: 'reject', severity: PeerErrorSeverity.LowToleranceError };
|
|
53
65
|
}
|
|
54
66
|
if (!proposer.equals(expectedProposer)) {
|
|
55
67
|
this.logger.warn(
|
|
56
68
|
`Proposer signature mismatch in checkpoint attestation. ` +
|
|
57
69
|
`Expected ${expectedProposer?.toString() ?? 'none'} but got ${proposer.toString()} for slot ${slotNumber}`,
|
|
58
70
|
);
|
|
59
|
-
return PeerErrorSeverity.HighToleranceError;
|
|
71
|
+
return { result: 'reject', severity: PeerErrorSeverity.HighToleranceError };
|
|
60
72
|
}
|
|
61
73
|
|
|
62
|
-
return
|
|
74
|
+
return { result: 'accept' };
|
|
63
75
|
} catch (e) {
|
|
64
76
|
// People shouldn't be sending us attestations if the committee doesn't exist
|
|
65
77
|
if (e instanceof NoCommitteeError) {
|
|
66
78
|
this.logger.warn(`No committee exists for checkpoint attestation for slot ${slotNumber}`);
|
|
67
|
-
return PeerErrorSeverity.LowToleranceError;
|
|
79
|
+
return { result: 'reject', severity: PeerErrorSeverity.LowToleranceError };
|
|
68
80
|
}
|
|
69
81
|
throw e;
|
|
70
82
|
}
|