Skip to content

Commit 0656a22

Browse files
committed
chore: remove peer-info usage
1 parent dc0e8bf commit 0656a22

10 files changed

+64
-99
lines changed

package.json

+5-6
Original file line numberDiff line numberDiff line change
@@ -56,19 +56,18 @@
5656
"it-length-prefixed": "^3.0.0",
5757
"it-pipe": "^1.1.0",
5858
"it-pushable": "^1.4.0",
59-
"libp2p": "libp2p/js-libp2p#chore/deprecate-old-peer-store-api",
60-
"libp2p-bootstrap": "^0.10.3",
61-
"libp2p-floodsub": "^0.20.0",
62-
"libp2p-gossipsub": "^0.2.1",
63-
"libp2p-kad-dht": "^0.19.0-pre.0",
59+
"libp2p": "libp2p/js-libp2p#0.28.x",
60+
"libp2p-bootstrap": "^0.11.0",
61+
"libp2p-floodsub": "^0.21.0",
62+
"libp2p-gossipsub": "^0.4.0",
63+
"libp2p-kad-dht": "^0.19.1",
6464
"libp2p-mplex": "^0.9.3",
6565
"libp2p-noise": "^1.0.0",
6666
"libp2p-secio": "^0.12.2",
6767
"libp2p-tcp": "^0.14.3",
6868
"libp2p-websockets": "^0.13.2",
6969
"multiaddr": "^7.1.0",
7070
"peer-id": "^0.13.3",
71-
"peer-info": "^0.17.1",
7271
"promisify-es6": "^1.0.3",
7372
"protons": "^1.1.0",
7473
"stream-to-it": "^0.2.0",

src/daemon.js

