Skip to content

Commit

Permalink
chore: upgrade libp2p to 0.44.0 (#2191)
Browse files Browse the repository at this point in the history
## Why is this change needed?

Upgrades libp2p one minor version up ([Release
Notes](https://github.com/libp2p/js-libp2p/releases/tag/v0.44.0) |
[Migration
Guide](https://github.com/libp2p/js-libp2p/blob/main/doc/migrations/v0.43-v0.44.md))

### Breaking Change in Autodial + Connection Manager Behavior

libp2p's ConnectionManager now has a default minConnection threshold of
50. If the number of active connections is < this number, it will
attempt to redial peers that are in the store.

Since we only disconnect peers and do not remove them from our store,
the naive upgrade causes us to reconnect immediately to peers
unexpectedly. We now set the threshold explicitly to 0 to prevent this.
We should consider also removing peers from the peer store in a future
upgrade.


## Merge Checklist

_Choose all relevant options below by adding an `x` now or at any time
before submitting for review_

- [x] PR title adheres to the [conventional
commits](https://www.conventionalcommits.org/en/v1.0.0/) standard
- [ ] PR has a
[changeset](https://github.com/farcasterxyz/hub-monorepo/blob/main/CONTRIBUTING.md#35-adding-changesets)
- [x] PR has been tagged with a change label(s) (i.e. documentation,
feature, bugfix, or chore)
- [ ] PR includes
[documentation](https://github.com/farcasterxyz/hub-monorepo/blob/main/CONTRIBUTING.md#32-writing-docs)
if necessary.

<!-- start pr-codex -->

---

## PR-Codex overview
This PR upgrades `libp2p` to version 0.44.0, updates
`@chainsafe/libp2p-gossipsub` to 6.2.0, and introduces
`@libp2p/interface-connection-gater` version 2.0.1.

### Detailed summary
- Upgraded `libp2p` to 0.44.0
- Updated `@chainsafe/libp2p-gossipsub` to 6.2.0
- Added `@libp2p/interface-connection-gater` version 2.0.1

> The following files were skipped due to too many changes: `yarn.lock`

> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your
question}`

<!-- end pr-codex -->
  • Loading branch information
varunsrin authored Jul 18, 2024
1 parent c3ea869 commit e2b1c7c
Show file tree
Hide file tree
Showing 7 changed files with 113 additions and 49 deletions.
5 changes: 5 additions & 0 deletions .changeset/stupid-pianos-doubt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@farcaster/hubble": patch
---

- upgrade libp2p to 0.44.0
9 changes: 5 additions & 4 deletions apps/hubble/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -71,17 +71,18 @@
"@aws-sdk/client-s3": "^3.400.0",
"@aws-sdk/client-sts": "^3.398.0",
"@aws-sdk/lib-storage": "^3.504.0",
"@chainsafe/libp2p-gossipsub": "6.1.0",
"@chainsafe/libp2p-gossipsub": "6.2.0",
"@chainsafe/libp2p-noise": "^11.0.0 ",
"@datastructures-js/priority-queue": "^6.3.1",
"@faker-js/faker": "~7.6.0",
"@farcaster/hub-nodejs": "^0.11.20",
"@fastify/cors": "^8.4.0",
"@figma/hot-shots": "^9.0.0-figma.1",
"@grpc/grpc-js": "~1.8.22",
"@libp2p/interface-connection": "^3.0.2",
"@libp2p/interface-connection": "^4.0.0",
"@libp2p/interface-connection-gater": "^2.0.1",
"@libp2p/interface-peer-id": "^2.0.1",
"@libp2p/mplex": "^7.0.0",
"@libp2p/mplex": "^7.1.6",
"@libp2p/peer-id-factory": "^2.0.0",
"@libp2p/tcp": "^6.0.0",
"@libp2p/utils": "^3.0.2",
Expand All @@ -94,7 +95,7 @@
"cli-progress": "^3.12.0",
"commander": "~10.0.0",
"fastify": "^4.22.0",
"libp2p": "0.43.4",
"libp2p": "0.44.0",
"neverthrow": "~6.0.0",
"node-cron": "~3.0.2",
"patch-package": "^8.0.0",
Expand Down
6 changes: 3 additions & 3 deletions apps/hubble/src/network/p2p/connectionFilter.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ describe("connectionFilter tests", () => {
remotePeer: allowedPeerId,
});
await expect(filter.denyDialPeer(allowedPeerId)).resolves.toBeTruthy();
await expect(filter.denyDialMultiaddr(allowedPeerId, multiaddr(allowedMultiAddrStr))).resolves.toBeTruthy();
await expect(filter.denyDialMultiaddr(multiaddr(allowedMultiAddrStr))).resolves.toBeTruthy();
// Incepient Inbound Connections are always allowed
await expect(filter.denyInboundConnection(remoteConnection)).resolves.toBeFalsy();
await expect(filter.denyInboundEncryptedConnection(allowedPeerId, remoteConnection)).resolves.toBeTruthy();
Expand All @@ -46,7 +46,7 @@ describe("connectionFilter tests", () => {
remotePeer: allowedPeerId,
});
await expect(filter.denyDialPeer(allowedPeerId)).resolves.toBeFalsy();
await expect(filter.denyDialMultiaddr(allowedPeerId, multiaddr(allowedMultiAddrStr))).resolves.toBeFalsy();
await expect(filter.denyDialMultiaddr(multiaddr(allowedMultiAddrStr))).resolves.toBeFalsy();
// Incepient Inbound Connections are always allowed
await expect(filter.denyInboundConnection(remoteConnection)).resolves.toBeFalsy();
await expect(filter.denyInboundEncryptedConnection(allowedPeerId, remoteConnection)).resolves.toBeFalsy();
Expand Down Expand Up @@ -92,7 +92,7 @@ describe("connectionFilter tests", () => {
remotePeer: blockedPeerId,
});
await expect(filter.denyDialPeer(blockedPeerId)).resolves.toBeTruthy();
await expect(filter.denyDialMultiaddr(blockedPeerId, multiaddr(allowedMultiAddrStr))).resolves.toBeTruthy();
await expect(filter.denyDialMultiaddr(multiaddr(allowedMultiAddrStr))).resolves.toBeTruthy();
// Incepient Inbound Connections are always allowed
await expect(filter.denyInboundConnection(remoteConnection)).resolves.toBeFalsy();
await expect(filter.denyOutboundConnection(blockedPeerId, remoteConnection)).resolves.toBeTruthy();
Expand Down
10 changes: 8 additions & 2 deletions apps/hubble/src/network/p2p/connectionFilter.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { ConnectionGater, MultiaddrConnection } from "@libp2p/interface-connection";
import { MultiaddrConnection } from "@libp2p/interface-connection";
import { PeerId } from "@libp2p/interface-peer-id";
import { Multiaddr } from "@multiformats/multiaddr";
import { logger } from "../../utils/logger.js";
import { ConnectionGater } from "@libp2p/interface-connection-gater";

const log = logger.child({
component: "ConnectionFilter",
Expand Down Expand Up @@ -42,7 +43,12 @@ export class ConnectionFilter implements ConnectionGater {
return deny;
};

denyDialMultiaddr = async (peerId: PeerId, _multiaddr: Multiaddr): Promise<boolean> => {
denyDialMultiaddr = async (_multiaddr: Multiaddr): Promise<boolean> => {
const peerId = _multiaddr.getPeerId();
if (!peerId) {
return true;
}

const deny = this.shouldDeny(peerId.toString());
if (deny) {
log.info({ peerId, filter: "denyDialMultiaddr" }, "denied a connection");
Expand Down
2 changes: 1 addition & 1 deletion apps/hubble/src/network/p2p/gossipNode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -468,7 +468,7 @@ export class GossipNode extends TypedEmitter<NodeEvents> {
}
}

/** Connects to a peer GossipNode */
/** Connects to a peer GossipNode through at least one multiaddr */
async connect(peerNode: GossipNode): Promise<HubResult<void>> {
const multiaddrs = peerNode.multiaddrs();
if (!multiaddrs || multiaddr.length === 0) {
Expand Down
3 changes: 3 additions & 0 deletions apps/hubble/src/network/p2p/gossipNodeWorker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,9 @@ export class LibP2PNode {
// Only set optional fields if defined to avoid errors
...(peerId && { peerId }),
connectionGater: this._connectionGater,
connectionManager: {
minConnections: 0,
},
addresses: {
listen: [listenMultiAddrStr],
announce: announceMultiAddrStrList,
Expand Down
127 changes: 88 additions & 39 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1021,10 +1021,10 @@
resolved "https://registry.npmjs.org/@chainsafe/is-ip/-/is-ip-2.0.1.tgz#62cb285669d91f88fd9fa285048dde3882f0993b"
integrity sha512-nqSJ8u2a1Rv9FYbyI8qpDhTYujaKEyLknNrTejLYoSWmdeg+2WB7R6BZqPZYfrJzDxVi3rl6ZQuoaEvpKRZWgQ==

"@chainsafe/libp2p-gossipsub@6.1.0":
version "6.1.0"
resolved "https://registry.npmjs.org/@chainsafe/libp2p-gossipsub/-/libp2p-gossipsub-6.1.0.tgz#70b34bb507d365ebc9dcd64071ccb0f4452a57f5"
integrity sha512-+zIPRGf2T+Qd+Hef/XbJx66FL+hbmth9sk6sr3PvQ2eolHGFwPwxSeM7fVdGWoZ7sMndUoGKUNPmO2GzbPsVQg==
"@chainsafe/libp2p-gossipsub@6.2.0":
version "6.2.0"
resolved "https://registry.npmjs.org/@chainsafe/libp2p-gossipsub/-/libp2p-gossipsub-6.2.0.tgz#1266ae5a10cd57e297bd30edf3b365c907ce78e7"
integrity sha512-b3xEgjaatCmzJgNyE7qbTl/JBIymcNWbLUtW1nGA9a0n9Y0IjnNLyUmHH0y3xe22trVTAf6o7qpAdkbXILU9sg==
dependencies:
"@libp2p/crypto" "^1.0.3"
"@libp2p/interface-connection" "^3.0.1"
Expand Down Expand Up @@ -2317,10 +2317,10 @@
it-stream-types "^1.0.4"
uint8arraylist "^2.1.2"

"@libp2p/interface-connection-gater@^1.0.0":
version "1.0.3"
resolved "https://registry.npmjs.org/@libp2p/interface-connection-gater/-/interface-connection-gater-1.0.3.tgz#cb8197ad6cd16035ae3b45e8caa93f81d7feb86e"
integrity sha512-KOSJe5SqziojGx5+iF9vcuwevrfU8DbhZjLhbIHOI8H3YhAPRH8s/IY1rohSXGEco8cd0r30FNU903JuKkcFAA==
"@libp2p/interface-connection-gater@^2.0.1":
version "2.0.1"
resolved "https://registry.npmjs.org/@libp2p/interface-connection-gater/-/interface-connection-gater-2.0.1.tgz#7100a31ffb1948741b20fbe37c4c0cc184f2de33"
integrity sha512-GaH0UCknN4epQq6JfKNO2iD77iukorU0t7KfD1dweVTjEQxq/GiX8vxrJvfoavkmpVVHT5Nlt651p/HksNG6HQ==
dependencies:
"@libp2p/interface-connection" "^4.0.0"
"@libp2p/interface-peer-id" "^2.0.0"
Expand All @@ -2329,7 +2329,7 @@
it-stream-types "^1.0.4"
uint8arraylist "^2.1.2"

"@libp2p/interface-connection-manager@^1.0.0", "@libp2p/interface-connection-manager@^1.1.1", "@libp2p/interface-connection-manager@^1.3.0":
"@libp2p/interface-connection-manager@^1.0.0", "@libp2p/interface-connection-manager@^1.3.0":
version "1.3.7"
resolved "https://registry.npmjs.org/@libp2p/interface-connection-manager/-/interface-connection-manager-1.3.7.tgz#110a3ea0a8e63461e159df7182e6246625e92bd5"
integrity sha512-GyRa7FXtwjbch4ucFa/jj6vcaQT2RyhUbH3q0tIOTzjntABTMzQrhn3BWOGU5deRp2K7cVOB/OzrdhHdGUxYQA==
Expand All @@ -2339,6 +2339,17 @@
"@libp2p/interfaces" "^3.0.0"
"@multiformats/multiaddr" "^11.0.0"

"@libp2p/interface-connection-manager@^2.1.0":
version "2.1.1"
resolved "https://registry.npmjs.org/@libp2p/interface-connection-manager/-/interface-connection-manager-2.1.1.tgz#b795a0a0eb7bd3ebdaa1a93c4e7148893d6ee8c2"
integrity sha512-cIhSRSQs2iHBI8G3vc7Y7cQY2CMYIQYul05qT+or+wZnHdW6CbR44j9s/pPgKLl5cKJPzdLvaEuIY1fTwqnNag==
dependencies:
"@libp2p/interface-connection" "^5.0.0"
"@libp2p/interface-peer-id" "^2.0.0"
"@libp2p/interfaces" "^3.0.0"
"@libp2p/peer-collections" "^3.0.1"
"@multiformats/multiaddr" "^12.0.0"

"@libp2p/interface-connection@^3.0.0", "@libp2p/interface-connection@^3.0.1", "@libp2p/interface-connection@^3.0.2":
version "3.0.8"
resolved "https://registry.npmjs.org/@libp2p/interface-connection/-/interface-connection-3.0.8.tgz#2c17bcdc53c6951d96a8430bb7dad1cb064cf184"
Expand All @@ -2361,6 +2372,17 @@
it-stream-types "^1.0.4"
uint8arraylist "^2.1.2"

"@libp2p/interface-connection@^5.0.0":
version "5.1.1"
resolved "https://registry.npmjs.org/@libp2p/interface-connection/-/interface-connection-5.1.1.tgz#da0572c76da43629d52b8bec6cd092143fae421d"
integrity sha512-ytknMbuuNW72LYMmTP7wFGP5ZTaUSGBCmV9f+uQ55XPcFHtKXLtKWVU/HE8IqPmwtyU8AO7veGoJ/qStMHNRVA==
dependencies:
"@libp2p/interface-peer-id" "^2.0.0"
"@libp2p/interfaces" "^3.0.0"
"@multiformats/multiaddr" "^12.0.0"
it-stream-types "^2.0.1"
uint8arraylist "^2.4.3"

"@libp2p/interface-content-routing@^2.0.0":
version "2.0.1"
resolved "https://registry.npmjs.org/@libp2p/interface-content-routing/-/interface-content-routing-2.0.1.tgz#e050dc42adc3e9b4f1666eafa889c88f892ba1c4"
Expand Down Expand Up @@ -2629,18 +2651,18 @@
interface-datastore "^8.2.0"
multiformats "^12.0.1"

"@libp2p/mplex@^7.0.0":
version "7.1.1"
resolved "https://registry.npmjs.org/@libp2p/mplex/-/mplex-7.1.1.tgz#557567fb6575c471eaa283175c2305d3ef6045fb"
integrity sha512-0owK1aWgXXtjiohXtjwLV7Ehjdj96eBtsapVt7AzlHA+W8uYnI+x058thq3MisyMDlHiiE3BTh6fEf+t2/0dUw==
"@libp2p/mplex@^7.1.6":
version "7.1.7"
resolved "https://registry.npmjs.org/@libp2p/mplex/-/mplex-7.1.7.tgz#ee14192f5e82aa3710ae4a102875278aea0bb127"
integrity sha512-8eJ6HUL3bM8ck0rb/NJ04+phBUVBMocxH/kuc2Nypn8RX9ezihV7srGGhG5N7muaMwJrRbYkFhIV4GH+8WTZUg==
dependencies:
"@libp2p/interface-connection" "^3.0.1"
"@libp2p/interface-connection" "^4.0.0"
"@libp2p/interface-stream-muxer" "^3.0.0"
"@libp2p/interfaces" "^3.2.0"
"@libp2p/logger" "^2.0.0"
abortable-iterator "^4.0.2"
any-signal "^3.0.0"
any-signal "^4.0.1"
benchmark "^2.1.4"
err-code "^3.0.1"
it-batched-bytes "^1.0.0"
it-pushable "^3.1.0"
it-stream-types "^1.0.4"
Expand Down Expand Up @@ -2678,6 +2700,14 @@
"@libp2p/interface-peer-id" "^2.0.0"
"@libp2p/peer-id" "^2.0.0"

"@libp2p/peer-collections@^3.0.1":
version "3.0.2"
resolved "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-3.0.2.tgz#a5441108fcf137e822be378e2e3abdd3f22c68d9"
integrity sha512-3vRVMWVRCF6dVs/1/CHbw4YSv83bcqjZuAt9ZQHW85vn6OfHNFQesOHWT1TbRBuL8TSb//IwJkOfTAVLd6Mymw==
dependencies:
"@libp2p/interface-peer-id" "^2.0.0"
"@libp2p/peer-id" "^2.0.0"

"@libp2p/peer-id-factory@^2.0.0":
version "2.0.1"
resolved "https://registry.npmjs.org/@libp2p/peer-id-factory/-/peer-id-factory-2.0.1.tgz#36d92e0ae55f039812224c7dcf42e16aa3bab039"
Expand Down Expand Up @@ -4554,11 +4584,16 @@ any-promise@^1.0.0:
resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==

any-signal@^3.0.0, any-signal@^3.0.1:
any-signal@^3.0.1:
version "3.0.1"
resolved "https://registry.npmjs.org/any-signal/-/any-signal-3.0.1.tgz#49cae34368187a3472e31de28fb5cb1430caa9a6"
integrity sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg==

any-signal@^4.0.1, any-signal@^4.1.1:
version "4.1.1"
resolved "https://registry.npmjs.org/any-signal/-/any-signal-4.1.1.tgz#928416c355c66899e6b2a91cad4488f0324bae03"
integrity sha512-iADenERppdC+A2YKbOXXB2WUeABLaM6qnpZ70kZbPZ1cZMMJ7eF+3CaYm+/PhBizgkzlvssC7QuHS30oOiQYWA==

anymatch@^3.0.3, anymatch@~3.1.2:
version "3.1.3"
resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
Expand Down Expand Up @@ -7408,11 +7443,6 @@ it-batched-bytes@^1.0.0:
p-defer "^4.0.0"
uint8arraylist "^2.4.1"

it-drain@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/it-drain/-/it-drain-2.0.0.tgz#724c910720a109916bce0a991cf954e8d7b4fe21"
integrity sha512-oa/5iyBtRs9UW486vPpyDTC0ee3rqx5qlrPI7txIUJcqqtiO5yVozEB6LQrl5ysQYv+P3y/dlKEqwVqlCV0SEA==

it-drain@^3.0.1:
version "3.0.2"
resolved "https://registry.npmjs.org/it-drain/-/it-drain-3.0.2.tgz#4fb2ab30119072268c68a895fa5b9f2037942c44"
Expand All @@ -7430,6 +7460,13 @@ it-filter@^3.0.0:
dependencies:
it-peekable "^3.0.0"

it-filter@^3.0.1:
version "3.1.1"
resolved "https://registry.npmjs.org/it-filter/-/it-filter-3.1.1.tgz#d9f55ecb26200baca41e5e330e5808b3afdfa7b7"
integrity sha512-TOXmVuaSkxlLp2hXKoMTra0WMZMKVFxE3vSsbIA+PbADNCBAHhjJ/lM31vBOUTddHMO34Ku++vU8T9PLlBxQtg==
dependencies:
it-peekable "^3.0.0"

it-first@^1.0.7:
version "1.0.7"
resolved "https://registry.npmjs.org/it-first/-/it-first-1.0.7.tgz#a4bef40da8be21667f7d23e44dae652f5ccd7ab1"
Expand All @@ -7440,6 +7477,11 @@ it-first@^2.0.0:
resolved "https://registry.npmjs.org/it-first/-/it-first-2.0.0.tgz#b0bba28414caa2b27b807ac15e897d4a9526940d"
integrity sha512-fzZGzVf01exFyIZXNjkpSMFr1eW2+J1K0v018tYY26Dd4f/O3pWlBTdrOBfSQRZwtI8Pst6c7eKhYczWvFs6tA==

it-first@^3.0.1:
version "3.0.6"
resolved "https://registry.npmjs.org/it-first/-/it-first-3.0.6.tgz#f532f0f36fe9bf0c291e0162b9d3375d59fe8f05"
integrity sha512-ExIewyK9kXKNAplg2GMeWfgjUcfC1FnUXz/RPfAvIXby+w7U4b3//5Lic0NV03gXT8O/isj5Nmp6KiY0d45pIQ==

it-foreach@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/it-foreach/-/it-foreach-1.0.0.tgz#43b3f04661ef0809a4ce03150ef1f66a3f63ed23"
Expand Down Expand Up @@ -7490,6 +7532,13 @@ it-map@^3.0.1:
dependencies:
it-peekable "^3.0.0"

it-map@^3.0.2:
version "3.1.1"
resolved "https://registry.npmjs.org/it-map/-/it-map-3.1.1.tgz#637877e93be93a7aa7d7fc103b70a5939fc6f7a1"
integrity sha512-9bCSwKD1yN1wCOgJ9UOl+46NQtdatosPWzxxUk2NdTLwRPXLh+L7iwCC9QKsbgM60RQxT/nH8bKMqm3H/o8IHQ==
dependencies:
it-peekable "^3.0.0"

it-merge@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/it-merge/-/it-merge-2.0.0.tgz#adfcd33199995a503cb37ac73548f65d8a0742db"
Expand Down Expand Up @@ -7561,7 +7610,7 @@ it-pipe@^2.0.3, it-pipe@^2.0.4:
it-pushable "^3.1.0"
it-stream-types "^1.0.3"

it-pipe@^3.0.0:
it-pipe@^3.0.0, it-pipe@^3.0.1:
version "3.0.1"
resolved "https://registry.npmjs.org/it-pipe/-/it-pipe-3.0.1.tgz#b25720df82f4c558a8532602b5fbc37bbe4e7ba5"
integrity sha512-sIoNrQl1qSRg2seYSBH/3QxWhJFn9PKYvOf/bHdtCBF0bnghey44VyASsWzn5dAx0DCDDABq1hZIuzKmtBZmKA==
Expand Down Expand Up @@ -8184,18 +8233,18 @@ leven@^3.1.0:
resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==

libp2p@0.43.4:
version "0.43.4"
resolved "https://registry.npmjs.org/libp2p/-/libp2p-0.43.4.tgz#9ec710f82b75cb619703d15d3319c09abe36bd22"
integrity sha512-bDoc9T5Fae03TiKXxeE4/jUWS1SINq5o388m5Fos+imUQlHfa6QF3F7X2os+F1YSiMn+eWB8IrwMihafr5rgAg==
libp2p@0.44.0:
version "0.44.0"
resolved "https://registry.npmjs.org/libp2p/-/libp2p-0.44.0.tgz#ccfe88eae9eec3b7b9255ca8948a0272a958d5b5"
integrity sha512-lDUjzt9uN+fADowW/BEIfQntcru2DwTeHhvoDKT0yxXypxT4SfhlPejmDNrbfCxBF4Rx4eYDeAqEUG7A83KMYw==
dependencies:
"@achingbrain/nat-port-mapper" "^1.0.3"
"@libp2p/crypto" "^1.0.4"
"@libp2p/interface-address-manager" "^2.0.0"
"@libp2p/interface-connection" "^3.0.2"
"@libp2p/interface-connection" "^4.0.0"
"@libp2p/interface-connection-encrypter" "^3.0.1"
"@libp2p/interface-connection-gater" "^1.0.0"
"@libp2p/interface-connection-manager" "^1.1.1"
"@libp2p/interface-connection-gater" "^2.0.1"
"@libp2p/interface-connection-manager" "^2.1.0"
"@libp2p/interface-content-routing" "^2.0.0"
"@libp2p/interface-dht" "^2.0.0"
"@libp2p/interface-keychain" "^2.0.4"
Expand Down Expand Up @@ -8226,21 +8275,21 @@ libp2p@0.43.4:
"@multiformats/mafmt" "^12.0.0"
"@multiformats/multiaddr" "^12.0.0"
abortable-iterator "^4.0.2"
any-signal "^3.0.0"
any-signal "^4.1.1"
datastore-core "^9.0.0"
interface-datastore "^8.0.0"
it-all "^2.0.0"
it-drain "^2.0.0"
it-filter "^2.0.0"
it-first "^2.0.0"
it-all "^3.0.1"
it-drain "^3.0.1"
it-filter "^3.0.1"
it-first "^3.0.1"
it-handshake "^4.1.2"
it-length-prefixed "^8.0.2"
it-map "^2.0.0"
it-merge "^2.0.0"
it-length-prefixed "^9.0.0"
it-map "^3.0.2"
it-merge "^3.0.0"
it-pair "^2.0.2"
it-parallel "^3.0.0"
it-pb-stream "^3.2.0"
it-pipe "^2.0.3"
it-pipe "^3.0.1"
it-stream-types "^1.0.4"
merge-options "^3.0.4"
multiformats "^11.0.0"
Expand Down

0 comments on commit e2b1c7c

Please sign in to comment.