@@ -6,18 +6,19 @@ import (
66 "errors"
77 "fmt"
88 "math/rand"
9- "strings"
109 "time"
1110
1211 "github.com/Masterminds/semver/v3"
1312 "github.com/NethermindEth/juno/blockchain"
1413 "github.com/NethermindEth/juno/db"
14+ "github.com/NethermindEth/juno/p2p/dht"
1515 p2pPeers "github.com/NethermindEth/juno/p2p/peers"
16+ "github.com/NethermindEth/juno/p2p/starknetp2p"
1617 p2pSync "github.com/NethermindEth/juno/p2p/sync"
1718 junoSync "github.com/NethermindEth/juno/sync"
1819 "github.com/NethermindEth/juno/utils"
1920 "github.com/libp2p/go-libp2p"
20- dht "github.com/libp2p/go-libp2p-kad-dht"
21+ libp2pdht "github.com/libp2p/go-libp2p-kad-dht"
2122 pubsub "github.com/libp2p/go-libp2p-pubsub"
2223 "github.com/libp2p/go-libp2p/core/crypto"
2324 "github.com/libp2p/go-libp2p/core/crypto/pb"
@@ -42,7 +43,7 @@ type Service struct {
4243 handler * p2pPeers.Handler
4344 log utils.SimpleLogger
4445
45- dht * dht .IpfsDHT
46+ dht * libp2pdht .IpfsDHT
4647 pubsub * pubsub.PubSub
4748
4849 synchroniser * p2pSync.Service
@@ -116,29 +117,27 @@ func New(addr, publicAddr, version, peers, privKeyStr string, feederNode bool, b
116117func NewWithHost (p2phost host.Host , peers string , feederNode bool , bc * blockchain.Blockchain , snNetwork * utils.Network ,
117118 log utils.SimpleLogger , database db.KeyValueStore ,
118119) (* Service , error ) {
119- var (
120- peersAddrInfoS []peer.AddrInfo
121- err error
122- )
123-
124- peersAddrInfoS , err = loadPeers (database )
120+ peersAddrInfoS , err := loadPeers (database )
125121 if err != nil {
126122 log .Warnw ("Failed to load peers" , "err" , err )
127123 }
128124
129- if peers != "" {
130- for peerStr := range strings .SplitSeq (peers , "," ) {
131- var peerAddr * peer.AddrInfo
132- peerAddr , err = peer .AddrInfoFromString (peerStr )
133- if err != nil {
134- return nil , fmt .Errorf ("addr info from %q: %w" , peerStr , err )
135- }
136-
137- peersAddrInfoS = append (peersAddrInfoS , * peerAddr )
138- }
125+ configuredPeers , err := dht .ExtractPeers (peers )
126+ if err != nil {
127+ return nil , fmt .Errorf ("unable to extract peers: %w" , err )
139128 }
140129
141- p2pdht , err := makeDHT (p2phost , peersAddrInfoS )
130+ peersAddrInfoS = append (peersAddrInfoS , configuredPeers ... )
131+
132+ p2pdht , err := dht .New (
133+ context .Background (),
134+ p2phost ,
135+ snNetwork ,
136+ starknetp2p .SyncProtocolID ,
137+ func () []peer.AddrInfo {
138+ return peersAddrInfoS
139+ },
140+ )
142141 if err != nil {
143142 return nil , err
144143 }
@@ -160,15 +159,6 @@ func NewWithHost(p2phost host.Host, peers string, feederNode bool, bc *blockchai
160159 return s , nil
161160}
162161
163- func makeDHT (p2phost host.Host , addrInfos []peer.AddrInfo ) (* dht.IpfsDHT , error ) {
164- return dht .New (context .Background (), p2phost ,
165- dht .ProtocolPrefix (p2pSync .Prefix ),
166- dht .BootstrapPeers (addrInfos ... ),
167- dht .RoutingTableRefreshPeriod (routingTableRefreshPeriod ),
168- dht .Mode (dht .ModeServer ),
169- )
170- }
171-
172162func privateKey (privKeyStr string ) (crypto.PrivKey , error ) {
173163 if privKeyStr == "" {
174164 // Creates a new key pair for this host.
@@ -255,11 +245,11 @@ func (s *Service) Run(ctx context.Context) error {
255245}
256246
257247func (s * Service ) setProtocolHandlers () {
258- s .SetProtocolHandler (p2pSync . HeadersPID () , s .handler .HeadersHandler )
259- s .SetProtocolHandler (p2pSync . EventsPID () , s .handler .EventsHandler )
260- s .SetProtocolHandler (p2pSync . TransactionsPID () , s .handler .TransactionsHandler )
261- s .SetProtocolHandler (p2pSync . ClassesPID () , s .handler .ClassesHandler )
262- s .SetProtocolHandler (p2pSync . StateDiffPID () , s .handler .StateDiffHandler )
248+ s .SetProtocolHandler (starknetp2p . HeadersSyncSubProtocol , s .handler .HeadersHandler )
249+ s .SetProtocolHandler (starknetp2p . EventsSyncSubProtocol , s .handler .EventsHandler )
250+ s .SetProtocolHandler (starknetp2p . TransactionsSyncSubProtocol , s .handler .TransactionsHandler )
251+ s .SetProtocolHandler (starknetp2p . ClassesSyncSubProtocol , s .handler .ClassesHandler )
252+ s .SetProtocolHandler (starknetp2p . StateDiffSyncSubProtocol , s .handler .StateDiffHandler )
263253}
264254
265255func (s * Service ) callAndLogErr (f func () error , msg string ) {
@@ -309,8 +299,11 @@ func (s *Service) NewStream(ctx context.Context, pids ...protocol.ID) (network.S
309299 }
310300}
311301
312- func (s * Service ) SetProtocolHandler (pid protocol.ID , handler func (network.Stream )) {
313- s .host .SetStreamHandler (pid , handler )
302+ func (s * Service ) SetProtocolHandler (
303+ syncSubProtocol starknetp2p.SyncSubProtocol ,
304+ handler func (network.Stream ),
305+ ) {
306+ s .host .SetStreamHandler (starknetp2p .Sync (s .network , syncSubProtocol ), handler )
314307}
315308
316309func (s * Service ) WithListener (l junoSync.EventListener ) {
0 commit comments