+20-23
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
const TCP = require('libp2p-tcp')
66
const Libp2p = require('./libp2p')
7-
const PeerInfo = require('peer-info')
87
const PeerId = require('peer-id')
98
const ma = require('multiaddr')
109
const CID = require('cids')
@@ -58,15 +57,11 @@ class Daemon {
5857
*/
5958
connect (connectRequest) {
6059
const peer = connectRequest.connect.peer
61-
const addrs = connectRequest.connect.addrs
62-
const peerInfo = new PeerInfo(
63-
PeerId.createFromBytes(peer)
64-
)
65-
addrs.forEach((a) => {
66-
peerInfo.multiaddrs.add(ma(a))
67-
})
60+
const addrs = connectRequest.connect.addrs.map((a) => ma(a))
61+
const peerId = PeerId.createFromBytes(peer)
6862

69-
return this.libp2p.dial(peerInfo)
63+
this.libp2p.peerStore.addressBook.set(peerId, addrs)
64+
return this.libp2p.dial(peerId)
7065
}
7166

7267
/**
@@ -85,16 +80,14 @@ class Daemon {
8580
async openStream (request) {
8681
const { peer, proto } = request.streamOpen
8782

88-
const peerInfo = new PeerInfo(
89-
PeerId.createFromB58String(peer.toString())
90-
)
83+
const peerId = PeerId.createFromB58String(peer.toString())
9184

92-
const connection = this.libp2p.registrar.getConnection(peerInfo)
85+
const connection = this.libp2p.connectionManager.get(peerId)
9386
const { stream, protocol } = await connection.newStream(proto)
9487

9588
return {
9689
streamInfo: {
97-
peer: peerInfo.id.toBytes(),
90+
peer: peerId.toBytes(),
9891
addr: connection.remoteAddr.buffer,
9992
proto: protocol
10093
},
@@ -195,8 +188,8 @@ class Daemon {
195188
[PeerstoreRequest.Type.GET_PROTOCOLS]: function * (daemon) {
196189
try {
197190
const peerId = PeerId.createFromBytes(peerStore.id)
198-
const peerInfo = daemon.libp2p.peerStore.get(peerId)
199-
const protos = Array.from(peerInfo.protocols)
191+
const peer = daemon.libp2p.peerStore.get(peerId)
192+
const protos = peer.protocols
200193
yield OkResponse({ peerStore: { protos } })
201194
} catch (err) {
202195
throw new Error('ERR_INVALID_PEERSTORE_REQUEST')
@@ -277,12 +270,13 @@ class Daemon {
277270
const peerId = PeerId.createFromBytes(dht.peer)
278271
try {
279272
const peer = await daemon.libp2p.peerRouting.findPeer(peerId)
273+
280274
yield OkResponse({
281275
dht: {
282276
type: DHTResponse.Type.VALUE,
283277
peer: {
284278
id: peer.id.toBytes(),
285-
addrs: peer.multiaddrInfos.map(mi => mi.multiaddr.buffer)
279+
addrs: peer.multiaddrs.map(m => m.buffer)
286280
}
287281
}
288282
})
@@ -311,7 +305,7 @@ class Daemon {
311305
type: DHTResponse.Type.VALUE,
312306
peer: {
313307
id: provider.id.toBytes(),
314-
addrs: provider.multiaddrInfos.map(mi => mi.multiaddr.buffer)
308+
addrs: (provider.multiaddrs || []).map(m => m.buffer)
315309
}
316310
})
317311
}
@@ -430,18 +424,21 @@ class Daemon {
430424
case Request.Type.IDENTIFY: {
431425
yield OkResponse({
432426
identify: {
433-
id: daemon.libp2p.peerInfo.id.toBytes(),
434-
addrs: daemon.libp2p.peerInfo.multiaddrs.toArray().map(m => m.buffer)
427+
id: daemon.libp2p.peerId.toBytes(),
428+
addrs: daemon.libp2p.multiaddrs.map(m => m.buffer)
435429
}
436430
})
437431
break
438432
}
439433
// Get a list of our current peers
440434
case Request.Type.LIST_PEERS: {
441-
const peers = Array.from(daemon.libp2p.peerStore.peers.values()).map((pi) => {
442-
const addr = pi.isConnected()
435+
const peers = Array.from(daemon.libp2p.peerStore.peers.values()).map((peer) => {
436+
// TODO: conn mgr
437+
const conn = daemon.libp2p.registrar.getConnection(peer.id)
438+
const addr = conn.remoteAddr
439+
443440
return {
444-
id: pi.id.toBytes(),
441+
id: peer.id.toBytes(),
445442
addrs: [addr ? addr.buffer : null]
446443
}
447444
})

src/libp2p.js

+12-42
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,18 @@ const { NOISE } = require('libp2p-noise')
1010
const KadDHT = require('libp2p-kad-dht')
1111
const FloodSub = require('libp2p-floodsub')
1212
const GossipSub = require('libp2p-gossipsub')
13-
const PeerInfo = require('peer-info')
1413
const PeerID = require('peer-id')
1514
const multiaddr = require('multiaddr')
1615
const fsPromises = require('fs').promises
1716

1817
/**
19-
* Creates a PeerInfo from scratch, or via the supplied private key
18+
* Creates a Peerid from scratch, or via the supplied private key
2019
* @param {string} privateKeyPath Path to private key
21-
* @returns {Promise<PeerInfo>} Resolves the created PeerInfo
20+
* @returns {Promise<Peerid>} Resolves the created Peerid
2221
*/
23-
const getPeerInfo = async (privateKeyPath) => {
22+
const getPeerId = async (privateKeyPath) => {
2423
if (!privateKeyPath) {
25-
return PeerInfo.create()
24+
return PeerID.create()
2625
}
2726

2827
const pkFile = await fsPromises.open(privateKeyPath, 'r')
@@ -32,33 +31,7 @@ const getPeerInfo = async (privateKeyPath) => {
3231
} finally {
3332
pkFile.close()
3433
}
35-
const peerId = await PeerID.createFromPrivKey(buf)
36-
37-
return new PeerInfo(peerId)
38-
}
39-
40-
class DaemonLibp2p extends Libp2p {
41-
constructor (libp2pOpts, { announceAddrs }) {
42-
super(libp2pOpts)
43-
this.announceAddrs = announceAddrs
44-
this.needsPullStream = libp2pOpts.config.pubsub.enabled
45-
}
46-
47-
/**
48-
* Starts the libp2p node
49-
* @override
50-
* @returns {Promise<void>}
51-
*/
52-
async start () {
53-
await super.start()
54-
// replace with announce addrs until libp2p supports this directly
55-
if (this.announceAddrs.length > 0) {
56-
this.peerInfo.multiaddrs.clear()
57-
this.announceAddrs.forEach(addr => {
58-
this.peerInfo.multiaddrs.add(addr)
59-
})
60-
}
61-
}
34+
return PeerID.createFromPrivKey(buf)
6235
}
6336

6437
/**
@@ -90,22 +63,23 @@ const createLibp2p = async ({
9063
pubsub,
9164
pubsubRouter
9265
} = {}) => {
93-
const peerInfo = await getPeerInfo(id)
66+
const peerId = await getPeerId(id)
9467
const bootstrapList = bootstrapPeers ? bootstrapPeers.split(',').filter(s => s !== '') : null
9568
const listenAddrs = hostAddrs ? hostAddrs.split(',').filter(s => s !== '') : ['/ip4/0.0.0.0/tcp/0']
9669

9770
announceAddrs = announceAddrs ? announceAddrs.split(',').filter(s => s !== '') : []
9871
announceAddrs = announceAddrs.map(addr => multiaddr(addr))
9972

100-
listenAddrs.forEach(addr => {
101-
peerInfo.multiaddrs.add(multiaddr(addr))
102-
})
10373
const connEncryption = []
10474
if (secio !== false) connEncryption.push(SECIO)
10575
if (noise) connEncryption.push(NOISE)
10676

107-
const libp2p = new DaemonLibp2p({
108-
peerInfo,
77+
const libp2p = Libp2p.create({
78+
peerId,
79+
addresses: {
80+
listen: listenAddrs,
81+
announce: announceAddrs
82+
},
10983
connectionManager: {
11084
maxPeers: connMgrHi,
11185
minPeers: connMgrLo
@@ -148,10 +122,6 @@ const createLibp2p = async ({
148122
enabled: Boolean(pubsub)
149123
}
150124
}
151-
}, {
152-
// using a secondary config until https://github.com/libp2p/js-libp2p/issues/202
153-
// is completed
154-
announceAddrs
155125
})
156126

157127
return libp2p

test/daemon/config.spec.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ describe('configuration', function () {
4141

4242
await daemon.start()
4343

44-
const addrs = daemon.libp2p.peerInfo.multiaddrs.toArray()
44+
const addrs = Array.from(daemon.libp2p.addressManager.announce)
4545
expect(addrs).to.eql([
4646
ma('/dns/ipfs.io')
4747
])
@@ -64,7 +64,7 @@ describe('configuration', function () {
6464
})
6565
await daemon.start()
6666

67-
const peerId = daemon.libp2p.peerInfo.id
67+
const peerId = daemon.libp2p.peerId
6868
expect(peerId.toB58String()).to.eql('QmPFdSzvgd1HbZSd6oX2N2vCSnhSEeocbQZsMB42UG8smE')
6969
})
7070

@@ -85,7 +85,7 @@ describe('configuration', function () {
8585
})
8686
await daemon.start()
8787

88-
const peerId = daemon.libp2p.peerInfo.id
88+
const peerId = daemon.libp2p.peerId
8989
expect(peerId.toB58String()).to.eql('16Uiu2HAm7txvwZbeK5g3oB3DrRhnARTEjTNorVreWJomfHJHbEu2')
9090
})
9191
})

test/daemon/core.spec.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ describe('core features', () => {
8282
const request = {
8383
type: Request.Type.CONNECT,
8484
connect: {
85-
peer: Buffer.from(libp2pPeer.peerInfo.id.toBytes()),
86-
addrs: libp2pPeer.peerInfo.multiaddrs.toArray().map(addr => addr.buffer)
85+
peer: Buffer.from(libp2pPeer.peerId.toBytes()),
86+
addrs: libp2pPeer.multiaddrs.map(addr => addr.buffer)
8787
},
8888
streamOpen: null,
8989
streamHandler: null,
@@ -150,8 +150,8 @@ describe('core features', () => {
150150
expect(response.type).to.eql(Response.Type.OK)
151151

152152
expect(response.identify).to.eql({
153-
id: daemon.libp2p.peerInfo.id.toBytes(),
154-
addrs: daemon.libp2p.peerInfo.multiaddrs.toArray().map(m => m.buffer)
153+
id: daemon.libp2p.peerId.toBytes(),
154+
addrs: daemon.libp2p.multiaddrs.map(m => m.buffer)
155155
})
156156
streamHandler.close()
157157
})

test/daemon/dht.spec.js

+9-9
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ describe('dht', () => {
9797
streamHandler: null,
9898
dht: {
9999
type: DHTRequest.Type.FIND_PEER,
100-
peer: libp2pPeer.peerInfo.id.toBytes()
100+
peer: libp2pPeer.peerId.toBytes()
101101
},
102102
disconnect: null,
103103
pubsub: null,
@@ -111,8 +111,8 @@ describe('dht', () => {
111111
expect(response.dht).to.eql({
112112
type: DHTResponse.Type.VALUE,
113113
peer: {
114-
id: libp2pPeer.peerInfo.id.toBytes(),
115-
addrs: libp2pPeer.peerInfo.multiaddrs.toArray().map(m => m.buffer)
114+
id: libp2pPeer.peerId.toBytes(),
115+
addrs: libp2pPeer.multiaddrs.map(m => m.buffer)
116116
},
117117
value: null
118118
})
@@ -178,7 +178,7 @@ describe('dht', () => {
178178
for await (const provider of libp2pPeer.contentRouting.findProviders(cid, { maxNumProviders: 1 })) {
179179
providers.push(provider)
180180
}
181-
expect(daemon.libp2p.peerInfo.id.isEqual(providers[0].id)).to.eql(true)
181+
expect(daemon.libp2p.peerId.isEqual(providers[0].id)).to.eql(true)
182182
})
183183

184184
it('should be able to find providers', async () => {
@@ -223,8 +223,8 @@ describe('dht', () => {
223223
const response = DHTResponse.decode(message)
224224
expect(response.type).to.eql(DHTResponse.Type.VALUE)
225225
expect(response.peer).to.eql({
226-
id: libp2pPeer.peerInfo.id.toBytes(),
227-
addrs: libp2pPeer.peerInfo.multiaddrs.toArray().map(m => m.buffer)
226+
id: libp2pPeer.peerId.toBytes(),
227+
addrs: libp2pPeer.multiaddrs.map(m => m.buffer)
228228
})
229229
},
230230
(message) => {
@@ -319,7 +319,7 @@ describe('dht', () => {
319319
(message) => {
320320
const response = DHTResponse.decode(message)
321321
expect(response.type).to.eql(DHTResponse.Type.VALUE)
322-
expect(response.value.toString()).to.eql(libp2pPeer.peerInfo.id.toB58String())
322+
expect(response.value.toString()).to.eql(libp2pPeer.peerId.toB58String())
323323
},
324324
(message) => {
325325
const response = DHTResponse.decode(message)
@@ -348,7 +348,7 @@ describe('dht', () => {
348348
streamHandler: null,
349349
dht: {
350350
type: DHTRequest.Type.GET_PUBLIC_KEY,
351-
peer: libp2pPeer.peerInfo.id.toBytes()
351+
peer: libp2pPeer.peerId.toBytes()
352352
},
353353
disconnect: null,
354354
pubsub: null,
@@ -362,7 +362,7 @@ describe('dht', () => {
362362
expect(response.dht).to.eql({
363363
type: DHTResponse.Type.VALUE,
364364
peer: null,
365-
value: libp2pPeer.peerInfo.id.pubKey.bytes
365+
value: libp2pPeer.peerId.pubKey.bytes
366366
})
367367
streamHandler.close()
368368
})

test/daemon/peerstore.spec.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ describe('peerstore features', () => {
8989
type: Request.Type.PEERSTORE,
9090
peerStore: {
9191
type: PeerstoreRequest.Type.GET_PROTOCOLS,
92-
id: Buffer.from(libp2pPeer.peerInfo.id.toBytes())
92+
id: Buffer.from(libp2pPeer.peerId.toBytes())
9393
}
9494
}
9595

@@ -121,7 +121,7 @@ describe('peerstore features', () => {
121121
type: Request.Type.PEERSTORE,
122122
peerStore: {
123123
type: PeerstoreRequest.Type.GET_PEER_INFO,
124-
id: Buffer.from(libp2pPeer.peerInfo.id.toBytes())
124+
id: Buffer.from(libp2pPeer.peerId.toBytes())
125125
}
126126
}
127127

test/daemon/pubsub.spec.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ const testPubsub = (router) => {
282282
},
283283
(message) => {
284284
const response = PSMessage.decode(message)
285-
expect(response.from.toString()).to.eql(libp2pPeer.peerInfo.id.toB58String())
285+
expect(response.from.toString()).to.eql(libp2pPeer.peerId.toB58String())
286286
expect(response.data).to.exist()
287287
expect(response.data).to.equalBytes(data)
288288
expect(response.topicIDs).to.eql([topic])

0 commit comments

Comments
 (0)