From 5c938a16e85bf4795fb5902ed4b2d85a300f27b9 Mon Sep 17 00:00:00 2001 From: Vasco Santos Date: Tue, 21 Apr 2020 09:35:29 +0200 Subject: [PATCH 1/7] chore: use libp2p 0.28.x --- .../src/bitswap/wantlist.js | 6 +- .../interface-ipfs-core/src/swarm/addrs.js | 14 ++-- packages/ipfs/package.json | 20 +++--- packages/ipfs/src/cli/daemon.js | 4 +- packages/ipfs/src/core/components/dht.js | 12 ++-- packages/ipfs/src/core/components/id.js | 6 +- packages/ipfs/src/core/components/init.js | 72 +++++++++---------- packages/ipfs/src/core/components/libp2p.js | 32 +++++++-- .../ipfs/src/core/components/name/publish.js | 4 +- .../ipfs/src/core/components/name/resolve.js | 4 +- .../ipfs/src/core/components/no-keychain.js | 33 --------- packages/ipfs/src/core/components/ping.js | 13 ++-- packages/ipfs/src/core/components/start.js | 35 ++++----- packages/ipfs/src/core/components/stop.js | 15 ++-- .../ipfs/src/core/components/swarm/addrs.js | 4 +- .../src/core/components/swarm/local-addrs.js | 4 +- packages/ipfs/src/core/index.js | 2 - packages/ipfs/src/core/ipns/index.js | 4 +- packages/ipfs/src/core/ipns/republisher.js | 6 +- packages/ipfs/src/core/ipns/routing/config.js | 3 +- packages/ipfs/test/core/exports.spec.js | 2 - packages/ipfs/test/core/id.spec.js | 25 +++---- packages/ipfs/test/core/libp2p.spec.js | 20 +++--- packages/ipfs/test/core/name.spec.js | 9 ++- 24 files changed, 164 insertions(+), 185 deletions(-) delete mode 100644 packages/ipfs/src/core/components/no-keychain.js diff --git a/packages/interface-ipfs-core/src/bitswap/wantlist.js b/packages/interface-ipfs-core/src/bitswap/wantlist.js index d35deb6948..f7f89a3460 100644 --- a/packages/interface-ipfs-core/src/bitswap/wantlist.js +++ b/packages/interface-ipfs-core/src/bitswap/wantlist.js @@ -32,7 +32,11 @@ module.exports = (common, options) => { // Add key to the wantlist for ipfsB ipfsB.block.get(key).catch(() => { /* is ok, expected on teardown */ }) - await ipfsA.swarm.connect(ipfsB.peerId.addresses[0]) + // Add peers to addressBook + ipfsA.libp2p.peerStore.addressBook.set(ipfsB.libp2p.peerId, ipfsB.libp2p.multiaddrs) + ipfsB.libp2p.peerStore.addressBook.set(ipfsA.libp2p.peerId, ipfsA.libp2p.multiaddrs) + + await ipfsA.swarm.connect(ipfsB.libp2p.peerId) }) after(() => common.clean()) diff --git a/packages/interface-ipfs-core/src/swarm/addrs.js b/packages/interface-ipfs-core/src/swarm/addrs.js index 72446e27b0..1c5487397a 100644 --- a/packages/interface-ipfs-core/src/swarm/addrs.js +++ b/packages/interface-ipfs-core/src/swarm/addrs.js @@ -38,15 +38,15 @@ module.exports = (common, options) => { }) it('should get a list of node addresses', async () => { - const peerInfos = await ipfsA.swarm.addrs() - expect(peerInfos).to.not.be.empty() - expect(peerInfos).to.be.an('array') + const peers = await ipfsA.swarm.addrs() + expect(peers).to.not.be.empty() + expect(peers).to.be.an('array') - for (const peerInfo of peerInfos) { - expect(CID.isCID(new CID(peerInfo.id))).to.be.true() - expect(peerInfo).to.have.a.property('addrs').that.is.an('array') + for (const peer of peers) { + expect(CID.isCID(new CID(peer.id))).to.be.true() + expect(peer).to.have.a.property('addrs').that.is.an('array') - for (const ma of peerInfo.addrs) { + for (const ma of peer.addrs) { expect(Multiaddr.isMultiaddr(ma)).to.be.true() } } diff --git a/packages/ipfs/package.json b/packages/ipfs/package.json index 7d333ef600..7bd9c08bb5 100644 --- a/packages/ipfs/package.json +++ b/packages/ipfs/package.json @@ -92,7 +92,7 @@ "hapi-pino": "^6.1.0", "hashlru": "^2.3.0", "interface-datastore": "^1.0.2", - "ipfs-bitswap": "^1.0.0", + "ipfs-bitswap": "ipfs/js-ipfs-bitswap#chore/use-libp2p-0.28", "ipfs-block-service": "^0.17.1", "ipfs-core-utils": "^0.2.3", "ipfs-http-client": "^44.2.0", @@ -128,21 +128,21 @@ "iterable-ndjson": "^1.1.0", "jsondiffpatch": "^0.4.1", "just-safe-set": "^2.1.0", - "libp2p": "^0.27.7", - "libp2p-bootstrap": "^0.10.3", + "libp2p": "^0.28.0-rc.0", + "libp2p-bootstrap": "^0.11.0", "libp2p-crypto": "^0.17.6", - "libp2p-delegated-content-routing": "^0.4.4", - "libp2p-delegated-peer-routing": "^0.4.2", - "libp2p-floodsub": "^0.20.4", - "libp2p-gossipsub": "^0.3.1", - "libp2p-kad-dht": "^0.18.7", + "libp2p-delegated-content-routing": "^0.5.0", + "libp2p-delegated-peer-routing": "^0.5.0", + "libp2p-floodsub": "^0.21.0", + "libp2p-gossipsub": "^0.4.0", + "libp2p-kad-dht": "^0.19.1", "libp2p-keychain": "^0.6.0", - "libp2p-mdns": "^0.13.1", + "libp2p-mdns": "^0.14.1", "libp2p-mplex": "^0.9.3", "libp2p-record": "^0.7.3", "libp2p-secio": "^0.12.2", "libp2p-tcp": "^0.14.5", - "libp2p-webrtc-star": "^0.17.10", + "libp2p-webrtc-star": "^0.18.0", "libp2p-websockets": "^0.13.3", "mafmt": "^7.0.0", "merge-options": "^2.0.0", diff --git a/packages/ipfs/src/cli/daemon.js b/packages/ipfs/src/cli/daemon.js index 3f3dc619d1..e16d58999e 100644 --- a/packages/ipfs/src/cli/daemon.js +++ b/packages/ipfs/src/cli/daemon.js @@ -60,7 +60,7 @@ class Daemon { } } -function getLibp2p ({ libp2pOptions, options, config, peerInfo }) { +function getLibp2p ({ libp2pOptions, options, config, peerId }) { // Attempt to use any of the WebRTC versions available globally let electronWebRTC let wrtc @@ -98,7 +98,7 @@ function getLibp2p ({ libp2pOptions, options, config, peerInfo }) { } libp2pOptions.modules.contentRouting = libp2pOptions.modules.contentRouting || [] - libp2pOptions.modules.contentRouting.push(new DelegatedContentRouter(peerInfo.id, delegatedApiOptions)) + libp2pOptions.modules.contentRouting.push(new DelegatedContentRouter(peerId, delegatedApiOptions)) libp2pOptions.modules.peerRouting = libp2pOptions.modules.peerRouting || [] libp2pOptions.modules.peerRouting.push(new DelegatedPeerRouter(delegatedApiOptions)) diff --git a/packages/ipfs/src/core/components/dht.js b/packages/ipfs/src/core/components/dht.js index dcbf619a4c..4fb002147a 100644 --- a/packages/ipfs/src/core/components/dht.js +++ b/packages/ipfs/src/core/components/dht.js @@ -77,10 +77,10 @@ module.exports = ({ libp2p, repo }) => { options.maxNumProviders = options.numProviders } - for await (const peerInfo of libp2p._dht.findProviders(key, options)) { + for await (const peer of libp2p._dht.findProviders(key, options)) { yield { - id: peerInfo.id.toB58String(), - addrs: peerInfo.multiaddrs.toArray() + id: peer.id.toB58String(), + addrs: peer.addrs } } }), @@ -96,11 +96,11 @@ module.exports = ({ libp2p, repo }) => { peerId = PeerId.createFromCID(peerId) } - const peerInfo = await libp2p._dht.findPeer(peerId) + const peer = await libp2p._dht.findPeer(peerId) return { - id: peerInfo.id.toB58String(), - addrs: peerInfo.multiaddrs.toArray() + id: peer.id.toB58String(), + addrs: peer.addrs } }), diff --git a/packages/ipfs/src/core/components/id.js b/packages/ipfs/src/core/components/id.js index de2df51820..49953ef5cb 100644 --- a/packages/ipfs/src/core/components/id.js +++ b/packages/ipfs/src/core/components/id.js @@ -4,9 +4,9 @@ const pkgversion = require('../../../package.json').version const multiaddr = require('multiaddr') const { withTimeoutOption } = require('../utils') -module.exports = ({ peerInfo, libp2p }) => { +module.exports = ({ peerId, libp2p }) => { return withTimeoutOption(async function id () { // eslint-disable-line require-await - const id = peerInfo.id.toB58String() + const id = peerId.toB58String() let addresses = [] if (libp2p) { @@ -16,7 +16,7 @@ module.exports = ({ peerInfo, libp2p }) => { return { id, - publicKey: peerInfo.id.pubKey.bytes.toString('base64'), + publicKey: peerId.pubKey.bytes.toString('base64'), addresses: addresses .map(ma => { const str = ma.toString() diff --git a/packages/ipfs/src/core/components/init.js b/packages/ipfs/src/core/components/init.js index 37fdc9272d..af48ea4e5f 100644 --- a/packages/ipfs/src/core/components/init.js +++ b/packages/ipfs/src/core/components/init.js @@ -3,12 +3,10 @@ const log = require('debug')('ipfs:components:init') const PeerId = require('peer-id') const { Buffer } = require('buffer') -const PeerInfo = require('peer-info') + const mergeOptions = require('merge-options') const getDefaultConfig = require('../runtime/config-nodejs.js') const createRepo = require('../runtime/repo-nodejs') -const Keychain = require('libp2p-keychain') -const NoKeychain = require('./no-keychain') const mortice = require('mortice') const { DAGNode } = require('ipld-dag-pb') const UnixFs = require('ipfs-unixfs') @@ -80,7 +78,7 @@ module.exports = ({ : await initNewRepo(repo, { ...options, print }) log('peer created') - const peerInfo = new PeerInfo(peerId) + const blockService = new BlockService(repo) const ipld = new Ipld(getDefaultIpldOptions(blockService, constructorOptions.ipld, log)) @@ -142,7 +140,7 @@ module.exports = ({ // Setup the offline routing for IPNS. // This is primarily used for offline ipns modifications, such as the initializeKeyspace feature. const offlineDatastore = new OfflineDatastore(repo) - const ipns = new IPNS(offlineDatastore, repo.datastore, peerInfo, keychain, { pass: options.pass }) + const ipns = new IPNS(offlineDatastore, repo.datastore, peerId, keychain, { pass: options.pass }) await ipns.initializeKeyspace(peerId.privKey, emptyDirCid.toString()) } @@ -158,7 +156,7 @@ module.exports = ({ ipld, keychain, object, - peerInfo, + peerId, pin, pinManager, preload, @@ -190,7 +188,6 @@ async function initNewRepo (repo, { privateKey, emptyRepo, bits, profiles, confi } const peerId = await createPeerId({ privateKey, bits, print }) - let keychain = new NoKeychain() log('identity generated') @@ -201,8 +198,6 @@ async function initNewRepo (repo, { privateKey, emptyRepo, bits, profiles, confi privateKey = peerId.privKey - config.Keychain = Keychain.generateOptions() - log('peer identity: %s', config.Identity.PeerID) await repo.init(config) @@ -210,14 +205,25 @@ async function initNewRepo (repo, { privateKey, emptyRepo, bits, profiles, confi log('repo opened') - if (pass) { - log('creating keychain') - const keychainOptions = { passPhrase: pass, ...config.Keychain } - keychain = new Keychain(repo.keys, keychainOptions) - await keychain.importPeer('self', { privKey: privateKey }) + // Create libp2p for Keychain creation + const libp2p = Components.libp2p({ + peerId, + repo, + config, + keychainConfig: { + pass + } + }) + + if (libp2p.keychain && libp2p.keychain.opts) { + await libp2p.loadKeychain() + + await repo.config.set('Keychain', { + dek: libp2p.keychain.opts.dek + }) } - return { peerId, keychain } + return { peerId, keychain: libp2p.keychain } } async function initExistingRepo (repo, { config: newConfig, profiles, pass }) { @@ -233,27 +239,21 @@ async function initExistingRepo (repo, { config: newConfig, profiles, pass }) { await repo.config.set(config) } - let keychain = new NoKeychain() - - if (pass) { - const keychainOptions = { passPhrase: pass, ...config.Keychain } - keychain = new Keychain(repo.keys, keychainOptions) - log('keychain constructed') - } - const peerId = await PeerId.createFromPrivKey(config.Identity.PrivKey) - // Import the private key as 'self', if needed. - if (pass) { - try { - await keychain.findKeyByName('self') - } catch (err) { - log('Creating "self" key') - await keychain.importPeer('self', peerId) + const libp2p = Components.libp2p({ + peerId, + repo, + config, + keychainConfig: { + pass, + ...config.Keychain } - } + }) + + libp2p.keychain && await libp2p.loadKeychain() - return { peerId, keychain } + return { peerId, keychain: libp2p.keychain } } function createPeerId ({ privateKey, bits, print }) { @@ -303,7 +303,7 @@ function createApi ({ ipld, keychain, object, - peerInfo, + peerId, pin, pinManager, preload, @@ -337,7 +337,7 @@ function createApi ({ dns: Components.dns(), files: Components.files({ ipld, block, blockService, repo, preload, options: constructorOptions }), get: Components.get({ ipld, preload }), - id: Components.id({ peerInfo }), + id: Components.id({ peerId }), init: async () => { throw new AlreadyInitializedError() }, // eslint-disable-line require-await isOnline: Components.isOnline({}), key: { @@ -367,7 +367,7 @@ function createApi ({ initOptions, ipld, keychain, - peerInfo, + peerId, pinManager, preload, print, @@ -383,7 +383,7 @@ function createApi ({ addrs: notStarted, connect: notStarted, disconnect: notStarted, - localAddrs: Components.swarm.localAddrs({ peerInfo }), + localAddrs: Components.swarm.localAddrs({ multiaddrs: [] }), peers: notStarted }, version: Components.version({ repo }) diff --git a/packages/ipfs/src/core/components/libp2p.js b/packages/ipfs/src/core/components/libp2p.js index afc03865b4..a0579fb803 100644 --- a/packages/ipfs/src/core/components/libp2p.js +++ b/packages/ipfs/src/core/components/libp2p.js @@ -7,18 +7,29 @@ const PubsubRouters = require('../runtime/libp2p-pubsub-routers-nodejs') module.exports = ({ options, - peerInfo, + peerId, + multiaddrs = [], repo, + keychainConfig = {}, config }) => { options = options || {} config = config || {} - const { datastore } = repo - const libp2pOptions = getLibp2pOptions({ options, config, datastore, peerInfo }) + const { datastore, keys } = repo + + const libp2pOptions = getLibp2pOptions({ + options, + config, + datastore, + keys, + keychainConfig, + peerId, + multiaddrs + }) if (typeof options.libp2p === 'function') { - return options.libp2p({ libp2pOptions, options, config, datastore, peerInfo }) + return options.libp2p({ libp2pOptions, options, config, datastore, peerId }) } // Required inline to reduce startup time @@ -26,7 +37,7 @@ module.exports = ({ return new Libp2p(mergeOptions(libp2pOptions, get(options, 'libp2p', {}))) } -function getLibp2pOptions ({ options, config, datastore, peerInfo }) { +function getLibp2pOptions ({ options, config, datastore, keys, keychainConfig, peerId, multiaddrs }) { const getPubsubRouter = () => { const router = get(config, 'Pubsub.Router') || 'gossipsub' @@ -39,7 +50,7 @@ function getLibp2pOptions ({ options, config, datastore, peerInfo }) { const libp2pDefaults = { datastore, - peerInfo, + peerId: peerId, modules: {} } @@ -80,12 +91,19 @@ function getLibp2pOptions ({ options, config, datastore, peerInfo }) { get(config, 'Pubsub.Enabled', true)) } }, + addresses: { + listen: multiaddrs + }, connectionManager: get(options, 'connectionManager', { maxConnections: get(options, 'config.Swarm.ConnMgr.HighWater', get(config, 'Swarm.ConnMgr.HighWater')), minConnections: get(options, 'config.Swarm.ConnMgr.LowWater', get(config, 'Swarm.ConnMgr.LowWater')) - }) + }), + keychain: { + datastore: keys, + ...keychainConfig + } } // Required inline to reduce startup time diff --git a/packages/ipfs/src/core/components/name/publish.js b/packages/ipfs/src/core/components/name/publish.js index 5438f20d7c..249a19ac85 100644 --- a/packages/ipfs/src/core/components/name/publish.js +++ b/packages/ipfs/src/core/components/name/publish.js @@ -21,10 +21,10 @@ const { resolvePath } = require('./utils') * @param {IPFS} self * @returns {Object} */ -module.exports = ({ ipns, dag, peerInfo, isOnline, keychain, options: constructorOptions }) => { +module.exports = ({ ipns, dag, peerId, isOnline, keychain, options: constructorOptions }) => { const lookupKey = async keyName => { if (keyName === 'self') { - return peerInfo.id.privKey + return peerId.privKey } try { diff --git a/packages/ipfs/src/core/components/name/resolve.js b/packages/ipfs/src/core/components/name/resolve.js index 889c5e9e56..b905876f4a 100644 --- a/packages/ipfs/src/core/components/name/resolve.js +++ b/packages/ipfs/src/core/components/name/resolve.js @@ -31,7 +31,7 @@ const appendRemainder = async (result, remainder) => { * @param {IPFS} self * @returns {Object} */ -module.exports = ({ dns, ipns, peerInfo, isOnline, options: constructorOptions }) => { +module.exports = ({ dns, ipns, peerId, isOnline, options: constructorOptions }) => { /** * Given a key, query the DHT for its best value. * @@ -57,7 +57,7 @@ module.exports = ({ dns, ipns, peerInfo, isOnline, options: constructorOptions } // Set node id as name for being resolved, if it is not received if (!name) { - name = peerInfo.id.toB58String() + name = peerId.toB58String() } if (!name.startsWith('/ipns/')) { diff --git a/packages/ipfs/src/core/components/no-keychain.js b/packages/ipfs/src/core/components/no-keychain.js deleted file mode 100644 index 6e4e612a57..0000000000 --- a/packages/ipfs/src/core/components/no-keychain.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict' - -function fail () { - throw new Error('Key management requires \'--pass ...\' option') -} - -class NoKeychain { - static get options () { fail() } - - static generateOptions () { fail() } - - createKey () { fail() } - - listKeys () { fail() } - - findKeyById () { fail() } - - findKeyByName () { fail() } - - renameKey () { fail() } - - removeKey () { fail() } - - exportKey () { fail() } - - importKey () { fail() } - - importPeer () { fail() } - - get cms () { fail() } -} - -module.exports = NoKeychain diff --git a/packages/ipfs/src/core/components/ping.js b/packages/ipfs/src/core/components/ping.js index 6114ba142d..97cdc81072 100644 --- a/packages/ipfs/src/core/components/ping.js +++ b/packages/ipfs/src/core/components/ping.js @@ -13,22 +13,21 @@ module.exports = ({ libp2p }) => { peerId = PeerId.createFromCID(peerId) } - let peerInfo - if (libp2p.peerStore.has(peerId)) { - peerInfo = libp2p.peerStore.get(peerId) - } else { + let peer = libp2p.peerStore.get(peerId) + + if (!peer) { yield { ...basePacket, text: `Looking up peer ${peerId}` } - peerInfo = await libp2p.peerRouting.findPeer(peerId) + peer = await libp2p.peerRouting.findPeer(peerId) } - yield { ...basePacket, text: `PING ${peerInfo.id.toB58String()}` } + yield { ...basePacket, text: `PING ${peer.id.toB58String()}` } let packetCount = 0 let totalTime = 0 for (let i = 0; i < options.count; i++) { try { - const time = await libp2p.ping(peerInfo) + const time = await libp2p.ping(peer.id) totalTime += time packetCount++ yield { ...basePacket, time } diff --git a/packages/ipfs/src/core/components/start.js b/packages/ipfs/src/core/components/start.js index 3e5efd90f8..2b5639f5c3 100644 --- a/packages/ipfs/src/core/components/start.js +++ b/packages/ipfs/src/core/components/start.js @@ -19,7 +19,7 @@ module.exports = ({ initOptions, ipld, keychain, - peerInfo, + peerId, pinManager, preload, print, @@ -35,6 +35,7 @@ module.exports = ({ } const config = await repo.config.get() + const addrs = [] if (config.Addresses && config.Addresses.Swarm) { config.Addresses.Swarm.forEach(addr => { @@ -44,28 +45,30 @@ module.exports = ({ // webrtc-star) can have the intermediary's peer ID in the address, so append our // peer ID to the end of it const maId = ma.getPeerId() - if (maId && maId !== peerInfo.id.toB58String()) { - ma = ma.encapsulate(`/p2p/${peerInfo.id.toB58String()}`) + if (maId && maId !== peerId.toB58String()) { + ma = ma.encapsulate(`/p2p/${peerId.toB58String()}`) } - peerInfo.multiaddrs.add(ma) + addrs.push(ma) }) } const libp2p = Components.libp2p({ options: constructorOptions, repo, - peerInfo, - print, + peerId: peerId, + multiaddrs: addrs, config }) + libp2p.keychain && await libp2p.loadKeychain() + await libp2p.start() - peerInfo.multiaddrs.forEach(ma => print(`Swarm listening on ${ma}/p2p/${peerInfo.id.toB58String()}`)) + libp2p.transportManager.getAddrs().forEach(ma => print(`Swarm listening on ${ma}/p2p/${peerId.toB58String()}`)) - const ipnsRouting = routingConfig({ libp2p, repo, peerInfo, options: constructorOptions }) - const ipns = new IPNS(ipnsRouting, repo.datastore, peerInfo, keychain, { pass: initOptions.pass }) + const ipnsRouting = routingConfig({ libp2p, repo, peerId, options: constructorOptions }) + const ipns = new IPNS(ipnsRouting, repo.datastore, peerId, keychain, { pass: initOptions.pass }) const bitswap = new Bitswap(libp2p, repo.blocks, { statsEnabled: true }) await bitswap.start() @@ -119,7 +122,7 @@ module.exports = ({ keychain, libp2p, mfsPreload, - peerInfo, + peerId, pin, pinManager, preload, @@ -154,7 +157,7 @@ function createApi ({ keychain, libp2p, mfsPreload, - peerInfo, + peerId, pin, pinManager, preload, @@ -199,8 +202,8 @@ function createApi ({ state: Components.name.pubsub.state({ ipns, options: constructorOptions }), subs: Components.name.pubsub.subs({ ipns, options: constructorOptions }) }, - publish: Components.name.publish({ ipns, dag, peerInfo, isOnline, keychain, options: constructorOptions }), - resolve: Components.name.resolve({ dns, ipns, peerInfo, isOnline, options: constructorOptions }) + publish: Components.name.publish({ ipns, dag, peerId, isOnline, keychain, options: constructorOptions }), + resolve: Components.name.resolve({ dns, ipns, peerId, isOnline, options: constructorOptions }) } const resolve = Components.resolve({ name, ipld }) const refs = Components.refs({ ipld, resolve, preload }) @@ -240,7 +243,7 @@ function createApi ({ dns, files, get: Components.get({ ipld, preload }), - id: Components.id({ peerInfo, libp2p }), + id: Components.id({ peerId, libp2p }), init: async () => { throw new AlreadyInitializedError() }, // eslint-disable-line require-await isOnline, key: { @@ -288,7 +291,7 @@ function createApi ({ keychain, libp2p, mfsPreload, - peerInfo, + peerId, preload, print, repo @@ -297,7 +300,7 @@ function createApi ({ addrs: Components.swarm.addrs({ libp2p }), connect: Components.swarm.connect({ libp2p }), disconnect: Components.swarm.disconnect({ libp2p }), - localAddrs: Components.swarm.localAddrs({ peerInfo }), + localAddrs: Components.swarm.localAddrs({ multiaddrs: libp2p.multiaddrs }), peers: Components.swarm.peers({ libp2p }) }, version: Components.version({ repo }) diff --git a/packages/ipfs/src/core/components/stop.js b/packages/ipfs/src/core/components/stop.js index 25f04ffc34..fdd9756637 100644 --- a/packages/ipfs/src/core/components/stop.js +++ b/packages/ipfs/src/core/components/stop.js @@ -17,7 +17,7 @@ module.exports = ({ keychain, libp2p, mfsPreload, - peerInfo, + peerId, pinManager, preload, print, @@ -38,9 +38,6 @@ module.exports = ({ repo.close() ]) - // Clear our addresses so we can start clean - peerInfo.multiaddrs.clear() - const api = createApi({ apiManager, constructorOptions, @@ -49,7 +46,7 @@ module.exports = ({ initOptions, ipld, keychain, - peerInfo, + peerId, pinManager, preload, print, @@ -74,7 +71,7 @@ function createApi ({ initOptions, ipld, keychain, - peerInfo, + peerId, pinManager, preload, print, @@ -144,7 +141,7 @@ function createApi ({ dns: Components.dns(), files: Components.files({ ipld, block, blockService, repo, preload, options: constructorOptions }), get: Components.get({ ipld, preload }), - id: Components.id({ peerInfo }), + id: Components.id({ peerId }), init: async () => { // eslint-disable-line require-await throw new AlreadyInitializedError() }, @@ -176,7 +173,7 @@ function createApi ({ initOptions, ipld, keychain, - peerInfo, + peerId, pinManager, preload, print, @@ -192,7 +189,7 @@ function createApi ({ addrs: notStarted, connect: notStarted, disconnect: notStarted, - localAddrs: Components.swarm.localAddrs({ peerInfo }), + localAddrs: Components.swarm.localAddrs({ multiaddrs: [] }), peers: notStarted }, version: Components.version({ repo }) diff --git a/packages/ipfs/src/core/components/swarm/addrs.js b/packages/ipfs/src/core/components/swarm/addrs.js index be766c2399..cca0c83d32 100644 --- a/packages/ipfs/src/core/components/swarm/addrs.js +++ b/packages/ipfs/src/core/components/swarm/addrs.js @@ -5,10 +5,10 @@ const { withTimeoutOption } = require('../../utils') module.exports = ({ libp2p }) => { return withTimeoutOption(async function addrs (options) { // eslint-disable-line require-await const peers = [] - for (const [peerId, peerInfo] of libp2p.peerStore.peers.entries(options)) { + for (const [peerId, peer] of libp2p.peerStore.peers.entries(options)) { peers.push({ id: peerId, - addrs: peerInfo.multiaddrs.toArray() + addrs: peer.addresses.map((mi) => mi.multiaddr) }) } return peers diff --git a/packages/ipfs/src/core/components/swarm/local-addrs.js b/packages/ipfs/src/core/components/swarm/local-addrs.js index b0722bf789..10b7f04cc3 100644 --- a/packages/ipfs/src/core/components/swarm/local-addrs.js +++ b/packages/ipfs/src/core/components/swarm/local-addrs.js @@ -2,8 +2,8 @@ const { withTimeoutOption } = require('../../utils') -module.exports = ({ peerInfo }) => { +module.exports = ({ multiaddrs }) => { return withTimeoutOption(async function localAddrs () { // eslint-disable-line require-await - return peerInfo.multiaddrs.toArray() + return multiaddrs }) } diff --git a/packages/ipfs/src/core/index.js b/packages/ipfs/src/core/index.js index 44b83e5134..81859b9b7f 100644 --- a/packages/ipfs/src/core/index.js +++ b/packages/ipfs/src/core/index.js @@ -7,7 +7,6 @@ const globSource = require('ipfs-utils/src/files/glob-source') const urlSource = require('ipfs-utils/src/files/url-source') const { Buffer } = require('buffer') const PeerId = require('peer-id') -const PeerInfo = require('peer-info') const crypto = require('libp2p-crypto') const isIPFS = require('is-ipfs') const multiaddr = require('multiaddr') @@ -74,7 +73,6 @@ module.exports = { multihashing, multicodec, PeerId, - PeerInfo, globSource, urlSource } diff --git a/packages/ipfs/src/core/ipns/index.js b/packages/ipfs/src/core/ipns/index.js index 10e2f77f79..91c00ea678 100644 --- a/packages/ipfs/src/core/ipns/index.js +++ b/packages/ipfs/src/core/ipns/index.js @@ -14,9 +14,9 @@ const TLRU = require('../../utils/tlru') const defaultRecordTtl = 60 * 1000 class IPNS { - constructor (routing, datastore, peerInfo, keychain, options) { + constructor (routing, datastore, peerId, keychain, options) { this.publisher = new IpnsPublisher(routing, datastore) - this.republisher = new IpnsRepublisher(this.publisher, datastore, peerInfo, keychain, options) + this.republisher = new IpnsRepublisher(this.publisher, datastore, peerId, keychain, options) this.resolver = new IpnsResolver(routing) this.cache = new TLRU(1000) this.routing = routing diff --git a/packages/ipfs/src/core/ipns/republisher.js b/packages/ipfs/src/core/ipns/republisher.js index 2e7fe12af0..b5b196c506 100644 --- a/packages/ipfs/src/core/ipns/republisher.js +++ b/packages/ipfs/src/core/ipns/republisher.js @@ -17,10 +17,10 @@ const defaultBroadcastInterval = 4 * hour const defaultRecordLifetime = 24 * hour class IpnsRepublisher { - constructor (publisher, datastore, peerInfo, keychain, options) { + constructor (publisher, datastore, peerId, keychain, options) { this._publisher = publisher this._datastore = datastore - this._peerInfo = peerInfo + this._peerId = peerId this._keychain = keychain this._options = options || {} this._republishHandle = null @@ -63,7 +63,7 @@ class IpnsRepublisher { } } - const { privKey } = this._peerInfo.id + const { privKey } = this._peerId const { pass } = this._options let firstRun = true diff --git a/packages/ipfs/src/core/ipns/routing/config.js b/packages/ipfs/src/core/ipns/routing/config.js index 5a3fbf9b6c..941097e100 100644 --- a/packages/ipfs/src/core/ipns/routing/config.js +++ b/packages/ipfs/src/core/ipns/routing/config.js @@ -6,7 +6,7 @@ const get = require('dlv') const PubsubDatastore = require('./pubsub-datastore') const OfflineDatastore = require('./offline-datastore') -module.exports = ({ libp2p, repo, peerInfo, options }) => { +module.exports = ({ libp2p, repo, peerId, options }) => { // Setup online routing for IPNS with a tiered routing composed by a DHT and a Pubsub router (if properly enabled) const ipnsStores = [] @@ -15,7 +15,6 @@ module.exports = ({ libp2p, repo, peerInfo, options }) => { if (get(options, 'EXPERIMENTAL.ipnsPubsub', false)) { const pubsub = libp2p.pubsub const localDatastore = repo.datastore - const peerId = peerInfo.id pubsubDs = new PubsubDatastore(pubsub, localDatastore, peerId) ipnsStores.push(pubsubDs) diff --git a/packages/ipfs/test/core/exports.spec.js b/packages/ipfs/test/core/exports.spec.js index fe3c70176f..d8942ff38f 100644 --- a/packages/ipfs/test/core/exports.spec.js +++ b/packages/ipfs/test/core/exports.spec.js @@ -10,7 +10,6 @@ const multihash = require('multihashes') const multihashing = require('multihashing-async') const multicodec = require('multicodec') const PeerId = require('peer-id') -const PeerInfo = require('peer-info') const { Buffer } = require('buffer') const { expect } = require('interface-ipfs-core/src/utils/mocha') @@ -28,6 +27,5 @@ describe('exports', () => { expect(Ipfs.multihashing).to.equal(multihashing) expect(Ipfs.multicodec).to.equal(multicodec) expect(Ipfs.PeerId).to.equal(PeerId) - expect(Ipfs.PeerInfo).to.equal(PeerInfo) }) }) diff --git a/packages/ipfs/test/core/id.spec.js b/packages/ipfs/test/core/id.spec.js index 1f818aa732..d35889c6c7 100644 --- a/packages/ipfs/test/core/id.spec.js +++ b/packages/ipfs/test/core/id.spec.js @@ -12,12 +12,22 @@ describe('id', function () { let node before(async () => { + let servers = [ + multiaddr('/ip4/127.0.0.1/tcp/0') + ] + + if (isBrowser) { + servers = [ + multiaddr('/ip4/127.0.0.1/tcp/14579/wss/p2p-webrtc-star') + ] + } + node = (await df.spawn({ type: 'proc', ipfsOptions: { config: { Addresses: { - Swarm: [] + Swarm: servers } } } @@ -34,19 +44,6 @@ describe('id', function () { return this.skip() } - await expect(node.id()).to.eventually.have.property('addresses').that.is.empty() - - let servers = [ - multiaddr('/ip4/127.0.0.1/tcp/0') - ] - - if (isBrowser) { - servers = [ - multiaddr('/ip4/127.0.0.1/tcp/14579/wss/p2p-webrtc-star') - ] - } - - await node.libp2p.transportManager.listen(servers) await expect(node.id()).to.eventually.have.property('addresses').that.is.not.empty() }) }) diff --git a/packages/ipfs/test/core/libp2p.spec.js b/packages/ipfs/test/core/libp2p.spec.js index eb36b1f07a..dca715d01e 100644 --- a/packages/ipfs/test/core/libp2p.spec.js +++ b/packages/ipfs/test/core/libp2p.spec.js @@ -3,7 +3,7 @@ const { expect } = require('interface-ipfs-core/src/utils/mocha') const MemoryStore = require('interface-datastore').MemoryDatastore -const PeerInfo = require('peer-info') +const PeerId = require('peer-id') const Libp2p = require('libp2p') const EE = require('events') const libp2pComponent = require('../../src/core/components/libp2p') @@ -37,7 +37,7 @@ describe('libp2p customization', function () { this.timeout(25 * 1000) let datastore - let peerInfo + let peerId let testConfig let libp2p @@ -60,7 +60,7 @@ describe('libp2p customization', function () { } } datastore = new MemoryStore() - peerInfo = await PeerInfo.create() + peerId = await PeerId.create() }) afterEach(async () => { @@ -76,13 +76,13 @@ describe('libp2p customization', function () { options: { libp2p: (opts) => { return new Libp2p({ - peerInfo: opts.peerInfo, + peerId: opts.peerId, modules: { transport: [DummyTransport] }, config: { relay: { enabled: false } } }) } }, - peerInfo, + peerId, repo: { datastore }, print: console.log, // eslint-disable-line no-console config: testConfig @@ -100,13 +100,13 @@ describe('libp2p customization', function () { options: { libp2p: (opts) => { return new Libp2p({ - peerInfo: opts.peerInfo, + peerId: opts.peerId, modules: { transport: [DummyTransport] }, config: { relay: { enabled: false } } }) } }, - peerInfo, + peerId, repo: { datastore }, print: console.log, // eslint-disable-line no-console config: testConfig @@ -123,7 +123,7 @@ describe('libp2p customization', function () { describe('options', () => { it('should use options by default', async () => { libp2p = libp2pComponent({ - peerInfo, + peerId, repo: { datastore }, print: console.log, // eslint-disable-line no-console config: testConfig @@ -161,7 +161,7 @@ describe('libp2p customization', function () { it('should allow for overriding via options', async () => { libp2p = libp2pComponent({ - peerInfo, + peerId, repo: { datastore }, print: console.log, // eslint-disable-line no-console config: testConfig, @@ -191,7 +191,7 @@ describe('libp2p customization', function () { describe('config', () => { it('should select gossipsub as pubsub router', async () => { libp2p = libp2pComponent({ - peerInfo, + peerId, repo: { datastore }, print: console.log, // eslint-disable-line no-console config: { diff --git a/packages/ipfs/test/core/name.spec.js b/packages/ipfs/test/core/name.spec.js index 99bacdd811..993fd868ba 100644 --- a/packages/ipfs/test/core/name.spec.js +++ b/packages/ipfs/test/core/name.spec.js @@ -9,7 +9,6 @@ const { Key } = require('interface-datastore') const last = require('it-last') const PeerId = require('peer-id') const errCode = require('err-code') -const PeerInfo = require('peer-info') const getIpnsRoutingConfig = require('../../src/core/ipns/routing/config') const IpnsPublisher = require('../../src/core/ipns/publisher') const IpnsRepublisher = require('../../src/core/ipns/republisher') @@ -256,7 +255,7 @@ describe('name', function () { const config = getIpnsRoutingConfig({ libp2p: sinon.stub(), repo: sinon.stub(), - peerInfo: sinon.stub(), + peerId: sinon.stub(), options: {} }) @@ -268,7 +267,7 @@ describe('name', function () { const config = getIpnsRoutingConfig({ libp2p: sinon.stub(), repo: sinon.stub(), - peerInfo: sinon.stub(), + peerId: sinon.stub(), options: { offline: true } @@ -284,7 +283,7 @@ describe('name', function () { const config = getIpnsRoutingConfig({ libp2p: { pubsub: sinon.stub() }, repo: { datastore: sinon.stub() }, - peerInfo: new PeerInfo(peerId), + peerId, options: { EXPERIMENTAL: { ipnsPubsub: true @@ -303,7 +302,7 @@ describe('name', function () { const config = getIpnsRoutingConfig({ libp2p: { _dht: dht }, repo: sinon.stub(), - peerInfo: sinon.stub(), + peerId: sinon.stub(), options: { libp2p: { config: { From e5cea9a9a044e61f5f06b98b4f9caebbd4448a17 Mon Sep 17 00:00:00 2001 From: Vasco Santos Date: Thu, 4 Jun 2020 15:33:11 +0200 Subject: [PATCH 2/7] fix: interface-ipfs-core test should not use internal js api --- packages/interface-ipfs-core/src/bitswap/wantlist.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/interface-ipfs-core/src/bitswap/wantlist.js b/packages/interface-ipfs-core/src/bitswap/wantlist.js index f7f89a3460..d35deb6948 100644 --- a/packages/interface-ipfs-core/src/bitswap/wantlist.js +++ b/packages/interface-ipfs-core/src/bitswap/wantlist.js @@ -32,11 +32,7 @@ module.exports = (common, options) => { // Add key to the wantlist for ipfsB ipfsB.block.get(key).catch(() => { /* is ok, expected on teardown */ }) - // Add peers to addressBook - ipfsA.libp2p.peerStore.addressBook.set(ipfsB.libp2p.peerId, ipfsB.libp2p.multiaddrs) - ipfsB.libp2p.peerStore.addressBook.set(ipfsA.libp2p.peerId, ipfsA.libp2p.multiaddrs) - - await ipfsA.swarm.connect(ipfsB.libp2p.peerId) + await ipfsA.swarm.connect(ipfsB.peerId.addresses[0]) }) after(() => common.clean()) From eed74e0382f325cdcf6f6f9084a314212e2d2b3c Mon Sep 17 00:00:00 2001 From: Vasco Santos Date: Thu, 4 Jun 2020 17:24:59 +0200 Subject: [PATCH 3/7] chore: add delegated routing modules to nohoist --- lerna.json | 4 +++- packages/ipfs/test/core/id.spec.js | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lerna.json b/lerna.json index 85193ec2d8..70e40a7942 100644 --- a/lerna.json +++ b/lerna.json @@ -10,7 +10,9 @@ "hoist": true, "nohoist": [ "ipfs-css", - "tachyons" + "tachyons", + "libp2p-delegated-content-routing", + "libp2p-delegated-peer-routing" ] }, "run": { diff --git a/packages/ipfs/test/core/id.spec.js b/packages/ipfs/test/core/id.spec.js index d35889c6c7..5793e679e1 100644 --- a/packages/ipfs/test/core/id.spec.js +++ b/packages/ipfs/test/core/id.spec.js @@ -8,6 +8,7 @@ const factory = require('../utils/factory') describe('id', function () { this.timeout(60 * 1000) + const df = factory() let node @@ -20,6 +21,8 @@ describe('id', function () { servers = [ multiaddr('/ip4/127.0.0.1/tcp/14579/wss/p2p-webrtc-star') ] + } else if (isWebWorker) { // webworker does not support webrtc + servers = [] } node = (await df.spawn({ From ac1018bef1eab4b0ed608caa1dc87c0e686766cd Mon Sep 17 00:00:00 2001 From: Vasco Santos Date: Thu, 4 Jun 2020 20:39:59 +0200 Subject: [PATCH 4/7] chore: update examples --- examples/custom-libp2p/index.js | 16 +++++++--------- examples/custom-libp2p/package.json | 13 ++++++------- examples/custom-libp2p/test.js | 15 ++++++--------- packages/ipfs/package.json | 1 - 4 files changed, 19 insertions(+), 26 deletions(-) diff --git a/examples/custom-libp2p/index.js b/examples/custom-libp2p/index.js index 5c57e5a605..0d144db1f9 100644 --- a/examples/custom-libp2p/index.js +++ b/examples/custom-libp2p/index.js @@ -5,7 +5,6 @@ const IPFS = require('ipfs') const TCP = require('libp2p-tcp') const MulticastDNS = require('libp2p-mdns') const Bootstrap = require('libp2p-bootstrap') -const SPDY = require('libp2p-spdy') const KadDHT = require('libp2p-kad-dht') const MPLEX = require('libp2p-mplex') const SECIO = require('libp2p-secio') @@ -13,8 +12,7 @@ const SECIO = require('libp2p-secio') /** * Options for the libp2p bundle * @typedef {Object} libp2pBundle~options - * @property {PeerInfo} peerInfo - The PeerInfo of the IPFS node - * @property {PeerBook} peerBook - The PeerBook of the IPFS node + * @property {PeerId} peerId - The PeerId of the IPFS node * @property {Object} config - The config of the IPFS node * @property {Object} options - The options given to the IPFS node */ @@ -27,15 +25,16 @@ const SECIO = require('libp2p-secio') */ const libp2pBundle = (opts) => { // Set convenience variables to clearly showcase some of the useful things that are available - const peerInfo = opts.peerInfo - const peerBook = opts.peerBook + const peerId = opts.peerId const bootstrapList = opts.config.Bootstrap // Build and return our libp2p node // n.b. for full configuration options, see https://github.com/libp2p/js-libp2p/blob/master/doc/CONFIGURATION.md return new Libp2p({ - peerInfo, - peerBook, + peerId, + addresses: { + listen: ['/ip4/127.0.0.1/tcp/0'] + }, // Lets limit the connection managers peers and have it check peer health less frequently connectionManager: { minPeers: 25, @@ -47,8 +46,7 @@ const libp2pBundle = (opts) => { TCP ], streamMuxer: [ - MPLEX, - SPDY + MPLEX ], connEncryption: [ SECIO diff --git a/examples/custom-libp2p/package.json b/examples/custom-libp2p/package.json index f820dca311..303c59b86a 100644 --- a/examples/custom-libp2p/package.json +++ b/examples/custom-libp2p/package.json @@ -11,13 +11,12 @@ "license": "MIT", "dependencies": { "ipfs": "^0.46.0", - "libp2p": "^0.27.7", - "libp2p-bootstrap": "^0.10.3", - "libp2p-kad-dht": "^0.18.7", - "libp2p-mdns": "^0.13.1", - "libp2p-mplex": "^0.9.3", - "libp2p-secio": "^0.12.2", - "libp2p-spdy": "^0.13.3", + "libp2p": "^0.28.0", + "libp2p-bootstrap": "^0.11.0", + "libp2p-kad-dht": "^0.19.1", + "libp2p-mdns": "^0.14.1", + "libp2p-mplex": "^0.9.5", + "libp2p-secio": "^0.12.4", "libp2p-tcp": "^0.14.5" }, "devDependencies": { diff --git a/examples/custom-libp2p/test.js b/examples/custom-libp2p/test.js index 3240104e38..d4d80ffc6a 100644 --- a/examples/custom-libp2p/test.js +++ b/examples/custom-libp2p/test.js @@ -4,12 +4,9 @@ const path = require('path') const execa = require('execa') const Libp2p = require('libp2p') const TCP = require('libp2p-tcp') -const SPDY = require('libp2p-spdy') const MPLEX = require('libp2p-mplex') const SECIO = require('libp2p-secio') -const PeerInfo = require('peer-info') const PeerId = require('peer-id') -const multiaddr = require('multiaddr') async function test () { let output = '' @@ -29,18 +26,18 @@ async function test () { console.info('Dialling', address) - const peerInfo = new PeerInfo(await PeerId.create()) - peerInfo.multiaddrs.add(multiaddr('/ip4/127.0.0.1/tcp/0')) - + const peerId = await PeerId.create() const libp2p = new Libp2p({ - peerInfo, + peerId, + addresses: { + listen: ['/ip4/127.0.0.1/tcp/0'] + }, modules: { transport: [ TCP ], streamMuxer: [ - MPLEX, - SPDY + MPLEX ], connEncryption: [ SECIO diff --git a/packages/ipfs/package.json b/packages/ipfs/package.json index 7bd9c08bb5..27cc3feb38 100644 --- a/packages/ipfs/package.json +++ b/packages/ipfs/package.json @@ -136,7 +136,6 @@ "libp2p-floodsub": "^0.21.0", "libp2p-gossipsub": "^0.4.0", "libp2p-kad-dht": "^0.19.1", - "libp2p-keychain": "^0.6.0", "libp2p-mdns": "^0.14.1", "libp2p-mplex": "^0.9.3", "libp2p-record": "^0.7.3", From d9305b874c657d5f92ae48594f0fc51512df36d4 Mon Sep 17 00:00:00 2001 From: Vasco Santos Date: Fri, 5 Jun 2020 00:33:02 +0200 Subject: [PATCH 5/7] chore: use dht fix branch --- examples/custom-libp2p/package.json | 2 +- packages/ipfs/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/custom-libp2p/package.json b/examples/custom-libp2p/package.json index 303c59b86a..90a8b1ed10 100644 --- a/examples/custom-libp2p/package.json +++ b/examples/custom-libp2p/package.json @@ -13,7 +13,7 @@ "ipfs": "^0.46.0", "libp2p": "^0.28.0", "libp2p-bootstrap": "^0.11.0", - "libp2p-kad-dht": "^0.19.1", + "libp2p-kad-dht": "libp2p/js-libp2p-kad-dht#fix/providers-leaking-resources-on-dht-construction", "libp2p-mdns": "^0.14.1", "libp2p-mplex": "^0.9.5", "libp2p-secio": "^0.12.4", diff --git a/packages/ipfs/package.json b/packages/ipfs/package.json index 27cc3feb38..1439d2e176 100644 --- a/packages/ipfs/package.json +++ b/packages/ipfs/package.json @@ -135,7 +135,7 @@ "libp2p-delegated-peer-routing": "^0.5.0", "libp2p-floodsub": "^0.21.0", "libp2p-gossipsub": "^0.4.0", - "libp2p-kad-dht": "^0.19.1", + "libp2p-kad-dht": "libp2p/js-libp2p-kad-dht#fix/providers-leaking-resources-on-dht-construction", "libp2p-mdns": "^0.14.1", "libp2p-mplex": "^0.9.3", "libp2p-record": "^0.7.3", From 9cdbd729df718e38a9cb950134bfffac2955a472 Mon Sep 17 00:00:00 2001 From: Vasco Santos Date: Fri, 5 Jun 2020 15:46:07 +0200 Subject: [PATCH 6/7] chore: use releases for dht and libp2p --- examples/custom-libp2p/package.json | 2 +- packages/ipfs/package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/custom-libp2p/package.json b/examples/custom-libp2p/package.json index 90a8b1ed10..6b1467ce12 100644 --- a/examples/custom-libp2p/package.json +++ b/examples/custom-libp2p/package.json @@ -13,7 +13,7 @@ "ipfs": "^0.46.0", "libp2p": "^0.28.0", "libp2p-bootstrap": "^0.11.0", - "libp2p-kad-dht": "libp2p/js-libp2p-kad-dht#fix/providers-leaking-resources-on-dht-construction", + "libp2p-kad-dht": "^0.19.5", "libp2p-mdns": "^0.14.1", "libp2p-mplex": "^0.9.5", "libp2p-secio": "^0.12.4", diff --git a/packages/ipfs/package.json b/packages/ipfs/package.json index 1439d2e176..2c12a43846 100644 --- a/packages/ipfs/package.json +++ b/packages/ipfs/package.json @@ -128,14 +128,14 @@ "iterable-ndjson": "^1.1.0", "jsondiffpatch": "^0.4.1", "just-safe-set": "^2.1.0", - "libp2p": "^0.28.0-rc.0", + "libp2p": "^0.28.0", "libp2p-bootstrap": "^0.11.0", "libp2p-crypto": "^0.17.6", "libp2p-delegated-content-routing": "^0.5.0", "libp2p-delegated-peer-routing": "^0.5.0", "libp2p-floodsub": "^0.21.0", "libp2p-gossipsub": "^0.4.0", - "libp2p-kad-dht": "libp2p/js-libp2p-kad-dht#fix/providers-leaking-resources-on-dht-construction", + "libp2p-kad-dht": "^0.19.5", "libp2p-mdns": "^0.14.1", "libp2p-mplex": "^0.9.3", "libp2p-record": "^0.7.3", From d8796a885802ae534a0c86f6e4fcef7066692893 Mon Sep 17 00:00:00 2001 From: Vasco Santos Date: Fri, 5 Jun 2020 18:04:48 +0200 Subject: [PATCH 7/7] chore: update bitswap --- packages/ipfs/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ipfs/package.json b/packages/ipfs/package.json index 2c12a43846..8e25a7ca97 100644 --- a/packages/ipfs/package.json +++ b/packages/ipfs/package.json @@ -92,7 +92,7 @@ "hapi-pino": "^6.1.0", "hashlru": "^2.3.0", "interface-datastore": "^1.0.2", - "ipfs-bitswap": "ipfs/js-ipfs-bitswap#chore/use-libp2p-0.28", + "ipfs-bitswap": "^2.0.0", "ipfs-block-service": "^0.17.1", "ipfs-core-utils": "^0.2.3", "ipfs-http-client": "^44.2.0",