Skip to content

Commit 5468cd1

Browse files
committed
fix!: remove protocols from PeerInfo (#2166)
A [PeerInfo](https://docs.libp2p.io/concepts/fundamentals/peers/#peer-info) is a libp2p object that combines a PeerID and some Multiaddrs. We also add a list of protocols. This was a mistake because protocols are exchanged during Identify but the PeerInfo object is used for peer discovery. This is evident because we set the protocol list to an empty array everywhere. PeerInfo is useful for exchanging peer data with other nodes, if we need a more fleshed-out peer representation we'd use the `Peer` interface from the peer store. BREAKING CHANGE: the `.protocols` property has been removed from the `PeerInfo` interface
1 parent b0e8f06 commit 5468cd1

File tree

21 files changed

+43
-58
lines changed

21 files changed

+43
-58
lines changed

packages/interface-compliance-tests/src/mocks/peer-discovery.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,7 @@ export class MockDiscovery extends TypedEventEmitter<PeerDiscoveryEvents> implem
4949
this.safeDispatchEvent<PeerInfo>('peer', {
5050
detail: {
5151
id: peerId,
52-
multiaddrs: [multiaddr('/ip4/127.0.0.1/tcp/8000')],
53-
protocols: []
52+
multiaddrs: [multiaddr('/ip4/127.0.0.1/tcp/8000')]
5453
}
5554
})
5655
}, this.options.discoveryDelay ?? 1000)
Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,20 @@
11
import type { PeerId } from '../peer-id/index.js'
22
import type { Multiaddr } from '@multiformats/multiaddr'
33

4+
/**
5+
* A `PeerInfo` is a lightweight object that represents a remote peer, it can be
6+
* obtained from peer discovery mechanisms, HTTP RPC endpoints, etc.
7+
*
8+
* @see https://docs.libp2p.io/concepts/fundamentals/peers/#peer-info
9+
*/
410
export interface PeerInfo {
11+
/**
12+
* The identifier of the remote peer
13+
*/
514
id: PeerId
15+
16+
/**
17+
* The multiaddrs a peer is listening on
18+
*/
619
multiaddrs: Multiaddr[]
7-
protocols: string[]
820
}

