Skip to content

Commit f5ee5d2

Browse files
Add SAE factory with state-sync stubs (#5604)
1 parent ffe6d85 commit f5ee5d2

3 files changed

Lines changed: 93 additions & 0 deletions

File tree

vms/saevm/cchain/BUILD.bazel

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,11 @@ go_library(
2222
srcs = [
2323
"api.go",
2424
"config.go",
25+
"factory.go",
2526
"genesis.go",
2627
"gossip.go",
2728
"hooks.go",
29+
"sync.go",
2830
"vm.go",
2931
"warp.go",
3032
],
@@ -66,12 +68,14 @@ go_library(
6668
"//utils/logging",
6769
"//utils/rpc",
6870
"//utils/set",
71+
"//vms",
6972
"//vms/components/avax",
7073
"//vms/components/gas",
7174
"//vms/evm/acp176",
7275
"//vms/evm/acp226",
7376
"//vms/evm/database",
7477
"//vms/platformvm/warp",
78+
"//vms/saevm/adaptor",
7579
"//vms/saevm/blocks",
7680
"//vms/saevm/cchain/dynamic",
7781
"//vms/saevm/cchain/state",

vms/saevm/cchain/factory.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// Copyright (C) 2019, Ava Labs, Inc. All rights reserved.
2+
// See the file LICENSE for licensing terms.
3+
4+
package cchain
5+
6+
import (
7+
"time"
8+
9+
"github.com/ava-labs/avalanchego/snow/engine/snowman/block"
10+
"github.com/ava-labs/avalanchego/utils/logging"
11+
"github.com/ava-labs/avalanchego/vms"
12+
"github.com/ava-labs/avalanchego/vms/saevm/adaptor"
13+
)
14+
15+
var _ vms.Factory = (*Factory)(nil)
16+
17+
// Factory creates new C-Chain VMs.
18+
type Factory struct{}
19+
20+
// New creates a new C-Chain VM.
21+
func (*Factory) New(log logging.Logger) (interface{}, error) {
22+
log.Info("Creating new C-Chain SAE VM")
23+
vm := &VM{
24+
pullGossipPeriod: time.Second,
25+
pushGossipPeriod: 100 * time.Millisecond,
26+
now: time.Now,
27+
}
28+
type fullVM struct {
29+
adaptor.ChainVMWithContext
30+
block.StateSyncableVM
31+
}
32+
return fullVM{
33+
adaptor.Convert(vm),
34+
adaptor.ConvertStateSync(&syncer{}),
35+
}, nil
36+
}

vms/saevm/cchain/sync.go

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
// Copyright (C) 2019, Ava Labs, Inc. All rights reserved.
2+
// See the file LICENSE for licensing terms.
3+
4+
package cchain
5+
6+
import (
7+
"context"
8+
9+
"github.com/ava-labs/avalanchego/database"
10+
"github.com/ava-labs/avalanchego/ids"
11+
"github.com/ava-labs/avalanchego/snow/engine/snowman/block"
12+
)
13+
14+
// TODO(#5513): Implement C-Chain state sync.
15+
type syncer struct{}
16+
17+
func (*syncer) StateSyncEnabled(context.Context) (bool, error) {
18+
return false, nil
19+
}
20+
21+
func (*syncer) GetOngoingSyncStateSummary(context.Context) (stateSummary, error) {
22+
return stateSummary{}, database.ErrNotFound
23+
}
24+
25+
func (*syncer) GetLastStateSummary(context.Context) (stateSummary, error) {
26+
return stateSummary{}, database.ErrNotFound
27+
}
28+
29+
func (*syncer) GetStateSummary(context.Context, uint64) (stateSummary, error) {
30+
return stateSummary{}, database.ErrNotFound
31+
}
32+
33+
func (*syncer) ParseStateSummary(context.Context, []byte) (stateSummary, error) {
34+
return stateSummary{}, block.ErrStateSyncableVMNotImplemented
35+
}
36+
37+
func (*syncer) AcceptSummary(context.Context, stateSummary) (block.StateSyncMode, error) {
38+
return block.StateSyncSkipped, block.ErrStateSyncableVMNotImplemented
39+
}
40+
41+
type stateSummary struct{}
42+
43+
func (stateSummary) ID() ids.ID {
44+
panic("unimplemented")
45+
}
46+
47+
func (stateSummary) Bytes() []byte {
48+
panic("unimplemented")
49+
}
50+
51+
func (stateSummary) Height() uint64 {
52+
panic("unimplemented")
53+
}

0 commit comments

Comments
 (0)