Skip to content

Commit a4689b9

Browse files
committed
feat!: update to libp2p@2.x.x
Incorporates API changes appearing in libp2p@2.x.x. BREAKING CHANGE: can only be used with libp2p@2.x.x
1 parent a60d9d7 commit a4689b9

File tree

6 files changed

+34
-33
lines changed

6 files changed

+34
-33
lines changed

packages/libp2p-daemon-client/src/dht.ts

+7-6
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ import {
77
import { CodeError } from '@libp2p/interface'
88
import { isPeerId, type PeerId, type PeerInfo } from '@libp2p/interface'
99
import { logger } from '@libp2p/logger'
10-
import { peerIdFromBytes } from '@libp2p/peer-id'
10+
import { peerIdFromMultihash } from '@libp2p/peer-id'
1111
import { multiaddr } from '@multiformats/multiaddr'
1212
import { CID } from 'multiformats/cid'
13+
import * as Digest from 'multiformats/hashes/digest'
1314
import type { DaemonClient } from './index.js'
1415

1516
const log = logger('libp2p:daemon-client:dht')
@@ -96,7 +97,7 @@ export class DHT {
9697
type: Request.Type.DHT,
9798
dht: {
9899
type: DHTRequest.Type.FIND_PEER,
99-
peer: peerId.toBytes()
100+
peer: peerId.toMultihash().bytes
100101
}
101102
})
102103

@@ -113,7 +114,7 @@ export class DHT {
113114
}
114115

