@aztec/p2p 0.67.1 → 0.68.1
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 +5 -3
- package/dest/bootstrap/bootstrap.d.ts.map +1 -1
- package/dest/bootstrap/bootstrap.js +17 -15
- package/dest/client/factory.d.ts +19 -0
- package/dest/client/factory.d.ts.map +1 -0
- package/dest/client/factory.js +40 -0
- package/dest/client/index.d.ts +1 -15
- package/dest/client/index.d.ts.map +1 -1
- package/dest/client/index.js +2 -37
- package/dest/client/p2p_client.d.ts +6 -6
- package/dest/client/p2p_client.d.ts.map +1 -1
- package/dest/client/p2p_client.js +12 -11
- package/dest/config.d.ts +1 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +3 -3
- package/dest/errors/reqresp.error.d.ts +12 -1
- package/dest/errors/reqresp.error.d.ts.map +1 -1
- package/dest/errors/reqresp.error.js +15 -2
- package/dest/index.d.ts +2 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +3 -3
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts +9 -0
- package/dest/mem_pools/attestation_pool/attestation_pool.d.ts.map +1 -1
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts +3 -0
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.d.ts.map +1 -0
- package/dest/mem_pools/attestation_pool/attestation_pool_test_suite.js +171 -0
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts +29 -0
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.d.ts.map +1 -0
- package/dest/mem_pools/attestation_pool/kv_attestation_pool.js +114 -0
- package/dest/mem_pools/interface.d.ts +4 -3
- package/dest/mem_pools/interface.d.ts.map +1 -1
- package/dest/mocks/index.d.ts +7 -6
- package/dest/mocks/index.d.ts.map +1 -1
- package/dest/mocks/index.js +8 -8
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts +8 -0
- package/dest/msg_validators/attestation_validator/attestation_validator.d.ts.map +1 -0
- package/dest/msg_validators/attestation_validator/attestation_validator.js +19 -0
- package/dest/msg_validators/attestation_validator/index.d.ts +2 -0
- package/dest/msg_validators/attestation_validator/index.d.ts.map +1 -0
- package/dest/msg_validators/attestation_validator/index.js +2 -0
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts +8 -0
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.d.ts.map +1 -0
- package/dest/msg_validators/block_proposal_validator/block_proposal_validator.js +21 -0
- package/dest/msg_validators/block_proposal_validator/index.d.ts +2 -0
- package/dest/msg_validators/block_proposal_validator/index.d.ts.map +1 -0
- package/dest/msg_validators/block_proposal_validator/index.js +2 -0
- package/dest/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.d.ts +8 -0
- package/dest/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.d.ts.map +1 -0
- package/dest/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.js +16 -0
- package/dest/msg_validators/epoch_proof_quote_validator/index.d.ts +2 -0
- package/dest/msg_validators/epoch_proof_quote_validator/index.d.ts.map +1 -0
- package/dest/msg_validators/epoch_proof_quote_validator/index.js +2 -0
- package/dest/msg_validators/index.d.ts +4 -0
- package/dest/msg_validators/index.d.ts.map +1 -0
- package/dest/msg_validators/index.js +4 -0
- package/dest/{tx_validator → msg_validators/tx_validator}/aggregate_tx_validator.d.ts +1 -1
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/aggregate_tx_validator.js +34 -0
- package/dest/msg_validators/tx_validator/data_validator.d.ts.map +1 -0
- package/dest/{tx_validator → msg_validators/tx_validator}/data_validator.js +1 -1
- package/dest/{tx_validator → msg_validators/tx_validator}/double_spend_validator.d.ts +3 -2
- package/dest/msg_validators/tx_validator/double_spend_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/double_spend_validator.js +56 -0
- package/dest/msg_validators/tx_validator/index.d.ts.map +1 -0
- package/dest/{tx_validator → msg_validators/tx_validator}/index.js +1 -1
- package/dest/msg_validators/tx_validator/metadata_validator.d.ts.map +1 -0
- package/dest/{tx_validator → msg_validators/tx_validator}/metadata_validator.js +1 -1
- package/dest/msg_validators/tx_validator/tx_proof_validator.d.ts.map +1 -0
- package/dest/msg_validators/tx_validator/tx_proof_validator.js +29 -0
- package/dest/services/data_store.d.ts.map +1 -0
- package/dest/services/data_store.js +188 -0
- package/dest/{service → services/discv5}/discV5_service.d.ts +3 -9
- package/dest/services/discv5/discV5_service.d.ts.map +1 -0
- package/dest/services/discv5/discV5_service.js +139 -0
- package/dest/services/dummy_service.d.ts.map +1 -0
- package/dest/{service → services}/dummy_service.js +1 -1
- package/dest/{service → services}/encoding.d.ts +5 -0
- package/dest/services/encoding.d.ts.map +1 -0
- package/dest/services/encoding.js +65 -0
- package/dest/services/index.d.ts +3 -0
- package/dest/services/index.d.ts.map +1 -0
- package/dest/services/index.js +3 -0
- package/dest/services/libp2p/libp2p_service.d.ts +222 -0
- package/dest/services/libp2p/libp2p_service.d.ts.map +1 -0
- package/dest/services/libp2p/libp2p_service.js +697 -0
- package/dest/services/peer-scoring/peer_scoring.d.ts +25 -0
- package/dest/services/peer-scoring/peer_scoring.d.ts.map +1 -0
- package/dest/services/peer-scoring/peer_scoring.js +75 -0
- package/dest/services/peer_manager.d.ts +60 -0
- package/dest/services/peer_manager.d.ts.map +1 -0
- package/dest/services/peer_manager.js +358 -0
- package/dest/services/reqresp/config.d.ts.map +1 -0
- package/dest/{service → services}/reqresp/config.js +1 -1
- package/dest/services/reqresp/handlers.d.ts.map +1 -0
- package/dest/{service → services}/reqresp/handlers.js +1 -1
- package/dest/services/reqresp/index.d.ts.map +1 -0
- package/dest/{service → services}/reqresp/index.js +1 -1
- package/dest/services/reqresp/interface.d.ts.map +1 -0
- package/dest/{service → services}/reqresp/interface.js +1 -1
- package/dest/services/reqresp/rate_limiter/index.d.ts.map +1 -0
- package/dest/{service → services}/reqresp/rate_limiter/index.js +1 -1
- package/dest/{service → services}/reqresp/rate_limiter/rate_limiter.d.ts +0 -5
- package/dest/services/reqresp/rate_limiter/rate_limiter.d.ts.map +1 -0
- package/dest/{service → services}/reqresp/rate_limiter/rate_limiter.js +7 -2
- package/dest/services/reqresp/rate_limiter/rate_limits.d.ts.map +1 -0
- package/dest/{service → services}/reqresp/rate_limiter/rate_limits.js +1 -1
- package/dest/{service → services}/reqresp/reqresp.d.ts +16 -0
- package/dest/services/reqresp/reqresp.d.ts.map +1 -0
- package/dest/services/reqresp/reqresp.js +279 -0
- package/dest/services/service.d.ts.map +1 -0
- package/dest/{service → services}/service.js +1 -1
- package/dest/services/types.d.ts +38 -0
- package/dest/services/types.d.ts.map +1 -0
- package/dest/services/types.js +43 -0
- package/package.json +14 -11
- package/src/bootstrap/bootstrap.ts +25 -20
- package/src/client/factory.ts +97 -0
- package/src/client/index.ts +1 -73
- package/src/client/p2p_client.ts +28 -15
- package/src/config.ts +2 -2
- package/src/errors/reqresp.error.ts +15 -1
- package/src/index.ts +2 -2
- package/src/mem_pools/attestation_pool/attestation_pool.ts +10 -0
- package/src/mem_pools/attestation_pool/attestation_pool_test_suite.ts +237 -0
- package/src/mem_pools/attestation_pool/kv_attestation_pool.ts +153 -0
- package/src/mem_pools/interface.ts +5 -3
- package/src/mocks/index.ts +16 -10
- package/src/msg_validators/attestation_validator/attestation_validator.ts +26 -0
- package/src/msg_validators/attestation_validator/index.ts +1 -0
- package/src/msg_validators/block_proposal_validator/block_proposal_validator.ts +29 -0
- package/src/msg_validators/block_proposal_validator/index.ts +1 -0
- package/src/msg_validators/epoch_proof_quote_validator/epoch_proof_quote_validator.ts +22 -0
- package/src/msg_validators/epoch_proof_quote_validator/index.ts +1 -0
- package/src/msg_validators/index.ts +3 -0
- package/src/{tx_validator → msg_validators/tx_validator}/aggregate_tx_validator.ts +5 -3
- package/src/{tx_validator → msg_validators/tx_validator}/double_spend_validator.ts +6 -8
- package/src/{service → services/discv5}/discV5_service.ts +19 -23
- package/src/{service → services}/encoding.ts +21 -3
- package/src/services/index.ts +2 -0
- package/src/{service → services/libp2p}/libp2p_service.ts +350 -90
- package/src/{service → services/peer-scoring}/peer_scoring.ts +27 -23
- package/src/services/peer_manager.ts +422 -0
- package/src/{service → services}/reqresp/rate_limiter/rate_limiter.ts +2 -1
- package/src/{service → services}/reqresp/reqresp.ts +86 -20
- package/src/services/types.ts +44 -0
- package/dest/service/data_store.d.ts.map +0 -1
- package/dest/service/data_store.js +0 -188
- package/dest/service/discV5_service.d.ts.map +0 -1
- package/dest/service/discV5_service.js +0 -144
- package/dest/service/dummy_service.d.ts.map +0 -1
- package/dest/service/encoding.d.ts.map +0 -1
- package/dest/service/encoding.js +0 -49
- package/dest/service/index.d.ts +0 -3
- package/dest/service/index.d.ts.map +0 -1
- package/dest/service/index.js +0 -3
- package/dest/service/libp2p_service.d.ts +0 -136
- package/dest/service/libp2p_service.d.ts.map +0 -1
- package/dest/service/libp2p_service.js +0 -500
- package/dest/service/peer_manager.d.ts +0 -33
- package/dest/service/peer_manager.d.ts.map +0 -1
- package/dest/service/peer_manager.js +0 -214
- package/dest/service/peer_scoring.d.ts +0 -35
- package/dest/service/peer_scoring.d.ts.map +0 -1
- package/dest/service/peer_scoring.js +0 -72
- package/dest/service/reqresp/config.d.ts.map +0 -1
- package/dest/service/reqresp/handlers.d.ts.map +0 -1
- package/dest/service/reqresp/index.d.ts.map +0 -1
- package/dest/service/reqresp/interface.d.ts.map +0 -1
- package/dest/service/reqresp/rate_limiter/index.d.ts.map +0 -1
- package/dest/service/reqresp/rate_limiter/rate_limiter.d.ts.map +0 -1
- package/dest/service/reqresp/rate_limiter/rate_limits.d.ts.map +0 -1
- package/dest/service/reqresp/reqresp.d.ts.map +0 -1
- package/dest/service/reqresp/reqresp.js +0 -230
- package/dest/service/service.d.ts.map +0 -1
- package/dest/tx_validator/aggregate_tx_validator.d.ts.map +0 -1
- package/dest/tx_validator/aggregate_tx_validator.js +0 -32
- package/dest/tx_validator/data_validator.d.ts.map +0 -1
- package/dest/tx_validator/double_spend_validator.d.ts.map +0 -1
- package/dest/tx_validator/double_spend_validator.js +0 -56
- package/dest/tx_validator/index.d.ts.map +0 -1
- package/dest/tx_validator/metadata_validator.d.ts.map +0 -1
- package/dest/tx_validator/tx_proof_validator.d.ts.map +0 -1
- package/dest/tx_validator/tx_proof_validator.js +0 -29
- package/src/service/index.ts +0 -2
- package/src/service/peer_manager.ts +0 -266
- /package/dest/{tx_validator → msg_validators/tx_validator}/data_validator.d.ts +0 -0
- /package/dest/{tx_validator → msg_validators/tx_validator}/index.d.ts +0 -0
- /package/dest/{tx_validator → msg_validators/tx_validator}/metadata_validator.d.ts +0 -0
- /package/dest/{tx_validator → msg_validators/tx_validator}/tx_proof_validator.d.ts +0 -0
- /package/dest/{service → services}/data_store.d.ts +0 -0
- /package/dest/{service → services}/dummy_service.d.ts +0 -0
- /package/dest/{service → services}/reqresp/config.d.ts +0 -0
- /package/dest/{service → services}/reqresp/handlers.d.ts +0 -0
- /package/dest/{service → services}/reqresp/index.d.ts +0 -0
- /package/dest/{service → services}/reqresp/interface.d.ts +0 -0
- /package/dest/{service → services}/reqresp/rate_limiter/index.d.ts +0 -0
- /package/dest/{service → services}/reqresp/rate_limiter/rate_limits.d.ts +0 -0
- /package/dest/{service → services}/service.d.ts +0 -0
- /package/src/{tx_validator → msg_validators/tx_validator}/data_validator.ts +0 -0
- /package/src/{tx_validator → msg_validators/tx_validator}/index.ts +0 -0
- /package/src/{tx_validator → msg_validators/tx_validator}/metadata_validator.ts +0 -0
- /package/src/{tx_validator → msg_validators/tx_validator}/tx_proof_validator.ts +0 -0
- /package/src/{service → services}/data_store.ts +0 -0
- /package/src/{service → services}/dummy_service.ts +0 -0
- /package/src/{service → services}/reqresp/config.ts +0 -0
- /package/src/{service → services}/reqresp/handlers.ts +0 -0
- /package/src/{service → services}/reqresp/index.ts +0 -0
- /package/src/{service → services}/reqresp/interface.ts +0 -0
- /package/src/{service → services}/reqresp/rate_limiter/index.ts +0 -0
- /package/src/{service → services}/reqresp/rate_limiter/rate_limits.ts +0 -0
- /package/src/{service → services}/service.ts +0 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/***************************************************
|
|
2
|
+
* Events
|
|
3
|
+
***************************************************/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Events emitted from the libp2p node.
|
|
7
|
+
*/
|
|
8
|
+
export enum PeerEvent {
|
|
9
|
+
DISCOVERED = 'peer:discovered',
|
|
10
|
+
CONNECTED = 'peer:connect',
|
|
11
|
+
DISCONNECTED = 'peer:disconnect',
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Events emitted from the Discv5 service.
|
|
16
|
+
*/
|
|
17
|
+
export enum Discv5Event {
|
|
18
|
+
DISCOVERED = 'discovered',
|
|
19
|
+
ENR_ADDED = 'enrAdded',
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Events emitted from the GossipSub protocol.
|
|
24
|
+
*/
|
|
25
|
+
export enum GossipSubEvent {
|
|
26
|
+
MESSAGE = 'gossipsub:message',
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/***************************************************
|
|
30
|
+
* Types
|
|
31
|
+
***************************************************/
|
|
32
|
+
/**
|
|
33
|
+
* Aztec network specific types
|
|
34
|
+
*/
|
|
35
|
+
export const AZTEC_ENR_KEY = 'aztec_network';
|
|
36
|
+
|
|
37
|
+
export enum AztecENR {
|
|
38
|
+
devnet = 0x01,
|
|
39
|
+
testnet = 0x02,
|
|
40
|
+
mainnet = 0x03,
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// TODO: Make this an env var
|
|
44
|
+
export const AZTEC_NET = AztecENR.devnet;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data_store.d.ts","sourceRoot":"","sources":["../../src/service/data_store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,KAAK,IAAI,EAAE,KAAK,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAqBrD,qBAAa,cAAe,YAAW,SAAS;;IAM9C,OAAO,CAAC,cAAc,CAAS;gBAEnB,EAAE,EAAE,YAAY,EAAE,EAAE,cAAc,EAAE;;KAAyB;IAOzE,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAItB,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,UAAU;IAgBzB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAIrC,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC;IAOxD,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC;IASxD,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC;IAO3D,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrC,KAAK,IAAI,KAAK;IA4Bd,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC;IA4BpC,SAAS,CAAC,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC;YA2B5B,IAAI;YAqBH,GAAG;IAkBlB;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAiB7B"}
|
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
var _AztecDatastore_memoryDatastore, _AztecDatastore_dbDatastore, _AztecDatastore_batchOps;
|
|
2
|
-
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
|
-
import { filter, map, sort, take } from '@aztec/foundation/iterable';
|
|
4
|
-
import { Key } from 'interface-datastore';
|
|
5
|
-
class KeyNotFoundError extends Error {
|
|
6
|
-
constructor(message) {
|
|
7
|
-
super(message);
|
|
8
|
-
this.code = 'ERR_NOT_FOUND';
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
export class AztecDatastore {
|
|
12
|
-
constructor(db, { maxMemoryItems } = { maxMemoryItems: 50 }) {
|
|
13
|
-
_AztecDatastore_memoryDatastore.set(this, void 0);
|
|
14
|
-
_AztecDatastore_dbDatastore.set(this, void 0);
|
|
15
|
-
_AztecDatastore_batchOps.set(this, []);
|
|
16
|
-
__classPrivateFieldSet(this, _AztecDatastore_memoryDatastore, new Map(), "f");
|
|
17
|
-
__classPrivateFieldSet(this, _AztecDatastore_dbDatastore, db.openMap('p2p_datastore'), "f");
|
|
18
|
-
this.maxMemoryItems = maxMemoryItems;
|
|
19
|
-
}
|
|
20
|
-
has(key) {
|
|
21
|
-
return __classPrivateFieldGet(this, _AztecDatastore_memoryDatastore, "f").has(key.toString()) || __classPrivateFieldGet(this, _AztecDatastore_dbDatastore, "f").has(key.toString());
|
|
22
|
-
}
|
|
23
|
-
get(key) {
|
|
24
|
-
const keyStr = key.toString();
|
|
25
|
-
const memoryItem = __classPrivateFieldGet(this, _AztecDatastore_memoryDatastore, "f").get(keyStr);
|
|
26
|
-
if (memoryItem) {
|
|
27
|
-
memoryItem.lastAccessedMs = Date.now();
|
|
28
|
-
return memoryItem.data;
|
|
29
|
-
}
|
|
30
|
-
const dbItem = __classPrivateFieldGet(this, _AztecDatastore_dbDatastore, "f").get(keyStr);
|
|
31
|
-
if (!dbItem) {
|
|
32
|
-
throw new KeyNotFoundError(`Key not found`);
|
|
33
|
-
}
|
|
34
|
-
return Uint8Array.from(dbItem);
|
|
35
|
-
}
|
|
36
|
-
put(key, val) {
|
|
37
|
-
return this._put(key, val);
|
|
38
|
-
}
|
|
39
|
-
async *putMany(source) {
|
|
40
|
-
for await (const { key, value } of source) {
|
|
41
|
-
await this.put(key, value);
|
|
42
|
-
yield key;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
async *getMany(source) {
|
|
46
|
-
for await (const key of source) {
|
|
47
|
-
yield {
|
|
48
|
-
key,
|
|
49
|
-
value: this.get(key),
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
async *deleteMany(source) {
|
|
54
|
-
for await (const key of source) {
|
|
55
|
-
await this.delete(key);
|
|
56
|
-
yield key;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
async delete(key) {
|
|
60
|
-
__classPrivateFieldGet(this, _AztecDatastore_memoryDatastore, "f").delete(key.toString());
|
|
61
|
-
await __classPrivateFieldGet(this, _AztecDatastore_dbDatastore, "f").delete(key.toString());
|
|
62
|
-
}
|
|
63
|
-
batch() {
|
|
64
|
-
return {
|
|
65
|
-
put: (key, value) => {
|
|
66
|
-
__classPrivateFieldGet(this, _AztecDatastore_batchOps, "f").push({
|
|
67
|
-
type: 'put',
|
|
68
|
-
key,
|
|
69
|
-
value,
|
|
70
|
-
});
|
|
71
|
-
},
|
|
72
|
-
delete: key => {
|
|
73
|
-
__classPrivateFieldGet(this, _AztecDatastore_batchOps, "f").push({
|
|
74
|
-
type: 'del',
|
|
75
|
-
key,
|
|
76
|
-
});
|
|
77
|
-
},
|
|
78
|
-
commit: async () => {
|
|
79
|
-
for (const op of __classPrivateFieldGet(this, _AztecDatastore_batchOps, "f")) {
|
|
80
|
-
if (op.type === 'put' && op.value) {
|
|
81
|
-
await this.put(op.key, op.value);
|
|
82
|
-
}
|
|
83
|
-
else if (op.type === 'del') {
|
|
84
|
-
await this.delete(op.key);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
__classPrivateFieldSet(this, _AztecDatastore_batchOps, [], "f"); // Clear operations after commit
|
|
88
|
-
},
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
query(q) {
|
|
92
|
-
let it = this.all(); //
|
|
93
|
-
const { prefix, filters, orders, offset, limit } = q;
|
|
94
|
-
if (prefix != null) {
|
|
95
|
-
it = filter(it, e => e.key.toString().startsWith(`${prefix}`));
|
|
96
|
-
}
|
|
97
|
-
if (Array.isArray(filters)) {
|
|
98
|
-
it = filters.reduce((it, f) => filter(it, f), it);
|
|
99
|
-
}
|
|
100
|
-
if (Array.isArray(orders)) {
|
|
101
|
-
it = orders.reduce((it, f) => sort(it, f), it);
|
|
102
|
-
}
|
|
103
|
-
if (offset != null) {
|
|
104
|
-
let i = 0;
|
|
105
|
-
it = filter(it, () => i++ >= offset);
|
|
106
|
-
}
|
|
107
|
-
if (limit != null) {
|
|
108
|
-
it = take(it, limit);
|
|
109
|
-
}
|
|
110
|
-
return it;
|
|
111
|
-
}
|
|
112
|
-
queryKeys(q) {
|
|
113
|
-
let it = map(this.all(), ({ key }) => key);
|
|
114
|
-
const { prefix, filters, orders, offset, limit } = q;
|
|
115
|
-
if (prefix != null) {
|
|
116
|
-
it = filter(it, e => e.toString().startsWith(`${prefix}`));
|
|
117
|
-
}
|
|
118
|
-
if (Array.isArray(filters)) {
|
|
119
|
-
it = filters.reduce((it, f) => filter(it, f), it);
|
|
120
|
-
}
|
|
121
|
-
if (Array.isArray(orders)) {
|
|
122
|
-
it = orders.reduce((it, f) => sort(it, f), it);
|
|
123
|
-
}
|
|
124
|
-
if (offset != null) {
|
|
125
|
-
let i = 0;
|
|
126
|
-
it = filter(it, () => i++ >= offset);
|
|
127
|
-
}
|
|
128
|
-
if (limit != null) {
|
|
129
|
-
it = take(it, limit);
|
|
130
|
-
}
|
|
131
|
-
return it;
|
|
132
|
-
}
|
|
133
|
-
async _put(key, val) {
|
|
134
|
-
const keyStr = key.toString();
|
|
135
|
-
while (__classPrivateFieldGet(this, _AztecDatastore_memoryDatastore, "f").size >= this.maxMemoryItems) {
|
|
136
|
-
this.pruneMemoryDatastore();
|
|
137
|
-
}
|
|
138
|
-
const memoryItem = __classPrivateFieldGet(this, _AztecDatastore_memoryDatastore, "f").get(keyStr);
|
|
139
|
-
if (memoryItem) {
|
|
140
|
-
// update existing
|
|
141
|
-
memoryItem.lastAccessedMs = Date.now();
|
|
142
|
-
memoryItem.data = val;
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
// new entry
|
|
146
|
-
__classPrivateFieldGet(this, _AztecDatastore_memoryDatastore, "f").set(keyStr, { data: val, lastAccessedMs: Date.now() });
|
|
147
|
-
}
|
|
148
|
-
// Always add to DB
|
|
149
|
-
await __classPrivateFieldGet(this, _AztecDatastore_dbDatastore, "f").set(keyStr, val);
|
|
150
|
-
return key;
|
|
151
|
-
}
|
|
152
|
-
async *all() {
|
|
153
|
-
for (const [key, value] of __classPrivateFieldGet(this, _AztecDatastore_memoryDatastore, "f").entries()) {
|
|
154
|
-
yield {
|
|
155
|
-
key: new Key(key),
|
|
156
|
-
value: value.data,
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
for (const [key, value] of __classPrivateFieldGet(this, _AztecDatastore_dbDatastore, "f").entries()) {
|
|
160
|
-
if (!__classPrivateFieldGet(this, _AztecDatastore_memoryDatastore, "f").has(key)) {
|
|
161
|
-
yield {
|
|
162
|
-
key: new Key(key),
|
|
163
|
-
value,
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Prune memory store
|
|
170
|
-
*/
|
|
171
|
-
pruneMemoryDatastore() {
|
|
172
|
-
let oldestAccessedMs = Date.now() + 1000;
|
|
173
|
-
let oldestKey = undefined;
|
|
174
|
-
let oldestValue = undefined;
|
|
175
|
-
for (const [key, value] of __classPrivateFieldGet(this, _AztecDatastore_memoryDatastore, "f")) {
|
|
176
|
-
if (value.lastAccessedMs < oldestAccessedMs) {
|
|
177
|
-
oldestAccessedMs = value.lastAccessedMs;
|
|
178
|
-
oldestKey = key;
|
|
179
|
-
oldestValue = value.data;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
if (oldestKey && oldestValue) {
|
|
183
|
-
__classPrivateFieldGet(this, _AztecDatastore_memoryDatastore, "f").delete(oldestKey);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
_AztecDatastore_memoryDatastore = new WeakMap(), _AztecDatastore_dbDatastore = new WeakMap(), _AztecDatastore_batchOps = new WeakMap();
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlL2RhdGFfc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHckUsT0FBTyxFQUE4QixHQUFHLEVBQXdDLE1BQU0scUJBQXFCLENBQUM7QUFjNUcsTUFBTSxnQkFBaUIsU0FBUSxLQUFLO0lBRWxDLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQztJQUM5QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sY0FBYztJQVF6QixZQUFZLEVBQWdCLEVBQUUsRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUU7UUFQekUsa0RBQTBDO1FBQzFDLDhDQUEyQztRQUUzQyxtQ0FBdUIsRUFBRSxFQUFDO1FBS3hCLHVCQUFBLElBQUksbUNBQW9CLElBQUksR0FBRyxFQUFFLE1BQUEsQ0FBQztRQUNsQyx1QkFBQSxJQUFJLCtCQUFnQixFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxNQUFBLENBQUM7UUFFaEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDdkMsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFRO1FBQ1YsT0FBTyx1QkFBQSxJQUFJLHVDQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSx1QkFBQSxJQUFJLG1DQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzVGLENBQUM7SUFFRCxHQUFHLENBQUMsR0FBUTtRQUNWLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLFVBQVUsR0FBRyx1QkFBQSxJQUFJLHVDQUFpQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsVUFBVSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDdkMsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQ3pCLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyx1QkFBQSxJQUFJLG1DQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTdDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxHQUFHLENBQUMsR0FBUSxFQUFFLEdBQWU7UUFDM0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQTJCO1FBQ3hDLElBQUksS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksTUFBTSxFQUFFLENBQUM7WUFDMUMsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMzQixNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQTBCO1FBQ3ZDLElBQUksS0FBSyxFQUFFLE1BQU0sR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQy9CLE1BQU07Z0JBQ0osR0FBRztnQkFDSCxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7YUFDckIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQTBCO1FBQzFDLElBQUksS0FBSyxFQUFFLE1BQU0sR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QixNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFRO1FBQ25CLHVCQUFBLElBQUksdUNBQWlCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sdUJBQUEsSUFBSSxtQ0FBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsS0FBSztRQUNILE9BQU87WUFDTCxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ2xCLHVCQUFBLElBQUksZ0NBQVUsQ0FBQyxJQUFJLENBQUM7b0JBQ2xCLElBQUksRUFBRSxLQUFLO29CQUNYLEdBQUc7b0JBQ0gsS0FBSztpQkFDTixDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNaLHVCQUFBLElBQUksZ0NBQVUsQ0FBQyxJQUFJLENBQUM7b0JBQ2xCLElBQUksRUFBRSxLQUFLO29CQUNYLEdBQUc7aUJBQ0osQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDakIsS0FBSyxNQUFNLEVBQUUsSUFBSSx1QkFBQSxJQUFJLGdDQUFVLEVBQUUsQ0FBQztvQkFDaEMsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQ2xDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDbkMsQ0FBQzt5QkFBTSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFLENBQUM7d0JBQzdCLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzVCLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCx1QkFBQSxJQUFJLDRCQUFhLEVBQUUsTUFBQSxDQUFDLENBQUMsZ0NBQWdDO1lBQ3ZELENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxDQUFRO1FBQ1osSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRTtRQUN2QixNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUVyRCxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNuQixFQUFFLEdBQUcsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMzQixFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzFCLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ1YsRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUVELElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2xCLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxTQUFTLENBQUMsQ0FBVztRQUNuQixJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDckQsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbkIsRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMzQixFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzFCLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ1YsRUFBRSxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUVELElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2xCLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFTyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQVEsRUFBRSxHQUFlO1FBQzFDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixPQUFPLHVCQUFBLElBQUksdUNBQWlCLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6RCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QixDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQUcsdUJBQUEsSUFBSSx1Q0FBaUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckQsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLGtCQUFrQjtZQUNsQixVQUFVLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN2QyxVQUFVLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUN4QixDQUFDO2FBQU0sQ0FBQztZQUNOLFlBQVk7WUFDWix1QkFBQSxJQUFJLHVDQUFpQixDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLENBQUM7UUFFRCxtQkFBbUI7UUFDbkIsTUFBTSx1QkFBQSxJQUFJLG1DQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV6QyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTyxLQUFLLENBQUMsQ0FBQyxHQUFHO1FBQ2hCLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSx1QkFBQSxJQUFJLHVDQUFpQixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDM0QsTUFBTTtnQkFDSixHQUFHLEVBQUUsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDO2dCQUNqQixLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUk7YUFDbEIsQ0FBQztRQUNKLENBQUM7UUFFRCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksdUJBQUEsSUFBSSxtQ0FBYSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLHVCQUFBLElBQUksdUNBQWlCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BDLE1BQU07b0JBQ0osR0FBRyxFQUFFLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQztvQkFDakIsS0FBSztpQkFDTixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxvQkFBb0I7UUFDMUIsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3pDLElBQUksU0FBUyxHQUF1QixTQUFTLENBQUM7UUFDOUMsSUFBSSxXQUFXLEdBQTJCLFNBQVMsQ0FBQztRQUVwRCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksdUJBQUEsSUFBSSx1Q0FBaUIsRUFBRSxDQUFDO1lBQ2pELElBQUksS0FBSyxDQUFDLGNBQWMsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUM1QyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDO2dCQUN4QyxTQUFTLEdBQUcsR0FBRyxDQUFDO2dCQUNoQixXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksU0FBUyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQzdCLHVCQUFBLElBQUksdUNBQWlCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discV5_service.d.ts","sourceRoot":"","sources":["../../src/service/discV5_service.ts"],"names":[],"mappings":";AAEA,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAGnF,OAAO,EAAE,GAAG,EAAe,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,KAAK,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE7E,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAI7C,oBAAY,QAAQ;IAClB,MAAM,IAAO;IACb,OAAO,IAAO;IACd,OAAO,IAAO;CACf;AAGD,eAAO,MAAM,SAAS,kBAAkB,CAAC;AAEzC;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAa,YAAW,oBAAoB;IAkB3E,OAAO,CAAC,MAAM;IAGd,OAAO,CAAC,MAAM;IApBhB,0BAA0B;IAC1B,OAAO,CAAC,MAAM,CAAS;IAEvB,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAc;IAEzB,sBAAsB;IACtB,OAAO,CAAC,kBAAkB,CAAY;IAEtC,OAAO,CAAC,YAAY,CAA8B;IAElD,OAAO,CAAC,cAAc,CAAW;IACjC,OAAO,CAAC,oBAAoB,CAAgB;IAE5C,OAAO,CAAC,SAAS,CAAK;gBAGZ,MAAM,EAAE,MAAM,EACtB,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,eAAe,EAClB,MAAM,yCAAqC;IAgDxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BtB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB1C,WAAW,IAAI,GAAG,EAAE;IAIpB,MAAM,IAAI,GAAG;IAIb,SAAS,IAAI,MAAM;IAInB,SAAS,IAAI,kBAAkB;IAI/B,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKlC,OAAO,CAAC,YAAY;CAWrB"}
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
-
import { sleep } from '@aztec/foundation/sleep';
|
|
3
|
-
import { OtelMetricsAdapter } from '@aztec/telemetry-client';
|
|
4
|
-
import { Discv5 } from '@chainsafe/discv5';
|
|
5
|
-
import { ENR, SignableENR } from '@chainsafe/enr';
|
|
6
|
-
import { multiaddr } from '@multiformats/multiaddr';
|
|
7
|
-
import EventEmitter from 'events';
|
|
8
|
-
import { convertToMultiaddr } from '../util.js';
|
|
9
|
-
import { PeerDiscoveryState } from './service.js';
|
|
10
|
-
export const AZTEC_ENR_KEY = 'aztec_network';
|
|
11
|
-
const delayBeforeStart = 2000; // 2sec
|
|
12
|
-
export var AztecENR;
|
|
13
|
-
(function (AztecENR) {
|
|
14
|
-
AztecENR[AztecENR["devnet"] = 1] = "devnet";
|
|
15
|
-
AztecENR[AztecENR["testnet"] = 2] = "testnet";
|
|
16
|
-
AztecENR[AztecENR["mainnet"] = 3] = "mainnet";
|
|
17
|
-
})(AztecENR || (AztecENR = {}));
|
|
18
|
-
// TODO: Make this an env var
|
|
19
|
-
export const AZTEC_NET = AztecENR.devnet;
|
|
20
|
-
/**
|
|
21
|
-
* Peer discovery service using Discv5.
|
|
22
|
-
*/
|
|
23
|
-
export class DiscV5Service extends EventEmitter {
|
|
24
|
-
constructor(peerId, config, telemetry, logger = createLogger('p2p:discv5_service')) {
|
|
25
|
-
super();
|
|
26
|
-
this.peerId = peerId;
|
|
27
|
-
this.logger = logger;
|
|
28
|
-
this.currentState = PeerDiscoveryState.STOPPED;
|
|
29
|
-
this.bootstrapNodePeerIds = [];
|
|
30
|
-
this.startTime = 0;
|
|
31
|
-
const { tcpAnnounceAddress, udpAnnounceAddress, udpListenAddress, bootstrapNodes } = config;
|
|
32
|
-
this.bootstrapNodes = bootstrapNodes;
|
|
33
|
-
// create ENR from PeerId
|
|
34
|
-
this.enr = SignableENR.createFromPeerId(peerId);
|
|
35
|
-
// Add aztec identification to ENR
|
|
36
|
-
this.enr.set(AZTEC_ENR_KEY, Uint8Array.from([AZTEC_NET]));
|
|
37
|
-
if (!tcpAnnounceAddress) {
|
|
38
|
-
throw new Error('You need to provide at least a TCP announce address.');
|
|
39
|
-
}
|
|
40
|
-
const multiAddrTcp = multiaddr(`${convertToMultiaddr(tcpAnnounceAddress, 'tcp')}/p2p/${peerId.toString()}`);
|
|
41
|
-
// if no udp announce address is provided, use the tcp announce address
|
|
42
|
-
const multiAddrUdp = multiaddr(`${convertToMultiaddr(udpAnnounceAddress || tcpAnnounceAddress, 'udp')}/p2p/${peerId.toString()}`);
|
|
43
|
-
this.listenMultiAddrUdp = multiaddr(convertToMultiaddr(udpListenAddress, 'udp'));
|
|
44
|
-
// set location multiaddr in ENR record
|
|
45
|
-
this.enr.setLocationMultiaddr(multiAddrUdp);
|
|
46
|
-
this.enr.setLocationMultiaddr(multiAddrTcp);
|
|
47
|
-
const metricsRegistry = new OtelMetricsAdapter(telemetry);
|
|
48
|
-
this.discv5 = Discv5.create({
|
|
49
|
-
enr: this.enr,
|
|
50
|
-
peerId,
|
|
51
|
-
bindAddrs: { ip4: this.listenMultiAddrUdp },
|
|
52
|
-
config: {
|
|
53
|
-
lookupTimeout: 2000,
|
|
54
|
-
requestTimeout: 2000,
|
|
55
|
-
allowUnverifiedSessions: true,
|
|
56
|
-
},
|
|
57
|
-
metricsRegistry,
|
|
58
|
-
});
|
|
59
|
-
this.discv5.on('discovered', (enr) => this.onDiscovered(enr));
|
|
60
|
-
this.discv5.on('enrAdded', async (enr) => {
|
|
61
|
-
const multiAddrTcp = await enr.getFullMultiaddr('tcp');
|
|
62
|
-
const multiAddrUdp = await enr.getFullMultiaddr('udp');
|
|
63
|
-
this.logger.debug(`Added ENR ${enr.encodeTxt()}`, { multiAddrTcp, multiAddrUdp, nodeId: enr.nodeId });
|
|
64
|
-
this.onDiscovered(enr);
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
async start() {
|
|
68
|
-
if (this.currentState === PeerDiscoveryState.RUNNING) {
|
|
69
|
-
throw new Error('DiscV5Service already started');
|
|
70
|
-
}
|
|
71
|
-
this.logger.debug('Starting DiscV5');
|
|
72
|
-
await this.discv5.start();
|
|
73
|
-
this.startTime = Date.now();
|
|
74
|
-
this.logger.info(`DiscV5 service started`, {
|
|
75
|
-
nodeId: this.enr.nodeId,
|
|
76
|
-
peerId: this.peerId,
|
|
77
|
-
enrUdp: await this.enr.getFullMultiaddr('udp'),
|
|
78
|
-
enrTcp: await this.enr.getFullMultiaddr('tcp'),
|
|
79
|
-
});
|
|
80
|
-
this.currentState = PeerDiscoveryState.RUNNING;
|
|
81
|
-
// Add bootnode ENR if provided
|
|
82
|
-
if (this.bootstrapNodes?.length) {
|
|
83
|
-
// Do this conversion once since it involves an async function call
|
|
84
|
-
this.bootstrapNodePeerIds = await Promise.all(this.bootstrapNodes.map(enr => ENR.decodeTxt(enr).peerId()));
|
|
85
|
-
this.logger.info(`Adding bootstrap nodes ENRs: ${this.bootstrapNodes.join(', ')}`);
|
|
86
|
-
try {
|
|
87
|
-
this.bootstrapNodes.forEach(enr => {
|
|
88
|
-
this.discv5.addEnr(enr);
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
catch (e) {
|
|
92
|
-
this.logger.error(`Error adding bootnode ENRs: ${e}`);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
async runRandomNodesQuery() {
|
|
97
|
-
if (this.currentState !== PeerDiscoveryState.RUNNING) {
|
|
98
|
-
throw new Error('DiscV5Service not running');
|
|
99
|
-
}
|
|
100
|
-
// First, wait some time before starting the peer discovery
|
|
101
|
-
// reference: https://github.com/ChainSafe/lodestar/issues/3423
|
|
102
|
-
const msSinceStart = Date.now() - this.startTime;
|
|
103
|
-
if (Date.now() - this.startTime <= delayBeforeStart) {
|
|
104
|
-
await sleep(delayBeforeStart - msSinceStart);
|
|
105
|
-
}
|
|
106
|
-
try {
|
|
107
|
-
await this.discv5.findRandomNode();
|
|
108
|
-
}
|
|
109
|
-
catch (err) {
|
|
110
|
-
this.logger.error(`Error running discV5 random node query: ${err}`);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
getAllPeers() {
|
|
114
|
-
return this.discv5.kadValues();
|
|
115
|
-
}
|
|
116
|
-
getEnr() {
|
|
117
|
-
return this.enr.toENR();
|
|
118
|
-
}
|
|
119
|
-
getPeerId() {
|
|
120
|
-
return this.peerId;
|
|
121
|
-
}
|
|
122
|
-
getStatus() {
|
|
123
|
-
return this.currentState;
|
|
124
|
-
}
|
|
125
|
-
isBootstrapPeer(peerId) {
|
|
126
|
-
return this.bootstrapNodePeerIds.some(node => node.equals(peerId));
|
|
127
|
-
}
|
|
128
|
-
async stop() {
|
|
129
|
-
await this.discv5.stop();
|
|
130
|
-
this.currentState = PeerDiscoveryState.STOPPED;
|
|
131
|
-
}
|
|
132
|
-
onDiscovered(enr) {
|
|
133
|
-
// check the peer is an aztec peer
|
|
134
|
-
const value = enr.kvs.get(AZTEC_ENR_KEY);
|
|
135
|
-
if (value) {
|
|
136
|
-
const network = value[0];
|
|
137
|
-
// check if the peer is on the same network
|
|
138
|
-
if (network === AZTEC_NET) {
|
|
139
|
-
this.emit('peer:discovered', enr);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY1Y1X3NlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZS9kaXNjVjVfc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBd0IsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRixPQUFPLEVBQUUsTUFBTSxFQUEyQixNQUFNLG1CQUFtQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEQsT0FBTyxFQUFrQixTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRSxPQUFPLFlBQVksTUFBTSxRQUFRLENBQUM7QUFHbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hELE9BQU8sRUFBNkIsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0UsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQztBQUU3QyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU87QUFFdEMsTUFBTSxDQUFOLElBQVksUUFJWDtBQUpELFdBQVksUUFBUTtJQUNsQiwyQ0FBYSxDQUFBO0lBQ2IsNkNBQWMsQ0FBQTtJQUNkLDZDQUFjLENBQUE7QUFDaEIsQ0FBQyxFQUpXLFFBQVEsS0FBUixRQUFRLFFBSW5CO0FBRUQsNkJBQTZCO0FBQzdCLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO0FBRXpDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGFBQWMsU0FBUSxZQUFZO0lBaUI3QyxZQUNVLE1BQWMsRUFDdEIsTUFBaUIsRUFDakIsU0FBMEIsRUFDbEIsU0FBUyxZQUFZLENBQUMsb0JB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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dummy_service.d.ts","sourceRoot":"","sources":["../../src/service/dummy_service.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE1G,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE9F;;GAEG;AACH,qBAAa,eAAgB,YAAW,UAAU;IAChD,wCAAwC;IACxC,QAAQ,IAAI,QAAQ,EAAE;IAItB;;;OAGG;IACI,KAAK;IAIZ;;;OAGG;IACI,IAAI;IAIX;;;OAGG;IACI,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,EAAE,CAAC;IAE3C;;;OAGG;IACI,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE;IAE7B;;OAEG;IACI,6BAA6B,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,gBAAgB,CAAC;IAE3F;;;;;OAKG;IACI,WAAW,CAAC,QAAQ,SAAS,kBAAkB,EACpD,SAAS,EAAE,QAAQ,EACnB,QAAQ,EAAE,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GAC1D,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC;IAI1E;;;OAGG;IACI,MAAM,IAAI,SAAS;CAG3B;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,YAAa,YAAW,oBAAoB;IACzF,OAAO,CAAC,YAAY,CAA8B;IAClD;;;OAGG;IACI,KAAK;IAIZ;;;OAGG;IACI,IAAI;IAIX;;;OAGG;IACI,WAAW;IAIX,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO;IAInC,SAAS,IAAI,kBAAkB;IAI/B,MAAM,IAAI,SAAS;CAG3B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../src/service/encoding.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAajD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAKvD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAItD;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,UAK1C;AAED,qBAAa,eAAgB,YAAW,aAAa;IACnD,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU;IAKjE,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU;CAGnE"}
|
package/dest/service/encoding.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
// Taken from lodestar: https://github.com/ChainSafe/lodestar
|
|
2
|
-
import { sha256 } from '@aztec/foundation/crypto';
|
|
3
|
-
import { compressSync, uncompressSync } from 'snappy';
|
|
4
|
-
import xxhashFactory from 'xxhash-wasm';
|
|
5
|
-
// Load WASM
|
|
6
|
-
const xxhash = await xxhashFactory();
|
|
7
|
-
// Use salt to prevent msgId from being mined for collisions
|
|
8
|
-
const h64Seed = BigInt(Math.floor(Math.random() * 1e9));
|
|
9
|
-
// Shared buffer to convert msgId to string
|
|
10
|
-
const sharedMsgIdBuf = Buffer.alloc(20);
|
|
11
|
-
/**
|
|
12
|
-
* The function used to generate a gossipsub message id
|
|
13
|
-
* We use the first 8 bytes of SHA256(data) for content addressing
|
|
14
|
-
*/
|
|
15
|
-
export function fastMsgIdFn(rpcMsg) {
|
|
16
|
-
if (rpcMsg.data) {
|
|
17
|
-
return xxhash.h64Raw(rpcMsg.data, h64Seed).toString(16);
|
|
18
|
-
}
|
|
19
|
-
return '0000000000000000';
|
|
20
|
-
}
|
|
21
|
-
export function msgIdToStrFn(msgId) {
|
|
22
|
-
// This happens serially, no need to reallocate the buffer
|
|
23
|
-
sharedMsgIdBuf.set(msgId);
|
|
24
|
-
return `0x${sharedMsgIdBuf.toString('hex')}`;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Get the message identifier from a libp2p message
|
|
28
|
-
*
|
|
29
|
-
* Follows similarly to:
|
|
30
|
-
* https://github.com/ethereum/consensus-specs/blob/v1.1.0-alpha.7/specs/altair/p2p-interface.md#topics-and-messages
|
|
31
|
-
*
|
|
32
|
-
* @param message - The libp2p message
|
|
33
|
-
* @returns The message identifier
|
|
34
|
-
*/
|
|
35
|
-
export function getMsgIdFn(message) {
|
|
36
|
-
const { topic } = message;
|
|
37
|
-
const vec = [Buffer.from(topic), message.data];
|
|
38
|
-
return sha256(Buffer.concat(vec)).subarray(0, 20);
|
|
39
|
-
}
|
|
40
|
-
export class SnappyTransform {
|
|
41
|
-
inboundTransform(_topicStr, data) {
|
|
42
|
-
const uncompressed = Buffer.from(uncompressSync(Buffer.from(data), { asBuffer: true }));
|
|
43
|
-
return new Uint8Array(uncompressed);
|
|
44
|
-
}
|
|
45
|
-
outboundTransform(_topicStr, data) {
|
|
46
|
-
return new Uint8Array(compressSync(Buffer.from(data)));
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZS9lbmNvZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2REFBNkQ7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBS2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3RELE9BQU8sYUFBYSxNQUFNLGFBQWEsQ0FBQztBQUV4QyxZQUFZO0FBQ1osTUFBTSxNQUFNLEdBQUcsTUFBTSxhQUFhLEVBQUUsQ0FBQztBQUVyQyw0REFBNEQ7QUFDNUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFeEQsMkNBQTJDO0FBQzNDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7QUFFeEM7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxNQUFtQjtJQUM3QyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNELE9BQU8sa0JBQWtCLENBQUM7QUFDNUIsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsS0FBaUI7SUFDNUMsMERBQTBEO0lBQzFELGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsT0FBTyxLQUFLLGNBQWMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUMvQyxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLE9BQWdCO0lBQ3pDLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFFMUIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQsTUFBTSxPQUFPLGVBQWU7SUFDMUIsZ0JBQWdCLENBQUMsU0FBaUIsRUFBRSxJQUFnQjtRQUNsRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RixPQUFPLElBQUksVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxTQUFpQixFQUFFLElBQWdCO1FBQ25ELE9BQU8sSUFBSSxVQUFVLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7Q0FDRiJ9
|
package/dest/service/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/service/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC"}
|
package/dest/service/index.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from './service.js';
|
|
2
|
-
export * from './libp2p_service.js';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLHFCQUFxQixDQUFDIn0=
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { BlockAttestation, BlockProposal, type ClientProtocolCircuitVerifier, type Gossipable, type L2BlockSource, type PeerInfo, type WorldStateSynchronizer } from '@aztec/circuit-types';
|
|
2
|
-
import type { AztecKVStore } from '@aztec/kv-store';
|
|
3
|
-
import { type TelemetryClient, WithTracer } from '@aztec/telemetry-client';
|
|
4
|
-
import { type ENR } from '@chainsafe/enr';
|
|
5
|
-
import type { PeerId } from '@libp2p/interface';
|
|
6
|
-
import '@libp2p/kad-dht';
|
|
7
|
-
import { type P2PConfig } from '../config.js';
|
|
8
|
-
import { type MemPools } from '../mem_pools/interface.js';
|
|
9
|
-
import { type PubSubLibp2p } from '../util.js';
|
|
10
|
-
import { type ReqRespSubProtocol, type ReqRespSubProtocolHandlers, type SubProtocolMap } from './reqresp/interface.js';
|
|
11
|
-
import { ReqResp } from './reqresp/reqresp.js';
|
|
12
|
-
import type { P2PService, PeerDiscoveryService } from './service.js';
|
|
13
|
-
/**
|
|
14
|
-
* Lib P2P implementation of the P2PService interface.
|
|
15
|
-
*/
|
|
16
|
-
export declare class LibP2PService extends WithTracer implements P2PService {
|
|
17
|
-
private config;
|
|
18
|
-
private node;
|
|
19
|
-
private peerDiscoveryService;
|
|
20
|
-
private mempools;
|
|
21
|
-
private l2BlockSource;
|
|
22
|
-
private proofVerifier;
|
|
23
|
-
private worldStateSynchronizer;
|
|
24
|
-
private telemetry;
|
|
25
|
-
private requestResponseHandlers;
|
|
26
|
-
private logger;
|
|
27
|
-
private jobQueue;
|
|
28
|
-
private peerManager;
|
|
29
|
-
private discoveryRunningPromise?;
|
|
30
|
-
reqresp: ReqResp;
|
|
31
|
-
/**
|
|
32
|
-
* Callback for when a block is received from a peer.
|
|
33
|
-
* @param block - The block received from the peer.
|
|
34
|
-
* @returns The attestation for the block, if any.
|
|
35
|
-
*/
|
|
36
|
-
private blockReceivedCallback;
|
|
37
|
-
constructor(config: P2PConfig, node: PubSubLibp2p, peerDiscoveryService: PeerDiscoveryService, mempools: MemPools, l2BlockSource: L2BlockSource, proofVerifier: ClientProtocolCircuitVerifier, worldStateSynchronizer: WorldStateSynchronizer, telemetry: TelemetryClient, requestResponseHandlers?: ReqRespSubProtocolHandlers, logger?: import("@aztec/foundation/log").Logger);
|
|
38
|
-
/**
|
|
39
|
-
* Starts the LibP2P service.
|
|
40
|
-
* @returns An empty promise.
|
|
41
|
-
*/
|
|
42
|
-
start(): Promise<void>;
|
|
43
|
-
/**
|
|
44
|
-
* Stops the LibP2P service.
|
|
45
|
-
* @returns An empty promise.
|
|
46
|
-
*/
|
|
47
|
-
stop(): Promise<void>;
|
|
48
|
-
/**
|
|
49
|
-
* Creates an instance of the LibP2P service.
|
|
50
|
-
* @param config - The configuration to use when creating the service.
|
|
51
|
-
* @param txPool - The transaction pool to be accessed by the service.
|
|
52
|
-
* @returns The new service.
|
|
53
|
-
*/
|
|
54
|
-
static new(config: P2PConfig, peerDiscoveryService: PeerDiscoveryService, peerId: PeerId, mempools: MemPools, l2BlockSource: L2BlockSource, proofVerifier: ClientProtocolCircuitVerifier, worldStateSynchronizer: WorldStateSynchronizer, store: AztecKVStore, telemetry: TelemetryClient): Promise<LibP2PService>;
|
|
55
|
-
getPeers(includePending?: boolean): PeerInfo[];
|
|
56
|
-
/**
|
|
57
|
-
* Send Request via the ReqResp service
|
|
58
|
-
* The subprotocol defined will determine the request and response types
|
|
59
|
-
*
|
|
60
|
-
* See the subProtocolMap for the mapping of subprotocols to request/response types in `interface.ts`
|
|
61
|
-
*
|
|
62
|
-
* @param protocol The request response protocol to use
|
|
63
|
-
* @param request The request type to send
|
|
64
|
-
* @returns
|
|
65
|
-
*/
|
|
66
|
-
sendRequest<SubProtocol extends ReqRespSubProtocol>(protocol: SubProtocol, request: InstanceType<SubProtocolMap[SubProtocol]['request']>): Promise<InstanceType<SubProtocolMap[SubProtocol]['response']> | undefined>;
|
|
67
|
-
/**
|
|
68
|
-
* Get the ENR of the node
|
|
69
|
-
* @returns The ENR of the node
|
|
70
|
-
*/
|
|
71
|
-
getEnr(): ENR | undefined;
|
|
72
|
-
registerBlockReceivedCallback(callback: (block: BlockProposal) => Promise<BlockAttestation | undefined>): void;
|
|
73
|
-
/**
|
|
74
|
-
* Subscribes to a topic.
|
|
75
|
-
* @param topic - The topic to subscribe to.
|
|
76
|
-
*/
|
|
77
|
-
private subscribeToTopic;
|
|
78
|
-
/**
|
|
79
|
-
* Publishes data to a topic.
|
|
80
|
-
* @param topic - The topic to publish to.
|
|
81
|
-
* @param data - The data to publish.
|
|
82
|
-
* @returns The number of recipients the data was sent to.
|
|
83
|
-
*/
|
|
84
|
-
private publishToTopic;
|
|
85
|
-
/**
|
|
86
|
-
* Handles a new gossip message that was received by the client.
|
|
87
|
-
* @param topic - The message's topic.
|
|
88
|
-
* @param data - The message data
|
|
89
|
-
*/
|
|
90
|
-
private handleNewGossipMessage;
|
|
91
|
-
/**Process Attestation From Peer
|
|
92
|
-
* When a proposal is received from a peer, we add it to the attestation pool, so it can be accessed by other services.
|
|
93
|
-
*
|
|
94
|
-
* @param attestation - The attestation to process.
|
|
95
|
-
*/
|
|
96
|
-
private processAttestationFromPeer;
|
|
97
|
-
/**Process block from peer
|
|
98
|
-
*
|
|
99
|
-
* Pass the received block to the validator client
|
|
100
|
-
*
|
|
101
|
-
* @param block - The block to process.
|
|
102
|
-
*/
|
|
103
|
-
private processBlockFromPeer;
|
|
104
|
-
/**
|
|
105
|
-
* Broadcast an attestation to all peers.
|
|
106
|
-
* @param attestation - The attestation to broadcast.
|
|
107
|
-
*/
|
|
108
|
-
private broadcastAttestation;
|
|
109
|
-
private processEpochProofQuoteFromPeer;
|
|
110
|
-
/**
|
|
111
|
-
* Propagates provided message to peers.
|
|
112
|
-
* @param message - The message to propagate.
|
|
113
|
-
*/
|
|
114
|
-
propagate<T extends Gossipable>(message: T): void;
|
|
115
|
-
private processTxFromPeer;
|
|
116
|
-
/**
|
|
117
|
-
* Validate a tx that has been requested from a peer.
|
|
118
|
-
*
|
|
119
|
-
* The core component of this validator is that the tx hash MUST match the requested tx hash,
|
|
120
|
-
* In order to perform this check, the tx proof must be verified.
|
|
121
|
-
*
|
|
122
|
-
* Note: This function is called from within `ReqResp.sendRequest` as part of the
|
|
123
|
-
* TX_REQ_PROTOCOL subprotocol validation.
|
|
124
|
-
*
|
|
125
|
-
* @param requestedTxHash - The hash of the tx that was requested.
|
|
126
|
-
* @param responseTx - The tx that was received as a response to the request.
|
|
127
|
-
* @param peerId - The peer ID of the peer that sent the tx.
|
|
128
|
-
* @returns True if the tx is valid, false otherwise.
|
|
129
|
-
*/
|
|
130
|
-
private validateRequestedTx;
|
|
131
|
-
private validatePropagatedTx;
|
|
132
|
-
getPeerScore(peerId: PeerId): number;
|
|
133
|
-
private sendToPeers;
|
|
134
|
-
private stopLibP2P;
|
|
135
|
-
}
|
|
136
|
-
//# sourceMappingURL=libp2p_service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"libp2p_service.d.ts","sourceRoot":"","sources":["../../src/service/libp2p_service.ts"],"names":[],"mappings":"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"}
|