package main import ( "flag" "fmt" "github.com/ethereum/ethutil-go" "log" "os" "os/signal" "runtime" ) const Debug = true var StartConsole bool var StartMining bool func Init() { flag.BoolVar(&StartConsole, "c", false, "debug and testing console") flag.BoolVar(&StartMining, "m", false, "start dagger mining") flag.Parse() } // Register interrupt handlers so we can stop the server func RegisterInterupts(s *Server) { // Buffered chan of one is enough c := make(chan os.Signal, 1) // Notify about interrupts for now signal.Notify(c, os.Interrupt) go func() { for sig := range c { fmt.Printf("Shutting down (%v) ... \n", sig) s.Stop() } }() } func main() { runtime.GOMAXPROCS(runtime.NumCPU()) ethutil.InitFees() Init() if StartConsole { console := NewConsole() console.Start() } else { log.Println("Starting Ethereum") server, err := NewServer() if err != nil { log.Println(err) return } RegisterInterupts(server) if StartMining { log.Println("Mining started") dagger := &Dagger{} go func() { for { res := dagger.Search(ethutil.Big("01001"), ethutil.BigPow(2, 36)) server.Broadcast("blockmine", ethutil.Encode(res.String())) } }() } server.Start() // Wait for shutdown server.WaitForShutdown() } }