Skip to content

Commit fe06c98

Browse files
committed
wip
Signed-off-by: Joshua Kim <20001595+joshua-kim@users.noreply.github.com>
1 parent ee24ecc commit fe06c98

File tree

5 files changed

+44
-111
lines changed

5 files changed

+44
-111
lines changed

go.mod

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/ava-labs/hypersdk
33
go 1.21.12
44

55
require (
6-
github.com/ava-labs/avalanchego v1.11.12-rc.2
6+
github.com/ava-labs/avalanchego v1.11.12-rc.2.0.20240925164311-0a46687774d3
77
github.com/bytecodealliance/wasmtime-go/v14 v14.0.0
88
github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593
99
github.com/gorilla/rpc v1.2.0
@@ -37,7 +37,7 @@ require (
3737
github.com/DataDog/zstd v1.5.2 // indirect
3838
github.com/NYTimes/gziphandler v1.1.1 // indirect
3939
github.com/VictoriaMetrics/fastcache v1.12.1 // indirect
40-
github.com/ava-labs/coreth v0.13.8-fixed-genesis-upgrade.0.20240815193440-a96bc921e732 // indirect
40+
github.com/ava-labs/coreth v0.13.8 // indirect
4141
github.com/beorn7/perks v1.0.1 // indirect
4242
github.com/bits-and-blooms/bitset v1.10.0 // indirect
4343
github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect
@@ -61,7 +61,6 @@ require (
6161
github.com/dop251/goja v0.0.0-20230806174421-c933cf95e127 // indirect
6262
github.com/ethereum/c-kzg-4844 v0.4.0 // indirect
6363
github.com/ethereum/go-ethereum v1.13.14 // indirect
64-
github.com/fjl/memsize v0.0.2 // indirect
6564
github.com/fsnotify/fsnotify v1.6.0 // indirect
6665
github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 // indirect
6766
github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect

go.sum

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,10 @@ github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY
5858
github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8=
5959
github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM=
6060
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
61-
github.com/ava-labs/avalanchego v1.11.12-rc.2 h1:H1C0gsTOtwMD3qrouEqry0hfoBIC//9lEiDh/AvpaaY=
62-
github.com/ava-labs/avalanchego v1.11.12-rc.2/go.mod h1:yFx3V31Jy9NFa8GZlgGnwiVf8KGjeF2+Uc99l9Scd/8=
63-
github.com/ava-labs/coreth v0.13.8-fixed-genesis-upgrade.0.20240815193440-a96bc921e732 h1:wlhGJbmb7s3bU2QWtxKjscGjfHknQiq+cVhhUjONsB8=
64-
github.com/ava-labs/coreth v0.13.8-fixed-genesis-upgrade.0.20240815193440-a96bc921e732/go.mod h1:RkQLaQ961Xe/sUb3ycn4Qi18vPPuEetTqDf2eDcquAs=
61+
github.com/ava-labs/avalanchego v1.11.12-rc.2.0.20240925164311-0a46687774d3 h1:UBhn6lWfTRHAWHPTV/eAXeGgOefV5XegKnLNPfjZ+io=
62+
github.com/ava-labs/avalanchego v1.11.12-rc.2.0.20240925164311-0a46687774d3/go.mod h1:YzHJbHAJOlRLwG1pxWk4uAI7nvV4cxpgQL1FSAx/H4Y=
63+
github.com/ava-labs/coreth v0.13.8 h1:f14X3KgwHl9LwzfxlN6S4bbn5VA2rhEsNnHaRLSTo/8=
64+
github.com/ava-labs/coreth v0.13.8/go.mod h1:t3BSv/eQv0AlDPMfEDCMMoD/jq1RkUsbFzQAFg5qBcE=
6565
github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g=
6666
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
6767
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
@@ -184,8 +184,6 @@ github.com/ethereum/go-ethereum v1.13.14 h1:EwiY3FZP94derMCIam1iW4HFVrSgIcpsu0Hw
184184
github.com/ethereum/go-ethereum v1.13.14/go.mod h1:TN8ZiHrdJwSe8Cb6x+p0hs5CxhJZPbqB7hHkaUXcmIU=
185185
github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8=
186186
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
187-
github.com/fjl/memsize v0.0.2 h1:27txuSD9or+NZlnOWdKUxeBzTAUkWCVh+4Gf2dWFOzA=
188-
github.com/fjl/memsize v0.0.2/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0=
189187
github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY=
190188
github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
191189
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=

vm/network_state_sync.go

Lines changed: 0 additions & 66 deletions
This file was deleted.

vm/syncervm_client.go

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -121,31 +121,19 @@ func (s *stateSyncerClient) AcceptedSyncableBlock(
121121

122122
// Initialize metrics for sync client
123123
r := prometheus.NewRegistry()
124-
metrics, err := avasync.NewMetrics("sync_client", r)
125-
if err != nil {
126-
return block.StateSyncSkipped, err
127-
}
128124
if err := s.gatherer.Register("syncer", r); err != nil {
129125
return block.StateSyncSkipped, err
130126
}
131-
syncClient, err := avasync.NewClient(&avasync.ClientConfig{
132-
BranchFactor: s.vm.genesis.GetStateBranchFactor(),
133-
NetworkClient: s.vm.stateSyncNetworkClient,
134-
Log: s.vm.snowCtx.Log,
135-
Metrics: metrics,
136-
StateSyncNodeIDs: nil, // pull from all
137-
})
138-
if err != nil {
139-
return block.StateSyncSkipped, err
140-
}
127+
141128
s.syncManager, err = avasync.NewManager(avasync.ManagerConfig{
142129
BranchFactor: s.vm.genesis.GetStateBranchFactor(),
143130
DB: s.vm.stateDB,
144-
Client: syncClient,
131+
RangeProofClient: s.vm.p2pNetwork.NewClient(rangeProofHandlerID),
132+
ChangeProofClient: s.vm.p2pNetwork.NewClient(changeProofHandlerID),
145133
SimultaneousWorkLimit: s.vm.config.StateSyncParallelism,
146134
Log: s.vm.snowCtx.Log,
147135
TargetRoot: sb.StateRoot,
148-
})
136+
}, r)
149137
if err != nil {
150138
return block.StateSyncSkipped, err
151139
}

vm/vm.go

Lines changed: 34 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515

1616
"github.com/ava-labs/avalanchego/database"
1717
"github.com/ava-labs/avalanchego/ids"
18+
"github.com/ava-labs/avalanchego/network/p2p"
1819
"github.com/ava-labs/avalanchego/snow"
1920
"github.com/ava-labs/avalanchego/snow/consensus/snowman"
2021
"github.com/ava-labs/avalanchego/snow/engine/common"
@@ -59,6 +60,9 @@ const (
5960

6061
MaxAcceptorSize = 256
6162
MinAcceptedBlockWindow = 1024
63+
64+
rangeProofHandlerID = 0x0
65+
changeProofHandlerID = 0x1
6266
)
6367

6468
type VM struct {
@@ -133,17 +137,17 @@ type VM struct {
133137

134138
// State Sync client and AppRequest handlers
135139
stateSyncClient *stateSyncerClient
136-
stateSyncNetworkClient avasync.NetworkClient
137-
stateSyncNetworkServer *avasync.NetworkServer
140+
stateSyncNetworkClient *p2p.Client
138141

139142
// Network manager routes p2p messages to pre-registered handlers
140143
networkManager *network.Manager
141144

142145
metrics *Metrics
143146
profiler profiler.ContinuousProfiler
144147

145-
ready chan struct{}
146-
stop chan struct{}
148+
ready chan struct{}
149+
stop chan struct{}
150+
p2pNetwork *p2p.Network
147151
}
148152

149153
func New(
@@ -212,6 +216,13 @@ func (vm *VM) Initialize(
212216
vm.proposerMonitor = validators.NewProposerMonitor(vm, vm.snowCtx)
213217
vm.networkManager = network.NewManager(vm.snowCtx.Log, vm.snowCtx.NodeID, appSender)
214218

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+
215226
pebbleConfig := pebble.NewDefaultConfig()
216227
vm.vmDB, err = storage.New(pebbleConfig, vm.snowCtx.ChainDataDir, blockDB, vm.snowCtx.Metrics)
217228
if err != nil {
@@ -424,26 +435,21 @@ func (vm *VM) Initialize(
424435
go vm.processAcceptedBlocks()
425436

426437
// 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 {
439444
return err
440445
}
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 {
442451
return err
443452
}
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))
447453

448454
// Setup gossip networking
449455
gossipHandler, gossipSender := vm.networkManager.Register()
@@ -1040,6 +1046,10 @@ func (vm *VM) Connected(ctx context.Context, nodeID ids.NodeID, v *version.Appli
10401046
ctx, span := vm.tracer.Start(ctx, "VM.Connected")
10411047
defer span.End()
10421048

1049+
if err := vm.p2pNetwork.Connected(ctx, nodeID, v); err != nil {
1050+
return err
1051+
}
1052+
10431053
return vm.networkManager.Connected(ctx, nodeID, v)
10441054
}
10451055

@@ -1048,6 +1058,10 @@ func (vm *VM) Disconnected(ctx context.Context, nodeID ids.NodeID) error {
10481058
ctx, span := vm.tracer.Start(ctx, "VM.Disconnected")
10491059
defer span.End()
10501060

1061+
if err := vm.p2pNetwork.Disconnected(ctx, nodeID); err != nil {
1062+
return err
1063+
}
1064+
10511065
return vm.networkManager.Disconnected(ctx, nodeID)
10521066
}
10531067

0 commit comments

Comments
 (0)