Skip to content

Commit 4230b89

Browse files
author
Lat Murmeldjur
committed
Feat: gossip extra webrtc underlays
1 parent 0cc0e51 commit 4230b89

19 files changed

Lines changed: 569 additions & 295 deletions

File tree

cmd/bee/cmd/cmd.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,9 @@ const (
3232
optionNamePasswordFile = "password-file"
3333
optionNameAPIAddr = "api-addr"
3434
optionNameP2PAddr = "p2p-addr"
35+
optionNameWebRTCAddr = "webrtc-addr"
3536
optionNameNATAddr = "nat-addr"
36-
optionNameP2PWSEnable = "p2p-ws-enable"
37+
optionNameP2PWebRTCEnable = "p2p-webrtc-enable"
3738
optionNameBootnodes = "bootnode"
3839
optionNameNetworkID = "network-id"
3940
optionWelcomeMessage = "welcome-message"
@@ -244,8 +245,9 @@ func (c *command) setAllFlags(cmd *cobra.Command) {
244245
cmd.Flags().String(optionNamePasswordFile, "", "path to a file that contains password for decrypting keys")
245246
cmd.Flags().String(optionNameAPIAddr, "127.0.0.1:1633", "HTTP API listen address")
246247
cmd.Flags().String(optionNameP2PAddr, ":1634", "P2P listen address")
248+
cmd.Flags().String(optionNameWebRTCAddr, ":4336", "P2P WebRTC listen port")
247249
cmd.Flags().String(optionNameNATAddr, "", "NAT exposed address")
248-
cmd.Flags().Bool(optionNameP2PWSEnable, false, "enable P2P WebSocket transport")
250+
cmd.Flags().Bool(optionNameP2PWebRTCEnable, true, "enable P2P WebRTC transport")
249251
cmd.Flags().StringSlice(optionNameBootnodes, []string{"/dnsaddr/mainnet.ethswarm.org"}, "initial nodes to connect to")
250252
cmd.Flags().Uint64(optionNameNetworkID, chaincfg.Mainnet.NetworkID, "ID of the Swarm network")
251253
cmd.Flags().StringSlice(optionCORSAllowedOrigins, []string{}, "origins with CORS headers enabled")

cmd/bee/cmd/start.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -277,14 +277,15 @@ func buildBeeNode(ctx context.Context, c *command, cmd *cobra.Command, logger lo
277277
neighborhoodSuggester = c.config.GetString(optionNameNeighborhoodSuggester)
278278
}
279279

280-
b, err := node.NewBee(ctx, c.config.GetString(optionNameP2PAddr), signerConfig.publicKey, signerConfig.signer, networkID, logger, signerConfig.libp2pPrivateKey, signerConfig.pssPrivateKey, signerConfig.session, &node.Options{
280+
b, err := node.NewBee(ctx, c.config.GetString(optionNameP2PAddr), c.config.GetString(optionNameWebRTCAddr), signerConfig.publicKey, signerConfig.signer, networkID, logger, signerConfig.libp2pPrivateKey, signerConfig.pssPrivateKey, signerConfig.session, &node.Options{
281281
Addr: c.config.GetString(optionNameP2PAddr),
282282
AllowPrivateCIDRs: c.config.GetBool(optionNameAllowPrivateCIDRs),
283283
APIAddr: c.config.GetString(optionNameAPIAddr),
284284
BlockchainRpcEndpoint: c.config.GetString(optionNameBlockchainRpcEndpoint),
285285
BlockProfile: c.config.GetBool(optionNamePProfBlock),
286286
BlockTime: networkConfig.blockTime,
287287
BootnodeMode: bootNode,
288+
WebRTCAddr: c.config.GetString(optionNameWebRTCAddr),
288289
Bootnodes: networkConfig.bootNodes,
289290
CacheCapacity: c.config.GetUint64(optionNameCacheCapacity),
290291
ChainID: networkConfig.chainID,
@@ -296,7 +297,7 @@ func buildBeeNode(ctx context.Context, c *command, cmd *cobra.Command, logger lo
296297
DBOpenFilesLimit: c.config.GetUint64(optionNameDBOpenFilesLimit),
297298
DBWriteBufferSize: c.config.GetUint64(optionNameDBWriteBufferSize),
298299
EnableStorageIncentives: c.config.GetBool(optionNameStorageIncentivesEnable),
299-
EnableWS: c.config.GetBool(optionNameP2PWSEnable),
300+
EnableWebRTC: c.config.GetBool(optionNameP2PWebRTCEnable),
300301
FullNodeMode: fullNode,
301302
Logger: logger,
302303
MinimumGasTipCap: c.config.GetUint64(optionNameMinimumGasTipCap),

go.mod

Lines changed: 70 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,23 @@ require (
1717
github.com/ethersphere/langos v1.0.0
1818
github.com/go-playground/validator/v10 v10.11.1
1919
github.com/gogo/protobuf v1.3.2
20-
github.com/google/go-cmp v0.6.0
21-
github.com/google/uuid v1.4.0
20+
github.com/google/go-cmp v0.7.0
21+
github.com/google/uuid v1.6.0
2222
github.com/gorilla/handlers v1.4.2
2323
github.com/gorilla/mux v1.8.0
24-
github.com/gorilla/websocket v1.5.1
24+
github.com/gorilla/websocket v1.5.3
2525
github.com/hashicorp/go-multierror v1.1.1
26-
github.com/hashicorp/golang-lru/v2 v2.0.5
27-
github.com/ipfs/go-cid v0.4.1
26+
github.com/hashicorp/golang-lru/v2 v2.0.7
27+
github.com/ipfs/go-cid v0.5.0
2828
github.com/kardianos/service v1.2.2
2929
github.com/klauspost/reedsolomon v1.11.8
30-
github.com/libp2p/go-libp2p v0.33.2
31-
github.com/multiformats/go-multiaddr v0.12.3
32-
github.com/multiformats/go-multiaddr-dns v0.3.1
30+
github.com/libp2p/go-libp2p v0.42.1
31+
github.com/multiformats/go-multiaddr v0.16.0
32+
github.com/multiformats/go-multiaddr-dns v0.4.1
3333
github.com/multiformats/go-multihash v0.2.3
34-
github.com/multiformats/go-multistream v0.5.0
34+
github.com/multiformats/go-multistream v0.6.1
3535
github.com/opentracing/opentracing-go v1.2.0
36-
github.com/prometheus/client_golang v1.21.1
36+
github.com/prometheus/client_golang v1.22.0
3737
github.com/spf13/afero v1.6.0
3838
github.com/spf13/cobra v1.8.1
3939
github.com/spf13/viper v1.7.0
@@ -45,18 +45,47 @@ require (
4545
gitlab.com/nolash/go-mockbytes v0.0.7
4646
go.uber.org/atomic v1.11.0
4747
go.uber.org/goleak v1.3.0
48-
golang.org/x/crypto v0.36.0
49-
golang.org/x/sync v0.12.0
50-
golang.org/x/sys v0.31.0
51-
golang.org/x/term v0.30.0
52-
golang.org/x/time v0.9.0
48+
golang.org/x/crypto v0.39.0
49+
golang.org/x/sync v0.15.0
50+
golang.org/x/sys v0.33.0
51+
golang.org/x/term v0.32.0
52+
golang.org/x/time v0.12.0
5353
gopkg.in/yaml.v2 v2.4.0
5454
resenje.org/feed v0.1.2
5555
resenje.org/multex v0.1.0
5656
resenje.org/singleflight v0.4.0
5757
resenje.org/web v0.4.3
5858
)
5959

60+
require (
61+
github.com/filecoin-project/go-clock v0.1.0 // indirect
62+
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
63+
github.com/libp2p/go-yamux/v5 v5.1.0 // indirect
64+
github.com/nxadm/tail v1.4.8 // indirect
65+
github.com/pion/datachannel v1.5.10 // indirect
66+
github.com/pion/dtls/v2 v2.2.12 // indirect
67+
github.com/pion/dtls/v3 v3.0.6 // indirect
68+
github.com/pion/ice/v4 v4.0.10 // indirect
69+
github.com/pion/interceptor v0.1.40 // indirect
70+
github.com/pion/logging v0.2.3 // indirect
71+
github.com/pion/mdns/v2 v2.0.7 // indirect
72+
github.com/pion/randutil v0.1.0 // indirect
73+
github.com/pion/rtcp v1.2.15 // indirect
74+
github.com/pion/rtp v1.8.19 // indirect
75+
github.com/pion/sctp v1.8.39 // indirect
76+
github.com/pion/sdp/v3 v3.0.13 // indirect
77+
github.com/pion/srtp/v3 v3.0.6 // indirect
78+
github.com/pion/stun v0.6.1 // indirect
79+
github.com/pion/stun/v3 v3.0.0 // indirect
80+
github.com/pion/transport/v2 v2.2.10 // indirect
81+
github.com/pion/transport/v3 v3.0.7 // indirect
82+
github.com/pion/turn/v4 v4.0.2 // indirect
83+
github.com/pion/webrtc/v4 v4.1.2 // indirect
84+
github.com/wlynxg/anet v0.0.5 // indirect
85+
go.uber.org/automaxprocs v1.6.0 // indirect
86+
golang.org/x/net v0.41.0 // indirect
87+
)
88+
6089
require (
6190
github.com/BurntSushi/toml v1.1.0 // indirect
6291
github.com/Microsoft/go-winio v0.6.2 // indirect
@@ -69,16 +98,12 @@ require (
6998
github.com/codahale/hdrhistogram v0.0.0-00010101000000-000000000000 // indirect
7099
github.com/consensys/bavard v0.1.27 // indirect
71100
github.com/consensys/gnark-crypto v0.16.0 // indirect
72-
github.com/containerd/cgroups v1.1.0 // indirect
73-
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
74101
github.com/crate-crypto/go-eth-kzg v1.3.0 // indirect
75102
github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a // indirect
76103
github.com/davecgh/go-spew v1.1.1 // indirect
77104
github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect
78105
github.com/deckarep/golang-set/v2 v2.6.0 // indirect
79-
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect
80-
github.com/docker/go-units v0.5.0 // indirect
81-
github.com/elastic/gosigar v0.14.2 // indirect
106+
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 // indirect
82107
github.com/ethereum/c-kzg-4844/v2 v2.1.0 // indirect
83108
github.com/ethereum/go-verkle v0.2.2 // indirect
84109
github.com/felixge/fgprof v0.9.5
@@ -90,37 +115,33 @@ require (
90115
github.com/go-ole/go-ole v1.3.0 // indirect
91116
github.com/go-playground/locales v0.14.0 // indirect
92117
github.com/go-playground/universal-translator v0.18.0 // indirect
93-
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect
94-
github.com/godbus/dbus/v5 v5.1.0 // indirect
95118
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
96119
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect
97120
github.com/google/gopacket v1.1.19 // indirect
98-
github.com/google/pprof v0.0.0-20240227163752-401108e1b7e7 // indirect
121+
github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a // indirect
99122
github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 // indirect
100123
github.com/hashicorp/errwrap v1.0.0 // indirect
101124
github.com/hashicorp/hcl v1.0.0 // indirect
102125
github.com/holiman/uint256 v1.3.2 // indirect
103126
github.com/huin/goupnp v1.3.0 // indirect
104127
github.com/inconshreveable/mousetrap v1.1.0 // indirect
105-
github.com/ipfs/go-log/v2 v2.5.1 // indirect
128+
github.com/ipfs/go-log/v2 v2.6.0 // indirect
106129
github.com/jackpal/go-nat-pmp v1.0.2 // indirect
107130
github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect
108-
github.com/klauspost/compress v1.17.11 // indirect
109-
github.com/klauspost/cpuid/v2 v2.2.7 // indirect
110-
github.com/koron/go-ssdp v0.0.4 // indirect
131+
github.com/klauspost/compress v1.18.0 // indirect
132+
github.com/klauspost/cpuid/v2 v2.2.10 // indirect
133+
github.com/koron/go-ssdp v0.0.6 // indirect
111134
github.com/leodido/go-urn v1.2.1 // indirect
112135
github.com/libp2p/go-buffer-pool v0.1.0 // indirect
113-
github.com/libp2p/go-flow-metrics v0.1.0 // indirect
136+
github.com/libp2p/go-flow-metrics v0.3.0 // indirect
114137
github.com/libp2p/go-libp2p-asn-util v0.4.1 // indirect
115138
github.com/libp2p/go-msgio v0.3.0 // indirect
116-
github.com/libp2p/go-nat v0.2.0 // indirect
117-
github.com/libp2p/go-netroute v0.2.1 // indirect
139+
github.com/libp2p/go-netroute v0.2.2 // indirect
118140
github.com/libp2p/go-reuseport v0.4.0 // indirect
119-
github.com/libp2p/go-yamux/v4 v4.0.1 // indirect
120141
github.com/magiconair/properties v1.8.1 // indirect
121142
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect
122143
github.com/mattn/go-isatty v0.0.20 // indirect
123-
github.com/miekg/dns v1.1.58 // indirect
144+
github.com/miekg/dns v1.1.66 // indirect
124145
github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect
125146
github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect
126147
github.com/minio/sha256-simd v1.0.1 // indirect
@@ -131,23 +152,21 @@ require (
131152
github.com/multiformats/go-base36 v0.2.0 // indirect
132153
github.com/multiformats/go-multiaddr-fmt v0.1.0 // indirect
133154
github.com/multiformats/go-multibase v0.2.0 // indirect
134-
github.com/multiformats/go-multicodec v0.9.0 // indirect
155+
github.com/multiformats/go-multicodec v0.9.1 // indirect
135156
github.com/multiformats/go-varint v0.0.7 // indirect
136157
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
137-
github.com/onsi/ginkgo/v2 v2.15.0 // indirect
138-
github.com/opencontainers/runtime-spec v1.2.0 // indirect
158+
github.com/onsi/ginkgo/v2 v2.23.4 // indirect
139159
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect
140160
github.com/pelletier/go-toml v1.8.0 // indirect
141161
github.com/pkg/errors v0.9.1 // indirect
142162
github.com/pmezard/go-difflib v1.0.0 // indirect
143-
github.com/prometheus/client_model v0.6.1 // indirect
144-
github.com/prometheus/common v0.62.0
145-
github.com/prometheus/procfs v0.15.1 // indirect
163+
github.com/prometheus/client_model v0.6.2 // indirect
164+
github.com/prometheus/common v0.64.0
165+
github.com/prometheus/procfs v0.16.1 // indirect
146166
github.com/prometheus/statsd_exporter v0.22.7 // indirect
147-
github.com/quic-go/qpack v0.4.0 // indirect
148-
github.com/quic-go/quic-go v0.42.0 // indirect
149-
github.com/quic-go/webtransport-go v0.6.0 // indirect
150-
github.com/raulk/go-watchdog v1.3.0 // indirect
167+
github.com/quic-go/qpack v0.5.1 // indirect
168+
github.com/quic-go/quic-go v0.52.0 // indirect
169+
github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66 // indirect
151170
github.com/shirou/gopsutil v3.21.5+incompatible // indirect
152171
github.com/smartystreets/assertions v1.1.1 // indirect
153172
github.com/spaolacci/murmur3 v1.1.0 // indirect
@@ -162,20 +181,19 @@ require (
162181
github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
163182
github.com/wealdtech/go-multicodec v1.4.0 // indirect
164183
go.opencensus.io v0.24.0 // indirect
165-
go.uber.org/dig v1.17.1 // indirect
166-
go.uber.org/fx v1.20.1 // indirect
167-
go.uber.org/mock v0.4.0 // indirect
184+
go.uber.org/dig v1.19.0 // indirect
185+
go.uber.org/fx v1.24.0 // indirect
186+
go.uber.org/mock v0.5.2 // indirect
168187
go.uber.org/multierr v1.11.0 // indirect
169188
go.uber.org/zap v1.27.0 // indirect
170-
golang.org/x/exp v0.0.0-20240213143201-ec583247a57a // indirect
171-
golang.org/x/mod v0.22.0 // indirect
172-
golang.org/x/net v0.38.0 // indirect
173-
golang.org/x/text v0.23.0 // indirect
174-
golang.org/x/tools v0.29.0 // indirect
175-
google.golang.org/protobuf v1.36.1 // indirect
189+
golang.org/x/exp v0.0.0-20250606033433-dcc06ee1d476 // indirect
190+
golang.org/x/mod v0.25.0 // indirect
191+
golang.org/x/text v0.26.0 // indirect
192+
golang.org/x/tools v0.34.0 // indirect
193+
google.golang.org/protobuf v1.36.6 // indirect
176194
gopkg.in/ini.v1 v1.57.0 // indirect
177195
gopkg.in/yaml.v3 v3.0.1 // indirect
178-
lukechampine.com/blake3 v1.2.1 // indirect
196+
lukechampine.com/blake3 v1.4.1 // indirect
179197
rsc.io/tmplfunc v0.0.3 // indirect
180198
)
181199

0 commit comments

Comments
 (0)