Skip to content

Commit 48bd58f

Browse files
committed
chore: remove peer-info usage
1 parent cdde4c5 commit 48bd58f

10 files changed

+64
-75
lines changed

package.json

+5-6
Original file line numberDiff line numberDiff line change
@@ -56,18 +56,17 @@
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#chore/remove-peer-info-usage",
60+
"libp2p-bootstrap": "^0.11.0",
61+
"libp2p-floodsub": "libp2p/js-libp2p-floodsub#chore/remove-peer-info-usage",
62+
"libp2p-gossipsub": "ChainSafe/gossipsub-js#chore/remove-peer-info-usage",
63+
"libp2p-kad-dht": "libp2p/js-libp2p-kad-dht#chore/use-new-content-and-peer-routing-apis",
6464
"libp2p-mplex": "^0.9.3",
6565
"libp2p-secio": "^0.12.2",
6666
"libp2p-tcp": "^0.14.3",
6767
"libp2p-websockets": "^0.13.2",
6868
"multiaddr": "^7.1.0",
6969
"peer-id": "^0.13.3",
70-
"peer-info": "^0.17.1",
7170
"promisify-es6": "^1.0.3",
7271
"protons": "^1.1.0",
7372
"stream-to-it": "^0.2.0",

src/daemon.js

+21-24
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.registrar.getConnection(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 peerData = daemon.libp2p.peerStore.get(peerId)
192+
const protos = peerData.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.addrs.map(m => m.buffer)
286280
}
287281
}
288282
})
@@ -310,8 +304,8 @@ class Daemon {
310304
yield DHTResponse.encode({
311305
type: DHTResponse.Type.VALUE,
312306
peer: {
313-
id: provider.id.toBytes(),
314-
addrs: provider.multiaddrInfos.map(mi => mi.multiaddr.buffer)
307+
id: provider.id.toBytes(), // TODO below
308+
addrs: (provider.addrs || []).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.addresses.listen.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((peerData) => {
436+
// TODO: conn mgr
437+
const conn = daemon.libp2p.registrar.getConnection(peerData.id)
438+
const addr = conn.remoteAddr
439+
443440
return {
444-
id: pi.id.toBytes(),
441+
id: peerData.id.toBytes(),
445442
addrs: [addr ? addr.buffer : null]
446443
}
447444
})

src/libp2p.js

+11-18
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,18 @@ const SECIO = require('libp2p-secio')
99
const KadDHT = require('libp2p-kad-dht')
1010
const FloodSub = require('libp2p-floodsub')
1111
const GossipSub = require('libp2p-gossipsub')
12-
const PeerInfo = require('peer-info')
1312
const PeerID = require('peer-id')
1413
const multiaddr = require('multiaddr')
1514
const fsPromises = require('fs').promises
1615

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

2726
const pkFile = await fsPromises.open(privateKeyPath, 'r')
@@ -31,9 +30,7 @@ const getPeerInfo = async (privateKeyPath) => {
3130
} finally {
3231
pkFile.close()
3332
}
34-
const peerId = await PeerID.createFromPrivKey(buf)
35-
36-
return new PeerInfo(peerId)
33+
return PeerID.createFromPrivKey(buf)
3734
}
3835

3936
class DaemonLibp2p extends Libp2p {
@@ -52,10 +49,7 @@ class DaemonLibp2p extends Libp2p {
5249
await super.start()
5350
// replace with announce addrs until libp2p supports this directly
5451
if (this.announceAddrs.length > 0) {
55-
this.peerInfo.multiaddrs.clear()
56-
this.announceAddrs.forEach(addr => {
57-
this.peerInfo.multiaddrs.add(addr)
58-
})
52+
this.addresses = { listen: this.announceAddrs.map((aA) => multiaddr(aA)) }
5953
}
6054
}
6155
}
@@ -87,19 +81,18 @@ const createLibp2p = async ({
8781
pubsub,
8882
pubsubRouter
8983
} = {}) => {
90-
const peerInfo = await getPeerInfo(id)
84+
const peerId = await getPeerId(id)
9185
const bootstrapList = bootstrapPeers ? bootstrapPeers.split(',').filter(s => s !== '') : null
9286
const listenAddrs = hostAddrs ? hostAddrs.split(',').filter(s => s !== '') : ['/ip4/0.0.0.0/tcp/0']
9387

9488
announceAddrs = announceAddrs ? announceAddrs.split(',').filter(s => s !== '') : []
9589
announceAddrs = announceAddrs.map(addr => multiaddr(addr))
9690

97-
listenAddrs.forEach(addr => {
98-
peerInfo.multiaddrs.add(multiaddr(addr))
99-
})
100-
10191
const libp2p = new DaemonLibp2p({
102-
peerInfo,
92+
peerId,
93+
addresses: {
94+
listen: listenAddrs.map((a) => multiaddr(a))
95+
},
10396
connectionManager: {
10497
maxPeers: connMgrHi,
10598
minPeers: connMgrLo

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 = daemon.libp2p.addresses.listen
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
@@ -78,8 +78,8 @@ describe('core features', () => {
7878
const request = {
7979
type: Request.Type.CONNECT,
8080
connect: {
81-
peer: Buffer.from(libp2pPeer.peerInfo.id.toBytes()),
82-
addrs: libp2pPeer.peerInfo.multiaddrs.toArray().map(addr => addr.buffer)
81+
peer: Buffer.from(libp2pPeer.peerId.toBytes()),
82+
addrs: libp2pPeer.addresses.listen.map(addr => addr.buffer)
8383
},
8484
streamOpen: null,
8585
streamHandler: null,
@@ -146,8 +146,8 @@ describe('core features', () => {
146146
expect(response.type).to.eql(Response.Type.OK)
147147

148148
expect(response.identify).to.eql({
149-
id: daemon.libp2p.peerInfo.id.toBytes(),
150-
addrs: daemon.libp2p.peerInfo.multiaddrs.toArray().map(m => m.buffer)
149+
id: daemon.libp2p.peerId.toBytes(),
150+
addrs: daemon.libp2p.addresses.listen.map(m => m.buffer)
151151
})
152152
streamHandler.close()
153153
})

test/daemon/dht.spec.js

+9-9
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ describe('dht', () => {
9393
streamHandler: null,
9494
dht: {
9595
type: DHTRequest.Type.FIND_PEER,
96-
peer: libp2pPeer.peerInfo.id.toBytes()
96+
peer: libp2pPeer.peerId.toBytes()
9797
},
9898
disconnect: null,
9999
pubsub: null,
@@ -107,8 +107,8 @@ describe('dht', () => {
107107
expect(response.dht).to.eql({
108108
type: DHTResponse.Type.VALUE,
109109
peer: {
110-
id: libp2pPeer.peerInfo.id.toBytes(),
111-
addrs: libp2pPeer.peerInfo.multiaddrs.toArray().map(m => m.buffer)
110+
id: libp2pPeer.peerId.toBytes(),
111+
addrs: libp2pPeer.addresses.listen.map(m => m.buffer)
112112
},
113113
value: null
114114
})
@@ -174,7 +174,7 @@ describe('dht', () => {
174174
for await (const provider of libp2pPeer.contentRouting.findProviders(cid, { maxNumProviders: 1 })) {
175175
providers.push(provider)
176176
}
177-
expect(daemon.libp2p.peerInfo.id.isEqual(providers[0].id)).to.eql(true)
177+
expect(daemon.libp2p.peerId.isEqual(providers[0].id)).to.eql(true)
178178
})
179179

180180
it('should be able to find providers', async () => {
@@ -219,8 +219,8 @@ describe('dht', () => {
219219
const response = DHTResponse.decode(message)
220220
expect(response.type).to.eql(DHTResponse.Type.VALUE)
221221
expect(response.peer).to.eql({
222-
id: libp2pPeer.peerInfo.id.toBytes(),
223-
addrs: libp2pPeer.peerInfo.multiaddrs.toArray().map(m => m.buffer)
222+
id: libp2pPeer.peerId.toBytes(),
223+
addrs: libp2pPeer.addresses.listen.map(m => m.buffer)
224224
})
225225
},
226226
(message) => {
@@ -315,7 +315,7 @@ describe('dht', () => {
315315
(message) => {
316316
const response = DHTResponse.decode(message)
317317
expect(response.type).to.eql(DHTResponse.Type.VALUE)
318-
expect(response.value.toString()).to.eql(libp2pPeer.peerInfo.id.toB58String())
318+
expect(response.value.toString()).to.eql(libp2pPeer.peerId.toB58String())
319319
},
320320
(message) => {
321321
const response = DHTResponse.decode(message)
@@ -344,7 +344,7 @@ describe('dht', () => {
344344
streamHandler: null,
345345
dht: {
346346
type: DHTRequest.Type.GET_PUBLIC_KEY,
347-
peer: libp2pPeer.peerInfo.id.toBytes()
347+
peer: libp2pPeer.peerId.toBytes()
348348
},
349349
disconnect: null,
350350
pubsub: null,
@@ -358,7 +358,7 @@ describe('dht', () => {
358358
expect(response.dht).to.eql({
359359
type: DHTResponse.Type.VALUE,
360360
peer: null,
361-
value: libp2pPeer.peerInfo.id.pubKey.bytes
361+
value: libp2pPeer.peerId.pubKey.bytes
362362
})
363363
streamHandler.close()
364364
})

test/daemon/peerstore.spec.js

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

@@ -117,7 +117,7 @@ describe('peerstore features', () => {
117117
type: Request.Type.PEERSTORE,
118118
peerStore: {
119119
type: PeerstoreRequest.Type.GET_PEER_INFO,
120-
id: Buffer.from(libp2pPeer.peerInfo.id.toBytes())
120+
id: Buffer.from(libp2pPeer.peerId.toBytes())
121121
}
122122
}
123123

test/daemon/pubsub.spec.js

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

test/daemon/streams.spec.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ describe('streams', function () {
9494
type: Request.Type.STREAM_OPEN,
9595
connect: null,
9696
streamOpen: {
97-
peer: Buffer.from(libp2pPeer.peerInfo.id.toB58String()),
97+
peer: Buffer.from(libp2pPeer.peerId.toB58String()),
9898
proto: ['/echo/1.0.0']
9999
},
100100
streamHandler: null,
@@ -108,11 +108,11 @@ describe('streams', function () {
108108
// Verify the response
109109
const response = Response.decode(await streamHandler.read())
110110
expect(response.type).to.eql(Response.Type.OK)
111-
expect(response.streamInfo).to.have.deep.property('peer', libp2pPeer.peerInfo.id.toBytes())
111+
expect(response.streamInfo).to.have.deep.property('peer', libp2pPeer.peerId.toBytes())
112112
expect(response.streamInfo).to.have.property('proto', '/echo/1.0.0')
113113
expect(response.streamInfo.addr).to.satisfy(function (buffer) {
114-
const addrs = libp2pPeer.peerInfo.multiaddrs.toArray()
115-
return addrs.filter(addr => buffer.equals(addr.encapsulate(`/p2p/${libp2pPeer.peerInfo.id.toB58String()}`).buffer)).length > 0
114+
const addrs = libp2pPeer.addresses.listen
115+
return addrs.filter(addr => buffer.equals(addr.encapsulate(`/p2p/${libp2pPeer.peerId.toB58String()}`).buffer)).length > 0
116116
}, 'Did not contain a valid multiaddr')
117117

118118
const source = require('it-pushable')()
@@ -145,7 +145,7 @@ describe('streams', function () {
145145
const message = await streamHandler.read()
146146
const response = StreamInfo.decode(message)
147147

148-
expect(response.peer).to.eql(libp2pPeer.peerInfo.id.toBytes())
148+
expect(response.peer).to.eql(libp2pPeer.peerId.toBytes())
149149
expect(response.proto).to.eql('/echo/1.0.0')
150150

151151
const stream = streamHandler.rest()
@@ -175,7 +175,7 @@ describe('streams', function () {
175175

176176
// Open a connection between the peer and our daemon
177177
// Then send hello from the peer to the daemon
178-
const connection = await libp2pPeer.dial(daemon.libp2p.peerInfo)
178+
const connection = await libp2pPeer.dial(daemon.libp2p.peerId)
179179
const { stream } = await connection.newStream('/echo/1.0.0')
180180
const hello = Buffer.from('hello, peer')
181181

0 commit comments

Comments
 (0)