From d427e969665f3db4b610b504ab228a5292a00adf Mon Sep 17 00:00:00 2001 From: Mohammad Kermani Date: Fri, 6 Sep 2024 18:27:00 +0330 Subject: [PATCH 01/12] chore(rosenet-node, rosenet-relay): bump all libp2p packages --- packages/rosenet-node/lib/utils/codec.ts | 2 +- packages/rosenet-node/package.json | 18 +++++++++--------- packages/rosenet-relay/package.json | 14 +++++++------- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/packages/rosenet-node/lib/utils/codec.ts b/packages/rosenet-node/lib/utils/codec.ts index ffe24d6..eb37f15 100644 --- a/packages/rosenet-node/lib/utils/codec.ts +++ b/packages/rosenet-node/lib/utils/codec.ts @@ -23,7 +23,7 @@ const decode = (source: Source) => source, lp.decode, (source) => map(source, (message) => message.subarray()), - (source) => map(source, textDecoder.decode.bind(textDecoder)), + (source) => map(source, input => textDecoder.decode(input)), ); export { decode, encode }; diff --git a/packages/rosenet-node/package.json b/packages/rosenet-node/package.json index 171b287..d64cedc 100644 --- a/packages/rosenet-node/package.json +++ b/packages/rosenet-node/package.json @@ -35,23 +35,23 @@ "node": ">=20.11.0" }, "dependencies": { - "@chainsafe/libp2p-gossipsub": "^12.0.0", - "@chainsafe/libp2p-noise": "^15.0.0", + "@chainsafe/libp2p-gossipsub": "^13.2.0", + "@chainsafe/libp2p-noise": "^15.1.1", "@chainsafe/libp2p-yamux": "^6.0.2", - "@libp2p/bootstrap": "^10.0.15", - "@libp2p/circuit-relay-v2": "^1.0.15", - "@libp2p/identify": "^1.0.14", - "@libp2p/peer-id": "^4.0.6", + "@libp2p/bootstrap": "^10.1.5", + "@libp2p/circuit-relay-v2": "^1.1.5", + "@libp2p/identify": "^2.1.5", + "@libp2p/peer-id": "^4.2.4", "@libp2p/pubsub-peer-discovery": "^10.0.2", - "@libp2p/tcp": "^9.0.15", - "@multiformats/multiaddr": "^12.2.1", + "@libp2p/tcp": "^9.1.5", + "@multiformats/multiaddr": "^12.3.0", "@rosen-bridge/rosenet-utils": "^0.0.0", "fast-shuffle": "^6.1.0", "it-first": "^3.0.4", "it-length-prefixed": "^9.0.4", "it-map": "^3.0.5", "it-pipe": "^3.0.1", - "libp2p": "^1.2.3", + "libp2p": "^1.9.2", "public-ip": "^6.0.2" } } diff --git a/packages/rosenet-relay/package.json b/packages/rosenet-relay/package.json index ef7cfa9..86567cd 100644 --- a/packages/rosenet-relay/package.json +++ b/packages/rosenet-relay/package.json @@ -33,16 +33,16 @@ "node": ">=20.11.0" }, "dependencies": { - "@chainsafe/libp2p-gossipsub": "^12.0.0", - "@chainsafe/libp2p-noise": "^15.0.0", + "@chainsafe/libp2p-gossipsub": "^13.2.0", + "@chainsafe/libp2p-noise": "^15.1.1", "@chainsafe/libp2p-yamux": "^6.0.2", - "@libp2p/circuit-relay-v2": "^1.0.15", - "@libp2p/identify": "^1.0.14", - "@libp2p/interface": "^1.1.3", + "@libp2p/circuit-relay-v2": "^1.1.5", + "@libp2p/identify": "^2.1.5", + "@libp2p/interface": "^1.7.0", "@libp2p/pubsub-peer-discovery": "^10.0.2", - "@libp2p/tcp": "^9.0.15", + "@libp2p/tcp": "^9.1.5", "@rosen-bridge/logger-interface": "^0.2.0", "@rosen-bridge/rosenet-utils": "^0.0.0", - "libp2p": "^1.2.3" + "libp2p": "^1.9.2" } } From b344bd1bc19941e02da54e43f278b8d167f578ea Mon Sep 17 00:00:00 2001 From: Mohammad Kermani Date: Fri, 6 Sep 2024 18:29:35 +0330 Subject: [PATCH 02/12] chore: add `.dockerignore` --- .dockerignore | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.dockerignore b/.dockerignore index 3c3629e..868fbe2 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1 +1,5 @@ -node_modules +**/node_modules +# **/dist +**/coverage +**/.terraform +packages-legacy From 77eb758263adbaf9ac3ddc7e7ca5647e16eab3d2 Mon Sep 17 00:00:00 2001 From: Mohammad Kermani Date: Fri, 6 Sep 2024 19:12:59 +0330 Subject: [PATCH 03/12] feat(rosenet-relay): add public address filter If relays advertise their private addresses, it causes the nodes to waste resources trying to connect those addresses. --- packages/rosenet-relay/lib/createRoseNetRelay.ts | 3 +++ packages/rosenet-relay/package.json | 1 + 2 files changed, 4 insertions(+) diff --git a/packages/rosenet-relay/lib/createRoseNetRelay.ts b/packages/rosenet-relay/lib/createRoseNetRelay.ts index 2caad00..646def4 100644 --- a/packages/rosenet-relay/lib/createRoseNetRelay.ts +++ b/packages/rosenet-relay/lib/createRoseNetRelay.ts @@ -7,6 +7,7 @@ import { yamux } from '@chainsafe/libp2p-yamux'; import { pubsubPeerDiscovery } from '@libp2p/pubsub-peer-discovery'; import { tcp } from '@libp2p/tcp'; import { createLibp2p } from 'libp2p'; +import { isPrivate } from '@libp2p/utils/multiaddr/is-private'; import { addEventListeners, @@ -49,6 +50,8 @@ const createRoseNetRelay = async ({ listen: [ `/ip4/${config.listen?.host ?? DEFAULT_LISTEN_HOST}/tcp/${config.listen?.port ?? '0'}`, ], + announceFilter: (addresses) => + addresses.filter((address) => !isPrivate(address)), }, transports: [tcp()], connectionEncryption: [noise()], diff --git a/packages/rosenet-relay/package.json b/packages/rosenet-relay/package.json index 86567cd..0b720fe 100644 --- a/packages/rosenet-relay/package.json +++ b/packages/rosenet-relay/package.json @@ -41,6 +41,7 @@ "@libp2p/interface": "^1.7.0", "@libp2p/pubsub-peer-discovery": "^10.0.2", "@libp2p/tcp": "^9.1.5", + "@libp2p/utils": "^5.4.9", "@rosen-bridge/logger-interface": "^0.2.0", "@rosen-bridge/rosenet-utils": "^0.0.0", "libp2p": "^1.9.2" From 0920138e26e8b61450ed1de4c0435db3601736a8 Mon Sep 17 00:00:00 2001 From: Mohammad Kermani Date: Sat, 7 Sep 2024 11:14:45 +0330 Subject: [PATCH 04/12] fix(rosenet-node, rosenet-relay): update gossipsub config key --- packages/rosenet-node/lib/createRoseNetNode.ts | 2 +- packages/rosenet-relay/lib/createRoseNetRelay.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/rosenet-node/lib/createRoseNetNode.ts b/packages/rosenet-node/lib/createRoseNetNode.ts index d1f5ad5..6ac106a 100644 --- a/packages/rosenet-node/lib/createRoseNetNode.ts +++ b/packages/rosenet-node/lib/createRoseNetNode.ts @@ -115,7 +115,7 @@ const createRoseNetNode = async ({ services: { identify: identify(), pubsub: gossipsub({ - allowPublishToZeroPeers: true, + allowPublishToZeroTopicPeers: true, }), }, logger: libp2pLoggerFactory(logger, config.debug?.libp2pComponents ?? []), diff --git a/packages/rosenet-relay/lib/createRoseNetRelay.ts b/packages/rosenet-relay/lib/createRoseNetRelay.ts index 646def4..846c4ed 100644 --- a/packages/rosenet-relay/lib/createRoseNetRelay.ts +++ b/packages/rosenet-relay/lib/createRoseNetRelay.ts @@ -77,7 +77,7 @@ const createRoseNetRelay = async ({ }, }), pubsub: gossipsub({ - allowPublishToZeroPeers: true, + allowPublishToZeroTopicPeers: true, D: 0, Dlo: 0, Dhi: 0, From 7c7c394c2fbd4ec4831481acd82fae41afa23fae Mon Sep 17 00:00:00 2001 From: Mohammad Kermani Date: Sat, 7 Sep 2024 11:16:11 +0330 Subject: [PATCH 05/12] feat(rosenet-node, rosenet-relay): configure `maxInboundDataLength` for gossipsub --- packages/rosenet-node/lib/createRoseNetNode.ts | 8 ++++++++ packages/rosenet-relay/lib/createRoseNetRelay.ts | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/packages/rosenet-node/lib/createRoseNetNode.ts b/packages/rosenet-node/lib/createRoseNetNode.ts index 6ac106a..02b6696 100644 --- a/packages/rosenet-node/lib/createRoseNetNode.ts +++ b/packages/rosenet-node/lib/createRoseNetNode.ts @@ -116,6 +116,14 @@ const createRoseNetNode = async ({ identify: identify(), pubsub: gossipsub({ allowPublishToZeroTopicPeers: true, + /** + * Current implementation of Gossipsub includes at most 5000 messages in + * IHAVE or IWANT messages during a `mcachegossip` window, which is by + * default 3 heartbeats. Supposing a limit of 100KB for each message, a + * maximum of around 5000*100KB=500MB is received in 3 heartbeats from + * a single stream, which is 500MB/3≃170MB. + */ + maxInboundDataLength: 170_000_000, // 170MB }), }, logger: libp2pLoggerFactory(logger, config.debug?.libp2pComponents ?? []), diff --git a/packages/rosenet-relay/lib/createRoseNetRelay.ts b/packages/rosenet-relay/lib/createRoseNetRelay.ts index 846c4ed..dfa2b20 100644 --- a/packages/rosenet-relay/lib/createRoseNetRelay.ts +++ b/packages/rosenet-relay/lib/createRoseNetRelay.ts @@ -82,6 +82,14 @@ const createRoseNetRelay = async ({ Dlo: 0, Dhi: 0, Dout: 0, + /** + * Current implementation of Gossipsub includes at most 5000 messages in + * IHAVE or IWANT messages during a `mcachegossip` window, which is by + * default 3 heartbeats. Supposing a limit of 100KB for each message, a + * maximum of around 5000*100KB=500MB is received in 3 heartbeats from + * a single stream, which is 500MB/3≃170MB. + */ + maxInboundDataLength: 170_000_000, // 170MB }), identify: identify(), }, From 9d42ed1d81e602e7d6db3c1600b1b93e3750000a Mon Sep 17 00:00:00 2001 From: Mohammad Kermani Date: Sat, 7 Sep 2024 11:39:30 +0330 Subject: [PATCH 06/12] feat(rosenet-relay): disable autodial In Rosenet, relays are mostly passive (at least for now), and shouldn't initiate a dial to other nodes. --- packages/rosenet-relay/lib/createRoseNetRelay.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/rosenet-relay/lib/createRoseNetRelay.ts b/packages/rosenet-relay/lib/createRoseNetRelay.ts index dfa2b20..964a3da 100644 --- a/packages/rosenet-relay/lib/createRoseNetRelay.ts +++ b/packages/rosenet-relay/lib/createRoseNetRelay.ts @@ -98,6 +98,9 @@ const createRoseNetRelay = async ({ name: 'rosenet-relay', version: packageJson.version, }, + connectionManager: { + minConnections: 0, + }, logger: libp2pLoggerFactory(logger, config.debug?.libp2pComponents ?? []), }); From 7a0e5fbb65c7bbe0dff3b10de672a8b9de48606d Mon Sep 17 00:00:00 2001 From: Mohammad Kermani Date: Sat, 7 Sep 2024 11:42:18 +0330 Subject: [PATCH 07/12] feat(rosenet-relay): increase `ping` stream limit This is required for the connection monitor component of libp2p to work as expected. --- packages/rosenet-relay/lib/createRoseNetRelay.ts | 12 ++++++++++++ packages/rosenet-relay/package.json | 1 + 2 files changed, 13 insertions(+) diff --git a/packages/rosenet-relay/lib/createRoseNetRelay.ts b/packages/rosenet-relay/lib/createRoseNetRelay.ts index 964a3da..56e667a 100644 --- a/packages/rosenet-relay/lib/createRoseNetRelay.ts +++ b/packages/rosenet-relay/lib/createRoseNetRelay.ts @@ -7,6 +7,7 @@ import { yamux } from '@chainsafe/libp2p-yamux'; import { pubsubPeerDiscovery } from '@libp2p/pubsub-peer-discovery'; import { tcp } from '@libp2p/tcp'; import { createLibp2p } from 'libp2p'; +import { ping } from '@libp2p/ping'; import { isPrivate } from '@libp2p/utils/multiaddr/is-private'; import { @@ -92,6 +93,17 @@ const createRoseNetRelay = async ({ maxInboundDataLength: 170_000_000, // 170MB }), identify: identify(), + ping: ping({ + /** + * Connection monitor component of libp2p uses `ping` internally. For + * relays, there is a chance they have lots of connections, beyond the + * default number of allowed `ping` steams. It should be increased to + * prevent stream resets as a result of exceeding those limits. + * Supposing that autodial of relays is disabled, there is no need to + * increase outbound streams limit. + */ + maxInboundStreams: 128, + }), }, peerDiscovery: [pubsubPeerDiscovery({ listenOnly: true })], nodeInfo: { diff --git a/packages/rosenet-relay/package.json b/packages/rosenet-relay/package.json index 0b720fe..f95e012 100644 --- a/packages/rosenet-relay/package.json +++ b/packages/rosenet-relay/package.json @@ -39,6 +39,7 @@ "@libp2p/circuit-relay-v2": "^1.1.5", "@libp2p/identify": "^2.1.5", "@libp2p/interface": "^1.7.0", + "@libp2p/ping": "^1.1.5", "@libp2p/pubsub-peer-discovery": "^10.0.2", "@libp2p/tcp": "^9.1.5", "@libp2p/utils": "^5.4.9", From 37b1bbaeedfd2d4df1208a75cff87050b7eadd3d Mon Sep 17 00:00:00 2001 From: Mohammad Kermani Date: Sat, 7 Sep 2024 11:45:06 +0330 Subject: [PATCH 08/12] refactor(rosenet-node, rosenet-relay): instantiate codec objects once Instead of creating text encoders and decoders per call to `publish` and `subscribe`, create them only once and re-use them. --- packages/rosenet-node/lib/createRoseNetNode.ts | 5 +++-- packages/rosenet-relay/lib/createRoseNetRelay.ts | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/rosenet-node/lib/createRoseNetNode.ts b/packages/rosenet-node/lib/createRoseNetNode.ts index 02b6696..ac82f63 100644 --- a/packages/rosenet-node/lib/createRoseNetNode.ts +++ b/packages/rosenet-node/lib/createRoseNetNode.ts @@ -37,6 +37,9 @@ import packageJson from '../package.json' with { type: 'json' }; import { RoseNetNodeConfig } from './types'; +const textEncoder = new TextEncoder(); +const textDecoder = new TextDecoder(); + const createRoseNetNode = async ({ logger, port = DEFAULT_NODE_PORT, @@ -180,14 +183,12 @@ const createRoseNetNode = async ({ ); }, publish: async (topic: string, message: string) => { - const textEncoder = new TextEncoder(); node.services.pubsub.publish(topic, textEncoder.encode(message)); }, subscribe: async (topic: string, handler: (message: string) => void) => { node.services.pubsub.subscribe(topic); node.services.pubsub.addEventListener('message', (event) => { if (event.detail.topic === topic) { - const textDecoder = new TextDecoder(); handler(textDecoder.decode(event.detail.data)); } }); diff --git a/packages/rosenet-relay/lib/createRoseNetRelay.ts b/packages/rosenet-relay/lib/createRoseNetRelay.ts index 56e667a..9276958 100644 --- a/packages/rosenet-relay/lib/createRoseNetRelay.ts +++ b/packages/rosenet-relay/lib/createRoseNetRelay.ts @@ -24,6 +24,8 @@ import packageJson from '../package.json' with { type: 'json' }; import { RoseNetRelayConfig } from './types'; +const textDecoder = new TextDecoder(); + const createRoseNetRelay = async ({ logger, ...config @@ -126,7 +128,6 @@ const createRoseNetRelay = async ({ node.services.pubsub.subscribe(topic); node.services.pubsub.addEventListener('message', (event) => { if (event.detail.topic === topic) { - const textDecoder = new TextDecoder(); handler(textDecoder.decode(event.detail.data)); } }); From a8f6cef232fb1a442865bd59291ec1856ed8009d Mon Sep 17 00:00:00 2001 From: Mohammad Kermani Date: Sun, 8 Sep 2024 15:11:45 +0330 Subject: [PATCH 09/12] feat(rosenet-node): add relay discovery restart service Because no peer router is configured for RoseNet, we should restart the relay discovery service manually so that it is not halted forever. More details can be found here: https://github.com/libp2p/js-libp2p/issues/2676 --- packages/rosenet-node/lib/constants.ts | 2 + .../rosenet-node/lib/createRoseNetNode.ts | 3 + .../lib/libp2p/restart-relay-discovery.ts | 130 ++++++++++++++++++ packages/rosenet-node/package.json | 4 + 4 files changed, 139 insertions(+) create mode 100644 packages/rosenet-node/lib/libp2p/restart-relay-discovery.ts diff --git a/packages/rosenet-node/lib/constants.ts b/packages/rosenet-node/lib/constants.ts index 65a330f..7c92259 100644 --- a/packages/rosenet-node/lib/constants.ts +++ b/packages/rosenet-node/lib/constants.ts @@ -1,3 +1,5 @@ export const RELAYS_COUNT_TO_CONNECT = 3; +export const MIN_RELAYS = 2; +export const RELAY_DISCOVERY_RESTART_INTERVAL = 10_000; export const ROSENET_DIRECT_PROTOCOL_V1 = '/rosenet/direct/1'; export const DEFAULT_NODE_PORT = 55123; diff --git a/packages/rosenet-node/lib/createRoseNetNode.ts b/packages/rosenet-node/lib/createRoseNetNode.ts index ac82f63..a1989d5 100644 --- a/packages/rosenet-node/lib/createRoseNetNode.ts +++ b/packages/rosenet-node/lib/createRoseNetNode.ts @@ -19,6 +19,8 @@ import { import RoseNetNodeContext from './context/RoseNetNodeContext'; +import restartRelayDiscovery from './libp2p/restart-relay-discovery'; + import addressService from './address/address-service'; import streamService from './stream/stream-service'; @@ -128,6 +130,7 @@ const createRoseNetNode = async ({ */ maxInboundDataLength: 170_000_000, // 170MB }), + restartRelayDiscovery, }, logger: libp2pLoggerFactory(logger, config.debug?.libp2pComponents ?? []), }); diff --git a/packages/rosenet-node/lib/libp2p/restart-relay-discovery.ts b/packages/rosenet-node/lib/libp2p/restart-relay-discovery.ts new file mode 100644 index 0000000..6718c4d --- /dev/null +++ b/packages/rosenet-node/lib/libp2p/restart-relay-discovery.ts @@ -0,0 +1,130 @@ +import { CircuitRelayTransport } from '@libp2p/circuit-relay-v2/src/transport/transport'; +import { + Startable, + serviceDependencies, + ComponentLogger, + Logger, +} from '@libp2p/interface'; +import { TransportManager } from '@libp2p/interface-internal'; +import { BloomFilter } from '@libp2p/utils/filters'; + +import { + BrokenCircuitError, + circuitBreaker, + ConsecutiveBreaker, + handleWhenResult, + IterableBackoff, +} from 'cockatiel'; + +import { MIN_RELAYS, RELAY_DISCOVERY_RESTART_INTERVAL } from '../constants'; + +interface RestartRelayDiscoveryComponents { + transportManager: TransportManager; + logger: ComponentLogger; +} + +/** + * Because of the way libp2p tries to maintain the connection to relays, a + * proper libp2p setup for relay discovery should configure a peer router (such + * as kad-dht) so that random walk can be done. But current implementation of + * RoseNet doesn't configure a peer router. In addition, there MAY be an issue + * in the relay discovery implementation which causes the discovery to halt if + * an unexpected error occurs during the discovery. More details can be found in + * the following issue: + * https://github.com/libp2p/js-libp2p/issues/2676 + * + * This libp2p service forcefully restarts the whole relay discovery whenever + * the number of relays become smaller than a threshold. This is not a clean + * method to do so at all, and should be removed when the above issue resolves, + * or when a peer router is added to libp2p instance. + */ +class RestartRelayDiscovery implements Startable { + interval: NodeJS.Timeout | null = null; + breaker = circuitBreaker( + handleWhenResult(() => { + const circuitRelayTransport = this.getCircuitRelayTransport(); + return ( + circuitRelayTransport.reservationStore.reservationCount() < MIN_RELAYS + ); + }), + { + breaker: new ConsecutiveBreaker(5), + halfOpenAfter: new IterableBackoff([30_000, 45_000, 60_000]), + }, + ); + logger: Logger; + + constructor(private components: RestartRelayDiscoveryComponents) { + this.logger = components.logger.forComponent( + 'libp2p:restart-relay-discovery', + ); + } + + readonly [serviceDependencies] = ['@libp2p/circuit-relay-v2-transport']; + + /** + * @returns circuit relay transport + */ + private getCircuitRelayTransport = () => { + const circuitRelayTransport = this.components.transportManager + .getTransports() + .find( + (transport) => + transport[Symbol.toStringTag] === + '@libp2p/circuit-relay-v2-transport', + ) as CircuitRelayTransport; + + return circuitRelayTransport; + }; + + /** + * restart relay discovery and clear reservation store relay filter if the + * number of reservations is smaller than a threshold + */ + private restartRelayDiscoveryIfNeeded = () => { + const circuitRelayTransport = this.getCircuitRelayTransport(); + + if ( + circuitRelayTransport.reservationStore.reservationCount() < MIN_RELAYS + ) { + circuitRelayTransport['discovery']!.stopDiscovery(); + ( + circuitRelayTransport.reservationStore['relayFilter'] as BloomFilter + ).clear(); + circuitRelayTransport['discovery']!.startDiscovery(); + this.logger( + 'restarted relay discovery in order to re-connect some of the relays', + ); + } + }; + + /** + * start service + */ + start = () => { + this.interval = setInterval(async () => { + try { + await this.breaker.execute(this.restartRelayDiscoveryIfNeeded); + } catch (error) { + if (error instanceof BrokenCircuitError) { + // log error + this.logger('libp2p:restart-relay-discovery circuit is open'); + } else { + throw error; + } + } + }, RELAY_DISCOVERY_RESTART_INTERVAL); + }; + + /** + * stop service + */ + stop = () => { + this.interval && clearInterval(this.interval); + }; +} + +const restartRelayDiscovery = (components: RestartRelayDiscoveryComponents) => + new RestartRelayDiscovery(components); + +export default restartRelayDiscovery; diff --git a/packages/rosenet-node/package.json b/packages/rosenet-node/package.json index d64cedc..03f6517 100644 --- a/packages/rosenet-node/package.json +++ b/packages/rosenet-node/package.json @@ -41,11 +41,15 @@ "@libp2p/bootstrap": "^10.1.5", "@libp2p/circuit-relay-v2": "^1.1.5", "@libp2p/identify": "^2.1.5", + "@libp2p/interface": "^1.7.0", + "@libp2p/interface-internal": "^1.3.4", "@libp2p/peer-id": "^4.2.4", "@libp2p/pubsub-peer-discovery": "^10.0.2", "@libp2p/tcp": "^9.1.5", + "@libp2p/utils": "^5.4.9", "@multiformats/multiaddr": "^12.3.0", "@rosen-bridge/rosenet-utils": "^0.0.0", + "cockatiel": "^3.2.1", "fast-shuffle": "^6.1.0", "it-first": "^3.0.4", "it-length-prefixed": "^9.0.4", From 886acaf5362ee9a58f6578bf476b3af848927e19 Mon Sep 17 00:00:00 2001 From: Mohammad Kermani Date: Sun, 8 Sep 2024 15:14:02 +0330 Subject: [PATCH 10/12] feat(rosenet-node): disable autodial As long as hole punching is not enabled, enabling autodial only wastes resources, as the node tries to connect to all of the discovered peers, all of which advertise their public address. --- packages/rosenet-node/lib/createRoseNetNode.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/rosenet-node/lib/createRoseNetNode.ts b/packages/rosenet-node/lib/createRoseNetNode.ts index a1989d5..1df2150 100644 --- a/packages/rosenet-node/lib/createRoseNetNode.ts +++ b/packages/rosenet-node/lib/createRoseNetNode.ts @@ -107,6 +107,9 @@ const createRoseNetNode = async ({ }), }, streamMuxers: [yamux()], + connectionManager: { + minConnections: 0, + }, peerDiscovery: [ bootstrap({ list: sampledRelayMultiaddrs, From 5935dd278df5ce77a74e2c2febca68abe08d7882 Mon Sep 17 00:00:00 2001 From: Mohammad Kermani Date: Sun, 8 Sep 2024 15:21:03 +0330 Subject: [PATCH 11/12] chore: update `package-lock.json` --- package-lock.json | 1151 ++++++++++++++++++++++++++------------------- 1 file changed, 677 insertions(+), 474 deletions(-) diff --git a/package-lock.json b/package-lock.json index 619db9a..62cbd90 100644 --- a/package-lock.json +++ b/package-lock.json @@ -549,102 +549,6 @@ "resolved": "https://registry.npmjs.org/@chainsafe/is-ip/-/is-ip-2.0.2.tgz", "integrity": "sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA==" }, - "node_modules/@chainsafe/libp2p-gossipsub": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-gossipsub/-/libp2p-gossipsub-12.0.0.tgz", - "integrity": "sha512-ZuVIvzZjUaZXSPG6Ni9veVBLkZ4OkVp3zc3E8Y5EG/iIUSNVbHLFxweb3HuA12e3lIXLLurvy4vDyGWp4FpKow==", - "dependencies": { - "@libp2p/crypto": "^4.0.1", - "@libp2p/interface": "^1.1.2", - "@libp2p/interface-internal": "^1.0.7", - "@libp2p/peer-id": "^4.0.5", - "@libp2p/pubsub": "^9.0.8", - "@multiformats/multiaddr": "^12.1.14", - "denque": "^2.1.0", - "it-length-prefixed": "^9.0.4", - "it-pipe": "^3.0.1", - "it-pushable": "^3.2.3", - "multiformats": "^13.0.1", - "protons-runtime": "5.4.0", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.0.1" - }, - "engines": { - "npm": ">=8.7.0" - } - }, - "node_modules/@chainsafe/libp2p-gossipsub/node_modules/it-merge": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/it-merge/-/it-merge-3.0.3.tgz", - "integrity": "sha512-FYVU15KC5pb/GQX1Ims+lee8d4pdqGVCpWr0lkNj8o4xuNo7jY71k6GuEiWdP+T7W1bJqewSxX5yoTy5yZpRVA==", - "dependencies": { - "it-pushable": "^3.2.0" - } - }, - "node_modules/@chainsafe/libp2p-gossipsub/node_modules/it-pipe": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/it-pipe/-/it-pipe-3.0.1.tgz", - "integrity": "sha512-sIoNrQl1qSRg2seYSBH/3QxWhJFn9PKYvOf/bHdtCBF0bnghey44VyASsWzn5dAx0DCDDABq1hZIuzKmtBZmKA==", - "dependencies": { - "it-merge": "^3.0.0", - "it-pushable": "^3.1.2", - "it-stream-types": "^2.0.1" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@chainsafe/libp2p-noise": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-15.0.0.tgz", - "integrity": "sha512-O8Y/WVU4J/qrnG72jwVhbmdXiBzv1dT9B3PMClCRmZ9z/5vVPEGRVXE/SVYeGF3bNuBTLoh+F+GaKG/9UHlMhg==", - "dependencies": { - "@chainsafe/as-chacha20poly1305": "^0.1.0", - "@chainsafe/as-sha256": "^0.4.1", - "@libp2p/crypto": "^4.0.0", - "@libp2p/interface": "^1.0.0", - "@libp2p/peer-id": "^4.0.0", - "@noble/ciphers": "^0.4.0", - "@noble/curves": "^1.1.0", - "@noble/hashes": "^1.3.1", - "it-length-prefixed": "^9.0.1", - "it-length-prefixed-stream": "^1.0.0", - "it-pair": "^2.0.6", - "it-pipe": "^3.0.1", - "it-stream-types": "^2.0.1", - "protons-runtime": "^5.0.0", - "uint8arraylist": "^2.4.3", - "uint8arrays": "^5.0.0", - "wherearewe": "^2.0.1" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@chainsafe/libp2p-noise/node_modules/it-merge": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/it-merge/-/it-merge-3.0.3.tgz", - "integrity": "sha512-FYVU15KC5pb/GQX1Ims+lee8d4pdqGVCpWr0lkNj8o4xuNo7jY71k6GuEiWdP+T7W1bJqewSxX5yoTy5yZpRVA==", - "dependencies": { - "it-pushable": "^3.2.0" - } - }, - "node_modules/@chainsafe/libp2p-noise/node_modules/it-pipe": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/it-pipe/-/it-pipe-3.0.1.tgz", - "integrity": "sha512-sIoNrQl1qSRg2seYSBH/3QxWhJFn9PKYvOf/bHdtCBF0bnghey44VyASsWzn5dAx0DCDDABq1hZIuzKmtBZmKA==", - "dependencies": { - "it-merge": "^3.0.0", - "it-pushable": "^3.1.2", - "it-stream-types": "^2.0.1" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, "node_modules/@chainsafe/libp2p-yamux": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-yamux/-/libp2p-yamux-6.0.2.tgz", @@ -1822,79 +1726,106 @@ "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==" }, "node_modules/@libp2p/bootstrap": { - "version": "10.0.15", - "resolved": "https://registry.npmjs.org/@libp2p/bootstrap/-/bootstrap-10.0.15.tgz", - "integrity": "sha512-5GLppn6AW1CVHnTHnAkdtuOeVmB2HOGi65SxKLW0GBtS8zsuiuedtolbIN1mkPFsshYUhWMcVOcxNQn4tWJKMw==", + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/@libp2p/bootstrap/-/bootstrap-10.1.5.tgz", + "integrity": "sha512-cXn/Wl7X4uaVGRyh/uSU/crRbhsPkyzH59hzoLP3727f7w82o+sIHVr4SkJcJewt+LZELBLgkJTibZxAntA1dA==", "dependencies": { - "@libp2p/interface": "^1.1.3", - "@libp2p/peer-id": "^4.0.6", + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-id": "^4.2.4", "@multiformats/mafmt": "^12.1.6", - "@multiformats/multiaddr": "^12.1.14" + "@multiformats/multiaddr": "^12.2.3" } }, "node_modules/@libp2p/circuit-relay-v2": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/@libp2p/circuit-relay-v2/-/circuit-relay-v2-1.0.15.tgz", - "integrity": "sha512-sOWIfiR4GWDDECCalyTZBc0qkSy1cQnM1B78eXNRVEq10EGEZ4/5qd0/Y3gWwrjGHWdMdq/4A+gHczzxa0kLVA==", - "dependencies": { - "@libp2p/interface": "^1.1.3", - "@libp2p/interface-internal": "^1.0.8", - "@libp2p/peer-collections": "^5.1.6", - "@libp2p/peer-id": "^4.0.6", - "@libp2p/peer-record": "^7.0.9", - "@libp2p/utils": "^5.2.5", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@libp2p/circuit-relay-v2/-/circuit-relay-v2-1.1.5.tgz", + "integrity": "sha512-WVIHaj61LJd2JB6vvPikd049NhC2R3vrkuu4T00WJSMNWobmhrKPvFyQMN+1miL6KmdL8Yt1AjK0gog2oT4vDw==", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/interface-internal": "^1.3.4", + "@libp2p/peer-collections": "^5.2.9", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/peer-record": "^7.0.25", + "@libp2p/utils": "^5.4.9", "@multiformats/mafmt": "^12.1.6", - "@multiformats/multiaddr": "^12.1.14", + "@multiformats/multiaddr": "^12.2.3", "any-signal": "^4.1.1", - "it-protobuf-stream": "^1.1.2", + "it-protobuf-stream": "^1.1.3", "it-stream-types": "^2.0.1", - "multiformats": "^13.0.1", - "p-defer": "^4.0.0", - "p-retry": "^6.2.0", + "multiformats": "^13.1.0", + "p-defer": "^4.0.1", + "progress-events": "^1.0.0", "protons-runtime": "^5.4.0", + "race-signal": "^1.0.2", "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.0.1" + "uint8arrays": "^5.1.0" + } + }, + "node_modules/@libp2p/circuit-relay-v2/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "dependencies": { + "multiformats": "^13.0.0" } }, "node_modules/@libp2p/crypto": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-4.0.2.tgz", - "integrity": "sha512-zdFnnP2dA3X/xqRyJus+5rgCrp7JHFh+C8hA+DckXqp+ayiRMyLnKKPXmSzTKJSsIABMW2pcUFU+yCeDSgiSQQ==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-4.1.9.tgz", + "integrity": "sha512-8Cf2VKh0uC/rQLvTLSloIOMqUvf4jsSTHXgjWQRf47lDNJlNNI0wSv2S6gakT72GZsRV/jCjYwKPqRlsa5S0iA==", "dependencies": { - "@libp2p/interface": "^1.1.3", - "@noble/curves": "^1.3.0", - "@noble/hashes": "^1.3.3", + "@libp2p/interface": "^1.7.0", + "@noble/curves": "^1.4.0", + "@noble/hashes": "^1.4.0", "asn1js": "^3.0.5", - "multiformats": "^13.0.1", + "multiformats": "^13.1.0", "protons-runtime": "^5.4.0", "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.0.1" + "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/identify": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/@libp2p/identify/-/identify-1.0.14.tgz", - "integrity": "sha512-615aa4TPtzxUNb24yzxyFdu5/x+3Ge2BD/Ob4RN1PnT+haFQqgbcT2RJfqbyvuo7gzxVEGamqh5uYaChqAQ4IA==", + "node_modules/@libp2p/crypto/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", "dependencies": { - "@libp2p/interface": "^1.1.3", - "@libp2p/interface-internal": "^1.0.8", - "@libp2p/peer-id": "^4.0.6", - "@libp2p/peer-record": "^7.0.9", - "@multiformats/multiaddr": "^12.1.14", - "@multiformats/multiaddr-matcher": "^1.1.2", - "it-protobuf-stream": "^1.1.2", + "multiformats": "^13.0.0" + } + }, + "node_modules/@libp2p/identify": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@libp2p/identify/-/identify-2.1.5.tgz", + "integrity": "sha512-uVghY2KfZ3ffDkPmcivfiRDlq1h5rCcoHAW+Kb7JF2qrDfg6BgHAn6IRN4pe/DnYXOuJXIIm6+jjcReTPGBKBQ==", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/interface-internal": "^1.3.4", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/peer-record": "^7.0.25", + "@multiformats/multiaddr": "^12.2.3", + "@multiformats/multiaddr-matcher": "^1.2.1", + "it-drain": "^3.0.7", + "it-parallel": "^3.0.7", + "it-protobuf-stream": "^1.1.3", "protons-runtime": "^5.4.0", "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.0.1", + "uint8arrays": "^5.1.0", "wherearewe": "^2.0.1" } }, + "node_modules/@libp2p/identify/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "dependencies": { + "multiformats": "^13.0.0" + } + }, "node_modules/@libp2p/interface": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-1.3.1.tgz", - "integrity": "sha512-KJoYP6biAgIHUU3pxaixaaYCvIHZshzXetxfoNigadAZ3hCGuwpdFhk7IABEaI3RgadOOYUwW3MXPbL+cxnXVQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-1.7.0.tgz", + "integrity": "sha512-/zFyaIaIGW0aihhsH7/93vQdpWInUzFocxF11RO/029Y6h0SVjs24HHbils+DqaFDTqN+L7oNlBx2rM2MnmTjA==", "dependencies": { - "@multiformats/multiaddr": "^12.2.1", + "@multiformats/multiaddr": "^12.2.3", "it-pushable": "^3.2.3", "it-stream-types": "^2.0.1", "multiformats": "^13.1.0", @@ -1903,104 +1834,71 @@ } }, "node_modules/@libp2p/interface-internal": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.0.8.tgz", - "integrity": "sha512-NkUBnqzAAWDcg9n4uUtEpbtHg0gZjLhdBTwqJWkWuTujaCEz0xk5FfXBXgWqGEMIZAN73VX8/hLQCeigk3gUlg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.4.tgz", + "integrity": "sha512-8x/0sdeH8T16yZ9t/Cfja0ms6Ho9fF3riX56WhQrNxMU6C1sIgAFmzUNzHLxxOR+rkKyL9cyXIyB+RcBf4gzjA==", "dependencies": { - "@libp2p/interface": "^1.1.3", - "@libp2p/peer-collections": "^5.1.6", - "@multiformats/multiaddr": "^12.1.14", + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-collections": "^5.2.9", + "@multiformats/multiaddr": "^12.2.3", + "progress-events": "^1.0.0", "uint8arraylist": "^2.4.8" } }, - "node_modules/@libp2p/interface/node_modules/@multiformats/multiaddr": { - "version": "12.2.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.2.1.tgz", - "integrity": "sha512-UwjoArBbv64FlaetV4DDwh+PUMfzXUBltxQwdh+uTYnGFzVa8ZfJsn1vt1RJlJ6+Xtrm3RMekF/B+K338i2L5Q==", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, "node_modules/@libp2p/logger": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-4.0.12.tgz", - "integrity": "sha512-eSiHY06Zijq6b1rMBob/ZuGBEavFm8IPNPEzeOU3JrBU7v/OV8Da0FesbemtkudZVPRi8mqRoOiIwmWn0mObng==", + "version": "4.0.20", + "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-4.0.20.tgz", + "integrity": "sha512-TTh2dhHsOTAlMPxSa9ncFPHa/0jTt+0AQxwHdlxg/OGLAgc9VRhnrhHUbJZp07Crcw4T/MOfS4KhjlxgqYgJRw==", "dependencies": { - "@libp2p/interface": "^1.3.1", - "@multiformats/multiaddr": "^12.2.1", - "debug": "^4.3.4", + "@libp2p/interface": "^1.7.0", + "@multiformats/multiaddr": "^12.2.3", "interface-datastore": "^8.2.11", - "multiformats": "^13.1.0" - } - }, - "node_modules/@libp2p/logger/node_modules/@multiformats/multiaddr": { - "version": "12.2.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.2.1.tgz", - "integrity": "sha512-UwjoArBbv64FlaetV4DDwh+PUMfzXUBltxQwdh+uTYnGFzVa8ZfJsn1vt1RJlJ6+Xtrm3RMekF/B+K338i2L5Q==", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/mplex": { - "version": "10.0.15", - "resolved": "https://registry.npmjs.org/@libp2p/mplex/-/mplex-10.0.15.tgz", - "integrity": "sha512-OnmWkK5cMW6qyuJ3SCWjM1FNs7ZBAlqASC0FrRNel+bV5AJHrqAjA1kkBrlPVPe5vbehWqdPpkHqT7CzlrxAtA==", - "dependencies": { - "@libp2p/interface": "^1.1.3", - "@libp2p/utils": "^5.2.5", - "it-pipe": "^3.0.1", - "it-pushable": "^3.2.3", - "it-stream-types": "^2.0.1", - "uint8-varint": "^2.0.4", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.0.1" + "multiformats": "^13.1.0", + "weald": "^1.0.2" } }, "node_modules/@libp2p/multistream-select": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/@libp2p/multistream-select/-/multistream-select-5.1.3.tgz", - "integrity": "sha512-vKD4FESYBHxLIL0gQ+WtUktsT3SrUBj2GFOESbexj98cTXquKcQUM6XTMrLRS8wWf77czZKpuKwwMxE+VsU2kw==", + "version": "5.1.17", + "resolved": "https://registry.npmjs.org/@libp2p/multistream-select/-/multistream-select-5.1.17.tgz", + "integrity": "sha512-QOMGjCzKGf/W+qzWw5OxaqLEYhK45XjMCxGJYQ7L5eUkcwAv6rlPZAYw6YslaMLpJTa61/yfh8D4u7EuoMFsUw==", "dependencies": { - "@libp2p/interface": "^1.1.3", + "@libp2p/interface": "^1.7.0", "it-length-prefixed": "^9.0.4", - "it-length-prefixed-stream": "^1.1.6", + "it-length-prefixed-stream": "^1.1.7", "it-stream-types": "^2.0.1", - "p-defer": "^4.0.0", + "p-defer": "^4.0.1", "race-signal": "^1.0.2", "uint8-varint": "^2.0.4", "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.0.1" + "uint8arrays": "^5.1.0" + } + }, + "node_modules/@libp2p/multistream-select/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "dependencies": { + "multiformats": "^13.0.0" } }, "node_modules/@libp2p/peer-collections": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.1.6.tgz", - "integrity": "sha512-n2Oav1GehdEToeALvSytuYw2wiwzMvbOUxyAFUfF6oqmZgNe9P8cOkyr0w2P0p0hXjdcIeIfDYeTvY4MeHZnjw==", + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.9.tgz", + "integrity": "sha512-8gBmzQlCWjjb+FSQBKK33T25Y5Df/8FWCXFtJDsprVxVUzDOQoibQJ5Tb4Y+mb96HUhNzoaRWVEamB78MMB3DA==", "dependencies": { - "@libp2p/interface": "^1.1.3", - "@libp2p/peer-id": "^4.0.6" + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/utils": "^5.4.9" } }, "node_modules/@libp2p/peer-id": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-4.0.6.tgz", - "integrity": "sha512-hAj2bdN+s/cCkiaLthuL412DqLeYZ83yRmbjZfHHJ8d3sV/M7NAxu2v8Zx+3KurFF8ICMoD7bb34IXHo7FH3kw==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-4.2.4.tgz", + "integrity": "sha512-mvvsVxt4HkF14BrTNKbqr14VObW+KBJBWu1Oe6BFCoDttGMQLaI+PdduE1r6Tquntv5IONBqoITgD7ow5dQ+vQ==", "dependencies": { - "@libp2p/interface": "^1.1.3", - "multiformats": "^13.0.1", - "uint8arrays": "^5.0.1" + "@libp2p/interface": "^1.7.0", + "multiformats": "^13.1.0", + "uint8arrays": "^5.1.0" } }, "node_modules/@libp2p/peer-id-factory": { @@ -2016,45 +1914,98 @@ "uint8arrays": "^5.0.1" } }, - "node_modules/@libp2p/peer-record": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@libp2p/peer-record/-/peer-record-7.0.9.tgz", - "integrity": "sha512-uI5kE8K6/CWamxV9NK1p7mdYoWIf1AP+eWWZd+1opa/R7zT/QYmtAc/wWE7uFhfRsB736u9GkiPwU66LzA0reQ==", + "node_modules/@libp2p/peer-id/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", "dependencies": { - "@libp2p/crypto": "^4.0.2", - "@libp2p/interface": "^1.1.3", - "@libp2p/peer-id": "^4.0.6", - "@libp2p/utils": "^5.2.5", - "@multiformats/multiaddr": "^12.1.14", + "multiformats": "^13.0.0" + } + }, + "node_modules/@libp2p/peer-record": { + "version": "7.0.25", + "resolved": "https://registry.npmjs.org/@libp2p/peer-record/-/peer-record-7.0.25.tgz", + "integrity": "sha512-b54P3cSeQniW/HPJjBVbeF3KaVUQkWa431gotuIFUS1PYgtz69uzkRrVY6Qt+RBb4R4fcmH4K4jWyZi3xyLGfQ==", + "dependencies": { + "@libp2p/crypto": "^4.1.9", + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/utils": "^5.4.9", + "@multiformats/multiaddr": "^12.2.3", "protons-runtime": "^5.4.0", "uint8-varint": "^2.0.4", "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.0.1" + "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/peer-store": { - "version": "10.0.10", - "resolved": "https://registry.npmjs.org/@libp2p/peer-store/-/peer-store-10.0.10.tgz", - "integrity": "sha512-b5SUUtioxJMWaBPU2/UfS76q1DXkDmTkpTBogiKc5BTM6g5AqIA4wQXeiLB5EopxEUnSYSyeFxwdoeVDBkz19g==", + "node_modules/@libp2p/peer-record/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", "dependencies": { - "@libp2p/interface": "^1.1.3", - "@libp2p/peer-collections": "^5.1.6", - "@libp2p/peer-id": "^4.0.6", - "@libp2p/peer-record": "^7.0.9", - "@multiformats/multiaddr": "^12.1.14", - "interface-datastore": "^8.2.10", - "it-all": "^3.0.4", + "multiformats": "^13.0.0" + } + }, + "node_modules/@libp2p/peer-store": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/@libp2p/peer-store/-/peer-store-10.1.5.tgz", + "integrity": "sha512-JqQcIcxZS7kicCPabGRyrKD+qZlOdaooL00hdHogVb4MIMqfjiQMmOEpzIvTQLCKHKM2mmfnV3P7kc6hYzPq8g==", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-collections": "^5.2.9", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/peer-record": "^7.0.25", + "@multiformats/multiaddr": "^12.2.3", + "interface-datastore": "^8.2.11", + "it-all": "^3.0.6", "mortice": "^3.0.4", - "multiformats": "^13.0.1", + "multiformats": "^13.1.0", "protons-runtime": "^5.4.0", "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.0.1" + "uint8arrays": "^5.1.0" } }, - "node_modules/@libp2p/peer-store/node_modules/it-all": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/it-all/-/it-all-3.0.4.tgz", - "integrity": "sha512-UMiy0i9DqCHBdWvMbzdYvVGa5/w4t1cc4nchpbnjdLhklglv8mQeEYnii0gvKESJuL1zV32Cqdb33R6/GPfxpQ==" + "node_modules/@libp2p/peer-store/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "dependencies": { + "multiformats": "^13.0.0" + } + }, + "node_modules/@libp2p/ping": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@libp2p/ping/-/ping-1.1.5.tgz", + "integrity": "sha512-CeRpXdtljyWr/UNmrojnZbyI/oDkdu6duCGtWnnDFmPS2tR4Rxr2C8sKA1iAvhgvRFhh5vrTmlB1QUbUWHHRCg==", + "dependencies": { + "@libp2p/crypto": "^4.1.9", + "@libp2p/interface": "^1.7.0", + "@libp2p/interface-internal": "^1.3.4", + "@multiformats/multiaddr": "^12.2.3", + "it-first": "^3.0.6", + "it-pipe": "^3.0.1", + "uint8arrays": "^5.1.0" + } + }, + "node_modules/@libp2p/ping/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "dependencies": { + "multiformats": "^13.0.0" + } + }, + "node_modules/@libp2p/prometheus-metrics": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@libp2p/prometheus-metrics/-/prometheus-metrics-3.1.5.tgz", + "integrity": "sha512-IN4XTIVb7XUUlnPdrZzFtWKV6k2iUOfCBFGsBaTwJ2tgXsEtlK+wajibh8KeC+FmoC9/fx8N2dV3vTv7UCrbtQ==", + "dependencies": { + "@libp2p/interface": "^1.7.0", + "it-foreach": "^2.1.0", + "it-stream-types": "^2.0.1", + "prom-client": "^15.1.2", + "uint8arraylist": "^2.4.8" + } }, "node_modules/@libp2p/pubsub": { "version": "9.0.10", @@ -2107,14 +2058,6 @@ "multiformats": "^12.0.1" } }, - "node_modules/@libp2p/pubsub/node_modules/it-merge": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/it-merge/-/it-merge-3.0.3.tgz", - "integrity": "sha512-FYVU15KC5pb/GQX1Ims+lee8d4pdqGVCpWr0lkNj8o4xuNo7jY71k6GuEiWdP+T7W1bJqewSxX5yoTy5yZpRVA==", - "dependencies": { - "it-pushable": "^3.2.0" - } - }, "node_modules/@libp2p/pubsub/node_modules/it-pipe": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/it-pipe/-/it-pipe-3.0.1.tgz", @@ -2130,38 +2073,53 @@ } }, "node_modules/@libp2p/tcp": { - "version": "9.0.15", - "resolved": "https://registry.npmjs.org/@libp2p/tcp/-/tcp-9.0.15.tgz", - "integrity": "sha512-q9huXxkvbiCXyRNVjS12ProBpnHUIKhaq+53UQGtvL/hN8KyD9lIOqziNbh8U3mfbaZZAbhxPOyhLKmbdxrsyQ==", + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/@libp2p/tcp/-/tcp-9.1.5.tgz", + "integrity": "sha512-K6e5oXrUhMZ0xJ1c0dw05rZC5TeW9PZutdoyBKkt0AAKGBcDnYFXqEoLOYqDNmsgRAAcVcxh1MnEB2YmHNlhDg==", "dependencies": { - "@libp2p/interface": "^1.1.3", - "@libp2p/utils": "^5.2.5", + "@libp2p/interface": "^1.7.0", + "@libp2p/utils": "^5.4.9", "@multiformats/mafmt": "^12.1.6", - "@multiformats/multiaddr": "^12.1.14", + "@multiformats/multiaddr": "^12.2.3", "@types/sinon": "^17.0.3", - "stream-to-it": "^0.2.4" + "progress-events": "^1.0.0", + "stream-to-it": "^1.0.1" } }, "node_modules/@libp2p/utils": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-5.2.5.tgz", - "integrity": "sha512-oMUrBvEFGD/74I3W3AhpV3pLx8CeEhxCpoJ9a0BTetoJ+TbU5DxxcWJGvhoq3RfQiUvZtg0IwJWNaiJ6lB2sdA==", + "version": "5.4.9", + "resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-5.4.9.tgz", + "integrity": "sha512-0fRdX98WqhTmXU2WEVLegLFxs/kKTtUHanHk5Lzs4oGsIzlPHR7zE6lj/U1WfsFA+Xo1eYQpNLiXEL29hG+Nyw==", "dependencies": { "@chainsafe/is-ip": "^2.0.2", - "@libp2p/interface": "^1.1.3", - "@libp2p/logger": "^4.0.6", - "@multiformats/multiaddr": "^12.1.14", - "@multiformats/multiaddr-matcher": "^1.1.2", + "@libp2p/crypto": "^4.1.9", + "@libp2p/interface": "^1.7.0", + "@libp2p/logger": "^4.0.20", + "@multiformats/multiaddr": "^12.2.3", + "@multiformats/multiaddr-matcher": "^1.2.1", + "@sindresorhus/fnv1a": "^3.1.0", + "@types/murmurhash3js-revisited": "^3.0.3", + "any-signal": "^4.1.1", "delay": "^6.0.0", "get-iterator": "^2.0.1", "is-loopback-addr": "^2.0.2", "it-pushable": "^3.2.3", "it-stream-types": "^2.0.1", + "murmurhash3js-revisited": "^3.0.0", "netmask": "^2.0.2", - "p-defer": "^4.0.0", - "race-event": "^1.1.0", + "p-defer": "^4.0.1", + "race-event": "^1.3.0", "race-signal": "^1.0.2", - "uint8arraylist": "^2.4.8" + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" + } + }, + "node_modules/@libp2p/utils/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "dependencies": { + "multiformats": "^13.0.0" } }, "node_modules/@manypkg/find-root": { @@ -2305,52 +2263,44 @@ } }, "node_modules/@multiformats/multiaddr": { - "version": "12.1.14", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.1.14.tgz", - "integrity": "sha512-1C0Mo73chzu7pTzTquuKs5vUtw70jhqg1i6pUNznGb0WV6RFa6vyB+D697Os5+cLx+DiItrAY6VzMtlGQsMzYg==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", "dependencies": { "@chainsafe/is-ip": "^2.0.1", "@chainsafe/netmask": "^2.0.0", "@libp2p/interface": "^1.0.0", - "dns-over-http-resolver": "^3.0.2", + "@multiformats/dns": "^1.0.3", "multiformats": "^13.0.0", "uint8-varint": "^2.0.1", "uint8arrays": "^5.0.0" } }, "node_modules/@multiformats/multiaddr-matcher": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-1.1.2.tgz", - "integrity": "sha512-O7hO+TYsweMjNCqTYKYn8iki2GXA46mxmgqnsOb2Wpr6ca4dRGnPldWTai2WwTeZpQyRJ/7GE+N9zPTfP0xE+Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-1.2.4.tgz", + "integrity": "sha512-GgpqzQFL4Mj8t7cLNHC5nuYUuSm0kTtSUyYswiyWwTSUY3XwRAMx0UiFWQg+ETk0u+/IvFaHxfnyEoH3tasvwg==", "dependencies": { "@chainsafe/is-ip": "^2.0.1", "@multiformats/multiaddr": "^12.0.0", "multiformats": "^13.0.0" } }, - "node_modules/@noble/ciphers": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.4.1.tgz", - "integrity": "sha512-QCOA9cgf3Rc33owG0AYBB9wszz+Ul2kramWN8tXG44Gyciud/tbkEqvxRF/IpqQaBpRBNi9f4jdNxqB2CQCIXg==", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/@noble/curves": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", - "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.5.0.tgz", + "integrity": "sha512-J5EKamIHnKPyClwVrzmaf5wSdQXgdHcPZIZLu3bwnbeCx8/7NPK5q2ZBWF+5FvYGByjiQQsJYX6jfgB2wDPn3A==", "dependencies": { - "@noble/hashes": "1.3.3" + "@noble/hashes": "1.4.0" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@noble/hashes": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", - "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", "engines": { "node": ">= 16" }, @@ -2390,6 +2340,14 @@ "node": ">= 8" } }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.9.6", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz", @@ -2624,6 +2582,17 @@ "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true }, + "node_modules/@sindresorhus/fnv1a": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/fnv1a/-/fnv1a-3.1.0.tgz", + "integrity": "sha512-KV321z5m/0nuAg83W1dPLy85HpHDk7Sdi4fJbwvacWsEhAh+rZUW4ZfGcXmUIvjZg4ss2bcwNlRhJ7GBEUG08w==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@sindresorhus/is": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", @@ -2713,6 +2682,11 @@ "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", "dev": true }, + "node_modules/@types/murmurhash3js-revisited": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.3.tgz", + "integrity": "sha512-QvlqvYtGBYIDeO8dFdY4djkRubcrc+yTJtBc7n8VZPlJDUS/00A+PssbvERM8f9bYRmcaSEHPZgZojeQj7kzAA==" + }, "node_modules/@types/node": { "version": "20.11.13", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.13.tgz", @@ -2727,11 +2701,6 @@ "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true }, - "node_modules/@types/retry": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", - "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==" - }, "node_modules/@types/semver": { "version": "7.5.6", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", @@ -3373,6 +3342,11 @@ "node": ">=4" } }, + "node_modules/bintrees": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", + "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==" + }, "node_modules/brace-expansion": { "version": "1.1.11", "dev": true, @@ -3712,6 +3686,14 @@ "node": ">=0.8" } }, + "node_modules/cockatiel": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz", + "integrity": "sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==", + "engines": { + "node": ">=16" + } + }, "node_modules/color-convert": { "version": "2.0.1", "dev": true, @@ -3808,30 +3790,24 @@ "dev": true }, "node_modules/datastore-core": { - "version": "9.2.7", - "resolved": "https://registry.npmjs.org/datastore-core/-/datastore-core-9.2.7.tgz", - "integrity": "sha512-S5ADNGRy1p6kHT6Khld+FThe1ITHuUiyYQ84VX2Kv8s6cXDiUuLlYPBIbZaWIgqR/JwxQCwa+5/08w6BZSIAow==", + "version": "9.2.9", + "resolved": "https://registry.npmjs.org/datastore-core/-/datastore-core-9.2.9.tgz", + "integrity": "sha512-wraWTPsbtdE7FFaVo3pwPuTB/zXsgwGGAm8BgBYwYAuzZCTS0MfXmd/HH1vR9s0/NFFjOVmBkGiWCvKxZ+QjVw==", "dependencies": { - "@libp2p/logger": "^4.0.1", + "@libp2p/logger": "^4.0.6", "err-code": "^3.0.1", + "interface-datastore": "^8.0.0", "interface-store": "^5.0.0", - "it-all": "^3.0.1", - "it-drain": "^3.0.1", - "it-filter": "^3.0.0", - "it-map": "^3.0.1", - "it-merge": "^3.0.1", - "it-pipe": "^3.0.0", - "it-pushable": "^3.0.0", - "it-sort": "^3.0.1", - "it-take": "^3.0.1", - "uint8arrays": "^5.0.0" + "it-drain": "^3.0.5", + "it-filter": "^3.0.4", + "it-map": "^3.0.5", + "it-merge": "^3.0.3", + "it-pipe": "^3.0.1", + "it-pushable": "^3.2.3", + "it-sort": "^3.0.4", + "it-take": "^3.0.4" } }, - "node_modules/datastore-core/node_modules/it-all": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/it-all/-/it-all-3.0.4.tgz", - "integrity": "sha512-UMiy0i9DqCHBdWvMbzdYvVGa5/w4t1cc4nchpbnjdLhklglv8mQeEYnii0gvKESJuL1zV32Cqdb33R6/GPfxpQ==" - }, "node_modules/datastore-core/node_modules/it-filter": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/it-filter/-/it-filter-3.0.4.tgz", @@ -3842,6 +3818,7 @@ }, "node_modules/debug": { "version": "4.3.4", + "dev": true, "license": "MIT", "dependencies": { "ms": "2.1.2" @@ -4040,15 +4017,6 @@ "node": ">=8" } }, - "node_modules/dns-over-http-resolver": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-3.0.2.tgz", - "integrity": "sha512-5batkHOjCkuAfrFa+IPmt3jyeZqLtSMfAo1HQp3hfwtzgUwHooecTFplnYC093u5oRNL4CQHCXh3OfER7+vWrA==", - "dependencies": { - "debug": "^4.3.4", - "receptacle": "^1.3.2" - } - }, "node_modules/dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", @@ -5441,17 +5409,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-network-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.0.1.tgz", - "integrity": "sha512-OwQXkwBJeESyhFw+OumbJVD58BFBJJI5OM5S1+eyrDKlgDZPX2XNT5gXS56GSD3NPbbwUuMlR1Q71SRp5SobuQ==", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-number": { "version": "7.0.0", "dev": true, @@ -5687,26 +5644,30 @@ "node": ">=8" } }, + "node_modules/it-all": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/it-all/-/it-all-3.0.6.tgz", + "integrity": "sha512-HXZWbxCgQZJfrv5rXvaVeaayXED8nTKx9tj9fpBhmcUJcedVZshMMMqTj0RG2+scGypb9Ut1zd1ifbf3lA8L+Q==" + }, "node_modules/it-byte-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-1.0.8.tgz", - "integrity": "sha512-H32LbN6kdX8HXqH68z5uivfkVYJEi5tIPRwIQNR5Qsx3uoDRhYdBRHzf3NOVAf6vqulFUSQLuU+Y0rs/QeWn3A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-1.1.0.tgz", + "integrity": "sha512-WWponBWdKEa6o2U3NX+wGMY8X1EkWXcQvpC+3CUqKb4ZzK30q3EPqiTjFxLf9tNVgdF/MNAtx/XclpVfgaz9KQ==", "dependencies": { + "it-queueless-pushable": "^1.0.0", "it-stream-types": "^2.0.1", - "p-defer": "^4.0.0", - "race-signal": "^1.0.1", - "uint8arraylist": "^2.4.1" + "uint8arraylist": "^2.4.8" } }, "node_modules/it-drain": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/it-drain/-/it-drain-3.0.5.tgz", - "integrity": "sha512-qYFe4SWdvs9oJGUY5bSjvmiLUMLzFEODNOQUdYdCIkuIgQF+AUB2INhM4yQ09buJ2rhHKDFxvTD/+yUq6qg0XA==" + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/it-drain/-/it-drain-3.0.7.tgz", + "integrity": "sha512-vy6S1JKjjHSIFHgBpLpD1zhkCRl3z1zYWUxE14+kAYf+BL9ssWSFImJfhl361IIcwr0ofw8etzg11VqqB+ntUA==" }, "node_modules/it-first": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/it-first/-/it-first-3.0.4.tgz", - "integrity": "sha512-FtQl84iTNxN5EItP/JgL28V2rzNMkCzTUlNoj41eVdfix2z1DBuLnBqZ0hzYhGGa1rMpbQf0M7CQSA2adlrLJg==" + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/it-first/-/it-first-3.0.6.tgz", + "integrity": "sha512-ExIewyK9kXKNAplg2GMeWfgjUcfC1FnUXz/RPfAvIXby+w7U4b3//5Lic0NV03gXT8O/isj5Nmp6KiY0d45pIQ==" }, "node_modules/it-foreach": { "version": "2.1.1", @@ -5734,30 +5695,30 @@ } }, "node_modules/it-length-prefixed-stream": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-1.1.6.tgz", - "integrity": "sha512-MEby4r8n3XIYXjaWT3DweCuhBPQmFVT8RdI1BNjYQ5gelbFD3NLdjYpTI3TVmSEs/aJfgpfVFZzy6iP7OCxIgw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-1.2.0.tgz", + "integrity": "sha512-vX7dzSl/2UMYYsAr0FQdPNVR5xYEETaeboZ+eXxNBjgARuvxnWA6OedW8lC5/J3ebMTC98JhA3eH76eTijUOsA==", "dependencies": { "it-byte-stream": "^1.0.0", "it-stream-types": "^2.0.1", - "uint8-varint": "^2.0.1", - "uint8arraylist": "^2.4.1" + "uint8-varint": "^2.0.4", + "uint8arraylist": "^2.4.8" } }, "node_modules/it-map": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/it-map/-/it-map-3.0.5.tgz", - "integrity": "sha512-hB0TDXo/h4KSJJDSRLgAPmDroiXP6Fx1ck4Bzl3US9hHfZweTKsuiP0y4gXuTMcJlS6vj0bb+f70rhkD47ZA3w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/it-map/-/it-map-3.1.1.tgz", + "integrity": "sha512-9bCSwKD1yN1wCOgJ9UOl+46NQtdatosPWzxxUk2NdTLwRPXLh+L7iwCC9QKsbgM60RQxT/nH8bKMqm3H/o8IHQ==", "dependencies": { "it-peekable": "^3.0.0" } }, "node_modules/it-merge": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/it-merge/-/it-merge-3.0.3.tgz", - "integrity": "sha512-FYVU15KC5pb/GQX1Ims+lee8d4pdqGVCpWr0lkNj8o4xuNo7jY71k6GuEiWdP+T7W1bJqewSxX5yoTy5yZpRVA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/it-merge/-/it-merge-3.0.5.tgz", + "integrity": "sha512-2l7+mPf85pyRF5pqi0dKcA54E5Jm/2FyY5GsOaN51Ta0ipC7YZ3szuAsH8wOoB6eKY4XsU4k2X+mzPmFBMayEA==", "dependencies": { - "it-pushable": "^3.2.0" + "it-pushable": "^3.2.3" } }, "node_modules/it-pair": { @@ -5774,11 +5735,11 @@ } }, "node_modules/it-parallel": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/it-parallel/-/it-parallel-3.0.6.tgz", - "integrity": "sha512-i7UM7I9LTkDJw3YIqXHFAPZX6CWYzGc+X3irdNrVExI4vPazrJdI7t5OqrSVN8CONXLAunCiqaSV/zZRbQR56A==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/it-parallel/-/it-parallel-3.0.8.tgz", + "integrity": "sha512-URLhs6eG4Hdr4OdvgBBPDzOjBeSSmI+Kqex2rv/aAyYClME26RYHirLVhZsZP5M+ZP6M34iRlXk8Wlqtezuqpg==", "dependencies": { - "p-defer": "^4.0.0" + "p-defer": "^4.0.1" } }, "node_modules/it-peekable": { @@ -5801,14 +5762,13 @@ } }, "node_modules/it-protobuf-stream": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/it-protobuf-stream/-/it-protobuf-stream-1.1.2.tgz", - "integrity": "sha512-epZBuG+7cPaTxCR/Lf3ApshBdA9qfflGPQLfLLrp9VQ0w67Z2xo4H+SLLetav57/29oPtAXwVaoyemg99JOWzA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/it-protobuf-stream/-/it-protobuf-stream-1.1.5.tgz", + "integrity": "sha512-H70idW45As3cEbU4uSoZ9IYHUIV3YM69/2mmXYR7gOlPabWjuyNi3/abK11geiiq3la27Sos/mXr68JljjKtEQ==", "dependencies": { "it-length-prefixed-stream": "^1.0.0", "it-stream-types": "^2.0.1", - "protons-runtime": "^5.0.0", - "uint8arraylist": "^2.4.1" + "uint8arraylist": "^2.4.8" } }, "node_modules/it-pushable": { @@ -5819,6 +5779,15 @@ "p-defer": "^4.0.0" } }, + "node_modules/it-queueless-pushable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/it-queueless-pushable/-/it-queueless-pushable-1.0.0.tgz", + "integrity": "sha512-HbcAbcuQj7a9EBxiRCZ+77FxWutgs/pY5ZvEyQnylWPGNFojCLAUwhcZjf5OuEQ9+y+vSa7w1GQBe8xJdmIn5A==", + "dependencies": { + "p-defer": "^4.0.1", + "race-signal": "^1.0.2" + } + }, "node_modules/it-reader": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/it-reader/-/it-reader-6.0.4.tgz", @@ -5840,11 +5809,6 @@ "it-all": "^3.0.0" } }, - "node_modules/it-sort/node_modules/it-all": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/it-all/-/it-all-3.0.4.tgz", - "integrity": "sha512-UMiy0i9DqCHBdWvMbzdYvVGa5/w4t1cc4nchpbnjdLhklglv8mQeEYnii0gvKESJuL1zV32Cqdb33R6/GPfxpQ==" - }, "node_modules/it-stream-types": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/it-stream-types/-/it-stream-types-2.0.1.tgz", @@ -5855,9 +5819,9 @@ } }, "node_modules/it-take": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/it-take/-/it-take-3.0.4.tgz", - "integrity": "sha512-RG8HDjAZlvkzz5Nav4xq6gK5zNT+Ff1UTIf+CrSJW8nIl6N1FpBH5e7clUshiCn+MmmMoSdIEpw4UaTolszxhA==" + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/it-take/-/it-take-3.0.6.tgz", + "integrity": "sha512-uqw3MRzf9to1SOLxaureGa73lK8k8ZB/asOApTAkvrzUqCznGtKNgPFH7uYIWlt4UuWq/hU6I+U4Fm5xpjN8Vg==" }, "node_modules/js-tokens": { "version": "4.0.0", @@ -6018,14 +5982,6 @@ "uint8arrays": "^5.0.1" } }, - "node_modules/libp2p/node_modules/it-merge": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/it-merge/-/it-merge-3.0.3.tgz", - "integrity": "sha512-FYVU15KC5pb/GQX1Ims+lee8d4pdqGVCpWr0lkNj8o4xuNo7jY71k6GuEiWdP+T7W1bJqewSxX5yoTy5yZpRVA==", - "dependencies": { - "it-pushable": "^3.2.0" - } - }, "node_modules/lilconfig": { "version": "2.0.6", "dev": true, @@ -6633,6 +6589,7 @@ }, "node_modules/ms": { "version": "2.1.2", + "dev": true, "license": "MIT" }, "node_modules/multiformats": { @@ -6640,6 +6597,14 @@ "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.1.0.tgz", "integrity": "sha512-HzdtdBwxsIkzpeXzhQ5mAhhuxcHbjEHH+JQoxt7hG/2HGFjjwyolLo7hbaexcnhoEuV4e0TNJ8kkpMjiEYY4VQ==" }, + "node_modules/murmurhash3js-revisited": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz", + "integrity": "sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", @@ -6851,9 +6816,9 @@ } }, "node_modules/p-defer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-4.0.0.tgz", - "integrity": "sha512-Vb3QRvQ0Y5XnF40ZUWW7JfLogicVh/EnA5gBIvKDJoYpeI82+1E3AlB9yOcKFS0AhHrWVnAQO39fbR0G99IVEQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-4.0.1.tgz", + "integrity": "sha512-Mr5KC5efvAK5VUptYEIopP1bakB85k2IWXaRC0rsh1uwn1L6M0LVml8OIQ4Gudg4oyZakf7FmeRLkMMtZW1i5A==", "engines": { "node": ">=12" }, @@ -6939,22 +6904,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-retry": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", - "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", - "dependencies": { - "@types/retry": "0.12.2", - "is-network-error": "^1.0.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-timeout": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz", @@ -7281,6 +7230,18 @@ "npm": ">=7.0.0" } }, + "node_modules/prom-client": { + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-15.1.3.tgz", + "integrity": "sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g==", + "dependencies": { + "@opentelemetry/api": "^1.4.0", + "tdigest": "^0.1.1" + }, + "engines": { + "node": "^16 || ^18 || >=20" + } + }, "node_modules/protons-runtime": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/protons-runtime/-/protons-runtime-5.4.0.tgz", @@ -7419,9 +7380,9 @@ } }, "node_modules/race-event": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/race-event/-/race-event-1.1.0.tgz", - "integrity": "sha512-8BTiN6IAbov8mqkVEc3LiYbtUzanLfzFhwPF7kZV74ztYeQXdFPIgMCd/sy8xie6ZMtf2JPeMBedx78/RRNO3g==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/race-event/-/race-event-1.3.0.tgz", + "integrity": "sha512-kaLm7axfOnahIqD3jQ4l1e471FIFcEGebXEnhxyLscuUzV8C94xVHtWEqDDXxll7+yu/6lW0w1Ff4HbtvHvOHg==" }, "node_modules/race-signal": { "version": "1.0.2", @@ -7582,14 +7543,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/receptacle": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/receptacle/-/receptacle-1.3.2.tgz", - "integrity": "sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==", - "dependencies": { - "ms": "^2.1.1" - } - }, "node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", @@ -7698,14 +7651,6 @@ "node": ">=8" } }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "engines": { - "node": ">= 4" - } - }, "node_modules/reusify": { "version": "1.0.4", "dev": true, @@ -8259,18 +8204,13 @@ "dev": true }, "node_modules/stream-to-it": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/stream-to-it/-/stream-to-it-0.2.4.tgz", - "integrity": "sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-to-it/-/stream-to-it-1.0.1.tgz", + "integrity": "sha512-AqHYAYPHcmvMrcLNgncE/q0Aj/ajP6A4qGhxP6EVn7K3YTNs0bJpJyk57wc2Heb7MUL64jurvmnmui8D9kjZgA==", "dependencies": { - "get-iterator": "^1.0.2" + "it-stream-types": "^2.0.1" } }, - "node_modules/stream-to-it/node_modules/get-iterator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-iterator/-/get-iterator-1.0.2.tgz", - "integrity": "sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==" - }, "node_modules/stream-transform": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/stream-transform/-/stream-transform-2.1.3.tgz", @@ -8465,6 +8405,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tdigest": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz", + "integrity": "sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==", + "dependencies": { + "bintrees": "1.0.2" + } + }, "node_modules/term-size": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", @@ -9051,6 +8999,34 @@ "defaults": "^1.0.3" } }, + "node_modules/weald": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/weald/-/weald-1.0.2.tgz", + "integrity": "sha512-iG5cIuBwsPe1ZcoGGd4X6QYlepU1vLr4l4oWpzQWqeJPSo9B8bxxyE6xlnj3TCmThtha7gyVL+uuZgUFkPyfDg==", + "dependencies": { + "ms": "^3.0.0-canary.1", + "supports-color": "^9.4.0" + } + }, + "node_modules/weald/node_modules/ms": { + "version": "3.0.0-canary.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-3.0.0-canary.1.tgz", + "integrity": "sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g==", + "engines": { + "node": ">=12.13" + } + }, + "node_modules/weald/node_modules/supports-color": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", + "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/wherearewe": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/wherearewe/-/wherearewe-2.0.1.tgz", @@ -9459,24 +9435,28 @@ "version": "0.0.0", "license": "GPL-3.0", "dependencies": { - "@chainsafe/libp2p-gossipsub": "^12.0.0", - "@chainsafe/libp2p-noise": "^15.0.0", + "@chainsafe/libp2p-gossipsub": "^13.2.0", + "@chainsafe/libp2p-noise": "^15.1.1", "@chainsafe/libp2p-yamux": "^6.0.2", - "@libp2p/bootstrap": "^10.0.15", - "@libp2p/circuit-relay-v2": "^1.0.15", - "@libp2p/identify": "^1.0.14", - "@libp2p/mplex": "^10.0.15", - "@libp2p/peer-id": "^4.0.6", + "@libp2p/bootstrap": "^10.1.5", + "@libp2p/circuit-relay-v2": "^1.1.5", + "@libp2p/identify": "^2.1.5", + "@libp2p/interface": "^1.7.0", + "@libp2p/interface-internal": "^1.3.4", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/ping": "^1.1.5", "@libp2p/pubsub-peer-discovery": "^10.0.2", - "@libp2p/tcp": "^9.0.15", - "@multiformats/multiaddr": "^12.2.1", + "@libp2p/tcp": "^9.1.5", + "@libp2p/utils": "^5.4.9", + "@multiformats/multiaddr": "^12.3.0", "@rosen-bridge/rosenet-utils": "^0.0.0", + "cockatiel": "^3.2.1", "fast-shuffle": "^6.1.0", "it-first": "^3.0.4", "it-length-prefixed": "^9.0.4", "it-map": "^3.0.5", "it-pipe": "^3.0.1", - "libp2p": "^1.2.3", + "libp2p": "^1.9.2", "public-ip": "^6.0.2" }, "devDependencies": { @@ -9497,18 +9477,77 @@ "node": ">=20.11.0" } }, - "packages/rosenet-node/node_modules/@multiformats/multiaddr": { - "version": "12.2.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.2.1.tgz", - "integrity": "sha512-UwjoArBbv64FlaetV4DDwh+PUMfzXUBltxQwdh+uTYnGFzVa8ZfJsn1vt1RJlJ6+Xtrm3RMekF/B+K338i2L5Q==", + "packages/rosenet-node/node_modules/@chainsafe/libp2p-gossipsub": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-gossipsub/-/libp2p-gossipsub-13.2.0.tgz", + "integrity": "sha512-yKGXIJMLeNLa/XeI57HvQKhf1f4LRgBuV1Lrzv9Vo685Szr+qaBATUbMk/aLxpN2rMgibDIS5F8yaeuIUVPh8Q==", "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" + "@libp2p/crypto": "^4.0.1", + "@libp2p/interface": "^1.5.0", + "@libp2p/interface-internal": "^1.0.7", + "@libp2p/peer-id": "^4.0.5", + "@libp2p/pubsub": "^9.0.8", + "@multiformats/multiaddr": "^12.1.14", + "denque": "^2.1.0", + "it-length-prefixed": "^9.0.4", + "it-pipe": "^3.0.1", + "it-pushable": "^3.2.3", + "multiformats": "^13.0.1", + "protons-runtime": "5.4.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.0.1" + }, + "engines": { + "npm": ">=8.7.0" + } + }, + "packages/rosenet-node/node_modules/@chainsafe/libp2p-noise": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-15.1.1.tgz", + "integrity": "sha512-66EPS8gFTkb1jVCiJoY3+ulG/ZTef7kiNZZZvUOUzsLIZYQTi+7pIDBpgmolzSXdsFb8I2hl5mZsvcbzVZB5gg==", + "dependencies": { + "@chainsafe/as-chacha20poly1305": "^0.1.0", + "@chainsafe/as-sha256": "^0.4.1", + "@libp2p/crypto": "^4.0.0", + "@libp2p/interface": "^1.5.0", + "@libp2p/peer-id": "^4.0.0", + "@noble/ciphers": "^0.6.0", + "@noble/curves": "^1.1.0", + "@noble/hashes": "^1.3.1", + "it-length-prefixed": "^9.0.1", + "it-length-prefixed-stream": "^1.0.0", + "it-pair": "^2.0.6", + "it-pipe": "^3.0.1", + "it-stream-types": "^2.0.1", + "protons-runtime": "^5.0.0", + "uint8arraylist": "^2.4.3", + "uint8arrays": "^5.0.0", + "wherearewe": "^2.0.1" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "packages/rosenet-node/node_modules/@libp2p/peer-id-factory": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id-factory/-/peer-id-factory-4.2.4.tgz", + "integrity": "sha512-NDQ/qIWpcAG/6xQjyut6xCkrYYAoCaI/33Z+7yzo5qFODwLfNonLzSTasnA6jhuvHn33aHnD1qhdpFkmstxtNQ==", + "dependencies": { + "@libp2p/crypto": "^4.1.9", + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-id": "^4.2.4", + "protons-runtime": "^5.4.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" + } + }, + "packages/rosenet-node/node_modules/@noble/ciphers": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.6.0.tgz", + "integrity": "sha512-mIbq/R9QXk5/cTfESb1OKtyFnk7oc1Om/8onA1158K9/OZUQFDEVy55jVTato+xmp3XX6F6Qh0zz0Nc1AxAlRQ==", + "funding": { + "url": "https://paulmillr.com/funding/" } }, "packages/rosenet-node/node_modules/@vitest/coverage-v8": { @@ -9613,6 +9652,39 @@ "integrity": "sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==", "dev": true }, + "packages/rosenet-node/node_modules/libp2p": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-1.9.2.tgz", + "integrity": "sha512-cvzSC3UM9A1w6kb3GO9+iqRwCg/c/4hF6RZTF0SyY5U3xVawXSQPMcB5td9d+20HcNrYm2uWKjlexORllAT2hA==", + "dependencies": { + "@libp2p/crypto": "^4.1.9", + "@libp2p/interface": "^1.7.0", + "@libp2p/interface-internal": "^1.3.4", + "@libp2p/logger": "^4.0.20", + "@libp2p/multistream-select": "^5.1.17", + "@libp2p/peer-collections": "^5.2.9", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/peer-id-factory": "^4.2.4", + "@libp2p/peer-store": "^10.1.5", + "@libp2p/utils": "^5.4.9", + "@multiformats/dns": "^1.0.6", + "@multiformats/multiaddr": "^12.2.3", + "@multiformats/multiaddr-matcher": "^1.2.1", + "any-signal": "^4.1.1", + "datastore-core": "^9.2.9", + "interface-datastore": "^8.2.11", + "it-byte-stream": "^1.0.12", + "it-merge": "^3.0.5", + "it-parallel": "^3.0.7", + "merge-options": "^3.0.4", + "multiformats": "^13.1.0", + "p-defer": "^4.0.1", + "progress-events": "^1.0.0", + "race-event": "^1.3.0", + "race-signal": "^1.0.2", + "uint8arrays": "^5.1.0" + } + }, "packages/rosenet-node/node_modules/p-limit": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", @@ -9640,6 +9712,14 @@ "url": "https://github.com/sponsors/antfu" } }, + "packages/rosenet-node/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "dependencies": { + "multiformats": "^13.0.0" + } + }, "packages/rosenet-node/node_modules/vite-node": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.3.0.tgz", @@ -9744,18 +9824,20 @@ "version": "0.0.0", "license": "GPL-3.0", "dependencies": { - "@chainsafe/libp2p-gossipsub": "^12.0.0", - "@chainsafe/libp2p-noise": "^15.0.0", + "@chainsafe/libp2p-gossipsub": "^13.2.0", + "@chainsafe/libp2p-noise": "^15.1.1", "@chainsafe/libp2p-yamux": "^6.0.2", - "@libp2p/circuit-relay-v2": "^1.0.15", - "@libp2p/identify": "^1.0.14", - "@libp2p/interface": "^1.1.3", - "@libp2p/mplex": "^10.0.15", + "@libp2p/circuit-relay-v2": "^1.1.5", + "@libp2p/identify": "^2.1.5", + "@libp2p/interface": "^1.7.0", + "@libp2p/ping": "^1.1.5", + "@libp2p/prometheus-metrics": "^3.1.5", "@libp2p/pubsub-peer-discovery": "^10.0.2", - "@libp2p/tcp": "^9.0.15", + "@libp2p/tcp": "^9.1.5", + "@libp2p/utils": "^5.4.9", "@rosen-bridge/logger-interface": "^0.2.0", "@rosen-bridge/rosenet-utils": "^0.0.0", - "libp2p": "^1.2.3" + "libp2p": "^1.9.2" }, "devDependencies": { "@types/node": "^20.11.9", @@ -9773,6 +9855,79 @@ "node": ">=20.11.0" } }, + "packages/rosenet-relay/node_modules/@chainsafe/libp2p-gossipsub": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-gossipsub/-/libp2p-gossipsub-13.2.0.tgz", + "integrity": "sha512-yKGXIJMLeNLa/XeI57HvQKhf1f4LRgBuV1Lrzv9Vo685Szr+qaBATUbMk/aLxpN2rMgibDIS5F8yaeuIUVPh8Q==", + "dependencies": { + "@libp2p/crypto": "^4.0.1", + "@libp2p/interface": "^1.5.0", + "@libp2p/interface-internal": "^1.0.7", + "@libp2p/peer-id": "^4.0.5", + "@libp2p/pubsub": "^9.0.8", + "@multiformats/multiaddr": "^12.1.14", + "denque": "^2.1.0", + "it-length-prefixed": "^9.0.4", + "it-pipe": "^3.0.1", + "it-pushable": "^3.2.3", + "multiformats": "^13.0.1", + "protons-runtime": "5.4.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.0.1" + }, + "engines": { + "npm": ">=8.7.0" + } + }, + "packages/rosenet-relay/node_modules/@chainsafe/libp2p-noise": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-15.1.1.tgz", + "integrity": "sha512-66EPS8gFTkb1jVCiJoY3+ulG/ZTef7kiNZZZvUOUzsLIZYQTi+7pIDBpgmolzSXdsFb8I2hl5mZsvcbzVZB5gg==", + "dependencies": { + "@chainsafe/as-chacha20poly1305": "^0.1.0", + "@chainsafe/as-sha256": "^0.4.1", + "@libp2p/crypto": "^4.0.0", + "@libp2p/interface": "^1.5.0", + "@libp2p/peer-id": "^4.0.0", + "@noble/ciphers": "^0.6.0", + "@noble/curves": "^1.1.0", + "@noble/hashes": "^1.3.1", + "it-length-prefixed": "^9.0.1", + "it-length-prefixed-stream": "^1.0.0", + "it-pair": "^2.0.6", + "it-pipe": "^3.0.1", + "it-stream-types": "^2.0.1", + "protons-runtime": "^5.0.0", + "uint8arraylist": "^2.4.3", + "uint8arrays": "^5.0.0", + "wherearewe": "^2.0.1" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "packages/rosenet-relay/node_modules/@libp2p/peer-id-factory": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id-factory/-/peer-id-factory-4.2.4.tgz", + "integrity": "sha512-NDQ/qIWpcAG/6xQjyut6xCkrYYAoCaI/33Z+7yzo5qFODwLfNonLzSTasnA6jhuvHn33aHnD1qhdpFkmstxtNQ==", + "dependencies": { + "@libp2p/crypto": "^4.1.9", + "@libp2p/interface": "^1.7.0", + "@libp2p/peer-id": "^4.2.4", + "protons-runtime": "^5.4.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" + } + }, + "packages/rosenet-relay/node_modules/@noble/ciphers": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.6.0.tgz", + "integrity": "sha512-mIbq/R9QXk5/cTfESb1OKtyFnk7oc1Om/8onA1158K9/OZUQFDEVy55jVTato+xmp3XX6F6Qh0zz0Nc1AxAlRQ==", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "packages/rosenet-relay/node_modules/@vitest/coverage-v8": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-1.3.0.tgz", @@ -9875,6 +10030,39 @@ "integrity": "sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==", "dev": true }, + "packages/rosenet-relay/node_modules/libp2p": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-1.9.2.tgz", + "integrity": "sha512-cvzSC3UM9A1w6kb3GO9+iqRwCg/c/4hF6RZTF0SyY5U3xVawXSQPMcB5td9d+20HcNrYm2uWKjlexORllAT2hA==", + "dependencies": { + "@libp2p/crypto": "^4.1.9", + "@libp2p/interface": "^1.7.0", + "@libp2p/interface-internal": "^1.3.4", + "@libp2p/logger": "^4.0.20", + "@libp2p/multistream-select": "^5.1.17", + "@libp2p/peer-collections": "^5.2.9", + "@libp2p/peer-id": "^4.2.4", + "@libp2p/peer-id-factory": "^4.2.4", + "@libp2p/peer-store": "^10.1.5", + "@libp2p/utils": "^5.4.9", + "@multiformats/dns": "^1.0.6", + "@multiformats/multiaddr": "^12.2.3", + "@multiformats/multiaddr-matcher": "^1.2.1", + "any-signal": "^4.1.1", + "datastore-core": "^9.2.9", + "interface-datastore": "^8.2.11", + "it-byte-stream": "^1.0.12", + "it-merge": "^3.0.5", + "it-parallel": "^3.0.7", + "merge-options": "^3.0.4", + "multiformats": "^13.1.0", + "p-defer": "^4.0.1", + "progress-events": "^1.0.0", + "race-event": "^1.3.0", + "race-signal": "^1.0.2", + "uint8arrays": "^5.1.0" + } + }, "packages/rosenet-relay/node_modules/p-limit": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", @@ -9902,6 +10090,14 @@ "url": "https://github.com/sponsors/antfu" } }, + "packages/rosenet-relay/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "dependencies": { + "multiformats": "^13.0.0" + } + }, "packages/rosenet-relay/node_modules/vite-node": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.3.0.tgz", @@ -10032,21 +10228,6 @@ "node": ">=20.11.0" } }, - "packages/utils/node_modules/@multiformats/multiaddr": { - "version": "12.2.1", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.2.1.tgz", - "integrity": "sha512-UwjoArBbv64FlaetV4DDwh+PUMfzXUBltxQwdh+uTYnGFzVa8ZfJsn1vt1RJlJ6+Xtrm3RMekF/B+K338i2L5Q==", - "dev": true, - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, "services-legacy/relay": { "version": "0.1.0", "extraneous": true, @@ -10128,6 +10309,28 @@ "typescript": "^5.3.3" } }, + "tests/local-test": { + "name": "@rosenet-tests/local-test", + "version": "0.0.0", + "extraneous": true, + "license": "GPL-3.0", + "dependencies": { + "@rosen-bridge/rosenet-node": "^0.0.0", + "@rosen-bridge/rosenet-relay": "^0.0.0" + }, + "devDependencies": { + "@types/node": "^20.11.9", + "@typescript-eslint/eslint-plugin": "^6.19.1", + "@typescript-eslint/parser": "^6.19.1", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "extensionless": "^1.9.6", + "prettier": "^3.2.4", + "ts-node": "^10.7.0", + "tsconfig-paths": "^4.1.2", + "typescript": "^5.3.3" + } + }, "tests/scaling": { "name": "@rosenet-tests/scaling", "version": "0.0.0", From e971eb0ca736011dcc163fdf099d7b227ab9168a Mon Sep 17 00:00:00 2001 From: Mohammad Kermani Date: Sun, 8 Sep 2024 15:22:22 +0330 Subject: [PATCH 12/12] chore: add a changeset --- .changeset/tender-cheetahs-teach.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/tender-cheetahs-teach.md diff --git a/.changeset/tender-cheetahs-teach.md b/.changeset/tender-cheetahs-teach.md new file mode 100644 index 0000000..bd8f35f --- /dev/null +++ b/.changeset/tender-cheetahs-teach.md @@ -0,0 +1,6 @@ +--- +'@rosen-bridge/rosenet-relay': patch +'@rosen-bridge/rosenet-node': patch +--- + +Fix issues of pubsub causing nodes and relays connection to be abrupted