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 }