adding config params for each of the indra network environments. simnet, testnet and mainnet.

This commit is contained in:
Colin Lyons
2023-01-03 16:35:28 +00:00
parent a62e82ca66
commit b8cba46125
5 changed files with 149 additions and 32 deletions

View File

@@ -3,6 +3,7 @@ package main
import (
"fmt"
"github.com/Indra-Labs/indra"
"github.com/Indra-Labs/indra/pkg/cfg"
"github.com/Indra-Labs/indra/pkg/server"
"github.com/cybriq/proc/pkg/app"
"github.com/cybriq/proc/pkg/cmds"
@@ -110,7 +111,7 @@ var commands = &cmds.Command{
log.I.Ln("running serve.")
if srv, err = server.New(server.DefaultServerConfig); check(err) {
if srv, err = server.New(cfg.MainNetServerParams, server.DefaultConfig); check(err) {
return err
}

103
pkg/cfg/params.go Normal file
View File

@@ -0,0 +1,103 @@
package cfg
import (
"github.com/Indra-Labs/indra"
log2 "github.com/Indra-Labs/indra/pkg/proc/pkg/log"
"github.com/Indra-Labs/indra/pkg/wire"
"github.com/multiformats/go-multiaddr"
)
var (
log = log2.GetLogger(indra.PathBase)
check = log.E.Chk
)
type Params struct {
// Name defines a human-readable identifier for the network
Name string
// Net is a uint32 magic byte identifier for the network
Net wire.IndraNet
// DefaultPort is the default port for p2p listening
DefaultPort string
// SeedAddresses is a list of DNS hostnames used to bootstrap a new node on the network
SeedAddresses []string
}
func(self *Params) ParseSeedMultiAddresses() (addresses []multiaddr.Multiaddr, err error) {
var adr multiaddr.Multiaddr
for _, addr := range self.SeedAddresses {
if adr, err = multiaddr.NewMultiaddr(addr+":"+self.DefaultPort); check(err) {
return
}
addresses = append(addresses, adr)
}
return
}
var MainNetServerParams = &Params{
Name: "mainnet",
Net: wire.MainNet,
DefaultPort: "8337",
SeedAddresses: []string{
// "seed0.indra.org",
// "seed1.indra.org",
// "seed2.indra.org",
// "seed3.indra.org",
// "seed0.example.com",
// "seed1.example.com",
// "seed2.example.com",
// "seed3.example.com",
// "1.1.1.1",
// "::1",
},
}
var TestNetServerParams = &Params{
Name: "testnet",
Net: wire.TestNet,
DefaultPort: "58337",
SeedAddresses: []string{
// "seed0.testnet.indra.org",
// "seed1.testnet.indra.org",
// "seed2.testnet.indra.org",
// "seed3.testnet.indra.org",
// "seed0.testnet.example.com",
// "seed1.testnet.example.com",
// "seed2.testnet.example.com",
// "seed3.testnet.example.com",
// "1.1.1.1",
// "::1",
},
}
var SimnetServerParams = &Params{
Name: "simnet",
Net: wire.SimNet,
DefaultPort: "62134",
SeedAddresses: []string{
// We likely will never need any seed addresses here
},
}

View File

@@ -1,43 +1,26 @@
package server
import "github.com/multiformats/go-multiaddr"
var (
seedList = []string{
//"/dns4/seed0.indra.org/tcp/8337",
//"/dns4/seed1.indra.org/tcp/8337",
//"/dns4/seed2.indra.org/tcp/8337",
//"/dns4/seed3.indra.org/tcp/8337",
//"/dns4/seed0.example.com/tcp/8337",
//"/dns4/seed1.example.com/tcp/8337",
//"/dns4/seed2.example.com/tcp/8337",
//"/dns4/seed3.example.com/tcp/8337",
//"/ip4/1.1.1.1/tcp/8337",
//"/ip6/::1/tcp/3217",
}
import (
"github.com/multiformats/go-multiaddr"
)
var DefaultServerConfig = Config{
func NewMultiAddr(addr string) (maddr multiaddr.Multiaddr) {
SeedAddresses: []multiaddr.Multiaddr{},
ListenAddresses: []multiaddr.Multiaddr{},
var err error
if maddr, err = multiaddr.NewMultiaddr(addr); check(err) {
panic("Not a valid multiaddress.")
}
return
}
var SimnetServerConfig = Config{
SeedAddresses: []multiaddr.Multiaddr{},
var DefaultConfig = &Config{
ListenAddresses: []multiaddr.Multiaddr{},
}
func NewMultiAddrForced(addr string) multiaddr.Multiaddr {
var mta, _ = multiaddr.NewMultiaddr(addr)
return mta
}
type Config struct {
PublicAddress multiaddr.Multiaddr
ListenAddresses []multiaddr.Multiaddr
SeedAddresses []multiaddr.Multiaddr
}

View File

@@ -3,12 +3,15 @@ package server
import (
"context"
"github.com/Indra-Labs/indra"
"github.com/Indra-Labs/indra/pkg/cfg"
"github.com/cybriq/proc/pkg/interrupt"
log2 "github.com/cybriq/proc/pkg/log"
"github.com/davecgh/go-spew/spew"
"github.com/libp2p/go-libp2p"
dht "github.com/libp2p/go-libp2p-kad-dht"
"github.com/libp2p/go-libp2p/core/host"
"github.com/libp2p/go-libp2p/core/peer"
"github.com/multiformats/go-multiaddr"
"sync"
)
@@ -22,6 +25,8 @@ type Server struct {
config Config
params *cfg.Params
host host.Host
dht *dht.IpfsDHT
}
@@ -67,7 +72,14 @@ func (srv *Server) Serve() (err error) {
// We will first attempt to connect to the seed addresses.
var wg sync.WaitGroup
for _, peerAddr := range srv.config.SeedAddresses {
spew.Dump(srv.params.ParseSeedMultiAddresses())
var seedAddresses []multiaddr.Multiaddr
seedAddresses, err = srv.params.ParseSeedMultiAddresses()
for _, peerAddr := range seedAddresses {
peerinfo, _ := peer.AddrInfoFromP2pAddr(peerAddr)
wg.Add(1)
go func() {
@@ -79,16 +91,20 @@ func (srv *Server) Serve() (err error) {
}
}()
}
wg.Wait()
return nil
}
func New(config Config) (srv *Server, err error) {
func New(params *cfg.Params, config *Config) (srv *Server, err error) {
log.I.Ln("initializing the server.")
var s Server
s.params = params
var cancel context.CancelFunc
s.Context, cancel = context.WithCancel(context.Background())

14
pkg/wire/protocol.go Normal file
View File

@@ -0,0 +1,14 @@
package wire
type IndraNet uint32
const (
// MainNet represents the main indra network.
MainNet IndraNet = 0xd9b4bef9
// TestNet represents the regression test network.
TestNet IndraNet = 0xdab5bffa
// SimNet represents the simulation test network.
SimNet IndraNet = 0x12141c16
)