Skip to content

Commit

Permalink
discovery: fork with protocol ID (#1709)
Browse files Browse the repository at this point in the history
* discovery: fork with protocol ID

* simplify empty protocol ID check

* Use both services even after alan fork

* Make forkListener to stop the PreForkListener after the fork

* On restart, use only the post fork discovery

* Remove duplicated SSVProtocolID definition

* Add testing utils for discovery

* Add tests for main service function

* Refactor filter logic in checkPeer

* Upon Close, close channel from sharedConn. Use only one bootnode list

* Test pre and post fork listeners

* Use listener in ForkListener instead of  discover.UDPv5

* Add fork listener tests

* Use t.Run for test cases

* Update sharedUDPConn due to update of go-ethereum library

* Align PublishENR test according to changes in stage

* Refactor testing utils functions

* Update network/discovery/fork_listener.go

Co-authored-by: Nikita Kryuchkov <[email protected]>

* Update network/discovery/fork_listener.go

Co-authored-by: Nikita Kryuchkov <[email protected]>

* Update network/discovery/fork_listener.go

Co-authored-by: Nikita Kryuchkov <[email protected]>

* FIx lint issue

* Revert change on limitNodeFilter return value

* Rename forkListener -> forkingDV5Listener; Close postForkIterator once iterator changes to preFork

* Adjust tests due to renaming

* Add test to check that the postFork iterator is closed after the switch

* fork at 81891

* fix to not drop postForkIterator when Next() returns false by calling both iterators with different probabilities

* add metric

* fix

* debug

* prefork

* remove log

* add log

* log

* fix protocol id

* fix

* log

* try fair mix

* metrics

* deploy to holesky prod 1 & 2

* deploy to holesky prod 1 & 2

* fix Dockerfile and deploy holesky 1 & 2

* deploy holesky 1 & 2

* deploy holesky 1  & 2

* fix tests

* deploy post fork

* logs

* pre-fork

* test only pre discovery

* boot node

* bootnode fix

* fix

* fix

* try only pre again

* logs

* deploy ssvdv5 for postfork

* refactor

* changes

* reorder

* set testports to uint16

* fix test order

* fix test data race

---------

Co-authored-by: MatheusFranco99 <[email protected]>
Co-authored-by: moshe-blox <[email protected]>
Co-authored-by: y0sher <[email protected]>
  • Loading branch information
4 people authored Oct 2, 2024
1 parent 8c14d39 commit dc0c830
Show file tree
Hide file tree
Showing 24 changed files with 1,654 additions and 106 deletions.
114 changes: 108 additions & 6 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,101 @@ variables:
IMAGE_NAME: ssv-node
DOCKER_BUILDKIT: 1

#STAGE
ACCOUNT_ID_INFRA_STAGE: 121827225315
AWS_REGION_INFRA_STAGE: "us-west-2"
DOCKER_REPO_INFRA_STAGE: $ACCOUNT_ID_INFRA_STAGE.dkr.ecr.$AWS_REGION_INFRA_STAGE.amazonaws.com/$IMAGE_NAME
APP_REPLICAS_INFRA_STAGE: "1"
ECRLOGIN_INFRA_STAGE: "aws ecr get-login --registry-ids $ACCOUNT_ID_INFRA_STAGE --region $AWS_REGION_INFRA_STAGE --no-include-email"
STAGE_HEALTH_CHECK_IMAGE: 121827225315.dkr.ecr.us-west-2.amazonaws.com/infra-stage-repo:ubuntu20

#PRODUCTION
ACCOUNT_ID_INFRA_PROD: 764289642555
AWS_REGION_INFRA_PROD: "us-west-2"
DOCKER_REPO_INFRA_PROD: $ACCOUNT_ID_INFRA_PROD.dkr.ecr.$AWS_REGION_INFRA_STAGE.amazonaws.com/$IMAGE_NAME
DOCKER_REPO_INFRA_PROD: $ACCOUNT_ID_INFRA_PROD.dkr.ecr.$AWS_REGION_INFRA_PROD.amazonaws.com/$IMAGE_NAME
APP_REPLICAS_INFRA_PROD: "1"
ECRLOGIN_INFRA_PROD: "aws ecr get-login --registry-ids $ACCOUNT_ID_INFRA_PROD --region $AWS_REGION_INFRA_PROD --no-include-email"
PROD_HEALTH_CHECK_IMAGE: 764289642555.dkr.ecr.us-west-2.amazonaws.com/infra-prod-repo:ubuntu20

# +-------+
# | STAGE |
# +-------+
Build stage Docker image:
image: docker:20.10.23
stage: build
tags:
- blox-infra-stage
script:
- apk add --no-cache py-pip
- pip install pyyaml==5.3.1
- pip install awscli
- docker build -t $IMAGE_NAME:$CI_COMMIT_SHA -f Dockerfile .
- DOCKER_LOGIN_TO_INFRA_STAGE_REPO=`$ECRLOGIN_INFRA_STAGE`
- docker tag $IMAGE_NAME:$CI_COMMIT_SHA $DOCKER_REPO_INFRA_STAGE:$CI_COMMIT_SHA
- $DOCKER_LOGIN_TO_INFRA_STAGE_REPO && docker push $DOCKER_REPO_INFRA_STAGE:$CI_COMMIT_SHA
only:
- stage

# +---------------------+
# | STAGE HETZNER NODES |
# +---------------------+


Deploy nodes to hetzner stage:
stage: deploy
tags:
- hetzner-k8s-stage
image: bitnami/kubectl:1.27.5
script:
- export K8S_API_VERSION=$INFRA_STAGE_K8_API_VERSION
- export SSV_NODES_CPU_LIMIT=$HETZNER_STAGE_SSV_NODES_CPU_LIMIT
- export SSV_NODES_MEM_LIMIT=$HETZNER_STAGE_SSV_NODES_MEM_LIMIT
- echo $HETZNER_KUBECONFIG | base64 -d > kubeconfig
- mv kubeconfig ~/.kube/
- export KUBECONFIG=~/.kube/kubeconfig
- kubectl config get-contexts
#
# +--------------------+
# | Deploy SSV nodes |
# +--------------------+
- .k8/hetzner-stage/scripts/deploy-cluster-1--4.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-5--8.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-9--12.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-13--16.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-17--20.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-21--24.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-25--28.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-29--32.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-33--36.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-37--40.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-41--44.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-45--48.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-49--52.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-53--56.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-57--60.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-61--64.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-65--68.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
- .k8/hetzner-stage/scripts/deploy-cluster-69--72.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $STAGE_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT $SSV_NODES_MEM_LIMIT
only:
- stage

Deploy exporter to hetzner stage:
stage: deploy
tags:
- hetzner-k8s-stage
image: bitnami/kubectl:1.27.5
script:
- export K8S_API_VERSION=$INFRA_STAGE_K8_API_VERSION
- export SSV_EXPORTER_CPU_LIMIT=$STAGE_SSV_EXPORTER_CPU_LIMIT
- export SSV_EXPORTER_MEM_LIMIT=$STAGE_SSV_EXPORTER_MEM_LIMIT
- echo $HETZNER_KUBECONFIG | base64 -d > kubeconfig
- mv kubeconfig ~/.kube/
- export KUBECONFIG=~/.kube/kubeconfig
- kubectl config get-contexts
- .k8/hetzner-stage/scripts/deploy-holesky-exporters.sh $DOCKER_REPO_INFRA_STAGE $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_STAGE hetzner.stage.k8s.local hetzner.stage.k8s.local stage.ssv.network $K8S_API_VERSION $SSV_EXPORTER_CPU_LIMIT $SSV_EXPORTER_MEM_LIMIT
only:
- stage

# +---------------+
# | Prod |
# +---------------+
Expand All @@ -33,14 +120,14 @@ Build prod Docker image:
- $DOCKER_LOGIN_TO_INFRA_PROD_REPO && docker push $DOCKER_REPO_INFRA_PROD:$CI_COMMIT_SHA

only:
- main
- unstable

Deploy nodes to prod:
stage: deploy
tags:
- blox-infra-prod
script:
- apk add bash
- apk add bash curl
- export K8S_API_VERSION=$INFRA_PROD_K8_API_VERSION
- export SSV_EXPORTER_CPU_LIMIT=$PROD_SSV_EXPORTER_CPU_LIMIT
- export SSV_EXPORTER_MEM_LIMIT=$PROD_SSV_EXPORTER_MEM_LIMIT
Expand All @@ -49,6 +136,11 @@ Deploy nodes to prod:
- curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/amd64/kubectl
- chmod +x ./kubectl
- mv ./kubectl /usr/bin/kubectl
- mkdir ~/.kube/
- echo $PROD_KUBECONFIG | base64 -d > kubeconfig
- mv kubeconfig ~/.kube/
- export KUBECONFIG=~/.kube/kubeconfig
- kubectl config get-contexts
# +-------------------------------+
# | 🟠 Deploy SSV Holesky nodes |
# +-------------------------------+
Expand All @@ -63,7 +155,7 @@ Deploy nodes to prod:
# +----------------------------+
# | 🔴 Deploy SSV Mainnet nodes |
# +----------------------------+
# - .k8/production/mainnet/scripts/deploy-cluster-1-4.sh $DOCKER_REPO_INFRA_PROD $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_PROD blox-infra-prod kubernetes-admin@blox-infra-prod ssv.network $K8S_API_VERSION $PROD_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT_V3 $SSV_NODES_MEM_LIMIT_V3
# - .k8/production/mainnet/scripts/deploy-cluster-1-4.sh $DOCKER_REPO_INFRA_PROD $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_PROD blox-infra-prod kubernetes-admin@blox-infra-prod ssv.network $K8S_API_VERSION $PROD_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT_V3 $SSV_NODES_MEM_LIMIT_V3
#
# +------------------------------+
# │ 🔴 Deploy Mainnet Bootnode |
Expand All @@ -72,7 +164,7 @@ Deploy nodes to prod:
# - .k8/production/mainnet/scripts/deploy-boot-nodes.sh $DOCKER_REPO_INFRA_PROD $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_PROD blox-infra-prod kubernetes-admin@blox-infra-prod ssv.network $K8S_API_VERSION $PROD_HEALTH_CHECK_IMAGE $SSV_NODES_CPU_LIMIT_V3 $SSV_NODES_MEM_LIMIT_V3

only:
- main
- unstable

Deploy exporter to prod:
stage: deploy
Expand All @@ -85,6 +177,8 @@ Deploy exporter to prod:
- export SSV_EXPORTER_MEM_LIMIT=$PROD_SSV_EXPORTER_MEM_LIMIT
- export SSV_EXPORTER_MAINNET_CPU_LIMIT=$PROD_SSV_EXPORTER_MAINNET_CPU_LIMIT
- export SSV_EXPORTER_MAINNET_MEM_LIMIT=$PROD_SSV_EXPORTER_MAINNET_MEM_LIMIT
- export SSV_EXPORTER_2_MAINNET_CPU_LIMIT=$PROD_SSV_EXPORTER_2_MAINNET_CPU_LIMIT
- export SSV_EXPORTER_2_MAINNET_MEM_LIMIT=$PROD_SSV_EXPORTER_2_MAINNET_MEM_LIMIT
- export SSV_NODES_CPU_LIMIT_V3=$PROD_SSV_NODES_CPU_LIMIT_V3
- export SSV_NODES_MEM_LIMIT_V3=$PROD_SSV_NODES_MEM_LIMIT_V3
- curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/amd64/kubectl
Expand All @@ -100,6 +194,14 @@ Deploy exporter to prod:
# │ 🔴 Deploy Mainnet exporter |
# +------------------------------+
# - .k8/production/mainnet/scripts/deploy-exporters.sh $DOCKER_REPO_INFRA_PROD $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_PROD blox-infra-prod kubernetes-admin@blox-infra-prod ssv.network $K8S_API_VERSION $SSV_EXPORTER_MAINNET_CPU_LIMIT $SSV_EXPORTER_MAINNET_MEM_LIMIT

#
# +------------------------------+
# │ 🔴 Deploy Mainnet exporter 2|
# +------------------------------+
- .k8/production/mainnet/scripts/deploy-exporters-2.sh $DOCKER_REPO_INFRA_PROD $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_PROD blox-infra-prod kubernetes-admin@blox-infra-prod ssv.network $K8S_API_VERSION $SSV_EXPORTER_2_MAINNET_CPU_LIMIT $SSV_EXPORTER_2_MAINNET_MEM_LIMIT
# +------------------------------+
# │ 🔴 Deploy Mainnet exporter 3|
# +------------------------------+
- .k8/production/mainnet/scripts/deploy-exporters-3.sh $DOCKER_REPO_INFRA_PROD $CI_COMMIT_SHA ssv $APP_REPLICAS_INFRA_PROD blox-infra-prod kubernetes-admin@blox-infra-prod ssv.network $K8S_API_VERSION
only:
- main
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ FROM golang:1.22 AS preparer
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends \
curl=7.88.1-10+deb12u7 \
git=1:2.39.2-1.1 \
git=1:2.39.5-0+deb12u1 \
zip=3.0-13 \
unzip=6.0-28 \
g++=4:12.2.0-3 \
Expand Down
7 changes: 6 additions & 1 deletion cli/bootnode/boot_node.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"fmt"
"log"

"github.com/ssvlabs/ssv/networkconfig"
"github.com/ssvlabs/ssv/utils/commons"

"github.com/ssvlabs/ssv/logging"
Expand Down Expand Up @@ -55,7 +56,11 @@ var StartBootNodeCmd = &cobra.Command{

logger.Info(fmt.Sprintf("starting %v", commons.GetBuildData()))

bootNode, err := bootnode.New(cfg.Options)
networkConfig, err := networkconfig.GetNetworkConfigByName(cfg.Options.Network)
if err != nil {
logger.Fatal("failed to get network config", zap.Error(err))
}
bootNode, err := bootnode.New(networkConfig, cfg.Options)
if err != nil {
logger.Fatal("failed to set up boot node", zap.Error(err))
}
Expand Down
5 changes: 5 additions & 0 deletions logging/fields/fields.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ const (
FieldPeerID = "peer_id"
FieldPeerScore = "peer_score"
FieldPrivKey = "privkey"
FieldProtocolID = "protocol_id"
FieldPubKey = "pubkey"
FieldQuorumTime = "quorum_time"
FieldRole = "role"
Expand Down Expand Up @@ -327,6 +328,10 @@ func Domain(val spectypes.DomainType) zap.Field {
return zap.Stringer(FieldDomain, format.DomainType(val))
}

func ProtocolID(val [6]byte) zap.Field {
return zap.String(FieldProtocolID, hex.EncodeToString(val[:]))
}

func Network(val string) zap.Field {
return zap.String(FieldNetwork, val)
}
Expand Down
8 changes: 5 additions & 3 deletions network/discovery/dv5_bootnode.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (

"github.com/ssvlabs/ssv/logging"
"github.com/ssvlabs/ssv/logging/fields"
"github.com/ssvlabs/ssv/networkconfig"
"github.com/ssvlabs/ssv/utils"
)

Expand All @@ -27,9 +28,9 @@ type Bootnode struct {
}

// NewBootnode creates a new bootnode
func NewBootnode(pctx context.Context, logger *zap.Logger, opts *BootnodeOptions) (*Bootnode, error) {
func NewBootnode(pctx context.Context, logger *zap.Logger, networkCfg networkconfig.NetworkConfig, opts *BootnodeOptions) (*Bootnode, error) {
ctx, cancel := context.WithCancel(pctx)
disc, err := createBootnodeDiscovery(ctx, logger, opts)
disc, err := createBootnodeDiscovery(ctx, logger, networkCfg, opts)
if err != nil {
cancel()
return nil, err
Expand All @@ -51,12 +52,13 @@ func (b *Bootnode) Close() error {
return nil
}

func createBootnodeDiscovery(ctx context.Context, logger *zap.Logger, opts *BootnodeOptions) (Service, error) {
func createBootnodeDiscovery(ctx context.Context, logger *zap.Logger, networkCfg networkconfig.NetworkConfig, opts *BootnodeOptions) (Service, error) {
privKey, err := utils.ECDSAPrivateKey(logger.Named(logging.NameBootNode), opts.PrivateKey)
if err != nil {
return nil, err
}
discOpts := &Options{
NetworkConfig: networkCfg,
DiscV5Opts: &DiscV5Options{
IP: opts.ExternalIP,
BindIP: "", // net.IPv4zero.String()
Expand Down
5 changes: 3 additions & 2 deletions network/discovery/dv5_filters.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
"go.uber.org/zap"
)

// limitNodeFilter checks if limit exceeded
// limitNodeFilter returns true if the limit is exceeded
func (dvs *DiscV5Service) limitNodeFilter(node *enode.Node) bool {
return !dvs.conns.AtLimit(libp2pnetwork.DirOutbound)
}
Expand Down Expand Up @@ -64,7 +64,8 @@ func (dvs *DiscV5Service) subnetFilter(subnets ...uint64) func(node *enode.Node)
}
}

// sharedSubnetsFilter checks if the node has an interest in the given subnet
// sharedSubnetsFilter returns a function that
// returns true if the peer has at least [n] subnets in common
func (dvs *DiscV5Service) sharedSubnetsFilter(n int) func(node *enode.Node) bool {
return func(node *enode.Node) bool {
if n == 0 {
Expand Down
Loading

0 comments on commit dc0c830

Please sign in to comment.