115116
return {
116-
id: peerIdFromBytes(response.dht.peer.id),
117+
id: peerIdFromMultihash(Digest.decode(response.dht.peer.id)),
117118
multiaddrs: response.dht.peer.addrs.map((a) => multiaddr(a))
118119
}
119120
}
@@ -180,7 +181,7 @@ export class DHT {
180181
// Stream values
181182
if (dhtResponse.type === DHTResponse.Type.VALUE && dhtResponse.peer?.addrs != null) {
182183
yield {
183-
id: peerIdFromBytes(dhtResponse.peer.id),
184+
id: peerIdFromMultihash(Digest.decode(dhtResponse.peer.id)),
184185
multiaddrs: dhtResponse.peer.addrs.map((a) => multiaddr(a))
185186
}
186187
} else {
@@ -226,7 +227,7 @@ export class DHT {
226227

227228
// Stream values
228229
if (dhtResponse.type === DHTResponse.Type.VALUE && dhtResponse.value != null) {
229-
const peerId = peerIdFromBytes(dhtResponse.value)
230+
const peerId = peerIdFromMultihash(Digest.decode(dhtResponse.value))
230231

231232
yield {
232233
id: peerId,
@@ -252,7 +253,7 @@ export class DHT {
252253
type: Request.Type.DHT,
253254
dht: {
254255
type: DHTRequest.Type.GET_PUBLIC_KEY,
255-
peer: peerId.toBytes()
256+
peer: peerId.toMultihash().bytes
256257
}
257258
})
258259

packages/libp2p-daemon-client/src/index.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ import { StreamHandler } from '@libp2p/daemon-protocol/stream-handler'
33
import { passThroughUpgrader } from '@libp2p/daemon-protocol/upgrader'
44
import { CodeError, isPeerId } from '@libp2p/interface'
55
import { defaultLogger, logger } from '@libp2p/logger'
6-
import { peerIdFromBytes } from '@libp2p/peer-id'
6+
import { peerIdFromMultihash } from '@libp2p/peer-id'
77
import { tcp } from '@libp2p/tcp'
88
import { multiaddr, isMultiaddr } from '@multiformats/multiaddr'
99
import { pbStream, type ProtobufStream } from 'it-protobuf-stream'
10+
import * as Digest from 'multiformats/hashes/digest'
1011
import { DHT } from './dht.js'
1112
import { Pubsub } from './pubsub.js'
1213
import type { Stream, PeerId, MultiaddrConnection, PeerInfo, Transport } from '@libp2p/interface'
@@ -82,7 +83,7 @@ class Client implements DaemonClient {
8283
const sh = await this.send({
8384
type: Request.Type.CONNECT,
8485
connect: {
85-
peer: peerId.toBytes(),
86+
peer: peerId.toMultihash().bytes,
8687
addrs: addrs.map((a) => a.bytes)
8788
}
8889
})
@@ -121,7 +122,7 @@ class Client implements DaemonClient {
121122
throw new CodeError('Invalid response', 'ERR_IDENTIFY_FAILED')
122123
}
123124

124-
const peerId = peerIdFromBytes(response.identify?.id)
125+
const peerId = peerIdFromMultihash(Digest.decode(response.identify?.id))
125126
const addrs = response.identify.addrs.map((a) => multiaddr(a))
126127

127128
await sh.unwrap().close()
@@ -145,7 +146,7 @@ class Client implements DaemonClient {
145146

146147
await sh.unwrap().close()
147148

148-
return response.peers.map((peer) => peerIdFromBytes(peer.id))
149+
return response.peers.map((peer) => peerIdFromMultihash(Digest.decode(peer.id)))
149150
}
150151

151152
/**
@@ -163,7 +164,7 @@ class Client implements DaemonClient {
163164
const sh = await this.send({
164165
type: Request.Type.STREAM_OPEN,
165166
streamOpen: {
166-
peer: peerId.toBytes(),
167+
peer: peerId.toMultihash().bytes,
167168
proto: [protocol]
168169
}
169170
})

packages/libp2p-daemon-client/src/pubsub.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import {
55
PSMessage
66
} from '@libp2p/daemon-protocol'
77
import { CodeError } from '@libp2p/interface'
8-
import { peerIdFromBytes } from '@libp2p/peer-id'
8+
import { peerIdFromMultihash } from '@libp2p/peer-id'
9+
import * as Digest from 'multiformats/hashes/digest'
910
import type { DaemonClient, Subscription } from './index.js'
1011
import type { PeerId } from '@libp2p/interface'
1112

@@ -138,6 +139,6 @@ export class Pubsub {
138139
throw new CodeError('Invalid response', 'ERR_PUBSUB_GET_SUBSCRIBERS_FAILED')
139140
}
140141

141-
return response.pubsub.peerIDs.map(buf => peerIdFromBytes(buf))
142+
return response.pubsub.peerIDs.map(buf => peerIdFromMultihash(Digest.decode(buf)))
142143
}
143144
}

packages/libp2p-daemon-server/src/dht.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export class DHTOperations {
4646
if (event.name === 'PEER_RESPONSE') {
4747
yield * event.closer.map(peer => DHTResponse.encode({
4848
type: DHTResponse.Type.VALUE,
49-
value: peer.id.toBytes()
49+
value: peer.id.toMultihash().bytes
5050
}))
5151
}
5252
}
@@ -97,7 +97,7 @@ export class DHTOperations {
9797
dht: {
9898
type: DHTResponse.Type.VALUE,
9999
peer: {
100-
id: event.peer.id.toBytes(),
100+
id: event.peer.id.toMultihash().bytes,
101101
addrs: event.peer.multiaddrs.map(m => m.bytes)
102102
}
103103
}
@@ -131,7 +131,7 @@ export class DHTOperations {
131131
yield DHTResponse.encode({
132132
type: DHTResponse.Type.VALUE,
133133
peer: {
134-
id: provider.id.toBytes(),
134+
id: provider.id.toMultihash().bytes,
135135
addrs: (provider.multiaddrs ?? []).map(m => m.bytes)
136136
}
137137
})

packages/libp2p-daemon-server/src/index.ts

+11-14
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,15 @@ import {
1010
} from '@libp2p/daemon-protocol'
1111
import { passThroughUpgrader } from '@libp2p/daemon-protocol/upgrader'
1212
import { defaultLogger, logger } from '@libp2p/logger'
13-
import { peerIdFromBytes } from '@libp2p/peer-id'
13+
import { peerIdFromMultihash } from '@libp2p/peer-id'
1414
import { tcp } from '@libp2p/tcp'
1515
import { multiaddr, protocols } from '@multiformats/multiaddr'
1616
import * as lp from 'it-length-prefixed'
1717
import { lpStream } from 'it-length-prefixed-stream'
1818
import { pipe } from 'it-pipe'
1919
import { pbStream } from 'it-protobuf-stream'
2020
import { CID } from 'multiformats/cid'
21+
import * as Digest from 'multiformats/hashes/digest'
2122
import { DHTOperations } from './dht.js'
2223
import { PubSubOperations } from './pubsub.js'
2324
import { ErrorResponse, OkResponse } from './responses.js'
@@ -87,7 +88,7 @@ export class Server implements Libp2pServer {
8788

8889
const peer = request.connect.peer
8990
const addrs = request.connect.addrs.map((a) => multiaddr(a))
90-
const peerId = peerIdFromBytes(peer)
91+
const peerId = peerIdFromMultihash(Digest.decode(peer))
9192

9293
log('connect - adding multiaddrs %a to peer %p', addrs, peerId)
9394
await this.libp2p.peerStore.merge(peerId, {
@@ -107,21 +108,19 @@ export class Server implements Libp2pServer {
107108
}
108109

109110
const { peer, proto } = request.streamOpen
110-
const peerId = peerIdFromBytes(peer)
111+
const peerId = peerIdFromMultihash(Digest.decode(peer))
111112

112113
log('openStream - dial %p', peerId)
113114
const connection = await this.libp2p.dial(peerId)
114115

115116
log('openStream - open stream for protocol %s', proto)
116117
const stream = await connection.newStream(proto, {
117-
runOnTransientConnection: true,
118-
// @ts-expect-error this has not been released yet
119118
runOnLimitedConnection: true
120119
})
121120

122121
return {
123122
streamInfo: {
124-
peer: peerId.toBytes(),
123+
peer: peerId.toMultihash().bytes,
125124
addr: connection.remoteAddr.bytes,
126125
proto: stream.protocol ?? ''
127126
},
@@ -155,7 +154,7 @@ export class Server implements Libp2pServer {
155154
})
156155

157156
const message = StreamInfo.encode({
158-
peer: connection.remotePeer.toBytes(),
157+
peer: connection.remotePeer.toMultihash().bytes,
159158
addr: connection.remoteAddr.bytes,
160159
proto: stream.protocol ?? ''
161160
})
@@ -194,8 +193,6 @@ export class Server implements Libp2pServer {
194193
}
195194
})
196195
}, {
197-
runOnTransientConnection: true,
198-
// @ts-expect-error this has not been released yet
199196
runOnLimitedConnection: true
200197
})
201198
}
@@ -257,7 +254,7 @@ export class Server implements Libp2pServer {
257254
throw new Error('Invalid request')
258255
}
259256

260-
const peerId = peerIdFromBytes(request.id) // eslint-disable-line no-case-declarations
257+
const peerId = peerIdFromMultihash(Digest.decode(request.id)) // eslint-disable-line no-case-declarations
261258
const peer = await this.libp2p.peerStore.get(peerId) // eslint-disable-line no-case-declarations
262259
const protos = peer.protocols // eslint-disable-line no-case-declarations
263260
yield OkResponse({ peerStore: { protos } })
@@ -331,7 +328,7 @@ export class Server implements Libp2pServer {
331328
throw new Error('Invalid request')
332329
}
333330

334-
yield * this.dhtOperations.findPeer(peerIdFromBytes(request.peer))
331+
yield * this.dhtOperations.findPeer(peerIdFromMultihash(Digest.decode(request.peer)))
335332
return
336333
case DHTRequest.Type.FIND_PROVIDERS:
337334
if (request.cid == null) {
@@ -359,7 +356,7 @@ export class Server implements Libp2pServer {
359356
throw new Error('Invalid request')
360357
}
361358

362-
yield * this.dhtOperations.getPublicKey(peerIdFromBytes(request.peer))
359+
yield * this.dhtOperations.getPublicKey(peerIdFromMultihash(Digest.decode(request.peer)))
363360
return
364361
case DHTRequest.Type.GET_VALUE:
365362
if (request.key == null) {
@@ -414,7 +411,7 @@ export class Server implements Libp2pServer {
414411
await pb.write({
415412
type: Response.Type.OK,
416413
identify: {
417-
id: daemon.libp2p.peerId.toBytes(),
414+
id: daemon.libp2p.peerId.toMultihash().bytes,
418415
addrs: daemon.libp2p.getMultiaddrs().map(ma => ma.decapsulateCode(protocols('p2p').code)).map(m => m.bytes)
419416
}
420417
}, Response)
@@ -436,7 +433,7 @@ export class Server implements Libp2pServer {
436433
seen.add(peerId)
437434

438435
peers.push({
439-
id: connection.remotePeer.toBytes(),
436+
id: connection.remotePeer.toMultihash().bytes,
440437
addrs: [connection.remoteAddr.bytes]
441438
})
442439
}

packages/libp2p-daemon-server/src/pubsub.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/* eslint max-depth: ["error", 6] */
22

3+
import { publicKeyToProtobuf } from '@libp2p/crypto/keys'
34
import {
45
PSMessage
56
} from '@libp2p/daemon-protocol'
@@ -52,12 +53,12 @@ export class PubSubOperations {
5253

5354
if (msg.type === 'signed') {
5455
onMessage.push(PSMessage.encode({
55-
from: msg.from.toBytes(),
56+
from: msg.from.toMultihash().bytes,
5657
data: msg.data,
5758
seqno: msg.sequenceNumber == null ? undefined : uint8ArrayFromString(msg.sequenceNumber.toString(16).padStart(16, '0'), 'base16'),
5859
topicIDs: [msg.topic],
5960
signature: msg.signature,
60-
key: msg.key
61+
key: publicKeyToProtobuf(msg.key)
6162
}).subarray())
6263
} else {
6364
onMessage.push(PSMessage.encode({
@@ -90,7 +91,7 @@ export class PubSubOperations {
9091
yield OkResponse({
9192
pubsub: {
9293
topics: [topic],
93-
peerIDs: this.pubsub.getSubscribers(topic).map(peer => peer.toBytes())
94+
peerIDs: this.pubsub.getSubscribers(topic).map(peer => peer.toMultihash().bytes)
9495
}
9596
})
9697
} catch (err: any) {

0 commit comments

Comments
 (0)