packages/kad-dht/src/content-routing/index.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,7 @@ export class ContentRouting {
6464
const msg = new Message(MESSAGE_TYPE.ADD_PROVIDER, key.multihash.bytes, 0)
6565
msg.providerPeers = [{
6666
id: this.components.peerId,
67-
multiaddrs,
68-
protocols: []
67+
multiaddrs
6968
}]
7069

7170
let sent = 0
@@ -140,8 +139,7 @@ export class ContentRouting {
140139

141140
providers.push({
142141
id: peerId,
143-
multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr),
144-
protocols: peer.protocols
142+
multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)
145143
})
146144
} catch (err: any) {
147145
if (err.code !== 'ERR_NOT_FOUND') {

packages/kad-dht/src/kad-dht.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ export class DefaultKadDHT extends TypedEventEmitter<PeerDiscoveryEvents> implem
218218
}
219219

220220
async onPeerConnect (peerData: PeerInfo): Promise<void> {
221-
this.log('peer %p connected with protocols', peerData.id, peerData.protocols)
221+
this.log('peer %p connected', peerData.id)
222222

223223
if (this.lan) {
224224
peerData = removePublicAddresses(peerData)

packages/kad-dht/src/message/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@ function fromPbPeer (peer: PBMessage.Peer): PeerInfo {
104104

105105
return {
106106
id: peerIdFromBytes(peer.id),
107-
multiaddrs: (peer.addrs ?? []).map((a) => multiaddr(a)),
108-
protocols: []
107+
multiaddrs: (peer.addrs ?? []).map((a) => multiaddr(a))
109108
}
110109
}

packages/kad-dht/src/peer-routing/index.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,7 @@ export class PeerRouting {
8585

8686
return {
8787
id: peerData.id,
88-
multiaddrs: peerData.addresses.map((address) => address.multiaddr),
89-
protocols: []
88+
multiaddrs: peerData.addresses.map((address) => address.multiaddr)
9089
}
9190
}
9291

@@ -226,8 +225,7 @@ export class PeerRouting {
226225
from: this.components.peerId,
227226
peer: {
228227
id: peerId,
229-
multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr),
230-
protocols: peer.protocols
228+
multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)
231229
}
232230
}, options)
233231
} catch (err: any) {
@@ -296,8 +294,7 @@ export class PeerRouting {
296294

297295
output.push({
298296
id: peerId,
299-
multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr),
300-
protocols: peer.protocols
297+
multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)
301298
})
302299
} catch (err: any) {
303300
if (err.code !== 'ERR_NOT_FOUND') {

packages/kad-dht/src/rpc/handlers/find-node.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,7 @@ export class FindNodeHandler implements DHTMessageHandler {
4848
if (uint8ArrayEquals(this.components.peerId.toBytes(), msg.key)) {
4949
closer = [{
5050
id: this.components.peerId,
51-
multiaddrs: this.components.addressManager.getAddresses().map(ma => ma.decapsulateCode(protocols('p2p').code)),
52-
protocols: []
51+
multiaddrs: this.components.addressManager.getAddresses().map(ma => ma.decapsulateCode(protocols('p2p').code))
5352
}]
5453
} else {
5554
closer = await this.peerRouting.getCloserPeersOffline(msg.key, peerId)

packages/kad-dht/src/rpc/handlers/get-providers.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,7 @@ export class GetProvidersHandler implements DHTMessageHandler {
8686

8787
const peerAfterFilter = addrFilter({
8888
id: peerId,
89-
multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr),
90-
protocols: peer.protocols
89+
multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)
9190
})
9291

9392
if (peerAfterFilter.multiaddrs.length > 0) {

packages/kad-dht/test/kad-utils.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ describe('kad utils', () => {
7373
multiaddr('/dns4/localhost/tcp/4001')
7474
]
7575

76-
const peerInfo = utils.removePrivateAddresses({ id, multiaddrs, protocols: [] })
76+
const peerInfo = utils.removePrivateAddresses({ id, multiaddrs })
7777
expect(peerInfo.multiaddrs.map((ma) => ma.toString()))
7878
.to.eql(['/dns4/example.com/tcp/4001', '/ip4/1.1.1.1/tcp/4001'])
7979
})
@@ -90,7 +90,7 @@ describe('kad utils', () => {
9090
multiaddr('/dns4/localhost/tcp/4001')
9191
]
9292

93-
const peerInfo = utils.removePublicAddresses({ id, multiaddrs, protocols: [] })
93+
const peerInfo = utils.removePublicAddresses({ id, multiaddrs })
9494
expect(peerInfo.multiaddrs.map((ma) => ma.toString()))
9595
.to.eql(['/ip4/192.168.0.1/tcp/4001', '/dns4/localhost/tcp/4001'])
9696
})

packages/kad-dht/test/query-self.spec.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,7 @@ describe('Query Self', () => {
7878
from: remotePeer,
7979
peer: {
8080
id: remotePeer,
81-
multiaddrs: [],
82-
protocols: []
81+
multiaddrs: []
8382
}
8483
})
8584
}())
@@ -110,8 +109,7 @@ describe('Query Self', () => {
110109
from: remotePeer,
111110
peer: {
112111
id: remotePeer,
113-
multiaddrs: [],
114-
protocols: []
112+
multiaddrs: []
115113
}
116114
})
117115
}())

packages/kad-dht/test/query.spec.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -534,8 +534,7 @@ describe('QueryManager', () => {
534534
messageType: MESSAGE_TYPE.GET_VALUE,
535535
closer: [{
536536
id: peers[2],
537-
multiaddrs: [],
538-
protocols: []
537+
multiaddrs: []
539538
}]
540539
})
541540
}

packages/kad-dht/test/rpc/handlers/add-provider.spec.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,10 @@ describe('rpc - handlers - AddProvider', () => {
6868

6969
msg.providerPeers = [{
7070
id: peerIds[0],
71-
multiaddrs: [ma1],
72-
protocols: []
71+
multiaddrs: [ma1]
7372
}, {
7473
id: peerIds[1],
75-
multiaddrs: [ma2],
76-
protocols: []
74+
multiaddrs: [ma2]
7775
}]
7876

7977
await handler.handle(peerIds[0], msg)

packages/kad-dht/test/rpc/handlers/find-node.spec.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,7 @@ describe('rpc - handlers - FindNode', () => {
7171
multiaddr('/ip4/127.0.0.1/tcp/4002'),
7272
multiaddr('/ip4/192.168.1.5/tcp/4002'),
7373
multiaddr('/ip4/221.4.67.0/tcp/4002')
74-
],
75-
protocols: []
74+
]
7675
}])
7776

7877
const response = await handler.handle(sourcePeer, msg)
@@ -109,8 +108,7 @@ describe('rpc - handlers - FindNode', () => {
109108
multiaddr('/ip4/127.0.0.1/tcp/4002'),
110109
multiaddr('/ip4/192.168.1.5/tcp/4002'),
111110
multiaddr('/ip4/221.4.67.0/tcp/4002')
112-
],
113-
protocols: []
111+
]
114112
}])
115113

116114
handler = new FindNodeHandler({
@@ -146,8 +144,7 @@ describe('rpc - handlers - FindNode', () => {
146144
multiaddr('/ip4/127.0.0.1/tcp/4002'),
147145
multiaddr('/ip4/192.168.1.5/tcp/4002'),
148146
multiaddr('/ip4/221.4.67.0/tcp/4002')
149-
],
150-
protocols: []
147+
]
151148
}])
152149

