Skip to content

Commit 3244ed0

Browse files
authored
fix!: make circuit relay listen on addresses like other transports (#2776)
Refactors the circuit relay transport to behave like other transports 1. Specify the addresses to listen on in the `addresses.listen` config 2. Remove the `discoverRelays` option 3. Remove the transport manager listen call to just listen on configured addresses 4. Emit the `listen` event when listen addresses change like other transports BREAKING CHANGE: The `discoverRelays` option has been removed, instead add one or more instances of `"/p2p-circuit"` to the libp2p config under the `addresses.listen` key
1 parent 5a25d83 commit 3244ed0

File tree

17 files changed

+479
-453
lines changed

17 files changed

+479
-453
lines changed

.github/workflows/examples.yml

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -27,29 +27,29 @@ jobs:
2727
strategy:
2828
matrix:
2929
example:
30-
- name: js-libp2p-example-browser-pubsub
31-
repo: https://github.com/libp2p/js-libp2p-example-browser-pubsub.git
32-
deps:
33-
- '@libp2p/circuit-relay-v2@$PWD/packages/transport-circuit-relay-v2'
34-
- '@libp2p/dcutr@$PWD/packages/protocol-dcutr'
35-
- '@libp2p/identify@$PWD/packages/protocol-identify'
36-
- '@libp2p/webrtc@$PWD/packages/transport-webrtc'
37-
- '@libp2p/websockets@$PWD/packages/transport-websockets'
38-
- 'libp2p@$PWD/packages/libp2p'
30+
# - name: js-libp2p-example-browser-pubsub
31+
# repo: https://github.com/libp2p/js-libp2p-example-browser-pubsub.git
32+
# deps:
33+
# - '@libp2p/circuit-relay-v2@$PWD/packages/transport-circuit-relay-v2'
34+
# - '@libp2p/dcutr@$PWD/packages/protocol-dcutr'
35+
# - '@libp2p/identify@$PWD/packages/protocol-identify'
36+
# - '@libp2p/webrtc@$PWD/packages/transport-webrtc'
37+
# - '@libp2p/websockets@$PWD/packages/transport-websockets'
38+
# - 'libp2p@$PWD/packages/libp2p'
3939
- name: js-libp2p-example-chat
4040
repo: https://github.com/libp2p/js-libp2p-example-chat.git
4141
deps:
4242
- '@libp2p/mdns@$PWD/packages/peer-discovery-mdns'
4343
- '@libp2p/tcp@$PWD/packages/transport-tcp'
4444
- '@libp2p/websockets@$PWD/packages/transport-websockets'
4545
- 'libp2p@$PWD/packages/libp2p'
46-
- name: js-libp2p-example-circuit-relay
47-
repo: https://github.com/libp2p/js-libp2p-example-circuit-relay.git
48-
deps:
49-
- '@libp2p/circuit-relay-v2@$PWD/packages/transport-circuit-relay-v2'
50-
- '@libp2p/identify@$PWD/packages/protocol-identify'
51-
- '@libp2p/websockets@$PWD/packages/transport-websockets'
52-
- 'libp2p@$PWD/packages/libp2p'
46+
# - name: js-libp2p-example-circuit-relay
47+
# repo: https://github.com/libp2p/js-libp2p-example-circuit-relay.git
48+
# deps:
49+
# - '@libp2p/circuit-relay-v2@$PWD/packages/transport-circuit-relay-v2'
50+
# - '@libp2p/identify@$PWD/packages/protocol-identify'
51+
# - '@libp2p/websockets@$PWD/packages/transport-websockets'
52+
# - 'libp2p@$PWD/packages/libp2p'
5353
- name: js-libp2p-example-connection-encryption
5454
repo: https://github.com/libp2p/js-libp2p-example-connection-encryption.git
5555
deps:
@@ -62,10 +62,10 @@ jobs:
6262
- '@libp2p/tcp@$PWD/packages/transport-tcp'
6363
- '@libp2p/websockets@$PWD/packages/transport-websockets'
6464
- 'libp2p@$PWD/packages/libp2p'
65-
- name: js-libp2p-example-delegated-routing
66-
repo: https://github.com/libp2p/js-libp2p-example-delegated-routing.git
67-
deps:
68-
- 'libp2p@$PWD/packages/libp2p'
65+
# - name: js-libp2p-example-delegated-routing
66+
# repo: https://github.com/libp2p/js-libp2p-example-delegated-routing.git
67+
# deps:
68+
# - 'libp2p@$PWD/packages/libp2p'
6969
- name: js-libp2p-example-discovery-mechanisms
7070
repo: https://github.com/libp2p/js-libp2p-example-discovery-mechanisms.git
7171
deps:
@@ -106,15 +106,15 @@ jobs:
106106
- '@libp2p/tcp@$PWD/packages/transport-tcp'
107107
- '@libp2p/websockets@$PWD/packages/transport-websockets'
108108
- 'libp2p@$PWD/packages/libp2p'
109-
- name: js-libp2p-example-webrtc-private-to-private
110-
repo: https://github.com/libp2p/js-libp2p-example-webrtc-private-to-private.git
111-
deps:
112-
- '@libp2p/circuit-relay-v2@$PWD/packages/transport-circuit-relay-v2'
113-
- '@libp2p/identify@$PWD/packages/protocol-identify'
114-
- '@libp2p/ping@$PWD/packages/protocol-ping'
115-
- '@libp2p/webrtc@$PWD/packages/transport-webrtc'
116-
- '@libp2p/websockets@$PWD/packages/transport-websockets'
117-
- 'libp2p@$PWD/packages/libp2p'
109+
# - name: js-libp2p-example-webrtc-private-to-private
110+
# repo: https://github.com/libp2p/js-libp2p-example-webrtc-private-to-private.git
111+
# deps:
112+
# - '@libp2p/circuit-relay-v2@$PWD/packages/transport-circuit-relay-v2'
113+
# - '@libp2p/identify@$PWD/packages/protocol-identify'
114+
# - '@libp2p/ping@$PWD/packages/protocol-ping'
115+
# - '@libp2p/webrtc@$PWD/packages/transport-webrtc'
116+
# - '@libp2p/websockets@$PWD/packages/transport-websockets'
117+
# - 'libp2p@$PWD/packages/libp2p'
118118
steps:
119119
- uses: actions/checkout@v4
120120
- uses: actions/setup-node@v4

doc/CONFIGURATION.md

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -445,12 +445,15 @@ import { identify } from '@libp2p/identify'
445445

446446

447447
const node = await createLibp2p({
448+
addresses: {
449+
listen: {
450+
// discover a relay using the routing
451+
'/p2p-circuit'
452+
}
453+
},
448454
transports: [
449455
tcp(),
450-
circuitRelayTransport({ // allows the current node to make and accept relayed connections
451-
discoverRelays: 0, // how many network relays to find
452-
reservationConcurrency: 1 // how many relays to attempt to reserve slots on at once
453-
})
456+
circuitRelayTransport()
454457
],
455458
streamMuxers: [
456459
yamux()
@@ -499,11 +502,14 @@ import { noise } from '@chainsafe/libp2p-noise'
499502
import { circuitRelayTransport } from '@libp2p/circuit-relay-v2'
500503

501504
const node = await createLibp2p({
505+
addresses: {
506+
listen: [
507+
'/p2p-circuit'
508+
]
509+
},
502510
transports: [
503511
tcp(),
504-
circuitRelayTransport({
505-
discoverRelays: 1
506-
})
512+
circuitRelayTransport()
507513
],
508514
streamMuxers: [
509515
yamux()

doc/migrations/v0.42-v0.43.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,12 @@ const node = await createLibp2p({
6161
// ... other options
6262
addresses: {
6363
listen: {
64+
'/p2p-circuit', // discover a public relay
6465
'/ip4/123.123.123.123/p2p/QmRelay/p2p-circuit' // optionally configure a static relay
6566
}
6667
},
6768
transports: [
68-
circuitRelayClient({ // enable client portion of relay
69-
discoverRelays: 1 // find this number of network relays (default: 0)
70-
})
69+
circuitRelayClient()
7170
],
7271
relay: circuitRelayServer({ // enable server portion of relay
7372
advertise: {

interop/test/fixtures/get-libp2p.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,13 @@ export async function getLibp2p (): Promise<Libp2p<{ ping: PingService }>> {
5454
}
5555
break
5656
case 'webrtc':
57-
options.transports = [webRTC(),
57+
options.transports = [
58+
webRTC(),
5859
webSockets({ filter: filters.all }), // ws needed to connect to relay
59-
circuitRelayTransport({
60-
discoverRelays: 1
61-
}) // needed to use the relay
60+
circuitRelayTransport()
6261
]
6362
options.addresses = {
64-
listen: isDialer ? [] : ['/webrtc']
63+
listen: isDialer ? [] : ['/p2p-circuit', '/webrtc']
6564
}
6665
break
6766
case 'ws':

packages/integration-tests/test/circuit-relay-discovery.node.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,13 @@ describe('circuit-relay discovery', () => {
9292
;[local, remote] = await Promise.all([
9393
createLibp2p({
9494
addresses: {
95-
listen: ['/ip4/127.0.0.1/tcp/0']
95+
listen: [
96+
'/p2p-circuit'
97+
]
9698
},
9799
transports: [
98100
tcp(),
99-
circuitRelayTransport({
100-
discoverRelays: 1
101-
})
101+
circuitRelayTransport()
102102
],
103103
streamMuxers: [
104104
yamux()
@@ -117,13 +117,13 @@ describe('circuit-relay discovery', () => {
117117
}),
118118
createLibp2p({
119119
addresses: {
120-
listen: ['/ip4/127.0.0.1/tcp/0']
120+
listen: [
121+
'/p2p-circuit'
122+
]
121123
},
122124
transports: [
123125
tcp(),
124-
circuitRelayTransport({
125-
discoverRelays: 1
126-
})
126+
circuitRelayTransport()
127127
],
128128
streamMuxers: [
129129
yamux()

packages/integration-tests/test/circuit-relay-discovery.spec.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,16 @@ describe('circuit-relay discovery', () => {
2222

2323
beforeEach(async () => {
2424
node = await createLibp2p({
25+
addresses: {
26+
listen: [
27+
'/p2p-circuit'
28+
]
29+
},
2530
transports: [
2631
webSockets({
2732
filter: filters.all
2833
}),
29-
circuitRelayTransport({
30-
discoverRelays: 1
31-
}),
34+
circuitRelayTransport(),
3235
webTransport()
3336
],
3437
streamMuxers: [

0 commit comments

Comments
 (0)