@aztec/p2p 0.86.0-starknet.1 → 0.87.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/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/client/factory.d.ts +1 -1
- package/dest/client/factory.d.ts.map +1 -1
- package/dest/client/factory.js +11 -13
- package/dest/client/interface.d.ts +10 -1
- package/dest/client/interface.d.ts.map +1 -1
- package/dest/client/p2p_client.d.ts +18 -6
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +103 -53
- package/dest/config.d.ts +5 -6
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +6 -11
- package/dest/enr/generate-enr.d.ts +7 -0
- package/dest/enr/generate-enr.d.ts.map +1 -1
- package/dest/enr/generate-enr.js +23 -2
- package/dest/mem_pools/attestation_pool/memory_attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/mocks.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/aztec_kv_tx_pool.d.ts +3 -0
- 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 +44 -14
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts +2 -0
- package/dest/mem_pools/tx_pool/memory_tx_pool.d.ts.map +1 -1
- package/dest/mem_pools/tx_pool/memory_tx_pool.js +6 -0
- package/dest/mem_pools/tx_pool/tx_pool.d.ts +7 -0
- 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 +13 -5
- package/dest/msg_validators/tx_validator/block_header_validator.js +1 -1
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/data_validator.js +15 -14
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts +0 -2
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/double_spend_validator.js +2 -2
- package/dest/msg_validators/tx_validator/factory.d.ts +14 -0
- package/dest/msg_validators/tx_validator/factory.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/factory.js +62 -0
- package/dest/msg_validators/tx_validator/gas_validator.js +3 -3
- package/dest/msg_validators/tx_validator/metadata_validator.js +5 -5
- package/dest/msg_validators/tx_validator/phases_validator.d.ts.map +1 -1
- package/dest/msg_validators/tx_validator/phases_validator.js +1 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.js +1 -1
- package/dest/services/discv5/discV5_service.d.ts +2 -2
- package/dest/services/discv5/discV5_service.d.ts.map +1 -1
- package/dest/services/discv5/discV5_service.js +9 -13
- package/dest/services/dummy_service.d.ts +3 -3
- package/dest/services/dummy_service.d.ts.map +1 -1
- package/dest/services/dummy_service.js +6 -1
- package/dest/services/encoding.d.ts +1 -3
- package/dest/services/encoding.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.d.ts +4 -2
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -1
- package/dest/services/libp2p/libp2p_service.js +87 -88
- package/dest/services/peer-manager/metrics.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.d.ts +1 -1
- package/dest/services/peer-manager/peer_manager.d.ts.map +1 -1
- package/dest/services/peer-manager/peer_manager.js +11 -2
- package/dest/services/reqresp/connection-sampler/batch_connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts +2 -2
- package/dest/services/reqresp/connection-sampler/connection_sampler.d.ts.map +1 -1
- package/dest/services/reqresp/connection-sampler/connection_sampler.js +41 -21
- package/dest/services/reqresp/interface.d.ts +1 -3
- package/dest/services/reqresp/interface.d.ts.map +1 -1
- package/dest/services/reqresp/metrics.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/goodbye.d.ts +0 -2
- package/dest/services/reqresp/protocols/goodbye.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/goodbye.js +1 -1
- package/dest/services/reqresp/protocols/ping.d.ts +0 -2
- package/dest/services/reqresp/protocols/ping.d.ts.map +1 -1
- package/dest/services/reqresp/protocols/status.d.ts +0 -2
- package/dest/services/reqresp/protocols/status.d.ts.map +1 -1
- package/dest/services/reqresp/rate-limiter/rate_limiter.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.d.ts +1 -3
- package/dest/services/reqresp/reqresp.d.ts.map +1 -1
- package/dest/services/reqresp/reqresp.js +2 -2
- package/dest/services/service.d.ts +3 -2
- package/dest/services/service.d.ts.map +1 -1
- package/dest/test-helpers/get-ports.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.d.ts.map +1 -1
- package/dest/test-helpers/make-test-p2p-clients.js +2 -2
- package/dest/test-helpers/reqresp-nodes.d.ts.map +1 -1
- package/dest/test-helpers/reqresp-nodes.js +1 -1
- package/dest/testbench/p2p_client_testbench_worker.js +9 -6
- package/dest/testbench/testbench.js +1 -1
- package/dest/testbench/worker_client_manager.d.ts +0 -1
- package/dest/testbench/worker_client_manager.d.ts.map +1 -1
- package/dest/testbench/worker_client_manager.js +2 -2
- package/dest/types/index.d.ts +1 -0
- package/dest/types/index.d.ts.map +1 -1
- package/dest/types/index.js +1 -0
- package/dest/versioning.d.ts +2 -2
- package/dest/versioning.d.ts.map +1 -1
- package/dest/versioning.js +6 -1
- package/package.json +15 -15
- package/src/bootstrap/bootstrap.ts +1 -1
- package/src/client/factory.ts +33 -32
- package/src/client/interface.ts +13 -1
- package/src/client/p2p_client.ts +129 -55
- package/src/config.ts +11 -18
- package/src/enr/generate-enr.ts +33 -3
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +2 -2
- package/src/mem_pools/attestation_pool/memory_attestation_pool.ts +4 -1
- package/src/mem_pools/tx_pool/aztec_kv_tx_pool.ts +72 -34
- package/src/mem_pools/tx_pool/memory_tx_pool.ts +12 -1
- package/src/mem_pools/tx_pool/tx_pool.ts +9 -0
- package/src/mem_pools/tx_pool/tx_pool_test_suite.ts +9 -3
- package/src/msg_validators/tx_validator/block_header_validator.ts +1 -1
- package/src/msg_validators/tx_validator/data_validator.ts +24 -18
- package/src/msg_validators/tx_validator/double_spend_validator.ts +2 -2
- package/src/msg_validators/tx_validator/factory.ts +94 -0
- package/src/msg_validators/tx_validator/gas_validator.ts +3 -3
- package/src/msg_validators/tx_validator/metadata_validator.ts +5 -5
- package/src/msg_validators/tx_validator/phases_validator.ts +6 -2
- package/src/msg_validators/tx_validator/tx_proof_validator.ts +1 -1
- package/src/services/discv5/discV5_service.ts +14 -12
- package/src/services/dummy_service.ts +8 -2
- package/src/services/libp2p/libp2p_service.ts +95 -107
- package/src/services/peer-manager/metrics.ts +4 -1
- package/src/services/peer-manager/peer_manager.ts +18 -1
- package/src/services/reqresp/connection-sampler/batch_connection_sampler.ts +5 -1
- package/src/services/reqresp/connection-sampler/connection_sampler.ts +42 -19
- package/src/services/reqresp/metrics.ts +4 -1
- package/src/services/reqresp/protocols/goodbye.ts +1 -1
- package/src/services/reqresp/rate-limiter/rate_limiter.ts +4 -1
- package/src/services/reqresp/reqresp.ts +2 -1
- package/src/services/service.ts +4 -1
- package/src/test-helpers/make-test-p2p-clients.ts +2 -1
- package/src/test-helpers/reqresp-nodes.ts +1 -1
- package/src/testbench/p2p_client_testbench_worker.ts +8 -4
- package/src/testbench/testbench.ts +1 -1
- package/src/testbench/worker_client_manager.ts +2 -2
- package/src/types/index.ts +1 -0
- package/src/versioning.ts +8 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/bootstrap/bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAInF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAInD;;GAEG;AACH,qBAAa,aAAc,YAAW,eAAe;IAKjD,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IANhB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/bootstrap/bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAInF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAInD;;GAEG;AACH,qBAAa,aAAc,YAAW,eAAe;IAKjD,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IANhB,OAAO,CAAC,IAAI,CAAC,CAAiC;IAC9C,OAAO,CAAC,MAAM,CAAC,CAAS;gBAGd,KAAK,EAAE,iBAAiB,EACxB,SAAS,EAAE,eAAe,EAC1B,MAAM,yCAAgC;IAGhD;;;;OAIG;IACU,KAAK,CAAC,MAAM,EAAE,cAAc;IAwEzC;;;OAGG;IACU,IAAI;IAOjB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,YAAY;IAMpB;;;OAGG;IACI,SAAS;IAKT,MAAM;IAKN,aAAa;IAKb,eAAe;CAIvB"}
|
package/dest/client/factory.d.ts
CHANGED
|
@@ -20,6 +20,6 @@ type P2PClientDeps<T extends P2PClientType> = {
|
|
|
20
20
|
export declare const P2P_STORE_NAME = "p2p";
|
|
21
21
|
export declare const P2P_ARCHIVE_STORE_NAME = "p2p-archive";
|
|
22
22
|
export declare const P2P_PEER_STORE_NAME = "p2p-peers";
|
|
23
|
-
export declare const createP2PClient: <T extends P2PClientType>(clientType: T, _config: P2PConfig & DataStoreConfig, archiver: L2BlockSource & ContractDataSource, proofVerifier: ClientProtocolCircuitVerifier, worldStateSynchronizer: WorldStateSynchronizer, epochCache: EpochCacheInterface, telemetry?: TelemetryClient, deps?: P2PClientDeps<T>) => Promise<P2PClient<T>>;
|
|
23
|
+
export declare const createP2PClient: <T extends P2PClientType>(clientType: T, _config: P2PConfig & DataStoreConfig, archiver: L2BlockSource & ContractDataSource, proofVerifier: ClientProtocolCircuitVerifier, worldStateSynchronizer: WorldStateSynchronizer, epochCache: EpochCacheInterface, packageVersion: string, telemetry?: TelemetryClient, deps?: P2PClientDeps<T>) => Promise<P2PClient<T>>;
|
|
24
24
|
export {};
|
|
25
25
|
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/client/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC7G,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAC;AAGzF,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAM3E,KAAK,aAAa,CAAC,CAAC,SAAS,aAAa,IAAI;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,eAAe,CAAC,EAAE,CAAC,SAAS,aAAa,CAAC,IAAI,GAAG,eAAe,GAAG,SAAS,CAAC;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,cAAc,QAAQ,CAAC;AACpC,eAAO,MAAM,sBAAsB,gBAAgB,CAAC;AACpD,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAC/C,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/client/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC7G,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAC;AAGzF,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAM3E,KAAK,aAAa,CAAC,CAAC,SAAS,aAAa,IAAI;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,eAAe,CAAC,EAAE,CAAC,SAAS,aAAa,CAAC,IAAI,GAAG,eAAe,GAAG,SAAS,CAAC;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,cAAc,QAAQ,CAAC;AACpC,eAAO,MAAM,sBAAsB,gBAAgB,CAAC;AACpD,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAC/C,eAAO,MAAM,eAAe,GAAU,CAAC,SAAS,aAAa,EAC3D,YAAY,CAAC,EACb,SAAS,SAAS,GAAG,eAAe,EACpC,UAAU,aAAa,GAAG,kBAAkB,EAC5C,eAAe,6BAA6B,EAC5C,wBAAwB,sBAAsB,EAC9C,YAAY,mBAAmB,EAC/B,gBAAgB,MAAM,EACtB,YAAW,eAAsC,EACjD,OAAM,aAAa,CAAC,CAAC,CAAM,0BA0D5B,CAAC"}
|
package/dest/client/factory.js
CHANGED
|
@@ -12,13 +12,13 @@ import { configureP2PClientAddresses, createLibP2PPeerIdFromPrivateKey, getPeerI
|
|
|
12
12
|
export const P2P_STORE_NAME = 'p2p';
|
|
13
13
|
export const P2P_ARCHIVE_STORE_NAME = 'p2p-archive';
|
|
14
14
|
export const P2P_PEER_STORE_NAME = 'p2p-peers';
|
|
15
|
-
export const createP2PClient = async (clientType, _config, archiver, proofVerifier, worldStateSynchronizer, epochCache, telemetry = getTelemetryClient(), deps = {})=>{
|
|
15
|
+
export const createP2PClient = async (clientType, _config, archiver, proofVerifier, worldStateSynchronizer, epochCache, packageVersion, telemetry = getTelemetryClient(), deps = {})=>{
|
|
16
16
|
let config = {
|
|
17
17
|
..._config,
|
|
18
18
|
dataStoreMapSizeKB: _config.p2pStoreMapSizeKb ?? _config.dataStoreMapSizeKB
|
|
19
19
|
};
|
|
20
20
|
const logger = deps.logger ?? createLogger('p2p');
|
|
21
|
-
const store = deps.store ?? await createStore(P2P_STORE_NAME,
|
|
21
|
+
const store = deps.store ?? await createStore(P2P_STORE_NAME, 2, config, createLogger('p2p:lmdb-v2'));
|
|
22
22
|
const archive = await createStore(P2P_ARCHIVE_STORE_NAME, 1, config, createLogger('p2p-archive:lmdb-v2'));
|
|
23
23
|
const peerStore = await createStore(P2P_PEER_STORE_NAME, 1, config, createLogger('p2p-peer:lmdb-v2'));
|
|
24
24
|
const mempools = {
|
|
@@ -28,18 +28,16 @@ export const createP2PClient = async (clientType, _config, archiver, proofVerifi
|
|
|
28
28
|
}),
|
|
29
29
|
attestationPool: clientType === P2PClientType.Full ? deps.attestationPool ?? new InMemoryAttestationPool(telemetry) : undefined
|
|
30
30
|
};
|
|
31
|
-
|
|
32
|
-
if (_config.p2pEnabled) {
|
|
33
|
-
logger.verbose('P2P is enabled. Using LibP2P service.');
|
|
34
|
-
config = await configureP2PClientAddresses(_config);
|
|
35
|
-
// Create peer discovery service
|
|
36
|
-
const peerIdPrivateKey = await getPeerIdPrivateKey(config, store, logger);
|
|
37
|
-
const peerId = await createLibP2PPeerIdFromPrivateKey(peerIdPrivateKey);
|
|
38
|
-
const discoveryService = new DiscV5Service(peerId, config, telemetry, createLogger(`${logger.module}:discv5_service`));
|
|
39
|
-
p2pService = await LibP2PService.new(clientType, config, discoveryService, peerId, mempools, archiver, epochCache, proofVerifier, worldStateSynchronizer, peerStore, telemetry, createLogger(`${logger.module}:libp2p_service`));
|
|
40
|
-
} else {
|
|
31
|
+
if (!_config.p2pEnabled) {
|
|
41
32
|
logger.verbose('P2P is disabled. Using dummy P2P service');
|
|
42
|
-
|
|
33
|
+
return new P2PClient(clientType, store, archiver, mempools, new DummyP2PService(), config, telemetry);
|
|
43
34
|
}
|
|
35
|
+
logger.verbose('P2P is enabled. Using LibP2P service.');
|
|
36
|
+
config = await configureP2PClientAddresses(_config);
|
|
37
|
+
// Create peer discovery service
|
|
38
|
+
const peerIdPrivateKey = await getPeerIdPrivateKey(config, store, logger);
|
|
39
|
+
const peerId = await createLibP2PPeerIdFromPrivateKey(peerIdPrivateKey);
|
|
40
|
+
const discoveryService = new DiscV5Service(peerId, config, packageVersion, telemetry, createLogger(`${logger.module}:discv5_service`));
|
|
41
|
+
const p2pService = await LibP2PService.new(clientType, config, discoveryService, peerId, mempools, archiver, epochCache, proofVerifier, worldStateSynchronizer, peerStore, telemetry, createLogger(`${logger.module}:libp2p_service`));
|
|
44
42
|
return new P2PClient(clientType, store, archiver, mempools, p2pService, config, telemetry);
|
|
45
43
|
};
|
|
@@ -35,7 +35,7 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApi<T> & {
|
|
|
35
35
|
*
|
|
36
36
|
* @param proposal - the block proposal
|
|
37
37
|
*/
|
|
38
|
-
broadcastProposal(proposal: BlockProposal): void
|
|
38
|
+
broadcastProposal(proposal: BlockProposal): Promise<void>;
|
|
39
39
|
/**
|
|
40
40
|
* Registers a callback from the validator client that determines how to behave when
|
|
41
41
|
* foreign block proposals are received
|
|
@@ -116,6 +116,11 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApi<T> & {
|
|
|
116
116
|
iteratePendingTxs(): AsyncIterableIterator<Tx>;
|
|
117
117
|
/** Returns the number of pending txs in the mempool. */
|
|
118
118
|
getPendingTxCount(): Promise<number>;
|
|
119
|
+
/**
|
|
120
|
+
* Marks transactions as non-evictable in the pool.
|
|
121
|
+
* @param txHashes - Hashes of the transactions to mark as non-evictable.
|
|
122
|
+
*/
|
|
123
|
+
markTxsAsNonEvictable(txHashes: TxHash[]): Promise<void>;
|
|
119
124
|
/**
|
|
120
125
|
* Starts the p2p client.
|
|
121
126
|
* @returns A promise signalling the completion of the block sync.
|
|
@@ -142,5 +147,9 @@ export type P2P<T extends P2PClientType = P2PClientType.Full> = P2PApi<T> & {
|
|
|
142
147
|
/** Identifies a p2p client. */
|
|
143
148
|
isP2PClient(): true;
|
|
144
149
|
updateP2PConfig(config: Partial<P2PConfig>): Promise<void>;
|
|
150
|
+
/** Validates a set of txs. */
|
|
151
|
+
validate(txs: Tx[]): Promise<void>;
|
|
152
|
+
/** Clears the db. */
|
|
153
|
+
clear(): Promise<void>;
|
|
145
154
|
};
|
|
146
155
|
//# sourceMappingURL=interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/client/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C;;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,MAAM,GAAG,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG;IAC1E;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/client/interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ import { type P2P, type P2PSyncState } from './interface.js';
|
|
|
15
15
|
*/
|
|
16
16
|
export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> extends WithTracer implements P2P, P2P<P2PClientType.Prover> {
|
|
17
17
|
#private;
|
|
18
|
+
private store;
|
|
18
19
|
private l2BlockSource;
|
|
19
20
|
private p2pService;
|
|
20
21
|
private telemetry;
|
|
@@ -26,9 +27,11 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
|
|
|
26
27
|
private syncResolve?;
|
|
27
28
|
private latestBlockNumberAtStart;
|
|
28
29
|
private provenBlockNumberAtStart;
|
|
30
|
+
private finalizedBlockNumberAtStart;
|
|
29
31
|
private synchedBlockHashes;
|
|
30
32
|
private synchedLatestBlockNumber;
|
|
31
33
|
private synchedProvenBlockNumber;
|
|
34
|
+
private synchedFinalizedBlockNumber;
|
|
32
35
|
private synchedLatestSlot;
|
|
33
36
|
private txPool;
|
|
34
37
|
private attestationPool;
|
|
@@ -43,12 +46,14 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
|
|
|
43
46
|
* @param log - A logger.
|
|
44
47
|
*/
|
|
45
48
|
constructor(_clientType: T, store: AztecAsyncKVStore, l2BlockSource: L2BlockSource & ContractDataSource, mempools: MemPools<T>, p2pService: P2PService, config?: Partial<P2PConfig>, telemetry?: TelemetryClient, log?: import("@aztec/foundation/log").Logger);
|
|
49
|
+
clear(): Promise<void>;
|
|
46
50
|
isP2PClient(): true;
|
|
47
51
|
getPeers(includePending?: boolean): Promise<PeerInfo[]>;
|
|
48
52
|
getL2BlockHash(number: number): Promise<string | undefined>;
|
|
49
53
|
updateP2PConfig(config: Partial<P2PConfig>): Promise<void>;
|
|
50
54
|
getL2Tips(): Promise<L2Tips>;
|
|
51
55
|
handleBlockStreamEvent(event: L2BlockStreamEvent): Promise<void>;
|
|
56
|
+
private setBlockHash;
|
|
52
57
|
/**
|
|
53
58
|
* Starts the P2P client.
|
|
54
59
|
* @returns An empty promise signalling the synching process.
|
|
@@ -62,7 +67,7 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
|
|
|
62
67
|
stop(): Promise<void>;
|
|
63
68
|
/** Triggers a sync to the archiver. Used for testing. */
|
|
64
69
|
sync(): Promise<void>;
|
|
65
|
-
broadcastProposal(proposal: BlockProposal): void
|
|
70
|
+
broadcastProposal(proposal: BlockProposal): Promise<void>;
|
|
66
71
|
getAttestationsForSlot(slot: bigint, proposalId?: string): Promise<BlockAttestation[]>;
|
|
67
72
|
addAttestation(attestation: BlockAttestation): Promise<void>;
|
|
68
73
|
registerBlockProposalHandler(handler: (block: BlockProposal) => Promise<BlockAttestation | undefined>): void;
|
|
@@ -112,9 +117,9 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
|
|
|
112
117
|
* Returns transactions in the transaction pool by hash.
|
|
113
118
|
* If a transaction is not in the pool, it will be requested from the network.
|
|
114
119
|
* @param txHashes - Hashes of the transactions to look for.
|
|
115
|
-
* @returns The txs found, not
|
|
120
|
+
* @returns The txs found, or undefined if not found in the order requested.
|
|
116
121
|
*/
|
|
117
|
-
getTxsByHash(txHashes: TxHash[]): Promise<Tx[]>;
|
|
122
|
+
getTxsByHash(txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
|
|
118
123
|
/**
|
|
119
124
|
* Returns an archived transaction in the transaction pool by its hash.
|
|
120
125
|
* @param txHash - Hash of the archived transaction to look for.
|
|
@@ -162,6 +167,7 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
|
|
|
162
167
|
* @returns Block number of latest proven L2 Block we've synced with.
|
|
163
168
|
*/
|
|
164
169
|
getSyncedProvenBlockNum(): Promise<number>;
|
|
170
|
+
getSyncedFinalizedBlockNum(): Promise<number>;
|
|
165
171
|
/** Returns latest L2 slot for which we have seen an L2 block. */
|
|
166
172
|
getSyncedLatestSlot(): Promise<bigint>;
|
|
167
173
|
/**
|
|
@@ -190,11 +196,11 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
|
|
|
190
196
|
/** Request txs for unproven blocks so the prover node has more chances to get them. */
|
|
191
197
|
private requestMissingTxsFromUnprovenBlocks;
|
|
192
198
|
/**
|
|
193
|
-
* Handles new
|
|
194
|
-
* @param blocks - A list of
|
|
199
|
+
* Handles new finalized blocks by deleting the txs and attestations in them.
|
|
200
|
+
* @param blocks - A list of finalized L2 blocks.
|
|
195
201
|
* @returns Empty promise.
|
|
196
202
|
*/
|
|
197
|
-
private
|
|
203
|
+
private handleFinalizedL2Blocks;
|
|
198
204
|
/**
|
|
199
205
|
* Updates the tx pool after a chain prune.
|
|
200
206
|
* @param latestBlock - The block number the chain was pruned to.
|
|
@@ -206,5 +212,11 @@ export declare class P2PClient<T extends P2PClientType = P2PClientType.Full> ext
|
|
|
206
212
|
* @param newState - New state value.
|
|
207
213
|
*/
|
|
208
214
|
private setCurrentState;
|
|
215
|
+
validate(txs: Tx[]): Promise<void>;
|
|
216
|
+
/**
|
|
217
|
+
* Marks transactions as non-evictable in the pool.
|
|
218
|
+
* @param txHashes - Hashes of the transactions to mark as non-evictable.
|
|
219
|
+
*/
|
|
220
|
+
markTxsAsNonEvictable(txHashes: TxHash[]): Promise<void>;
|
|
209
221
|
}
|
|
210
222
|
//# sourceMappingURL=p2p_client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p2p_client.d.ts","sourceRoot":"","sources":["../../src/client/p2p_client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAsC,MAAM,iBAAiB,CAAC;AAC7F,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"p2p_client.d.ts","sourceRoot":"","sources":["../../src/client/p2p_client.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ import { P2PClientState } from './interface.js';
|
|
|
13
13
|
/**
|
|
14
14
|
* The P2P client implementation.
|
|
15
15
|
*/ export class P2PClient extends WithTracer {
|
|
16
|
+
store;
|
|
16
17
|
l2BlockSource;
|
|
17
18
|
p2pService;
|
|
18
19
|
telemetry;
|
|
@@ -23,9 +24,11 @@ import { P2PClientState } from './interface.js';
|
|
|
23
24
|
syncResolve;
|
|
24
25
|
latestBlockNumberAtStart;
|
|
25
26
|
provenBlockNumberAtStart;
|
|
27
|
+
finalizedBlockNumberAtStart;
|
|
26
28
|
synchedBlockHashes;
|
|
27
29
|
synchedLatestBlockNumber;
|
|
28
30
|
synchedProvenBlockNumber;
|
|
31
|
+
synchedFinalizedBlockNumber;
|
|
29
32
|
synchedLatestSlot;
|
|
30
33
|
txPool;
|
|
31
34
|
attestationPool;
|
|
@@ -39,7 +42,7 @@ import { P2PClientState } from './interface.js';
|
|
|
39
42
|
* @param p2pService - The concrete instance of p2p networking to use.
|
|
40
43
|
* @param log - A logger.
|
|
41
44
|
*/ constructor(_clientType, store, l2BlockSource, mempools, p2pService, config = {}, telemetry = getTelemetryClient(), log = createLogger('p2p')){
|
|
42
|
-
super(telemetry, 'P2PClient'), this.l2BlockSource = l2BlockSource, this.p2pService = p2pService, this.telemetry = telemetry, this.log = log, this.currentState = P2PClientState.IDLE, this.syncPromise = Promise.resolve(), this.syncResolve = undefined, this.latestBlockNumberAtStart = -1, this.provenBlockNumberAtStart = -1;
|
|
45
|
+
super(telemetry, 'P2PClient'), this.store = store, this.l2BlockSource = l2BlockSource, this.p2pService = p2pService, this.telemetry = telemetry, this.log = log, this.currentState = P2PClientState.IDLE, this.syncPromise = Promise.resolve(), this.syncResolve = undefined, this.latestBlockNumberAtStart = -1, this.provenBlockNumberAtStart = -1, this.finalizedBlockNumberAtStart = -1;
|
|
43
46
|
this.config = {
|
|
44
47
|
...getP2PDefaultConfig(),
|
|
45
48
|
...config
|
|
@@ -50,8 +53,12 @@ import { P2PClientState } from './interface.js';
|
|
|
50
53
|
this.synchedBlockHashes = store.openMap('p2p_pool_block_hashes');
|
|
51
54
|
this.synchedLatestBlockNumber = store.openSingleton('p2p_pool_last_l2_block');
|
|
52
55
|
this.synchedProvenBlockNumber = store.openSingleton('p2p_pool_last_proven_l2_block');
|
|
56
|
+
this.synchedFinalizedBlockNumber = store.openSingleton('p2p_pool_last_finalized_l2_block');
|
|
53
57
|
this.synchedLatestSlot = store.openSingleton('p2p_pool_last_l2_slot');
|
|
54
58
|
}
|
|
59
|
+
clear() {
|
|
60
|
+
return this.store.clear();
|
|
61
|
+
}
|
|
55
62
|
isP2PClient() {
|
|
56
63
|
return true;
|
|
57
64
|
}
|
|
@@ -72,21 +79,27 @@ import { P2PClientState } from './interface.js';
|
|
|
72
79
|
let latestBlockHash;
|
|
73
80
|
const provenBlockNumber = await this.getSyncedProvenBlockNum();
|
|
74
81
|
let provenBlockHash;
|
|
82
|
+
const finalizedBlockNumber = await this.getSyncedFinalizedBlockNum();
|
|
83
|
+
let finalizedBlockHash;
|
|
75
84
|
if (latestBlockNumber > 0) {
|
|
76
85
|
latestBlockHash = await this.synchedBlockHashes.getAsync(latestBlockNumber);
|
|
77
86
|
if (typeof latestBlockHash === 'undefined') {
|
|
78
|
-
|
|
79
|
-
throw new Error();
|
|
87
|
+
throw new Error(`Block hash for latest block ${latestBlockNumber} not found in p2p client`);
|
|
80
88
|
}
|
|
81
89
|
}
|
|
82
90
|
if (provenBlockNumber > 0) {
|
|
83
91
|
provenBlockHash = await this.synchedBlockHashes.getAsync(provenBlockNumber);
|
|
84
92
|
if (typeof provenBlockHash === 'undefined') {
|
|
85
|
-
|
|
86
|
-
|
|
93
|
+
throw new Error(`Block hash for proven block ${provenBlockNumber} not found in p2p client`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (finalizedBlockNumber > 0) {
|
|
97
|
+
finalizedBlockHash = await this.synchedBlockHashes.getAsync(finalizedBlockNumber);
|
|
98
|
+
if (typeof finalizedBlockHash === 'undefined') {
|
|
99
|
+
throw new Error(`Block hash for finalized block ${finalizedBlockNumber} not found in p2p client`);
|
|
87
100
|
}
|
|
88
101
|
}
|
|
89
|
-
return
|
|
102
|
+
return {
|
|
90
103
|
latest: {
|
|
91
104
|
hash: latestBlockHash,
|
|
92
105
|
number: latestBlockNumber
|
|
@@ -96,10 +109,10 @@ import { P2PClientState } from './interface.js';
|
|
|
96
109
|
number: provenBlockNumber
|
|
97
110
|
},
|
|
98
111
|
finalized: {
|
|
99
|
-
hash:
|
|
100
|
-
number:
|
|
112
|
+
hash: finalizedBlockHash,
|
|
113
|
+
number: finalizedBlockNumber
|
|
101
114
|
}
|
|
102
|
-
}
|
|
115
|
+
};
|
|
103
116
|
}
|
|
104
117
|
async handleBlockStreamEvent(event) {
|
|
105
118
|
this.log.debug(`Handling block stream event ${event.type}`);
|
|
@@ -108,17 +121,24 @@ import { P2PClientState } from './interface.js';
|
|
|
108
121
|
await this.handleLatestL2Blocks(event.blocks);
|
|
109
122
|
break;
|
|
110
123
|
case 'chain-finalized':
|
|
111
|
-
break;
|
|
112
|
-
case 'chain-proven':
|
|
113
124
|
{
|
|
114
|
-
|
|
125
|
+
// TODO (alexg): I think we can prune the block hashes map here
|
|
126
|
+
await this.setBlockHash(event.block);
|
|
127
|
+
const from = await this.getSyncedFinalizedBlockNum() + 1;
|
|
115
128
|
const limit = event.block.number - from + 1;
|
|
116
129
|
if (limit > 0) {
|
|
117
|
-
await this.
|
|
130
|
+
await this.handleFinalizedL2Blocks(await this.l2BlockSource.getBlocks(from, limit));
|
|
118
131
|
}
|
|
119
132
|
break;
|
|
120
133
|
}
|
|
134
|
+
case 'chain-proven':
|
|
135
|
+
{
|
|
136
|
+
await this.setBlockHash(event.block);
|
|
137
|
+
await this.synchedProvenBlockNumber.set(event.block.number);
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
121
140
|
case 'chain-pruned':
|
|
141
|
+
await this.setBlockHash(event.block);
|
|
122
142
|
await this.handlePruneL2Blocks(event.block.number);
|
|
123
143
|
break;
|
|
124
144
|
default:
|
|
@@ -128,6 +148,11 @@ import { P2PClientState } from './interface.js';
|
|
|
128
148
|
}
|
|
129
149
|
}
|
|
130
150
|
}
|
|
151
|
+
async setBlockHash(block) {
|
|
152
|
+
if (block.hash !== undefined) {
|
|
153
|
+
await this.synchedBlockHashes.set(block.number, block.hash.toString());
|
|
154
|
+
}
|
|
155
|
+
}
|
|
131
156
|
#assertIsReady() {
|
|
132
157
|
// this.log.info('Checking if p2p client is ready, current state: ', this.currentState);
|
|
133
158
|
if (!this.isReady()) {
|
|
@@ -145,10 +170,13 @@ import { P2PClientState } from './interface.js';
|
|
|
145
170
|
return this.syncPromise;
|
|
146
171
|
}
|
|
147
172
|
// get the current latest block numbers
|
|
148
|
-
|
|
149
|
-
this.
|
|
173
|
+
const latestBlockNumbers = await this.l2BlockSource.getL2Tips();
|
|
174
|
+
this.latestBlockNumberAtStart = latestBlockNumbers.latest.number;
|
|
175
|
+
this.provenBlockNumberAtStart = latestBlockNumbers.proven.number;
|
|
176
|
+
this.finalizedBlockNumberAtStart = latestBlockNumbers.finalized.number;
|
|
150
177
|
const syncedLatestBlock = await this.getSyncedLatestBlockNum() + 1;
|
|
151
178
|
const syncedProvenBlock = await this.getSyncedProvenBlockNum() + 1;
|
|
179
|
+
const syncedFinalizedBlock = await this.getSyncedFinalizedBlockNum() + 1;
|
|
152
180
|
if (await this.txPool.isEmpty() && (this.attestationPool === undefined || await this.attestationPool?.isEmpty())) {
|
|
153
181
|
// if mempools are empty, we don't care about syncing prior blocks
|
|
154
182
|
this.initBlockStream(this.latestBlockNumberAtStart);
|
|
@@ -156,7 +184,7 @@ import { P2PClientState } from './interface.js';
|
|
|
156
184
|
this.syncPromise = Promise.resolve();
|
|
157
185
|
await this.p2pService.start();
|
|
158
186
|
this.log.info(`Starting p2p client from block ${this.latestBlockNumberAtStart} with empty mempools`);
|
|
159
|
-
} else if (syncedLatestBlock <= this.latestBlockNumberAtStart || syncedProvenBlock <= this.provenBlockNumberAtStart) {
|
|
187
|
+
} else if (syncedLatestBlock <= this.latestBlockNumberAtStart || syncedProvenBlock <= this.provenBlockNumberAtStart || syncedFinalizedBlock <= this.finalizedBlockNumberAtStart) {
|
|
160
188
|
// if there are blocks to be retrieved, go to a synching state
|
|
161
189
|
// this gets resolved on `startServiceIfSynched`
|
|
162
190
|
this.initBlockStream();
|
|
@@ -164,9 +192,10 @@ import { P2PClientState } from './interface.js';
|
|
|
164
192
|
this.syncPromise = new Promise((resolve)=>{
|
|
165
193
|
this.syncResolve = resolve;
|
|
166
194
|
});
|
|
167
|
-
this.log.
|
|
195
|
+
this.log.info(`Initiating p2p sync from ${syncedLatestBlock}`, {
|
|
168
196
|
syncedLatestBlock,
|
|
169
|
-
syncedProvenBlock
|
|
197
|
+
syncedProvenBlock,
|
|
198
|
+
syncedFinalizedBlock
|
|
170
199
|
});
|
|
171
200
|
} else {
|
|
172
201
|
// if no blocks to be retrieved, go straight to running
|
|
@@ -176,7 +205,8 @@ import { P2PClientState } from './interface.js';
|
|
|
176
205
|
await this.p2pService.start();
|
|
177
206
|
this.log.info(`Starting P2P client synced to ${syncedLatestBlock}`, {
|
|
178
207
|
syncedLatestBlock,
|
|
179
|
-
syncedProvenBlock
|
|
208
|
+
syncedProvenBlock,
|
|
209
|
+
syncedFinalizedBlock
|
|
180
210
|
});
|
|
181
211
|
}
|
|
182
212
|
this.blockStream.start();
|
|
@@ -259,16 +289,15 @@ import { P2PClientState } from './interface.js';
|
|
|
259
289
|
await this.txPool.addTxs(filteredTxs);
|
|
260
290
|
}
|
|
261
291
|
const txHashesStr = txHashes.map((tx)=>tx.toString()).join(', ');
|
|
262
|
-
this.log.debug(`
|
|
292
|
+
this.log.debug(`Requested txs ${txHashesStr} (${filteredTxs.length} / ${txHashes.length}}) from peers`);
|
|
263
293
|
// We return all transactions, even the not found ones to the caller, such they can handle missing items themselves.
|
|
264
294
|
return txs;
|
|
265
295
|
}
|
|
266
296
|
getPendingTxs() {
|
|
267
|
-
return
|
|
297
|
+
return this.getTxs('pending');
|
|
268
298
|
}
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
return pendingTxs.length;
|
|
299
|
+
getPendingTxCount() {
|
|
300
|
+
return this.txPool.getPendingTxCount();
|
|
272
301
|
}
|
|
273
302
|
async *iteratePendingTxs() {
|
|
274
303
|
for (const txHash of (await this.txPool.getPendingTxHashes())){
|
|
@@ -330,7 +359,7 @@ import { P2PClientState } from './interface.js';
|
|
|
330
359
|
* Returns transactions in the transaction pool by hash.
|
|
331
360
|
* If a transaction is not in the pool, it will be requested from the network.
|
|
332
361
|
* @param txHashes - Hashes of the transactions to look for.
|
|
333
|
-
* @returns The txs found, not
|
|
362
|
+
* @returns The txs found, or undefined if not found in the order requested.
|
|
334
363
|
*/ async getTxsByHash(txHashes) {
|
|
335
364
|
const txs = await Promise.all(txHashes.map((txHash)=>this.txPool.getTxByHash(txHash)));
|
|
336
365
|
const missingTxHashes = txs.map((tx, index)=>[
|
|
@@ -342,7 +371,25 @@ import { P2PClientState } from './interface.js';
|
|
|
342
371
|
}
|
|
343
372
|
const missingTxs = await this.requestTxsByHash(missingTxHashes);
|
|
344
373
|
const fetchedMissingTxs = missingTxs.filter((tx)=>!!tx);
|
|
345
|
-
|
|
374
|
+
// TODO: optimize
|
|
375
|
+
// Merge the found txs in order
|
|
376
|
+
const mergingTxsPromises = txHashes.map(async (txHash)=>{
|
|
377
|
+
// Is it in the txs list from the mempool?
|
|
378
|
+
for (const tx of txs){
|
|
379
|
+
if (tx !== undefined && (await tx.getTxHash()).equals(txHash)) {
|
|
380
|
+
return tx;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
// Is it in the fetched missing txs?
|
|
384
|
+
for (const tx of fetchedMissingTxs){
|
|
385
|
+
if (tx !== undefined && (await tx.getTxHash()).equals(txHash)) {
|
|
386
|
+
return tx;
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
// Otherwise return undefined
|
|
390
|
+
return undefined;
|
|
391
|
+
});
|
|
392
|
+
return await Promise.all(mergingTxsPromises);
|
|
346
393
|
}
|
|
347
394
|
/**
|
|
348
395
|
* Returns an archived transaction in the transaction pool by its hash.
|
|
@@ -359,7 +406,7 @@ import { P2PClientState } from './interface.js';
|
|
|
359
406
|
await this.addTxs([
|
|
360
407
|
tx
|
|
361
408
|
]);
|
|
362
|
-
this.p2pService.propagate(tx);
|
|
409
|
+
await this.p2pService.propagate(tx);
|
|
363
410
|
}
|
|
364
411
|
/**
|
|
365
412
|
* Adds transactions to the pool. Does not send to peers or validate the txs.
|
|
@@ -408,6 +455,9 @@ import { P2PClientState } from './interface.js';
|
|
|
408
455
|
*/ async getSyncedProvenBlockNum() {
|
|
409
456
|
return await this.synchedProvenBlockNumber.getAsync() ?? INITIAL_L2_BLOCK_NUM - 1;
|
|
410
457
|
}
|
|
458
|
+
async getSyncedFinalizedBlockNum() {
|
|
459
|
+
return await this.synchedFinalizedBlockNumber.getAsync() ?? INITIAL_L2_BLOCK_NUM - 1;
|
|
460
|
+
}
|
|
411
461
|
/** Returns latest L2 slot for which we have seen an L2 block. */ async getSyncedLatestSlot() {
|
|
412
462
|
return await this.synchedLatestSlot.getAsync() ?? BigInt(0);
|
|
413
463
|
}
|
|
@@ -457,7 +507,10 @@ import { P2PClientState } from './interface.js';
|
|
|
457
507
|
await this.markTxsAsMinedFromBlocks(blocks.map((b)=>b.block));
|
|
458
508
|
void this.requestMissingTxsFromUnprovenBlocks(blocks.map((b)=>b.block));
|
|
459
509
|
const lastBlock = blocks.at(-1).block;
|
|
460
|
-
await Promise.all(blocks.map(async (block)=>this.
|
|
510
|
+
await Promise.all(blocks.map(async (block)=>this.setBlockHash({
|
|
511
|
+
number: block.block.number,
|
|
512
|
+
hash: await block.block.hash().then((h)=>h.toString())
|
|
513
|
+
})));
|
|
461
514
|
await this.synchedLatestBlockNumber.set(lastBlock.number);
|
|
462
515
|
await this.synchedLatestSlot.set(lastBlock.header.getSlot());
|
|
463
516
|
this.log.verbose(`Synched to latest block ${lastBlock.number}`);
|
|
@@ -483,34 +536,20 @@ import { P2PClientState } from './interface.js';
|
|
|
483
536
|
}
|
|
484
537
|
}
|
|
485
538
|
/**
|
|
486
|
-
* Handles new
|
|
487
|
-
* @param blocks - A list of
|
|
539
|
+
* Handles new finalized blocks by deleting the txs and attestations in them.
|
|
540
|
+
* @param blocks - A list of finalized L2 blocks.
|
|
488
541
|
* @returns Empty promise.
|
|
489
|
-
*/ async
|
|
542
|
+
*/ async handleFinalizedL2Blocks(blocks) {
|
|
543
|
+
this.log.trace(`Handling finalized blocks ${blocks.length} up to ${blocks.at(-1)?.number}`);
|
|
490
544
|
if (!blocks.length) {
|
|
491
545
|
return Promise.resolve();
|
|
492
546
|
}
|
|
493
|
-
const { keepAttestationsInPoolFor, keepProvenTxsInPoolFor: keepProvenTxsFor } = this.config;
|
|
494
|
-
const firstBlockNum = blocks[0].number;
|
|
495
547
|
const lastBlockNum = blocks[blocks.length - 1].number;
|
|
496
|
-
const lastBlockSlot = blocks[blocks.length - 1].header.
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
const fromBlock = Math.max(INITIAL_L2_BLOCK_NUM, firstBlockNum - keepProvenTxsFor);
|
|
502
|
-
const toBlock = lastBlockNum - keepProvenTxsFor;
|
|
503
|
-
const limit = toBlock - fromBlock + 1;
|
|
504
|
-
const blocksToDeleteTxsFrom = await this.l2BlockSource.getBlocks(fromBlock, limit, true);
|
|
505
|
-
await this.deleteTxsFromBlocks(blocksToDeleteTxsFrom);
|
|
506
|
-
}
|
|
507
|
-
// We delete attestations older than the last block slot minus the number of slots we want to keep in the pool.
|
|
508
|
-
const lastBlockSlotMinusKeepAttestationsInPoolFor = lastBlockSlot - BigInt(keepAttestationsInPoolFor);
|
|
509
|
-
if (lastBlockSlotMinusKeepAttestationsInPoolFor >= BigInt(INITIAL_L2_BLOCK_NUM)) {
|
|
510
|
-
await this.attestationPool?.deleteAttestationsOlderThan(lastBlockSlotMinusKeepAttestationsInPoolFor);
|
|
511
|
-
}
|
|
512
|
-
await this.synchedProvenBlockNumber.set(lastBlockNum);
|
|
513
|
-
this.log.debug(`Synched to proven block ${lastBlockNum}`);
|
|
548
|
+
const lastBlockSlot = blocks[blocks.length - 1].header.getSlot();
|
|
549
|
+
await this.deleteTxsFromBlocks(blocks);
|
|
550
|
+
await this.attestationPool?.deleteAttestationsOlderThan(lastBlockSlot);
|
|
551
|
+
await this.synchedFinalizedBlockNumber.set(lastBlockNum);
|
|
552
|
+
this.log.debug(`Synched to finalized block ${lastBlockNum}`);
|
|
514
553
|
await this.startServiceIfSynched();
|
|
515
554
|
}
|
|
516
555
|
/**
|
|
@@ -558,12 +597,14 @@ import { P2PClientState } from './interface.js';
|
|
|
558
597
|
if (this.currentState !== P2PClientState.SYNCHING) {
|
|
559
598
|
return;
|
|
560
599
|
}
|
|
600
|
+
const syncedFinalizedBlock = await this.getSyncedFinalizedBlockNum();
|
|
561
601
|
const syncedProvenBlock = await this.getSyncedProvenBlockNum();
|
|
562
602
|
const syncedLatestBlock = await this.getSyncedLatestBlockNum();
|
|
563
|
-
if (syncedLatestBlock >= this.latestBlockNumberAtStart && syncedProvenBlock >= this.provenBlockNumberAtStart) {
|
|
603
|
+
if (syncedLatestBlock >= this.latestBlockNumberAtStart && syncedProvenBlock >= this.provenBlockNumberAtStart && syncedFinalizedBlock >= this.finalizedBlockNumberAtStart) {
|
|
564
604
|
this.log.info(`Completed P2P client sync to block ${syncedLatestBlock}. Starting service.`, {
|
|
565
605
|
syncedLatestBlock,
|
|
566
|
-
syncedProvenBlock
|
|
606
|
+
syncedProvenBlock,
|
|
607
|
+
syncedFinalizedBlock
|
|
567
608
|
});
|
|
568
609
|
this.setCurrentState(P2PClientState.RUNNING);
|
|
569
610
|
if (this.syncResolve !== undefined) {
|
|
@@ -580,6 +621,15 @@ import { P2PClientState } from './interface.js';
|
|
|
580
621
|
this.currentState = newState;
|
|
581
622
|
this.log.debug(`Moved from state ${P2PClientState[oldState]} to ${P2PClientState[this.currentState]}`);
|
|
582
623
|
}
|
|
624
|
+
validate(txs) {
|
|
625
|
+
return this.p2pService.validate(txs);
|
|
626
|
+
}
|
|
627
|
+
/**
|
|
628
|
+
* Marks transactions as non-evictable in the pool.
|
|
629
|
+
* @param txHashes - Hashes of the transactions to mark as non-evictable.
|
|
630
|
+
*/ markTxsAsNonEvictable(txHashes) {
|
|
631
|
+
return this.txPool.markTxsAsNonEvictable(txHashes);
|
|
632
|
+
}
|
|
583
633
|
}
|
|
584
634
|
_ts_decorate([
|
|
585
635
|
trackSpan('p2pClient.broadcastProposal', async (proposal)=>({
|
package/dest/config.d.ts
CHANGED
|
@@ -70,10 +70,6 @@ export interface P2PConfig extends P2PReqRespConfig, ChainConfig {
|
|
|
70
70
|
* If announceUdpAddress or announceTcpAddress are not provided, query for the IP address of the machine. Default is false.
|
|
71
71
|
*/
|
|
72
72
|
queryForIp: boolean;
|
|
73
|
-
/** How many blocks have to pass after a block is proven before its txs are deleted (zero to delete immediately once proven) */
|
|
74
|
-
keepProvenTxsInPoolFor: number;
|
|
75
|
-
/** How many slots to keep attestations for. */
|
|
76
|
-
keepAttestationsInPoolFor: number;
|
|
77
73
|
/**
|
|
78
74
|
* The interval of the gossipsub heartbeat to perform maintenance tasks.
|
|
79
75
|
*/
|
|
@@ -106,6 +102,10 @@ export interface P2PConfig extends P2PReqRespConfig, ChainConfig {
|
|
|
106
102
|
* How many message cache windows to include when gossiping with other pears.
|
|
107
103
|
*/
|
|
108
104
|
gossipsubMcacheGossip: number;
|
|
105
|
+
/**
|
|
106
|
+
* How long to keep message IDs in the seen cache (ms).
|
|
107
|
+
*/
|
|
108
|
+
gossipsubSeenTTL: number;
|
|
109
109
|
/**
|
|
110
110
|
* The 'age' (in # of L2 blocks) of a processed tx after which we heavily penalize a peer for re-sending it.
|
|
111
111
|
*/
|
|
@@ -186,8 +186,6 @@ export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
|
|
|
186
186
|
bootstrapNodesAsFullPeers: unknown;
|
|
187
187
|
maxPeerCount: unknown;
|
|
188
188
|
queryForIp: unknown;
|
|
189
|
-
keepProvenTxsInPoolFor: unknown;
|
|
190
|
-
keepAttestationsInPoolFor: unknown;
|
|
191
189
|
gossipsubInterval: unknown;
|
|
192
190
|
gossipsubD: unknown;
|
|
193
191
|
gossipsubDlo: unknown;
|
|
@@ -196,6 +194,7 @@ export declare const bootnodeConfigMappings: ConfigMappingsType<Pick<{
|
|
|
196
194
|
gossipsubFloodPublish: unknown;
|
|
197
195
|
gossipsubMcacheLength: unknown;
|
|
198
196
|
gossipsubMcacheGossip: unknown;
|
|
197
|
+
gossipsubSeenTTL: unknown;
|
|
199
198
|
doubleSpendSeverePeerPenaltyWindow: unknown;
|
|
200
199
|
gossipsubTxTopicWeight: unknown;
|
|
201
200
|
gossipsubTxInvalidMessageDeliveriesWeight: unknown;
|
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,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAGlF,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAElG,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,8BAA8B,CAAC;AAE/F;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,gBAAgB,EAAE,WAAW;IAC9D;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,oBAAoB,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,6BAA6B,EAAE,OAAO,CAAC;IAEvC;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IAEzB,sEAAsE;IACtE,4BAA4B,EAAE,OAAO,CAAC;IAEtC,iGAAiG;IACjG,yBAAyB,EAAE,OAAO,CAAC;IAEnC;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|