@aztec/p2p 0.60.0 → 0.62.0
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/index.js +2 -39
- package/dest/client/p2p_client.d.ts +33 -9
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +121 -30
- package/dest/config.d.ts +5 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +7 -2
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +3 -2
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.js +30 -5
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +3 -2
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.js +26 -5
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +8 -2
- package/dest/mem_pools/tx_pool/tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/tx_pool_test_suite.js +30 -3
- package/dest/mocks/index.d.ts +18 -2
- package/dest/mocks/index.d.ts.map +1 -1
- package/dest/mocks/index.js +79 -5
- package/dest/service/peer_scoring.js +5 -5
- package/dest/util.d.ts +3 -0
- package/dest/util.d.ts.map +1 -1
- package/dest/util.js +38 -1
- package/package.json +12 -7
- package/src/client/index.ts +1 -48
- package/src/client/p2p_client.ts +156 -40
- package/src/config.ts +11 -1
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +35 -6
- package/src/mem_pools/tx_pool/memory_tx_pool.ts +32 -6
- package/src/mem_pools/tx_pool/tx_pool.ts +9 -2
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +34 -2
- package/src/mocks/index.ts +123 -5
- package/src/service/peer_scoring.ts +4 -4
- package/src/util.ts +53 -0
package/dest/client/index.js
CHANGED
|
@@ -8,7 +8,7 @@ import { AztecKVTxPool } from '../mem_pools/tx_pool/index.js';
|
|
|
8
8
|
import { DiscV5Service } from '../service/discV5_service.js';
|
|
9
9
|
import { DummyP2PService } from '../service/dummy_service.js';
|
|
10
10
|
import { LibP2PService, createLibP2PPeerId } from '../service/index.js';
|
|
11
|
-
import {
|
|
11
|
+
import { configureP2PClientAddresses } from '../util.js';
|
|
12
12
|
export * from './p2p_client.js';
|
|
13
13
|
export const createP2PClient = async (_config, l2BlockSource, proofVerifier, worldStateSynchronizer, telemetry = new NoopTelemetryClient(), deps = {}) => {
|
|
14
14
|
let config = { ..._config };
|
|
@@ -31,41 +31,4 @@ export const createP2PClient = async (_config, l2BlockSource, proofVerifier, wor
|
|
|
31
31
|
}
|
|
32
32
|
return new P2PClient(store, l2BlockSource, mempools, p2pService, config.keepProvenTxsInPoolFor, telemetry);
|
|
33
33
|
};
|
|
34
|
-
|
|
35
|
-
const config = { ..._config };
|
|
36
|
-
const { tcpAnnounceAddress: configTcpAnnounceAddress, udpAnnounceAddress: configUdpAnnounceAddress, queryForIp, } = config;
|
|
37
|
-
config.tcpAnnounceAddress = configTcpAnnounceAddress
|
|
38
|
-
? await resolveAddressIfNecessary(configTcpAnnounceAddress)
|
|
39
|
-
: undefined;
|
|
40
|
-
config.udpAnnounceAddress = configUdpAnnounceAddress
|
|
41
|
-
? await resolveAddressIfNecessary(configUdpAnnounceAddress)
|
|
42
|
-
: undefined;
|
|
43
|
-
// create variable for re-use if needed
|
|
44
|
-
let publicIp;
|
|
45
|
-
// check if no announce IP was provided
|
|
46
|
-
const splitTcpAnnounceAddress = splitAddressPort(configTcpAnnounceAddress || '', true);
|
|
47
|
-
if (splitTcpAnnounceAddress.length == 2 && splitTcpAnnounceAddress[0] === '') {
|
|
48
|
-
if (queryForIp) {
|
|
49
|
-
publicIp = await getPublicIp();
|
|
50
|
-
const tcpAnnounceAddress = `${publicIp}:${splitTcpAnnounceAddress[1]}`;
|
|
51
|
-
config.tcpAnnounceAddress = tcpAnnounceAddress;
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
throw new Error(`Invalid announceTcpAddress provided: ${configTcpAnnounceAddress}. Expected format: <addr>:<port>`);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
const splitUdpAnnounceAddress = splitAddressPort(configUdpAnnounceAddress || '', true);
|
|
58
|
-
if (splitUdpAnnounceAddress.length == 2 && splitUdpAnnounceAddress[0] === '') {
|
|
59
|
-
// If announceUdpAddress is not provided, use announceTcpAddress
|
|
60
|
-
if (!queryForIp && config.tcpAnnounceAddress) {
|
|
61
|
-
config.udpAnnounceAddress = config.tcpAnnounceAddress;
|
|
62
|
-
}
|
|
63
|
-
else if (queryForIp) {
|
|
64
|
-
const udpPublicIp = publicIp || (await getPublicIp());
|
|
65
|
-
const udpAnnounceAddress = `${udpPublicIp}:${splitUdpAnnounceAddress[1]}`;
|
|
66
|
-
config.udpAnnounceAddress = udpAnnounceAddress;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
return config;
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBd0IsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3BELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBRW5HLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBRWpILE9BQU8sRUFBRSxhQUFhLEVBQWUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLHlCQUF5QixFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXRGLGNBQWMsaUJBQWlCLENBQUM7QUFFaEMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFDbEMsT0FBb0MsRUFDcEMsYUFBNEIsRUFDNUIsYUFBNEMsRUFDNUMsc0JBQThDLEVBQzlDLFlBQTZCLElBQUksbUJBQW1CLEVBQUUsRUFDdEQsT0FLSSxFQUFFLEVBQ04sRUFBRTtJQUNGLElBQUksTUFBTSxHQUFHLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztJQUM1QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxXQUFXLENBQUMsS0FBSyxF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
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBd0IsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFbkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3BELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBRW5HLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBRWpILE9BQU8sRUFBRSxhQUFhLEVBQWUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFekQsY0FBYyxpQkFBaUIsQ0FBQztBQUVoQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsS0FBSyxFQUNsQyxPQUFvQyxFQUNwQyxhQUE0QixFQUM1QixhQUE0QyxFQUM1QyxzQkFBOEMsRUFDOUMsWUFBNkIsSUFBSSxtQkFBbUIsRUFBRSxFQUN0RCxPQUtJLEVBQUUsRUFDTixFQUFFO0lBQ0YsSUFBSSxNQUFNLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBQzVCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLFdBQVcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXBHLE1BQU0sUUFBUSxHQUFhO1FBQ3pCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksYUFBYSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUM7UUFDMUQsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSx1QkFBdUIsQ0FBQyxTQUFTLENBQUM7UUFDL0UsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUkseUJBQXlCLENBQUMsU0FBUyxDQUFDO0tBQzFGLENBQUM7SUFFRixJQUFJLFVBQVUsQ0FBQztJQUVmLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sR0FBRyxNQUFNLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXBELGdDQUFnQztRQUNoQyxNQUFNLE1BQU0sR0FBRyxNQUFNLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTNELFVBQVUsR0FBRyxNQUFNLGFBQWEsQ0FBQyxHQUFHLENBQ2xDLE1BQU0sRUFDTixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLFFBQVEsRUFDUixhQUFhLEVBQ2IsYUFBYSxFQUNiLHNCQUFzQixFQUN0QixLQUFLLEVBQ0wsU0FBUyxDQUNWLENBQUM7SUFDSixDQUFDO1NBQU0sQ0FBQztRQUNOLFVBQVUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFDRCxPQUFPLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsc0JBQXNCLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDN0csQ0FBQyxDQUFDIn0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type BlockAttestation, type BlockProposal, type EpochProofQuote, type L2BlockId, type L2BlockSource, type Tx, type TxHash } from '@aztec/circuit-types';
|
|
1
|
+
import { type BlockAttestation, type BlockProposal, type EpochProofQuote, type L2BlockId, type L2BlockSource, type L2BlockStreamEvent, type L2Tips, type Tx, type TxHash } from '@aztec/circuit-types';
|
|
2
2
|
import { type AztecKVStore } from '@aztec/kv-store';
|
|
3
3
|
import { type TelemetryClient, WithTracer } from '@aztec/telemetry-client';
|
|
4
4
|
import { type ENR } from '@chainsafe/enr';
|
|
@@ -52,11 +52,11 @@ export interface P2P {
|
|
|
52
52
|
*/
|
|
53
53
|
getEpochProofQuotes(epoch: bigint): Promise<EpochProofQuote[]>;
|
|
54
54
|
/**
|
|
55
|
-
*
|
|
55
|
+
* Adds an EpochProofQuote to the pool and broadcasts an EpochProofQuote to other peers.
|
|
56
56
|
*
|
|
57
57
|
* @param quote - the quote to broadcast
|
|
58
58
|
*/
|
|
59
|
-
|
|
59
|
+
addEpochProofQuote(quote: EpochProofQuote): Promise<void>;
|
|
60
60
|
/**
|
|
61
61
|
* Registers a callback from the validator client that determines how to behave when
|
|
62
62
|
* foreign block proposals are received
|
|
@@ -96,7 +96,13 @@ export interface P2P {
|
|
|
96
96
|
* @param txHash - Hash of tx to return.
|
|
97
97
|
* @returns A single tx or undefined.
|
|
98
98
|
*/
|
|
99
|
-
|
|
99
|
+
getTxByHashFromPool(txHash: TxHash): Tx | undefined;
|
|
100
|
+
/**
|
|
101
|
+
* Returns a transaction in the transaction pool by its hash, requesting it from the network if it is not found.
|
|
102
|
+
* @param txHash - Hash of tx to return.
|
|
103
|
+
* @returns A single tx or undefined.
|
|
104
|
+
*/
|
|
105
|
+
getTxByHash(txHash: TxHash): Promise<Tx | undefined>;
|
|
100
106
|
/**
|
|
101
107
|
* Returns whether the given tx hash is flagged as pending or mined.
|
|
102
108
|
* @param txHash - Hash of the tx to query.
|
|
@@ -136,10 +142,6 @@ export declare class P2PClient extends WithTracer implements P2P {
|
|
|
136
142
|
private p2pService;
|
|
137
143
|
private keepProvenTxsFor;
|
|
138
144
|
private log;
|
|
139
|
-
/** L2 block download to stay in sync with latest blocks. */
|
|
140
|
-
private latestBlockDownloader;
|
|
141
|
-
/** L2 block download to stay in sync with proven blocks. */
|
|
142
|
-
private provenBlockDownloader;
|
|
143
145
|
/** Property that indicates whether the client is running. */
|
|
144
146
|
private stopping;
|
|
145
147
|
/** The JS promise that will be running to keep the client's data in sync. Can be interrupted if the client is stopped. */
|
|
@@ -149,11 +151,13 @@ export declare class P2PClient extends WithTracer implements P2P {
|
|
|
149
151
|
private syncResolve?;
|
|
150
152
|
private latestBlockNumberAtStart;
|
|
151
153
|
private provenBlockNumberAtStart;
|
|
154
|
+
private synchedBlockHashes;
|
|
152
155
|
private synchedLatestBlockNumber;
|
|
153
156
|
private synchedProvenBlockNumber;
|
|
154
157
|
private txPool;
|
|
155
158
|
private attestationPool;
|
|
156
159
|
private epochProofQuotePool;
|
|
160
|
+
private blockStream;
|
|
157
161
|
/**
|
|
158
162
|
* In-memory P2P client constructor.
|
|
159
163
|
* @param store - The client's instance of the KV store.
|
|
@@ -164,6 +168,14 @@ export declare class P2PClient extends WithTracer implements P2P {
|
|
|
164
168
|
* @param log - A logger.
|
|
165
169
|
*/
|
|
166
170
|
constructor(store: AztecKVStore, l2BlockSource: L2BlockSource, mempools: MemPools, p2pService: P2PService, keepProvenTxsFor: number, telemetryClient: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
|
|
171
|
+
getL2BlockHash(number: number): Promise<string | undefined>;
|
|
172
|
+
getL2Tips(): Promise<L2Tips>;
|
|
173
|
+
handleBlockStreamEvent(event: L2BlockStreamEvent): Promise<void>;
|
|
174
|
+
/**
|
|
175
|
+
* Adds an EpochProofQuote to the pool and broadcasts an EpochProofQuote to other peers.
|
|
176
|
+
* @param quote - the quote to broadcast
|
|
177
|
+
*/
|
|
178
|
+
addEpochProofQuote(quote: EpochProofQuote): Promise<void>;
|
|
167
179
|
getEpochProofQuotes(epoch: bigint): Promise<EpochProofQuote[]>;
|
|
168
180
|
broadcastEpochProofQuote(quote: EpochProofQuote): void;
|
|
169
181
|
/**
|
|
@@ -209,7 +221,14 @@ export declare class P2PClient extends WithTracer implements P2P {
|
|
|
209
221
|
* @param txHash - Hash of the transaction to look for in the pool.
|
|
210
222
|
* @returns A single tx or undefined.
|
|
211
223
|
*/
|
|
212
|
-
|
|
224
|
+
getTxByHashFromPool(txHash: TxHash): Tx | undefined;
|
|
225
|
+
/**
|
|
226
|
+
* Returns a transaction in the transaction pool by its hash.
|
|
227
|
+
* If the transaction is not in the pool, it will be requested from the network.
|
|
228
|
+
* @param txHash - Hash of the transaction to look for in the pool.
|
|
229
|
+
* @returns A single tx or undefined.
|
|
230
|
+
*/
|
|
231
|
+
getTxByHash(txHash: TxHash): Promise<Tx | undefined>;
|
|
213
232
|
/**
|
|
214
233
|
* Verifies the 'tx' and, if valid, adds it to local tx pool and forwards it to other peers.
|
|
215
234
|
* @param tx - The tx to verify.
|
|
@@ -274,6 +293,11 @@ export declare class P2PClient extends WithTracer implements P2P {
|
|
|
274
293
|
* @returns Empty promise.
|
|
275
294
|
*/
|
|
276
295
|
private handleProvenL2Blocks;
|
|
296
|
+
/**
|
|
297
|
+
* Updates the tx pool after a chain prune.
|
|
298
|
+
* @param latestBlock - The block number the chain was pruned to.
|
|
299
|
+
*/
|
|
300
|
+
private handlePruneL2Blocks;
|
|
277
301
|
private startServiceIfSynched;
|
|
278
302
|
/**
|
|
279
303
|
* Method to set the value of the current state.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p2p_client.d.ts","sourceRoot":"","sources":["../../src/client/p2p_client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"p2p_client.d.ts","sourceRoot":"","sources":["../../src/client/p2p_client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,eAAe,EAEpB,KAAK,SAAS,EACd,KAAK,aAAa,EAElB,KAAK,kBAAkB,EACvB,KAAK,MAAM,EACX,KAAK,EAAE,EACP,KAAK,MAAM,EACZ,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,KAAK,YAAY,EAAsC,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAc,KAAK,eAAe,EAAE,UAAU,EAAa,MAAM,yBAAyB,CAAC;AAElG,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAK1C,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD;;GAEG;AACH,oBAAY,cAAc;IACxB,IAAI,IAAA;IACJ,QAAQ,IAAA;IACR,OAAO,IAAA;IACP,OAAO,IAAA;CACR;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,KAAK,EAAE,cAAc,CAAC;IACtB;;OAEG;IACH,eAAe,EAAE,SAAS,CAAC;CAC5B;AAED;;IAEI;AACJ,MAAM,WAAW,GAAG;IAClB;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAEjD;;;;;;OAMG;IACH,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAEtF;;;;;OAKG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAE/D;;;;OAIG;IACH,kBAAkB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1D;;;;;OAKG;IAGH,4BAA4B,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;IAE7G;;;;OAIG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;IAE5D;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAEzD;;;QAGI;IACJ,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9B;;;;QAII;IACJ,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7C;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,EAAE,EAAE,CAAC;IAElD;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS,CAAC;IAEpD;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;IAErD;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IAE7D;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC;IAEnB;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IAEnC;;OAEG;IACH,MAAM,IAAI,GAAG,GAAG,SAAS,CAAC;CAC3B;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,UAAW,YAAW,GAAG;;IAkCpD,OAAO,CAAC,aAAa;IAErB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,gBAAgB;IAExB,OAAO,CAAC,GAAG;IAtCb,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,CAAS;IAEzB,0HAA0H;IAC1H,OAAO,CAAC,cAAc,CAAiB;IAEvC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,WAAW,CAAC,CAAyB;IAC7C,OAAO,CAAC,wBAAwB,CAAM;IACtC,OAAO,CAAC,wBAAwB,CAAM;IAEtC,OAAO,CAAC,kBAAkB,CAA2B;IACrD,OAAO,CAAC,wBAAwB,CAAyB;IACzD,OAAO,CAAC,wBAAwB,CAAyB;IAEzD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,mBAAmB,CAAsB;IAEjD,OAAO,CAAC,WAAW,CAAC;IAEpB;;;;;;;;OAQG;gBAED,KAAK,EAAE,YAAY,EACX,aAAa,EAAE,aAAa,EACpC,QAAQ,EAAE,QAAQ,EACV,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,MAAM,EAChC,eAAe,EAAE,eAAe,EACxB,GAAG,yCAAiC;IAoBvC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI3D,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IA6BtB,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC7E;;;OAGG;IACH,kBAAkB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzD,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAI9D,wBAAwB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAMtD;;;OAGG;IACU,KAAK;IAuClB;;;OAGG;IACU,IAAI;IAkBV,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAKhD,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAMrF,4BAA4B,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,GAAG,IAAI;IAInH;;;;;;;;OAQG;IACI,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;IAKlE;;;;;;;;OAQG;IACU,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAWrE;;;OAGG;IACI,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,EAAE,EAAE;IAmBxD;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS;IAInD;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAQpD;;;;QAII;IACS,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1C;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS;IAI5D,MAAM,IAAI,GAAG,GAAG,SAAS;IAIhC;;;;;QAKI;IACS,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzD;;;OAGG;IACI,OAAO;IAId;;;OAGG;IACI,uBAAuB;IAI9B;;;OAGG;IACI,uBAAuB;IAI9B;;;OAGG;IACU,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;IAY/C;;;;OAIG;YACW,wBAAwB;IAOtC;;;;OAIG;YACW,mBAAmB;IAQjC;;;;OAIG;YACW,oBAAoB;IAalC;;;;OAIG;YACW,oBAAoB;IA2BlC;;;OAGG;YACW,mBAAmB;YAoCnB,qBAAqB;IAenC;;;OAGG;IACH,OAAO,CAAC,eAAe;YAKT,gBAAgB;CAW/B"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { __classPrivateFieldGet, __esDecorate, __runInitializers } from "tslib";
|
|
2
|
-
import {
|
|
2
|
+
import { L2BlockStream, } from '@aztec/circuit-types';
|
|
3
3
|
import { INITIAL_L2_BLOCK_NUM } from '@aztec/circuits.js/constants';
|
|
4
4
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
5
5
|
import { Attributes, WithTracer, trackSpan } from '@aztec/telemetry-client';
|
|
6
|
-
import {
|
|
6
|
+
import { getP2PConfigFromEnv } from '../config.js';
|
|
7
7
|
import { TX_REQ_PROTOCOL } from '../service/reqresp/interface.js';
|
|
8
8
|
/**
|
|
9
9
|
* Enum defining the possible states of the p2p client.
|
|
@@ -47,25 +47,85 @@ let P2PClient = (() => {
|
|
|
47
47
|
this.syncResolve = undefined;
|
|
48
48
|
this.latestBlockNumberAtStart = -1;
|
|
49
49
|
this.provenBlockNumberAtStart = -1;
|
|
50
|
-
const { blockCheckIntervalMS
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
this.
|
|
56
|
-
this.provenBlockDownloader = new L2BlockDownloader(l2BlockSource, { ...l2DownloaderOpts, proven: true });
|
|
50
|
+
const { blockCheckIntervalMS, blockRequestBatchSize } = getP2PConfigFromEnv();
|
|
51
|
+
this.blockStream = new L2BlockStream(l2BlockSource, this, this, {
|
|
52
|
+
batchSize: blockRequestBatchSize,
|
|
53
|
+
pollIntervalMS: blockCheckIntervalMS,
|
|
54
|
+
});
|
|
55
|
+
this.synchedBlockHashes = store.openMap('p2p_pool_block_hashes');
|
|
57
56
|
this.synchedLatestBlockNumber = store.openSingleton('p2p_pool_last_l2_block');
|
|
58
57
|
this.synchedProvenBlockNumber = store.openSingleton('p2p_pool_last_proven_l2_block');
|
|
59
58
|
this.txPool = mempools.txPool;
|
|
60
59
|
this.attestationPool = mempools.attestationPool;
|
|
61
60
|
this.epochProofQuotePool = mempools.epochProofQuotePool;
|
|
62
61
|
}
|
|
62
|
+
getL2BlockHash(number) {
|
|
63
|
+
return Promise.resolve(this.synchedBlockHashes.get(number));
|
|
64
|
+
}
|
|
65
|
+
getL2Tips() {
|
|
66
|
+
const latestBlockNumber = this.getSyncedLatestBlockNum();
|
|
67
|
+
let latestBlockHash;
|
|
68
|
+
const provenBlockNumber = this.getSyncedProvenBlockNum();
|
|
69
|
+
let provenBlockHash;
|
|
70
|
+
if (latestBlockNumber > 0) {
|
|
71
|
+
latestBlockHash = this.synchedBlockHashes.get(latestBlockNumber);
|
|
72
|
+
if (typeof latestBlockHash === 'undefined') {
|
|
73
|
+
this.log.warn(`Block hash for latest block ${latestBlockNumber} not found`);
|
|
74
|
+
throw new Error();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (provenBlockNumber > 0) {
|
|
78
|
+
provenBlockHash = this.synchedBlockHashes.get(provenBlockNumber);
|
|
79
|
+
if (typeof provenBlockHash === 'undefined') {
|
|
80
|
+
this.log.warn(`Block hash for proven block ${provenBlockNumber} not found`);
|
|
81
|
+
throw new Error();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return Promise.resolve({
|
|
85
|
+
latest: { hash: latestBlockHash, number: latestBlockNumber },
|
|
86
|
+
proven: { hash: provenBlockHash, number: provenBlockNumber },
|
|
87
|
+
finalized: { hash: provenBlockHash, number: provenBlockNumber },
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
async handleBlockStreamEvent(event) {
|
|
91
|
+
this.log.debug(`Handling block stream event ${event.type}`);
|
|
92
|
+
switch (event.type) {
|
|
93
|
+
case 'blocks-added':
|
|
94
|
+
await this.handleLatestL2Blocks(event.blocks);
|
|
95
|
+
break;
|
|
96
|
+
case 'chain-finalized':
|
|
97
|
+
// TODO (alexg): I think we can prune the block hashes map here
|
|
98
|
+
break;
|
|
99
|
+
case 'chain-proven': {
|
|
100
|
+
const from = this.getSyncedProvenBlockNum() + 1;
|
|
101
|
+
const limit = event.blockNumber - from + 1;
|
|
102
|
+
await this.handleProvenL2Blocks(await this.l2BlockSource.getBlocks(from, limit));
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
case 'chain-pruned':
|
|
106
|
+
await this.handlePruneL2Blocks(event.blockNumber);
|
|
107
|
+
break;
|
|
108
|
+
default: {
|
|
109
|
+
const _ = event;
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Adds an EpochProofQuote to the pool and broadcasts an EpochProofQuote to other peers.
|
|
116
|
+
* @param quote - the quote to broadcast
|
|
117
|
+
*/
|
|
118
|
+
addEpochProofQuote(quote) {
|
|
119
|
+
this.epochProofQuotePool.addQuote(quote);
|
|
120
|
+
this.broadcastEpochProofQuote(quote);
|
|
121
|
+
return Promise.resolve();
|
|
122
|
+
}
|
|
63
123
|
getEpochProofQuotes(epoch) {
|
|
64
124
|
return Promise.resolve(this.epochProofQuotePool.getQuotes(epoch));
|
|
65
125
|
}
|
|
66
126
|
broadcastEpochProofQuote(quote) {
|
|
67
127
|
__classPrivateFieldGet(this, _P2PClient_instances, "m", _P2PClient_assertIsReady).call(this);
|
|
68
|
-
this.
|
|
128
|
+
this.log.info('Broadcasting epoch proof quote', quote.toViemArgs());
|
|
69
129
|
return this.p2pService.propagate(quote);
|
|
70
130
|
}
|
|
71
131
|
/**
|
|
@@ -101,20 +161,7 @@ let P2PClient = (() => {
|
|
|
101
161
|
}
|
|
102
162
|
// publish any txs in TxPool after its doing initial sync
|
|
103
163
|
this.syncPromise = this.syncPromise.then(() => this.publishStoredTxs());
|
|
104
|
-
|
|
105
|
-
const processLatest = async () => {
|
|
106
|
-
while (!this.stopping) {
|
|
107
|
-
await this.latestBlockDownloader.getBlocks(1).then(this.handleLatestL2Blocks.bind(this));
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
const processProven = async () => {
|
|
111
|
-
while (!this.stopping) {
|
|
112
|
-
await this.provenBlockDownloader.getBlocks(1).then(this.handleProvenL2Blocks.bind(this));
|
|
113
|
-
}
|
|
114
|
-
};
|
|
115
|
-
this.runningPromise = Promise.all([processLatest(), processProven()]).then(() => { });
|
|
116
|
-
this.latestBlockDownloader.start(syncedLatestBlock);
|
|
117
|
-
this.provenBlockDownloader.start(syncedLatestBlock);
|
|
164
|
+
this.blockStream.start();
|
|
118
165
|
this.log.verbose(`Started block downloader from block ${syncedLatestBlock}`);
|
|
119
166
|
return this.syncPromise;
|
|
120
167
|
}
|
|
@@ -127,8 +174,7 @@ let P2PClient = (() => {
|
|
|
127
174
|
this.stopping = true;
|
|
128
175
|
await this.p2pService.stop();
|
|
129
176
|
this.log.debug('Stopped p2p service');
|
|
130
|
-
await this.
|
|
131
|
-
await this.provenBlockDownloader.stop();
|
|
177
|
+
await this.blockStream.stop();
|
|
132
178
|
this.log.debug('Stopped block downloader');
|
|
133
179
|
await this.runningPromise;
|
|
134
180
|
this.setCurrentState(P2PClientState.STOPPED);
|
|
@@ -187,7 +233,7 @@ let P2PClient = (() => {
|
|
|
187
233
|
else if (filter === 'mined') {
|
|
188
234
|
return this.txPool
|
|
189
235
|
.getMinedTxHashes()
|
|
190
|
-
.map(txHash => this.txPool.getTxByHash(txHash))
|
|
236
|
+
.map(([txHash]) => this.txPool.getTxByHash(txHash))
|
|
191
237
|
.filter((tx) => !!tx);
|
|
192
238
|
}
|
|
193
239
|
else if (filter === 'pending') {
|
|
@@ -206,9 +252,22 @@ let P2PClient = (() => {
|
|
|
206
252
|
* @param txHash - Hash of the transaction to look for in the pool.
|
|
207
253
|
* @returns A single tx or undefined.
|
|
208
254
|
*/
|
|
209
|
-
|
|
255
|
+
getTxByHashFromPool(txHash) {
|
|
210
256
|
return this.txPool.getTxByHash(txHash);
|
|
211
257
|
}
|
|
258
|
+
/**
|
|
259
|
+
* Returns a transaction in the transaction pool by its hash.
|
|
260
|
+
* If the transaction is not in the pool, it will be requested from the network.
|
|
261
|
+
* @param txHash - Hash of the transaction to look for in the pool.
|
|
262
|
+
* @returns A single tx or undefined.
|
|
263
|
+
*/
|
|
264
|
+
getTxByHash(txHash) {
|
|
265
|
+
const tx = this.txPool.getTxByHash(txHash);
|
|
266
|
+
if (tx) {
|
|
267
|
+
return Promise.resolve(tx);
|
|
268
|
+
}
|
|
269
|
+
return this.requestTxByHash(txHash);
|
|
270
|
+
}
|
|
212
271
|
/**
|
|
213
272
|
* Verifies the 'tx' and, if valid, adds it to local tx pool and forwards it to other peers.
|
|
214
273
|
* @param tx - The tx to verify.
|
|
@@ -283,7 +342,7 @@ let P2PClient = (() => {
|
|
|
283
342
|
async markTxsAsMinedFromBlocks(blocks) {
|
|
284
343
|
for (const block of blocks) {
|
|
285
344
|
const txHashes = block.body.txEffects.map(txEffect => txEffect.txHash);
|
|
286
|
-
await this.txPool.markAsMined(txHashes);
|
|
345
|
+
await this.txPool.markAsMined(txHashes, block.number);
|
|
287
346
|
}
|
|
288
347
|
}
|
|
289
348
|
/**
|
|
@@ -309,6 +368,7 @@ let P2PClient = (() => {
|
|
|
309
368
|
}
|
|
310
369
|
await this.markTxsAsMinedFromBlocks(blocks);
|
|
311
370
|
const lastBlockNum = blocks[blocks.length - 1].number;
|
|
371
|
+
await Promise.all(blocks.map(block => this.synchedBlockHashes.set(block.number, block.hash().toString())));
|
|
312
372
|
await this.synchedLatestBlockNumber.set(lastBlockNum);
|
|
313
373
|
this.log.debug(`Synched to latest block ${lastBlockNum}`);
|
|
314
374
|
await this.startServiceIfSynched();
|
|
@@ -342,6 +402,36 @@ let P2PClient = (() => {
|
|
|
342
402
|
}
|
|
343
403
|
await this.startServiceIfSynched();
|
|
344
404
|
}
|
|
405
|
+
/**
|
|
406
|
+
* Updates the tx pool after a chain prune.
|
|
407
|
+
* @param latestBlock - The block number the chain was pruned to.
|
|
408
|
+
*/
|
|
409
|
+
async handlePruneL2Blocks(latestBlock) {
|
|
410
|
+
const txsToDelete = [];
|
|
411
|
+
for (const tx of this.txPool.getAllTxs()) {
|
|
412
|
+
// every tx that's been generated against a block that has now been pruned is no longer valid
|
|
413
|
+
if (tx.data.constants.historicalHeader.globalVariables.blockNumber.toNumber() > latestBlock) {
|
|
414
|
+
txsToDelete.push(tx.getTxHash());
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
this.log.info(`Detected chain prune. Removing invalid txs count=${txsToDelete.length} newLatestBlock=${latestBlock} previousLatestBlock=${this.getSyncedLatestBlockNum()}`);
|
|
418
|
+
// delete invalid txs (both pending and mined)
|
|
419
|
+
await this.txPool.deleteTxs(txsToDelete);
|
|
420
|
+
// everything left in the mined set was built against a block on the proven chain so its still valid
|
|
421
|
+
// move back to pending the txs that were reorged out of the chain
|
|
422
|
+
// NOTE: we can't move _all_ txs back to pending because the tx pool could keep hold of mined txs for longer
|
|
423
|
+
// (see this.keepProvenTxsFor)
|
|
424
|
+
const txsToMoveToPending = [];
|
|
425
|
+
for (const [txHash, blockNumber] of this.txPool.getMinedTxHashes()) {
|
|
426
|
+
if (blockNumber > latestBlock) {
|
|
427
|
+
txsToMoveToPending.push(txHash);
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
this.log.info(`Moving ${txsToMoveToPending.length} mined txs back to pending`);
|
|
431
|
+
await this.txPool.markMinedAsPending(txsToMoveToPending);
|
|
432
|
+
await this.synchedLatestBlockNumber.set(latestBlock);
|
|
433
|
+
// no need to update block hashes, as they will be updated as new blocks are added
|
|
434
|
+
}
|
|
345
435
|
async startServiceIfSynched() {
|
|
346
436
|
if (this.currentState === P2PClientState.SYNCHING &&
|
|
347
437
|
this.getSyncedLatestBlockNum() >= this.latestBlockNumberAtStart &&
|
|
@@ -375,6 +465,7 @@ let P2PClient = (() => {
|
|
|
375
465
|
},
|
|
376
466
|
_P2PClient_instances = new WeakSet(),
|
|
377
467
|
_P2PClient_assertIsReady = function _P2PClient_assertIsReady() {
|
|
468
|
+
// this.log.info('Checking if p2p client is ready, current state: ', this.currentState);
|
|
378
469
|
if (!this.isReady()) {
|
|
379
470
|
throw new Error('P2P client not ready');
|
|
380
471
|
}
|
|
@@ -393,4 +484,4 @@ let P2PClient = (() => {
|
|
|
393
484
|
_a;
|
|
394
485
|
})();
|
|
395
486
|
export { P2PClient };
|
|
396
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwX2NsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvcDJwX2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUtMLGlCQUFpQixHQUtsQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxVQUFVLEVBQXdCLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUlsRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFLbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBR2xFOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksY0FLWDtBQUxELFdBQVksY0FBYztJQUN4QixtREFBSSxDQUFBO0lBQ0osMkRBQVEsQ0FBQTtJQUNSLHlEQUFPLENBQUE7SUFDUCx5REFBTyxDQUFBO0FBQ1QsQ0FBQyxFQUxXLGNBQWMsS0FBZCxjQUFjLFFBS3pCO0FBd0lEOztHQUVHO0lBQ1UsU0FBUzs7c0JBQVMsVUFBVTs7O3NCQUE1QixTQUFVLFNBQVEsV0FBVTtZQTBCdkM7Ozs7Ozs7O2VBUUc7WUFDSCxZQUNFLEtBQW1CLEVBQ1gsYUFBNEIsRUFDcEMsUUFBa0IsRUFDVixVQUFzQixFQUN0QixnQkFBd0IsRUFDaEMsZUFBZ0MsRUFDeEIsTUFBTSxpQkFBaUIsQ0FBQyxXQUFXLENBQUM7Z0JBRTVDLEtBQUssQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDLENBQUM7O2dCQVA1QixrQkFBYSxJQXJDWixtREFBUyxFQXFDVixhQUFhLEVBQWU7Z0JBRTVCLGVBQVUsR0FBVixVQUFVLENBQVk7Z0JBQ3RCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtnQkFFeEIsUUFBRyxH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
|
|
487
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicDJwX2NsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvcDJwX2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQU9MLGFBQWEsR0FLZCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxVQUFVLEVBQXdCLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUlsRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFLbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBR2xFOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksY0FLWDtBQUxELFdBQVksY0FBYztJQUN4QixtREFBSSxDQUFBO0lBQ0osMkRBQVEsQ0FBQTtJQUNSLHlEQUFPLENBQUE7SUFDUCx5REFBTyxDQUFBO0FBQ1QsQ0FBQyxFQUxXLGNBQWMsS0FBZCxjQUFjLFFBS3pCO0FBK0lEOztHQUVHO0lBQ1UsU0FBUzs7c0JBQVMsVUFBVTs7O3NCQUE1QixTQUFVLFNBQVEsV0FBVTtZQXVCdkM7Ozs7Ozs7O2VBUUc7WUFDSCxZQUNFLEtBQW1CLEVBQ1gsYUFBNEIsRUFDcEMsUUFBa0IsRUFDVixVQUFzQixFQUN0QixnQkFBd0IsRUFDaEMsZUFBZ0MsRUFDeEIsTUFBTSxpQkFBaUIsQ0FBQyxXQUFXLENBQUM7Z0JBRTVDLEtBQUssQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDLENBQUM7O2dCQVA1QixrQkFBYSxJQWxDWixtREFBUyxFQWtDVixhQUFhLEVBQWU7Z0JBRTVCLGVBQVUsR0FBVixVQUFVLENBQVk7Z0JBQ3RCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtnQkFFeEIsUUFBRyxHQUFI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
|
package/dest/config.d.ts
CHANGED
|
@@ -12,6 +12,10 @@ export interface P2PConfig extends P2PReqRespConfig {
|
|
|
12
12
|
* The frequency in which to check for new L2 blocks.
|
|
13
13
|
*/
|
|
14
14
|
blockCheckIntervalMS: number;
|
|
15
|
+
/**
|
|
16
|
+
* The number of blocks to fetch in a single batch.
|
|
17
|
+
*/
|
|
18
|
+
blockRequestBatchSize: number;
|
|
15
19
|
/**
|
|
16
20
|
* The frequency in which to check for new peers.
|
|
17
21
|
*/
|
|
@@ -120,7 +124,7 @@ export declare const p2pConfigMappings: ConfigMappingsType<P2PConfig>;
|
|
|
120
124
|
* Gets the config values for p2p client from environment variables.
|
|
121
125
|
* @returns The config values for p2p client.
|
|
122
126
|
*/
|
|
123
|
-
export declare function
|
|
127
|
+
export declare function getP2PConfigFromEnv(): P2PConfig;
|
|
124
128
|
export declare function getP2PDefaultConfig(): P2PConfig;
|
|
125
129
|
/**
|
|
126
130
|
* Required P2P config values for a bootstrap node.
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAMxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,6BAA6B,CAAC;AAE9F;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,gBAAgB;IACjD;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,oBAAoB,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IAEzB;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB,+HAA+H;IAC/H,sBAAsB,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,4BAA4B,EAAE,MAAM,CAAC;IAErC;;OAEG;IACH,sBAAsB,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,yCAAyC,EAAE,MAAM,CAAC;IAElD;;OAEG;IACH,wCAAwC,EAAE,MAAM,CAAC;IAEjD;;OAEG;IACH,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAE5B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAMxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,6BAA6B,CAAC;AAE9F;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,gBAAgB;IACjD;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,oBAAoB,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IAEzB;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB,+HAA+H;IAC/H,sBAAsB,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,4BAA4B,EAAE,MAAM,CAAC;IAErC;;OAEG;IACH,sBAAsB,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,yCAAyC,EAAE,MAAM,CAAC;IAElD;;OAEG;IACH,wCAAwC,EAAE,MAAM,CAAC;IAEjD;;OAEG;IACH,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAE5B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,SAAS,CAqJ3D,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,SAAS,CAE/C;AAED,wBAAgB,mBAAmB,IAAI,SAAS,CAE/C;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,SAAS,EACT,oBAAoB,GAAG,kBAAkB,GAAG,cAAc,GAAG,cAAc,CAC5E,GACC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAUhD,eAAO,MAAM,sBAAsB,uIAA4D,CAAC"}
|
package/dest/config.js
CHANGED
|
@@ -138,13 +138,18 @@ export const p2pConfigMappings = {
|
|
|
138
138
|
description: 'The chain id of the L1 chain.',
|
|
139
139
|
...numberConfigHelper(31337),
|
|
140
140
|
},
|
|
141
|
+
blockRequestBatchSize: {
|
|
142
|
+
env: 'P2P_BLOCK_REQUEST_BATCH_SIZE',
|
|
143
|
+
description: 'The number of blocks to fetch in a single batch.',
|
|
144
|
+
...numberConfigHelper(20),
|
|
145
|
+
},
|
|
141
146
|
...p2pReqRespConfigMappings,
|
|
142
147
|
};
|
|
143
148
|
/**
|
|
144
149
|
* Gets the config values for p2p client from environment variables.
|
|
145
150
|
* @returns The config values for p2p client.
|
|
146
151
|
*/
|
|
147
|
-
export function
|
|
152
|
+
export function getP2PConfigFromEnv() {
|
|
148
153
|
return getConfigFromMappings(p2pConfigMappings);
|
|
149
154
|
}
|
|
150
155
|
export function getP2PDefaultConfig() {
|
|
@@ -158,4 +163,4 @@ const bootnodeConfigKeys = [
|
|
|
158
163
|
'udpListenAddress',
|
|
159
164
|
];
|
|
160
165
|
export const bootnodeConfigMappings = pickConfigMappings(p2pConfigMappings, bootnodeConfigKeys);
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGtCQUFrQixHQUNuQixNQUFNLDBCQUEwQixDQUFDO0FBRWxDLE9BQU8sRUFBeUIsd0JBQXdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQXNKOUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQWtDO0lBQzlELFVBQVUsRUFBRTtRQUNWLEdBQUcsRUFBRSxhQUFhO1FBQ2xCLFdBQVcsRUFBRSwrREFBK0Q7UUFDNUUsR0FBRyxtQkFBbUIsRUFBRTtLQUN6QjtJQUNELG9CQUFvQixFQUFFO1FBQ3BCLEdBQUcsRUFBRSw2QkFBNkI7UUFDbEMsV0FBVyxFQUFFLG9EQUFvRDtRQUNqRSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQztLQUMzQjtJQUNELG1CQUFtQixFQUFFO1FBQ25CLEdBQUcsRUFBRSw0QkFBNEI7UUFDakMsV0FBVyxFQUFFLGdEQUFnRDtRQUM3RCxHQUFHLGtCQUFrQixDQUFDLElBQUssQ0FBQztLQUM3QjtJQUNELFdBQVcsRUFBRTtRQUNYLEdBQUcsRUFBRSxtQkFBbUI7UUFDeEIsV0FBVyxFQUFFLHNDQUFzQztRQUNuRCxHQUFHLGtCQUFrQixDQUFDLElBQUssQ0FBQztLQUM3QjtJQUNELGdCQUFnQixFQUFFO1FBQ2hCLEdBQUcsRUFBRSxxQkFBcUI7UUFDMUIsWUFBWSxFQUFFLGVBQWU7UUFDN0IsV0FBVyxFQUFFLDBEQUEwRDtLQUN4RTtJQUNELGdCQUFnQixFQUFFO1FBQ2hCLEdBQUcsRUFBRSxxQkFBcUI7UUFDMUIsWUFBWSxFQUFFLGVBQWU7UUFDN0IsV0FBVyxFQUFFLDBEQUEwRDtLQUN4RTtJQUNELGtCQUFrQixFQUFFO1FBQ2xCLEdBQUcsRUFBRSx1QkFBdUI7UUFDNUIsV0FB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
|
|
@@ -14,9 +14,10 @@ export declare class AztecKVTxPool implements TxPool {
|
|
|
14
14
|
* @param log - A logger.
|
|
15
15
|
*/
|
|
16
16
|
constructor(store: AztecKVStore, telemetry: TelemetryClient, log?: Logger);
|
|
17
|
-
markAsMined(txHashes: TxHash[]): Promise<void>;
|
|
17
|
+
markAsMined(txHashes: TxHash[], blockNumber: number): Promise<void>;
|
|
18
|
+
markMinedAsPending(txHashes: TxHash[]): Promise<void>;
|
|
18
19
|
getPendingTxHashes(): TxHash[];
|
|
19
|
-
getMinedTxHashes(): TxHash[];
|
|
20
|
+
getMinedTxHashes(): [TxHash, number][];
|
|
20
21
|
getTxStatus(txHash: TxHash): 'pending' | 'mined' | undefined;
|
|
21
22
|
/**
|
|
22
23
|
* Checks if a transaction exists in the pool and returns it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aztec_kv_tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/aztec_kv_tx_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,KAAK,MAAM,EAAqB,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,KAAK,YAAY,EAAgC,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;GAEG;AACH,qBAAa,aAAc,YAAW,MAAM;;IAe1C;;;;OAIG;gBACS,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,SAAqC;IAU9F,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"aztec_kv_tx_pool.d.ts","sourceRoot":"","sources":["../../../src/mem_pools/tx_pool/aztec_kv_tx_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,KAAK,MAAM,EAAqB,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,KAAK,YAAY,EAAgC,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;GAEG;AACH,qBAAa,aAAc,YAAW,MAAM;;IAe1C;;;;OAIG;gBACS,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,SAAqC;IAU9F,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBnE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BrD,kBAAkB,IAAI,MAAM,EAAE;IAI9B,gBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;IAOtC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS;IAWnE;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS;IAKlD;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBvC;;;;OAIG;IACI,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBnD;;;OAGG;IACI,SAAS,IAAI,EAAE,EAAE;IAIxB;;;OAGG;IACI,cAAc,IAAI,MAAM,EAAE;CAGlC"}
|