github.com/evdatsion/aphelion-dpos-bft@v0.32.1/cmd/priv_val_server/main.go (about)

     1  package main
     2  
     3  import (
     4  	"flag"
     5  	"os"
     6  	"time"
     7  
     8  	"github.com/evdatsion/aphelion-dpos-bft/crypto/ed25519"
     9  	cmn "github.com/evdatsion/aphelion-dpos-bft/libs/common"
    10  	"github.com/evdatsion/aphelion-dpos-bft/libs/log"
    11  
    12  	"github.com/evdatsion/aphelion-dpos-bft/privval"
    13  )
    14  
    15  func main() {
    16  	var (
    17  		addr             = flag.String("addr", ":26659", "Address of client to connect to")
    18  		chainID          = flag.String("chain-id", "mychain", "chain id")
    19  		privValKeyPath   = flag.String("priv-key", "", "priv val key file path")
    20  		privValStatePath = flag.String("priv-state", "", "priv val state file path")
    21  
    22  		logger = log.NewTMLogger(
    23  			log.NewSyncWriter(os.Stdout),
    24  		).With("module", "priv_val")
    25  	)
    26  	flag.Parse()
    27  
    28  	logger.Info(
    29  		"Starting private validator",
    30  		"addr", *addr,
    31  		"chainID", *chainID,
    32  		"privKeyPath", *privValKeyPath,
    33  		"privStatePath", *privValStatePath,
    34  	)
    35  
    36  	pv := privval.LoadFilePV(*privValKeyPath, *privValStatePath)
    37  
    38  	var dialer privval.SocketDialer
    39  	protocol, address := cmn.ProtocolAndAddress(*addr)
    40  	switch protocol {
    41  	case "unix":
    42  		dialer = privval.DialUnixFn(address)
    43  	case "tcp":
    44  		connTimeout := 3 * time.Second // TODO
    45  		dialer = privval.DialTCPFn(address, connTimeout, ed25519.GenPrivKey())
    46  	default:
    47  		logger.Error("Unknown protocol", "protocol", protocol)
    48  		os.Exit(1)
    49  	}
    50  
    51  	rs := privval.NewSignerServiceEndpoint(logger, *chainID, pv, dialer)
    52  	err := rs.Start()
    53  	if err != nil {
    54  		panic(err)
    55  	}
    56  
    57  	// Stop upon receiving SIGTERM or CTRL-C.
    58  	cmn.TrapSignal(logger, func() {
    59  		err := rs.Stop()
    60  		if err != nil {
    61  			panic(err)
    62  		}
    63  	})
    64  
    65  	// Run forever.
    66  	select {}
    67  }