From 190ad54f9ec4c6de4ae0670508d0b32cca9b7ad8 Mon Sep 17 00:00:00 2001 From: David Dias Date: Mon, 18 Dec 2017 10:23:34 +0000 Subject: [PATCH] PDD Compliance Tests (#137) * transport story 1 done * c * transport series 2 * transports story 3 * the ipfs-bundle story 1 --- pdd/README.md | 3 + pdd/package.json | 20 ++++ pdd/pdd-the-ipfs-bundle--story-1--peer-a.js | 104 ++++++++++++++++++++ pdd/pdd-the-ipfs-bundle--story-1--peer-b.js | 98 ++++++++++++++++++ pdd/pdd-the-ipfs-bundle--story-2--peer-a.js | 0 pdd/pdd-the-ipfs-bundle--story-2--peer-b.js | 0 pdd/pdd-the-ipfs-bundle--story-3--peer-a.js | 0 pdd/pdd-the-ipfs-bundle--story-3--peer-b.js | 0 pdd/pdd-the-ipfs-bundle--story-3--peer-c.js | 0 pdd/pdd-the-ipfs-bundle--story-4--peer-a.js | 0 pdd/pdd-the-ipfs-bundle--story-4--peer-b.js | 0 pdd/pdd-the-ipfs-bundle--story-4--peer-c.js | 0 pdd/pdd-the-ipfs-bundle--story-4--peer-d.js | 0 pdd/pdd-the-ipfs-bundle--story-4--peer-e.js | 0 pdd/pdd-the-ipfs-bundle--story-5--peer-a.js | 0 pdd/pdd-the-ipfs-bundle--story-5--peer-b.js | 0 pdd/pdd-the-ipfs-bundle--story-5--peer-c.js | 0 pdd/pdd-the-ipfs-bundle--story-5--peer-d.js | 0 pdd/pdd-the-ipfs-bundle--story-5--peer-e.js | 0 pdd/pdd-transport--story-1--peer-a.js | 54 ++++++++++ pdd/pdd-transport--story-1--peer-b.js | 49 +++++++++ pdd/pdd-transport--story-2--peer-a.js | 54 ++++++++++ pdd/pdd-transport--story-2--peer-b.js | 49 +++++++++ pdd/pdd-transport--story-3--peer-a.js | 42 ++++++++ pdd/pdd-transport--story-3--peer-b.js | 42 ++++++++ src/index.js | 10 +- 26 files changed, 522 insertions(+), 3 deletions(-) create mode 100644 pdd/README.md create mode 100644 pdd/package.json create mode 100644 pdd/pdd-the-ipfs-bundle--story-1--peer-a.js create mode 100644 pdd/pdd-the-ipfs-bundle--story-1--peer-b.js create mode 100644 pdd/pdd-the-ipfs-bundle--story-2--peer-a.js create mode 100644 pdd/pdd-the-ipfs-bundle--story-2--peer-b.js create mode 100644 pdd/pdd-the-ipfs-bundle--story-3--peer-a.js create mode 100644 pdd/pdd-the-ipfs-bundle--story-3--peer-b.js create mode 100644 pdd/pdd-the-ipfs-bundle--story-3--peer-c.js create mode 100644 pdd/pdd-the-ipfs-bundle--story-4--peer-a.js create mode 100644 pdd/pdd-the-ipfs-bundle--story-4--peer-b.js create mode 100644 pdd/pdd-the-ipfs-bundle--story-4--peer-c.js create mode 100644 pdd/pdd-the-ipfs-bundle--story-4--peer-d.js create mode 100644 pdd/pdd-the-ipfs-bundle--story-4--peer-e.js create mode 100644 pdd/pdd-the-ipfs-bundle--story-5--peer-a.js create mode 100644 pdd/pdd-the-ipfs-bundle--story-5--peer-b.js create mode 100644 pdd/pdd-the-ipfs-bundle--story-5--peer-c.js create mode 100644 pdd/pdd-the-ipfs-bundle--story-5--peer-d.js create mode 100644 pdd/pdd-the-ipfs-bundle--story-5--peer-e.js create mode 100644 pdd/pdd-transport--story-1--peer-a.js create mode 100644 pdd/pdd-transport--story-1--peer-b.js create mode 100644 pdd/pdd-transport--story-2--peer-a.js create mode 100644 pdd/pdd-transport--story-2--peer-b.js create mode 100644 pdd/pdd-transport--story-3--peer-a.js create mode 100644 pdd/pdd-transport--story-3--peer-b.js diff --git a/pdd/README.md b/pdd/README.md new file mode 100644 index 00000000..6388e7cc --- /dev/null +++ b/pdd/README.md @@ -0,0 +1,3 @@ +# PDD Test Stories Implementation + +> Implementation of the Compliance tests from https://github.com/libp2p/interop diff --git a/pdd/package.json b/pdd/package.json new file mode 100644 index 00000000..252a2983 --- /dev/null +++ b/pdd/package.json @@ -0,0 +1,20 @@ +{ + "name": "pdd-impl", + "version": "0.0.0", + "description": "PDD Test Stories implementation", + "repository": { + "type": "git", + "url": " " + }, + "keywords": [ + "PDD", + "libp2p" + ], + "author": "David Dias ", + "license": "MIT", + "dependencies": { + "libp2p": "file:./..", + "libp2p-interop": "github:libp2p/interop#pdd", + "tape": "^4.8.0" + } +} diff --git a/pdd/pdd-the-ipfs-bundle--story-1--peer-a.js b/pdd/pdd-the-ipfs-bundle--story-1--peer-a.js new file mode 100644 index 00000000..bf5fc4f9 --- /dev/null +++ b/pdd/pdd-the-ipfs-bundle--story-1--peer-a.js @@ -0,0 +1,104 @@ +'use strict' + +const test = require('tape') +const libp2p = require('libp2p') +const TCP = require('libp2p-tcp') +const WebSockets = require('libp2p-websockets') +const SECIO = require('libp2p-secio') +const Multiplex = require('libp2p-multiplex') +const Railing = require('libp2p-railing') +const MulticastDNS = require('libp2p-mdns') +const KadDHT = require('libp2p-kad-dht') +const PeerInfo = require('peer-info') +const pull = require('pull-stream') +const waterfall = require('async/waterfall') +const series = require('async/series') +const PeerA = require('libp2p-interop/peer-a.json') +const PeerB = require('libp2p-interop/peer-b.json') + +class IPFSBundle extends libp2p { + constructor (peerInfo, options) { + options = Object.assign({ bootstrap: [] }, options) + + const modules = { + transport: [ + new TCP(), + new WebSockets() + ], + connection: { + muxer: [ + Multiplex + ], + crypto: [ + SECIO + ] + }, + discovery: [ + new MulticastDNS(peerInfo, 'ipfs.local'), + new Railing(options.bootstrap) + ], + DHT: KadDHT + } + + super(modules, peerInfo, undefined, options) + } +} + +test('story 1 - peerA', (t) => { + t.plan(10) + let node + + waterfall([ + (cb) => PeerInfo.create(PeerA, cb), + (peerInfo, cb) => { + peerInfo.multiaddrs.add('/ip4/127.0.0.1/tcp/10000') + node = new IPFSBundle(peerInfo) + node.start(cb) + } + ], (err) => { + t.ifErr(err, 'created Node successfully') + t.ok(node.isStarted(), 'PeerA is Running') + + const peerBAddr = `/ip4/127.0.0.1/tcp/10001/ipfs/${PeerB.id}` + + node.handle('/time/1.0.0', (protocol, conn) => { + pull( + pull.values([Date.now().toString()]), + conn, + pull.onEnd((err) => { + t.ifErr(err) + t.pass('Sent time successfully') + }) + ) + }) + + series([ + (cb) => setTimeout(cb, 5 * 1000), // time to run both scripts + (cb) => node.ping(peerBAddr, (err, p) => { + t.ifErr(err, 'initiated Ping to PeerB') + p.once('error', (err) => t.ifErr(err, 'Ping should not fail')) + p.once('ping', (time) => { + t.pass('ping PeerB successfully') + p.stop() + cb() + }) + }), + (cb) => node.dial(peerBAddr, '/echo/1.0.0', (err, conn) => { + t.ifErr(err, 'dial successful') + + const data = Buffer.from('Hey') + + pull( + pull.values([data]), + conn, + pull.collect((err, values) => { + t.ifErr(err, 'Received echo back') + t.deepEqual(values[0], data) + cb() + }) + ) + }), + (cb) => setTimeout(cb, 2 * 1000) // time to both finish + ], () => node.stop((err) => t.ifErr(err, 'PeerA has stopped'))) + }) +}) diff --git a/pdd/pdd-the-ipfs-bundle--story-1--peer-b.js b/pdd/pdd-the-ipfs-bundle--story-1--peer-b.js new file mode 100644 index 00000000..6ea801ec --- /dev/null +++ b/pdd/pdd-the-ipfs-bundle--story-1--peer-b.js @@ -0,0 +1,98 @@ +'use strict' + +const test = require('tape') +const libp2p = require('libp2p') +const TCP = require('libp2p-tcp') +const WebSockets = require('libp2p-websockets') +const SECIO = require('libp2p-secio') +const Multiplex = require('libp2p-multiplex') +const Railing = require('libp2p-railing') +const MulticastDNS = require('libp2p-mdns') +const KadDHT = require('libp2p-kad-dht') +const PeerInfo = require('peer-info') +const pull = require('pull-stream') +const waterfall = require('async/waterfall') +const series = require('async/series') +const PeerA = require('libp2p-interop/peer-a.json') +const PeerB = require('libp2p-interop/peer-b.json') + +class IPFSBundle extends libp2p { + constructor (peerInfo, options) { + options = Object.assign({ bootstrap: [] }, options) + + const modules = { + transport: [ + new TCP(), + new WebSockets() + ], + connection: { + muxer: [ + Multiplex + ], + crypto: [ + SECIO + ] + }, + discovery: [ + new MulticastDNS(peerInfo, 'ipfs.local'), + new Railing(options.bootstrap) + ], + DHT: KadDHT + } + + super(modules, peerInfo, undefined, options) + } +} + +test('story 1 - peerA', (t) => { + t.plan(8) + let node + + waterfall([ + (cb) => PeerInfo.create(PeerB, cb), + (peerInfo, cb) => { + peerInfo.multiaddrs.add('/ip4/127.0.0.1/tcp/10001') + node = new IPFSBundle(peerInfo) + node.start(cb) + } + ], (err) => { + t.ifErr(err, 'created Node successfully') + t.ok(node.isStarted(), 'PeerB is Running') + + const peerAAddr = `/ip4/127.0.0.1/tcp/10000/ipfs/${PeerA.id}` + + node.handle('/echo/1.0.0', (protocol, conn) => { + pull( + conn, + conn, + pull.onEnd((err) => t.ifErr(err, 'echo was successful')) + ) + }) + + series([ + (cb) => setTimeout(cb, 5 * 1000), // time to run both scripts + (cb) => node.ping(peerAAddr, (err, p) => { + t.ifErr(err, 'initiated Ping to PeerA') + p.once('error', (err) => t.ifErr(err, 'Ping should not fail')) + p.once('ping', (time) => { + t.pass('ping PeerA successfully') + p.stop() + cb() + }) + }), + (cb) => node.dial(peerAAddr, '/time/1.0.0', (err, conn) => { + t.ifErr(err, 'dial successful') + + pull( + pull.values([]), + conn, + pull.collect((err, values) => { + t.ifErr(err, 'Received time') + cb() + }) + ) + }), + (cb) => setTimeout(cb, 2 * 1000) // time to both finish + ], () => node.stop((err) => t.ifErr(err, 'PeerB has stopped'))) + }) +}) diff --git a/pdd/pdd-the-ipfs-bundle--story-2--peer-a.js b/pdd/pdd-the-ipfs-bundle--story-2--peer-a.js new file mode 100644 index 00000000..e69de29b diff --git a/pdd/pdd-the-ipfs-bundle--story-2--peer-b.js b/pdd/pdd-the-ipfs-bundle--story-2--peer-b.js new file mode 100644 index 00000000..e69de29b diff --git a/pdd/pdd-the-ipfs-bundle--story-3--peer-a.js b/pdd/pdd-the-ipfs-bundle--story-3--peer-a.js new file mode 100644 index 00000000..e69de29b diff --git a/pdd/pdd-the-ipfs-bundle--story-3--peer-b.js b/pdd/pdd-the-ipfs-bundle--story-3--peer-b.js new file mode 100644 index 00000000..e69de29b diff --git a/pdd/pdd-the-ipfs-bundle--story-3--peer-c.js b/pdd/pdd-the-ipfs-bundle--story-3--peer-c.js new file mode 100644 index 00000000..e69de29b diff --git a/pdd/pdd-the-ipfs-bundle--story-4--peer-a.js b/pdd/pdd-the-ipfs-bundle--story-4--peer-a.js new file mode 100644 index 00000000..e69de29b diff --git a/pdd/pdd-the-ipfs-bundle--story-4--peer-b.js b/pdd/pdd-the-ipfs-bundle--story-4--peer-b.js new file mode 100644 index 00000000..e69de29b diff --git a/pdd/pdd-the-ipfs-bundle--story-4--peer-c.js b/pdd/pdd-the-ipfs-bundle--story-4--peer-c.js new file mode 100644 index 00000000..e69de29b diff --git a/pdd/pdd-the-ipfs-bundle--story-4--peer-d.js b/pdd/pdd-the-ipfs-bundle--story-4--peer-d.js new file mode 100644 index 00000000..e69de29b diff --git a/pdd/pdd-the-ipfs-bundle--story-4--peer-e.js b/pdd/pdd-the-ipfs-bundle--story-4--peer-e.js new file mode 100644 index 00000000..e69de29b diff --git a/pdd/pdd-the-ipfs-bundle--story-5--peer-a.js b/pdd/pdd-the-ipfs-bundle--story-5--peer-a.js new file mode 100644 index 00000000..e69de29b diff --git a/pdd/pdd-the-ipfs-bundle--story-5--peer-b.js b/pdd/pdd-the-ipfs-bundle--story-5--peer-b.js new file mode 100644 index 00000000..e69de29b diff --git a/pdd/pdd-the-ipfs-bundle--story-5--peer-c.js b/pdd/pdd-the-ipfs-bundle--story-5--peer-c.js new file mode 100644 index 00000000..e69de29b diff --git a/pdd/pdd-the-ipfs-bundle--story-5--peer-d.js b/pdd/pdd-the-ipfs-bundle--story-5--peer-d.js new file mode 100644 index 00000000..e69de29b diff --git a/pdd/pdd-the-ipfs-bundle--story-5--peer-e.js b/pdd/pdd-the-ipfs-bundle--story-5--peer-e.js new file mode 100644 index 00000000..e69de29b diff --git a/pdd/pdd-transport--story-1--peer-a.js b/pdd/pdd-transport--story-1--peer-a.js new file mode 100644 index 00000000..7bb87d93 --- /dev/null +++ b/pdd/pdd-transport--story-1--peer-a.js @@ -0,0 +1,54 @@ +'use strict' + +const test = require('tape') +const libp2p = require('libp2p') +const TCP = require('libp2p-tcp') +const PeerInfo = require('peer-info') +const waterfall = require('async/waterfall') +const pull = require('pull-stream') +const PeerA = require('libp2p-interop/peer-a.json') +const PeerB = require('libp2p-interop/peer-B.json') + +class MyBundle extends libp2p { + constructor (peerInfo) { + const modules = { + transport: [new TCP()] + } + super(modules, peerInfo) + } +} + +test('story 1 - peerA', (t) => { + t.plan(6) + let node + + waterfall([ + (cb) => PeerInfo.create(PeerA, cb), + (peerInfo, cb) => { + peerInfo.multiaddrs.add('/ip4/127.0.0.1/tcp/10000') + node = new MyBundle(peerInfo) + node.start(cb) + } + ], (err) => { + t.ifErr(err, 'created Node') + t.ok(node.isStarted(), 'PeerA is running') + + const PeerBAddr = `/ip4/127.0.0.1/tcp/10001/ipfs/${PeerB.id}` + + node.dial(PeerBAddr, '/echo/1.0.0', (err, conn) => { + t.ifErr(err, 'dial successful') + + const data = Buffer.from('Heey') + + pull( + pull.values([data]), + conn, + pull.collect((err, values) => { + t.ifErr(err, 'Received echo back') + t.deepEqual(values[0], data) + node.stop((err) => t.ifErr(err, 'PeerA has stopped')) + }) + ) + }) + }) +}) diff --git a/pdd/pdd-transport--story-1--peer-b.js b/pdd/pdd-transport--story-1--peer-b.js new file mode 100644 index 00000000..b51e49ae --- /dev/null +++ b/pdd/pdd-transport--story-1--peer-b.js @@ -0,0 +1,49 @@ +'use strict' + +const test = require('tape') +const libp2p = require('libp2p') +const TCP = require('libp2p-tcp') +const PeerInfo = require('peer-info') +const waterfall = require('async/waterfall') +const pull = require('pull-stream') +const PeerB = require('libp2p-interop/peer-B.json') + +class MyBundle extends libp2p { + constructor (peerInfo) { + const modules = { + transport: [new TCP()] + } + super(modules, peerInfo) + } +} + +test('story 1 - peerB', (t) => { + t.plan(5) + let node + + waterfall([ + (cb) => PeerInfo.create(PeerB, cb), + (peerInfo, cb) => { + peerInfo.multiaddrs.add('/ip4/127.0.0.1/tcp/10001') + node = new MyBundle(peerInfo) + node.start(cb) + } + ], (err) => { + t.ifErr(err) + t.ok(node.isStarted(), 'PeerB is running') + + node.handle('/echo/1.0.0', (protocol, conn) => { + pull( + conn, + conn, + pull.onEnd((err) => { + t.ifErr(err) + t.pass('Received End of Connection') + node.stop((err) => { + t.ifErr(err, 'PeerB has stopped') + }) + }) + ) + }) + }) +}) diff --git a/pdd/pdd-transport--story-2--peer-a.js b/pdd/pdd-transport--story-2--peer-a.js new file mode 100644 index 00000000..8fef07c0 --- /dev/null +++ b/pdd/pdd-transport--story-2--peer-a.js @@ -0,0 +1,54 @@ +'use strict' + +const test = require('tape') +const libp2p = require('libp2p') +const WebSockets = require('libp2p-websockets') +const PeerInfo = require('peer-info') +const waterfall = require('async/waterfall') +const pull = require('pull-stream') +const PeerA = require('libp2p-interop/peer-a.json') +const PeerB = require('libp2p-interop/peer-B.json') + +class MyBundle extends libp2p { + constructor (peerInfo) { + const modules = { + transport: [new WebSockets()] + } + super(modules, peerInfo) + } +} + +test('story 2 - peerA', (t) => { + t.plan(6) + let node + + waterfall([ + (cb) => PeerInfo.create(PeerA, cb), + (peerInfo, cb) => { + peerInfo.multiaddrs.add('/ip4/127.0.0.1/tcp/10000/ws') + node = new MyBundle(peerInfo) + node.start(cb) + } + ], (err) => { + t.ifErr(err, 'created Node') + t.ok(node.isStarted(), 'PeerA is running') + + const PeerBAddr = `/ip4/127.0.0.1/tcp/10001/ws/ipfs/${PeerB.id}` + + node.dial(PeerBAddr, '/echo/1.0.0', (err, conn) => { + t.ifErr(err, 'dial successful') + + const data = Buffer.from('Heey') + + pull( + pull.values([data]), + conn, + pull.collect((err, values) => { + t.ifErr(err, 'Received echo back') + t.deepEqual(values[0], data) + node.stop((err) => t.ifErr(err, 'PeerA has stopped')) + }) + ) + }) + }) +}) diff --git a/pdd/pdd-transport--story-2--peer-b.js b/pdd/pdd-transport--story-2--peer-b.js new file mode 100644 index 00000000..52597e63 --- /dev/null +++ b/pdd/pdd-transport--story-2--peer-b.js @@ -0,0 +1,49 @@ +'use strict' + +const test = require('tape') +const libp2p = require('libp2p') +const WebSockets = require('libp2p-websockets') +const PeerInfo = require('peer-info') +const waterfall = require('async/waterfall') +const pull = require('pull-stream') +const PeerB = require('libp2p-interop/peer-B.json') + +class MyBundle extends libp2p { + constructor (peerInfo) { + const modules = { + transport: [new WebSockets()] + } + super(modules, peerInfo) + } +} + +test('story 2 - peerB', (t) => { + t.plan(5) + let node + + waterfall([ + (cb) => PeerInfo.create(PeerB, cb), + (peerInfo, cb) => { + peerInfo.multiaddrs.add('/ip4/127.0.0.1/tcp/10001/ws') + node = new MyBundle(peerInfo) + node.start(cb) + } + ], (err) => { + t.ifErr(err) + t.ok(node.isStarted(), 'PeerB is running') + + node.handle('/echo/1.0.0', (protocol, conn) => { + pull( + conn, + conn, + pull.onEnd((err) => { + t.ifErr(err) + t.pass('Received End of Connection') + node.stop((err) => { + t.ifErr(err, 'PeerB has stopped') + }) + }) + ) + }) + }) +}) diff --git a/pdd/pdd-transport--story-3--peer-a.js b/pdd/pdd-transport--story-3--peer-a.js new file mode 100644 index 00000000..a9e31538 --- /dev/null +++ b/pdd/pdd-transport--story-3--peer-a.js @@ -0,0 +1,42 @@ +'use strict' + +const test = require('tape') +const libp2p = require('libp2p') +const TCP = require('libp2p-tcp') +const PeerInfo = require('peer-info') +const waterfall = require('async/waterfall') +const PeerA = require('libp2p-interop/peer-a.json') +const PeerB = require('libp2p-interop/peer-b.json') + +class MyBundle extends libp2p { + constructor (peerInfo) { + const modules = { + transport: [new TCP()] + } + super(modules, peerInfo) + } +} + +test('story 3 - peerA', (t) => { + t.plan(4) + let node + + waterfall([ + (cb) => PeerInfo.create(PeerA, cb), + (peerInfo, cb) => { + peerInfo.multiaddrs.add('/ip4/127.0.0.1/tcp/10000') + node = new MyBundle(peerInfo) + node.start(cb) + } + ], (err) => { + t.ifErr(err, 'created Node') + t.ok(node.isStarted(), 'PeerA is running') + + const PeerBAddr = `/ip4/127.0.0.1/tcp/10001/ws/ipfs/${PeerB.id}` + + setTimeout(() => node.dial(PeerBAddr, '/echo/1.0.0', (err, conn) => { + t.ok(err, 'dial failed') + node.stop((err) => t.ifErr(err, 'PeerA has stopped')) + }), 1000) + }) +}) diff --git a/pdd/pdd-transport--story-3--peer-b.js b/pdd/pdd-transport--story-3--peer-b.js new file mode 100644 index 00000000..e64499db --- /dev/null +++ b/pdd/pdd-transport--story-3--peer-b.js @@ -0,0 +1,42 @@ +'use strict' + +const test = require('tape') +const libp2p = require('libp2p') +const WebSockets = require('libp2p-websockets') +const PeerInfo = require('peer-info') +const waterfall = require('async/waterfall') +const PeerA = require('libp2p-interop/peer-a.json') +const PeerB = require('libp2p-interop/peer-b.json') + +class MyBundle extends libp2p { + constructor (peerInfo) { + const modules = { + transport: [new WebSockets()] + } + super(modules, peerInfo) + } +} + +test('story 3 - peerB', (t) => { + t.plan(4) + let node + + waterfall([ + (cb) => PeerInfo.create(PeerB, cb), + (peerInfo, cb) => { + peerInfo.multiaddrs.add('/ip4/127.0.0.1/tcp/10000/ws') + node = new MyBundle(peerInfo) + node.start(cb) + } + ], (err) => { + t.ifErr(err, 'created Node') + t.ok(node.isStarted(), 'PeerA is running') + + const PeerAAddr = `/ip4/127.0.0.1/tcp/10000/ws/ipfs/${PeerA.id}` + + setTimeout(() => node.dial(PeerAAddr, '/echo/1.0.0', (err, conn) => { + t.ok(err, 'dial failed') + node.stop((err) => t.ifErr(err, 'PeerA has stopped')) + }), 1000) + }) +}) diff --git a/src/index.js b/src/index.js index 27b617f5..6195bfb4 100644 --- a/src/index.js +++ b/src/index.js @@ -314,8 +314,11 @@ class Node extends EventEmitter { // PeerInfo if (PeerInfo.isPeerInfo(peer)) { p = peer - // Multiaddr instance (not string) - } else if (multiaddr.isMultiaddr(peer)) { + // Multiaddr instance or Multiaddr String + } else if (multiaddr.isMultiaddr(peer) || typeof peer === 'string') { + if (typeof peer === 'string') { + peer = multiaddr(peer) + } const peerIdB58Str = peer.getPeerId() try { p = this.peerBook.get(peerIdB58Str) @@ -323,7 +326,8 @@ class Node extends EventEmitter { p = new PeerInfo(PeerId.createFromB58String(peerIdB58Str)) } p.multiaddrs.add(peer) - // PeerId + + // PeerId } else if (PeerId.isPeerId(peer)) { const peerIdB58Str = peer.toB58String() try {