@@ -15,6 +15,7 @@ import (
15
15
16
16
"github.com/ava-labs/avalanchego/database"
17
17
"github.com/ava-labs/avalanchego/ids"
18
+ "github.com/ava-labs/avalanchego/network/p2p"
18
19
"github.com/ava-labs/avalanchego/snow"
19
20
"github.com/ava-labs/avalanchego/snow/consensus/snowman"
20
21
"github.com/ava-labs/avalanchego/snow/engine/common"
@@ -59,6 +60,9 @@ const (
59
60
60
61
MaxAcceptorSize = 256
61
62
MinAcceptedBlockWindow = 1024
63
+
64
+ rangeProofHandlerID = 0x0
65
+ changeProofHandlerID = 0x1
62
66
)
63
67
64
68
type VM struct {
@@ -133,17 +137,17 @@ type VM struct {
133
137
134
138
// State Sync client and AppRequest handlers
135
139
stateSyncClient * stateSyncerClient
136
- stateSyncNetworkClient avasync.NetworkClient
137
- stateSyncNetworkServer * avasync.NetworkServer
140
+ stateSyncNetworkClient * p2p.Client
138
141
139
142
// Network manager routes p2p messages to pre-registered handlers
140
143
networkManager * network.Manager
141
144
142
145
metrics * Metrics
143
146
profiler profiler.ContinuousProfiler
144
147
145
- ready chan struct {}
146
- stop chan struct {}
148
+ ready chan struct {}
149
+ stop chan struct {}
150
+ p2pNetwork * p2p.Network
147
151
}
148
152
149
153
func New (
@@ -212,6 +216,13 @@ func (vm *VM) Initialize(
212
216
vm .proposerMonitor = validators .NewProposerMonitor (vm , vm .snowCtx )
213
217
vm .networkManager = network .NewManager (vm .snowCtx .Log , vm .snowCtx .NodeID , appSender )
214
218
219
+ p2pNetwork , err := p2p .NewNetwork (vm .snowCtx .Log , appSender , defaultRegistry , "p2p" )
220
+ if err != nil {
221
+ return fmt .Errorf ("failed to initialize p2p: %w" , err )
222
+ }
223
+
224
+ vm .p2pNetwork = p2pNetwork
225
+
215
226
pebbleConfig := pebble .NewDefaultConfig ()
216
227
vm .vmDB , err = storage .New (pebbleConfig , vm .snowCtx .ChainDataDir , blockDB , vm .snowCtx .Metrics )
217
228
if err != nil {
@@ -424,26 +435,21 @@ func (vm *VM) Initialize(
424
435
go vm .processAcceptedBlocks ()
425
436
426
437
// Setup state syncing
427
- stateSyncHandler , stateSyncSender := vm .networkManager .Register ()
428
- syncRegistry := prometheus .NewRegistry ()
429
- vm .stateSyncNetworkClient , err = avasync .NewNetworkClient (
430
- stateSyncSender ,
431
- vm .snowCtx .NodeID ,
432
- int64 (vm .config .StateSyncParallelism ),
433
- vm .Logger (),
434
- "" ,
435
- syncRegistry ,
436
- nil , // TODO: populate minimum version
437
- )
438
- if err != nil {
438
+ vm .stateSyncClient = vm .NewStateSyncClient (vm .snowCtx .Metrics )
439
+
440
+ if err := vm .p2pNetwork .AddHandler (
441
+ 0x0 ,
442
+ avasync .NewGetRangeProofHandler (vm .snowCtx .Log , vm .stateDB ),
443
+ ); err != nil {
439
444
return err
440
445
}
441
- if err := vm .snowCtx .Metrics .Register ("sync" , syncRegistry ); err != nil {
446
+
447
+ if err := vm .p2pNetwork .AddHandler (
448
+ 0x1 ,
449
+ avasync .NewGetChangeProofHandler (vm .snowCtx .Log , vm .stateDB ),
450
+ ); err != nil {
442
451
return err
443
452
}
444
- vm .stateSyncClient = vm .NewStateSyncClient (vm .snowCtx .Metrics )
445
- vm .stateSyncNetworkServer = avasync .NewNetworkServer (stateSyncSender , vm .stateDB , vm .Logger ())
446
- vm .networkManager .SetHandler (stateSyncHandler , NewStateSyncHandler (vm ))
447
453
448
454
// Setup gossip networking
449
455
gossipHandler , gossipSender := vm .networkManager .Register ()
@@ -1040,6 +1046,10 @@ func (vm *VM) Connected(ctx context.Context, nodeID ids.NodeID, v *version.Appli
1040
1046
ctx , span := vm .tracer .Start (ctx , "VM.Connected" )
1041
1047
defer span .End ()
1042
1048
1049
+ if err := vm .p2pNetwork .Connected (ctx , nodeID , v ); err != nil {
1050
+ return err
1051
+ }
1052
+
1043
1053
return vm .networkManager .Connected (ctx , nodeID , v )
1044
1054
}
1045
1055
@@ -1048,6 +1058,10 @@ func (vm *VM) Disconnected(ctx context.Context, nodeID ids.NodeID) error {
1048
1058
ctx , span := vm .tracer .Start (ctx , "VM.Disconnected" )
1049
1059
defer span .End ()
1050
1060
1061
+ if err := vm .p2pNetwork .Disconnected (ctx , nodeID ); err != nil {
1062
+ return err
1063
+ }
1064
+
1051
1065
return vm .networkManager .Disconnected (ctx , nodeID )
1052
1066
}
1053
1067
0 commit comments