Skip to content

Commit 128757d

Browse files
ceyonurabi87StephenButtolph
authored
Move the overridden manager into the node (#2199)
Signed-off-by: Ceyhun Onur <ceyhunonur54@gmail.com> Co-authored-by: Alberto Benegiamo <alberto.benegiamo@gmail.com> Co-authored-by: Stephen Buttolph <stephen@avalabs.org>
1 parent 7903676 commit 128757d

File tree

5 files changed

+53
-30
lines changed

5 files changed

+53
-30
lines changed

chains/manager.go

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -531,19 +531,13 @@ func (m *manager) buildChain(chainParams ChainParameters, sb subnets.Subnet) (*c
531531
}
532532
}
533533

534-
vdrs := m.Validators
535-
if !m.SybilProtectionEnabled {
536-
// If sybil protection is disabled, everyone validates every chain
537-
vdrs = validators.NewOverriddenManager(constants.PrimaryNetworkID, vdrs)
538-
}
539-
540534
var chain *chain
541535
switch vm := vm.(type) {
542536
case vertex.LinearizableVMWithEngine:
543537
chain, err = m.createAvalancheChain(
544538
ctx,
545539
chainParams.GenesisData,
546-
vdrs,
540+
m.Validators,
547541
vm,
548542
fxs,
549543
sb,
@@ -552,15 +546,15 @@ func (m *manager) buildChain(chainParams ChainParameters, sb subnets.Subnet) (*c
552546
return nil, fmt.Errorf("error while creating new avalanche vm %w", err)
553547
}
554548
case block.ChainVM:
555-
beacons := vdrs
549+
beacons := m.Validators
556550
if chainParams.ID == constants.PlatformChainID {
557551
beacons = chainParams.CustomBeacons
558552
}
559553

560554
chain, err = m.createSnowmanChain(
561555
ctx,
562556
chainParams.GenesisData,
563-
vdrs,
557+
m.Validators,
564558
beacons,
565559
vm,
566560
fxs,

node/node.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,6 @@ func (n *Node) initNetworking() error {
290290
// Configure benchlist
291291
n.Config.BenchlistConfig.Validators = n.vdrs
292292
n.Config.BenchlistConfig.Benchable = n.Config.ConsensusRouter
293-
n.Config.BenchlistConfig.SybilProtectionEnabled = n.Config.SybilProtectionEnabled
294293
n.benchlistManager = benchlist.NewManager(&n.Config.BenchlistConfig)
295294

296295
n.uptimeCalculator = uptime.NewLockedCalculator()
@@ -1401,6 +1400,9 @@ func (n *Node) Initialize(
14011400
}
14021401

14031402
n.vdrs = validators.NewManager()
1403+
if !n.Config.SybilProtectionEnabled {
1404+
n.vdrs = newOverriddenManager(constants.PrimaryNetworkID, n.vdrs)
1405+
}
14041406
if err := n.initResourceManager(n.MetricsRegisterer); err != nil {
14051407
return fmt.Errorf("problem initializing resource manager: %w", err)
14061408
}

snow/validators/overridden_manager.go renamed to node/overridden_manager.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
// Copyright (C) 2019-2023, Ava Labs, Inc. All rights reserved.
22
// See the file LICENSE for licensing terms.
33

4-
package validators
4+
package node
55

66
import (
77
"fmt"
88

99
"github.com/ava-labs/avalanchego/ids"
10+
"github.com/ava-labs/avalanchego/snow/validators"
1011
"github.com/ava-labs/avalanchego/utils/crypto/bls"
1112
"github.com/ava-labs/avalanchego/utils/set"
1213
)
1314

14-
var _ Manager = (*overriddenManager)(nil)
15+
var _ validators.Manager = (*overriddenManager)(nil)
1516

16-
// NewOverriddenManager returns a Manager that overrides of all calls to the
17+
// newOverriddenManager returns a Manager that overrides of all calls to the
1718
// underlying Manager to only operate on the validators in [subnetID].
18-
func NewOverriddenManager(subnetID ids.ID, manager Manager) Manager {
19+
func newOverriddenManager(subnetID ids.ID, manager validators.Manager) *overriddenManager {
1920
return &overriddenManager{
2021
subnetID: subnetID,
2122
manager: manager,
@@ -27,7 +28,7 @@ func NewOverriddenManager(subnetID ids.ID, manager Manager) Manager {
2728
// subnetID here is typically the primary network ID, as it has the superset of
2829
// all subnet validators.
2930
type overriddenManager struct {
30-
manager Manager
31+
manager validators.Manager
3132
subnetID ids.ID
3233
}
3334

@@ -43,7 +44,7 @@ func (o *overriddenManager) GetWeight(_ ids.ID, nodeID ids.NodeID) uint64 {
4344
return o.manager.GetWeight(o.subnetID, nodeID)
4445
}
4546

46-
func (o *overriddenManager) GetValidator(_ ids.ID, nodeID ids.NodeID) (*Validator, bool) {
47+
func (o *overriddenManager) GetValidator(_ ids.ID, nodeID ids.NodeID) (*validators.Validator, bool) {
4748
return o.manager.GetValidator(o.subnetID, nodeID)
4849
}
4950

@@ -67,11 +68,11 @@ func (o *overriddenManager) Sample(_ ids.ID, size int) ([]ids.NodeID, error) {
6768
return o.manager.Sample(o.subnetID, size)
6869
}
6970

70-
func (o *overriddenManager) GetMap(ids.ID) map[ids.NodeID]*GetValidatorOutput {
71+
func (o *overriddenManager) GetMap(ids.ID) map[ids.NodeID]*validators.GetValidatorOutput {
7172
return o.manager.GetMap(o.subnetID)
7273
}
7374

74-
func (o *overriddenManager) RegisterCallbackListener(_ ids.ID, listener SetCallbackListener) {
75+
func (o *overriddenManager) RegisterCallbackListener(_ ids.ID, listener validators.SetCallbackListener) {
7576
o.manager.RegisterCallbackListener(o.subnetID, listener)
7677
}
7778

snow/validators/overridden_manager_test.go renamed to node/overridden_manager_test.go

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright (C) 2019-2023, Ava Labs, Inc. All rights reserved.
22
// See the file LICENSE for licensing terms.
33

4-
package validators
4+
package node
55

66
import (
77
"math"
@@ -10,8 +10,42 @@ import (
1010
"github.com/stretchr/testify/require"
1111

1212
"github.com/ava-labs/avalanchego/ids"
13+
"github.com/ava-labs/avalanchego/snow/validators"
1314
)
1415

16+
func TestOverriddenManager(t *testing.T) {
17+
require := require.New(t)
18+
19+
nodeID0 := ids.GenerateTestNodeID()
20+
nodeID1 := ids.GenerateTestNodeID()
21+
subnetID0 := ids.GenerateTestID()
22+
subnetID1 := ids.GenerateTestID()
23+
24+
m := validators.NewManager()
25+
require.NoError(m.AddStaker(subnetID0, nodeID0, nil, ids.Empty, 1))
26+
require.NoError(m.AddStaker(subnetID1, nodeID1, nil, ids.Empty, 1))
27+
28+
om := newOverriddenManager(subnetID0, m)
29+
_, ok := om.GetValidator(subnetID0, nodeID0)
30+
require.True(ok)
31+
_, ok = om.GetValidator(subnetID0, nodeID1)
32+
require.False(ok)
33+
_, ok = om.GetValidator(subnetID1, nodeID0)
34+
require.True(ok)
35+
_, ok = om.GetValidator(subnetID1, nodeID1)
36+
require.False(ok)
37+
38+
require.NoError(om.RemoveWeight(subnetID1, nodeID0, 1))
39+
_, ok = om.GetValidator(subnetID0, nodeID0)
40+
require.False(ok)
41+
_, ok = om.GetValidator(subnetID0, nodeID1)
42+
require.False(ok)
43+
_, ok = om.GetValidator(subnetID1, nodeID0)
44+
require.False(ok)
45+
_, ok = om.GetValidator(subnetID1, nodeID1)
46+
require.False(ok)
47+
}
48+
1549
func TestOverriddenString(t *testing.T) {
1650
require := require.New(t)
1751

@@ -24,12 +58,12 @@ func TestOverriddenString(t *testing.T) {
2458
subnetID1, err := ids.FromString("2mcwQKiD8VEspmMJpL1dc7okQQ5dDVAWeCBZ7FWBFAbxpv3t7w")
2559
require.NoError(err)
2660

27-
m := NewManager()
61+
m := validators.NewManager()
2862
require.NoError(m.AddStaker(subnetID0, nodeID0, nil, ids.Empty, 1))
2963
require.NoError(m.AddStaker(subnetID0, nodeID1, nil, ids.Empty, math.MaxInt64-1))
3064
require.NoError(m.AddStaker(subnetID1, nodeID1, nil, ids.Empty, 1))
3165

32-
om := NewOverriddenManager(subnetID0, m)
66+
om := newOverriddenManager(subnetID0, m)
3367
expected := "Overridden Validator Manager (SubnetID = TtF4d2QWbk5vzQGTEPrN48x6vwgAoAmKQ9cbp79inpQmcRKES): Validator Manager: (Size = 2)\n" +
3468
" Subnet[TtF4d2QWbk5vzQGTEPrN48x6vwgAoAmKQ9cbp79inpQmcRKES]: Validator Set: (Size = 2, Weight = 9223372036854775807)\n" +
3569
" Validator[0]: NodeID-111111111111111111116DBWJs, 1\n" +

snow/networking/benchlist/manager.go

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"github.com/ava-labs/avalanchego/ids"
1111
"github.com/ava-labs/avalanchego/snow"
1212
"github.com/ava-labs/avalanchego/snow/validators"
13-
"github.com/ava-labs/avalanchego/utils/constants"
1413
)
1514

1615
var _ Manager = (*manager)(nil)
@@ -42,7 +41,6 @@ type Manager interface {
4241
type Config struct {
4342
Benchable Benchable `json:"-"`
4443
Validators validators.Manager `json:"-"`
45-
SybilProtectionEnabled bool `json:"-"`
4644
Threshold int `json:"threshold"`
4745
MinimumFailingDuration time.Duration `json:"minimumFailingDuration"`
4846
Duration time.Duration `json:"duration"`
@@ -110,16 +108,10 @@ func (m *manager) RegisterChain(ctx *snow.ConsensusContext) error {
110108
return nil
111109
}
112110

113-
vdrs := m.config.Validators
114-
if !m.config.SybilProtectionEnabled {
115-
// If sybil protection is disabled, everyone validates every chain
116-
vdrs = validators.NewOverriddenManager(constants.PrimaryNetworkID, vdrs)
117-
}
118-
119111
benchlist, err := NewBenchlist(
120112
ctx,
121113
m.config.Benchable,
122-
vdrs,
114+
m.config.Validators,
123115
m.config.Threshold,
124116
m.config.MinimumFailingDuration,
125117
m.config.Duration,

0 commit comments

Comments
 (0)