153150
const response = await handler.handle(sourcePeer, msg)

packages/kad-dht/test/rpc/handlers/get-providers.spec.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,7 @@ describe('rpc - handlers - GetProviders', () => {
7373
multiaddr('/ip4/127.0.0.1/tcp/4002'),
7474
multiaddr('/ip4/192.168.2.6/tcp/4002'),
7575
multiaddr('/ip4/21.31.57.23/tcp/4002')
76-
],
77-
protocols: []
76+
]
7877
}]
7978

8079
const provider: PeerInfo[] = [{
@@ -83,8 +82,7 @@ describe('rpc - handlers - GetProviders', () => {
8382
multiaddr('/ip4/127.0.0.1/tcp/4002'),
8483
multiaddr('/ip4/192.168.1.5/tcp/4002'),
8584
multiaddr('/ip4/135.4.67.0/tcp/4002')
86-
],
87-
protocols: []
85+
]
8886
}]
8987

9088
providers.getProviders.withArgs(v.cid).resolves([providerPeer])

packages/kad-dht/test/rpc/handlers/get-value.spec.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,7 @@ describe('rpc - handlers - GetValue', () => {
9494
peerRouting.getCloserPeersOffline.withArgs(key, sourcePeer)
9595
.resolves([{
9696
id: closerPeer,
97-
multiaddrs: [],
98-
protocols: []
97+
multiaddrs: []
9998
}])
10099

101100
const msg = new Message(T, key, 0)

packages/kad-dht/test/utils/test-dht.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,7 @@ export class TestDHT {
9494
}
9595

9696
components.peerStore.merge(peerData.id, {
97-
multiaddrs: peerData.multiaddrs,
98-
protocols: peerData.protocols
97+
multiaddrs: peerData.multiaddrs
9998
})
10099
.catch(err => { log.error(err) })
101100
})

packages/libp2p/src/libp2p.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,7 @@ export class Libp2pNode<T extends ServiceMap = Record<string, unknown>> extends
9696
if (evt.detail.previous == null) {
9797
const peerInfo: PeerInfo = {
9898
id: evt.detail.peer.id,
99-
multiaddrs: evt.detail.peer.addresses.map(a => a.multiaddr),
100-
protocols: evt.detail.peer.protocols
99+
multiaddrs: evt.detail.peer.addresses.map(a => a.multiaddr)
101100
}
102101

103102
components.events.safeDispatchEvent('peer:discovery', { detail: peerInfo })
@@ -380,8 +379,7 @@ export class Libp2pNode<T extends ServiceMap = Record<string, unknown>> extends
380379
}
381380

382381
void this.components.peerStore.merge(peer.id, {
383-
multiaddrs: peer.multiaddrs,
384-
protocols: peer.protocols
382+
multiaddrs: peer.multiaddrs
385383
})
386384
.catch(err => { this.#log.error(err) })
387385
}

packages/libp2p/test/circuit-relay/utils.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,7 @@ export class MockContentRouting implements ContentRouting {
159159

160160
providers.push({
161161
id: this.peerId,
162-
multiaddrs: this.addressManager.getAddresses(),
163-
protocols: []
162+
multiaddrs: this.addressManager.getAddresses()
164163
})
165164

166165
MockContentRouting.providers.set(cid.toString(), providers)

packages/libp2p/test/content-routing/content-routing.node.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,8 +251,7 @@ describe('content-routing', () => {
251251
id: providerPeerId,
252252
multiaddrs: [
253253
multiaddr('/ip4/123.123.123.123/tcp/49320')
254-
],
255-
protocols: []
254+
]
256255
}
257256

258257
if (node.services.dht == null) {

packages/peer-discovery-bootstrap/src/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,7 @@ class Bootstrap extends TypedEventEmitter<PeerDiscoveryEvents> implements PeerDi
134134

135135
const peerData: PeerInfo = {
136136
id: peerIdFromString(peerIdStr),
137-
multiaddrs: [ma],
138-
protocols: []
137+
multiaddrs: [ma]
139138
}
140139

141140
this.list.push(peerData)

packages/peer-discovery-mdns/src/query.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,7 @@ export function gotResponse (rsp: ResponsePacket, localPeerName: string, service
7474

7575
return {
7676
id: peerIdFromString(peerId),
77-
multiaddrs: multiaddrs.map(addr => addr.decapsulateCode(protocols('p2p').code)),
78-
protocols: []
77+
multiaddrs: multiaddrs.map(addr => addr.decapsulateCode(protocols('p2p').code))
7978
}
8079
} catch (e) {
8180
log.error('failed to parse mdns response', e)

0 commit comments

Comments
 (0)