github.com/evdatsion/aphelion-dpos-bft@v0.32.1/cmd/tendermint/commands/run_node.go (about) 1 package commands 2 3 import ( 4 "fmt" 5 6 "github.com/spf13/cobra" 7 8 cmn "github.com/evdatsion/aphelion-dpos-bft/libs/common" 9 nm "github.com/evdatsion/aphelion-dpos-bft/node" 10 ) 11 12 // AddNodeFlags exposes some common configuration options on the command-line 13 // These are exposed for convenience of commands embedding a tendermint node 14 func AddNodeFlags(cmd *cobra.Command) { 15 // bind flags 16 cmd.Flags().String("moniker", config.Moniker, "Node Name") 17 18 // priv val flags 19 cmd.Flags().String("priv_validator_laddr", config.PrivValidatorListenAddr, "Socket address to listen on for connections from external priv_validator process") 20 21 // node flags 22 cmd.Flags().Bool("fast_sync", config.FastSync, "Fast blockchain syncing") 23 24 // abci flags 25 cmd.Flags().String("proxy_app", config.ProxyApp, "Proxy app address, or one of: 'kvstore', 'persistent_kvstore', 'counter', 'counter_serial' or 'noop' for local testing.") 26 cmd.Flags().String("abci", config.ABCI, "Specify abci transport (socket | grpc)") 27 28 // rpc flags 29 cmd.Flags().String("rpc.laddr", config.RPC.ListenAddress, "RPC listen address. Port required") 30 cmd.Flags().String("rpc.grpc_laddr", config.RPC.GRPCListenAddress, "GRPC listen address (BroadcastTx only). Port required") 31 cmd.Flags().Bool("rpc.unsafe", config.RPC.Unsafe, "Enabled unsafe rpc methods") 32 33 // p2p flags 34 cmd.Flags().String("p2p.laddr", config.P2P.ListenAddress, "Node listen address. (0.0.0.0:0 means any interface, any port)") 35 cmd.Flags().String("p2p.seeds", config.P2P.Seeds, "Comma-delimited ID@host:port seed nodes") 36 cmd.Flags().String("p2p.persistent_peers", config.P2P.PersistentPeers, "Comma-delimited ID@host:port persistent peers") 37 cmd.Flags().Bool("p2p.upnp", config.P2P.UPNP, "Enable/disable UPNP port forwarding") 38 cmd.Flags().Bool("p2p.pex", config.P2P.PexReactor, "Enable/disable Peer-Exchange") 39 cmd.Flags().Bool("p2p.seed_mode", config.P2P.SeedMode, "Enable/disable seed mode") 40 cmd.Flags().String("p2p.private_peer_ids", config.P2P.PrivatePeerIDs, "Comma-delimited private peer IDs") 41 42 // consensus flags 43 cmd.Flags().Bool("consensus.create_empty_blocks", config.Consensus.CreateEmptyBlocks, "Set this to false to only produce blocks when there are txs or when the AppHash changes") 44 } 45 46 // NewRunNodeCmd returns the command that allows the CLI to start a node. 47 // It can be used with a custom PrivValidator and in-process ABCI application. 48 func NewRunNodeCmd(nodeProvider nm.NodeProvider) *cobra.Command { 49 cmd := &cobra.Command{ 50 Use: "node", 51 Short: "Run the tendermint node", 52 RunE: func(cmd *cobra.Command, args []string) error { 53 n, err := nodeProvider(config, logger) 54 if err != nil { 55 return fmt.Errorf("Failed to create node: %v", err) 56 } 57 58 // Stop upon receiving SIGTERM or CTRL-C. 59 cmn.TrapSignal(logger, func() { 60 if n.IsRunning() { 61 n.Stop() 62 } 63 }) 64 65 if err := n.Start(); err != nil { 66 return fmt.Errorf("Failed to start node: %v", err) 67 } 68 logger.Info("Started node", "nodeInfo", n.Switch().NodeInfo()) 69 70 // Run forever. 71 select {} 72 }, 73 } 74 75 AddNodeFlags(cmd) 76 return cmd 77 }