Skip to content

Commit

Permalink
fix: addr config
Browse files Browse the repository at this point in the history
  • Loading branch information
namn-grg committed May 20, 2024
1 parent 963fd65 commit 7e66911
Show file tree
Hide file tree
Showing 9 changed files with 58 additions and 43 deletions.
3 changes: 1 addition & 2 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
# flyctl launch added from .gitignore
**/peerstore.db
**/nodes.log
**/handshakes.log
**/*.log
fly.toml
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
peerstore.db
nodes.log
handshakes.log
*.log
2 changes: 2 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,5 @@ FROM debian:bookworm

COPY --from=builder /run-app /usr/local/bin/
CMD ["run-app"]

EXPOSE 9000
31 changes: 22 additions & 9 deletions config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,10 @@ type DiscConfig struct {
Bootnodes []*enode.Node
}

var DefaultConfig DiscConfig = DiscConfig{
var DefaultDiscConfig DiscConfig = DiscConfig{
IP: "0.0.0.0",
UDP: 8080,
TCP: 8080,
UDP: 9000,
TCP: 9000,
DBPath: "",
ForkDigest: "0x6a95a1a9",
LogPath: "nodes.log",
Expand All @@ -66,10 +66,23 @@ var DefaultConfig DiscConfig = DiscConfig{

// NodeConfig holds additional configuration options for the node.
type NodeConfig struct {
PrivateKey *crypto.Secp256k1PrivateKey
BeaconConfig *params.BeaconChainConfig
ForkDigest [4]byte
Encoder encoder.NetworkEncoding
DialTimeout time.Duration
PrivateKeyStr string
PrivateKey *crypto.Secp256k1PrivateKey
BeaconConfig *params.BeaconChainConfig
ForkDigest [4]byte
Encoder encoder.NetworkEncoding
DialTimeout time.Duration
MaxPeerCount int
IP string
Port int
}

var DefaultNodeConfig NodeConfig = NodeConfig{
PrivateKey: nil,
BeaconConfig: nil,
ForkDigest: [4]byte{0x6a, 0x95, 0xa1, 0xa9},
Encoder: encoder.SszNetworkEncoder{},
DialTimeout: 5 * time.Second,
MaxPeerCount: 30,
IP: "0.0.0.0",
Port: 9000,
}
12 changes: 3 additions & 9 deletions discovery/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,13 @@ import (
"crypto/ecdsa"
"crypto/rand"
"fmt"
"time"

"github.com/chainbound/valtrack/config"

"github.com/chainbound/valtrack/pkg/ethereum"
"github.com/decred/dcrd/dcrec/secp256k1/v4"
gcrypto "github.com/ethereum/go-ethereum/crypto"
crypto "github.com/libp2p/go-libp2p/core/crypto"
"github.com/prysmaticlabs/prysm/v5/beacon-chain/p2p/encoder"
"github.com/prysmaticlabs/prysm/v5/config/params"
)

Expand All @@ -36,13 +34,9 @@ func NewDiscovery() (*Discovery, error) {

privateKey := (*crypto.Secp256k1PrivateKey)(secp256k1.PrivKeyFromBytes(privBytes))

nodeConfig := &config.NodeConfig{
PrivateKey: privateKey,
BeaconConfig: params.MainnetConfig(),
ForkDigest: [4]byte{0x6a, 0x95, 0xa1, 0xa9}, // Mainnet fork digest
Encoder: encoder.SszNetworkEncoder{},
DialTimeout: 5 * time.Second,
}
nodeConfig := &config.DefaultNodeConfig
nodeConfig.PrivateKey = privateKey
nodeConfig.BeaconConfig = params.MainnetConfig()

n, err := ethereum.NewNode(nodeConfig)

Expand Down
26 changes: 14 additions & 12 deletions fly.toml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# fly.toml app configuration file generated for valtrack on 2024-05-20T15:18:41+05:30
# fly.toml app configuration file generated for valtrack on 2024-05-20T17:21:37+05:30
#
# See https://fly.io/docs/reference/configuration/ for information about how to use this file.
#
Expand All @@ -7,20 +7,22 @@ app = 'valtrack'
primary_region = 'ams'

[build]
[build.args]
GO_VERSION = '1.22.2'

[env]
PORT = '8080'
[[services]]
internal_port = 9000
protocol = "tcp"

[[services.ports]]
port = "9000"

[http_service]
internal_port = 8080
force_https = true
auto_stop_machines = true
auto_start_machines = true
min_machines_running = 0
processes = ['app']
[[services]]
internal_port = 9000
protocol = "udp"

[[services.ports]]
port = "9000"


[[vm]]
memory = '1gb'
cpu_kind = 'shared'
Expand Down
17 changes: 11 additions & 6 deletions pkg/ethereum/discv5.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,6 @@ func NewDiscoveryV5(pk *ecdsa.PrivateKey, discConfig *config.DiscConfig) (*Disco
return nil, errors.New("No bootnodes provided")
}

// udp address to listen
udpAddr := &net.UDPAddr{
IP: net.ParseIP("0.0.0.0"),
Port: discConfig.UDP,
}

cfg := discover.Config{
PrivateKey: pk,
NetRestrict: nil,
Expand All @@ -76,6 +70,17 @@ func NewDiscoveryV5(pk *ecdsa.PrivateKey, discConfig *config.DiscConfig) (*Disco
ValidSchemes: enode.ValidSchemes,
}

udpAddr, err := net.ResolveUDPAddr("udp", net.JoinHostPort(discConfig.IP, string(discConfig.UDP)))

_, exists := os.LookupEnv("FLY_APP_NAME")
if exists {
udpAddr, err = net.ResolveUDPAddr("udp", net.JoinHostPort("fly-global-services", string(discConfig.UDP)))
}

if err != nil {
errors.Wrap(err, "Failed to resolve UDP address:")
}

// start listening and create a connection object
conn, err := net.ListenUDP("udp", udpAddr)
if err != nil {
Expand Down
5 changes: 2 additions & 3 deletions pkg/ethereum/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,10 @@ func NewNode(cfg *config.NodeConfig) (*Node, error) {
if err != nil {
return nil, errors.Wrap(err, "Failed to generate discv5 key")
}
conf := config.DefaultConfig
conf := config.DefaultDiscConfig
disc, err := NewDiscoveryV5(discKey, &conf)

listenMaddr, err := MaddrFrom("0.0.0.0", 0)
listenMaddr, err := MaddrFrom(cfg.IP, uint(cfg.Port))

opts := []libp2p.Option{
libp2p.ListenAddrs(listenMaddr),
Expand All @@ -84,7 +84,6 @@ func NewNode(cfg *config.NodeConfig) (*Node, error) {
libp2p.DefaultMuxers,
libp2p.Security(noise.ID, noise.New),
libp2p.DisableRelay(),
libp2p.Ping(false),
libp2p.DisableMetrics(),
}

Expand Down
2 changes: 2 additions & 0 deletions pkg/ethereum/node_notifiee.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ func (n *Node) Connected(net network.Network, c network.Conn) {
go n.handleNewConnection(c.RemotePeer())
} else if c.Stat().Direction == network.DirInbound {
go n.handleInboundConnection(c.RemotePeer())
} else {
n.log.Info().Str("peer", c.RemotePeer().String()).Msg("Unknown connection direction")
}
}

Expand Down

0 comments on commit 7e66911

Please sign in to comment.