From a30f5730b384bf99d23f6e83b356e27a14f961d1 Mon Sep 17 00:00:00 2001 From: Maran Date: Mon, 24 Mar 2014 10:56:42 +0100 Subject: Reimplement new miner creation --- ethereum/ethereum.go | 44 +++++++++++++++----------------------------- 1 file changed, 15 insertions(+), 29 deletions(-) (limited to 'ethereum/ethereum.go') diff --git a/ethereum/ethereum.go b/ethereum/ethereum.go index 3f5e4a8f5..c82e7dcd8 100644 --- a/ethereum/ethereum.go +++ b/ethereum/ethereum.go @@ -4,8 +4,8 @@ import ( "fmt" "github.com/ethereum/eth-go" "github.com/ethereum/eth-go/ethchain" + "github.com/ethereum/eth-go/ethminer" "github.com/ethereum/eth-go/ethutil" - "github.com/ethereum/eth-go/ethwire" "github.com/ethereum/go-ethereum/utils" "log" "os" @@ -121,36 +121,22 @@ func main() { // Fake block mining. It broadcasts a new block every 5 seconds go func() { - pow := ðchain.EasyPow{} - data, _ := ethutil.Config.Db.Get([]byte("KeyRing")) - keyRing := ethutil.NewValueFromBytes(data) - addr := keyRing.Get(1).Bytes() - - for { - txs := ethereum.TxPool().Flush() - // Create a new block which we're going to mine - block := ethereum.BlockChain().NewBlock(addr, txs) - log.Println("Mining on new block. Includes", len(block.Transactions()), "transactions") - // Apply all transactions to the block - ethereum.StateManager().ApplyTransactions(block, block.Transactions()) - - ethereum.StateManager().Prepare(block.State(), block.State()) - ethereum.StateManager().AccumelateRewards(block) - - // Search the nonce - block.Nonce = pow.Search(block) - ethereum.Broadcast(ethwire.MsgBlockTy, []interface{}{block.Value().Val}) - - ethereum.StateManager().PrepareDefault(block) - err := ethereum.StateManager().ProcessBlock(block) - if err != nil { - log.Println(err) - } else { - log.Println("\n+++++++ MINED BLK +++++++\n", ethereum.BlockChain().CurrentBlock) - log.Printf("🔨 Mined block %x\n", block.Hash()) - } + + if StartMining { + log.Printf("Miner started\n") + + go func() { + data, _ := ethutil.Config.Db.Get([]byte("KeyRing")) + keyRing := ethutil.NewValueFromBytes(data) + addr := keyRing.Get(1).Bytes() + + miner := ethminer.NewDefaultMiner(addr, ethereum) + miner.Start() + + }() } }() + } // Wait for shutdown -- cgit v1.2.3 From cc5501b12f1b4f2297344d85f4d7f8c95b36fc34 Mon Sep 17 00:00:00 2001 From: Maran Date: Wed, 9 Apr 2014 10:29:52 -0400 Subject: Importing mnemonic support --- ethereum/ethereum.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'ethereum/ethereum.go') diff --git a/ethereum/ethereum.go b/ethereum/ethereum.go index c82e7dcd8..e1e803771 100644 --- a/ethereum/ethereum.go +++ b/ethereum/ethereum.go @@ -11,6 +11,7 @@ import ( "os" "os/signal" "runtime" + "strings" ) const Debug = true @@ -78,7 +79,17 @@ func main() { } if r == "y" { - utils.ImportPrivateKey(ImportKey) + mnemonic := strings.Split(ImportKey, " ") + if len(mnemonic) == 24 { + fmt.Println("Got mnemonic key, importing.") + key := ethutil.MnemonicDecode(mnemonic) + utils.ImportPrivateKey(key) + } else if len(mnemonic) == 1 { + fmt.Println("Got hex key, importing.") + utils.ImportPrivateKey(ImportKey) + } else { + fmt.Println("Did not recognise format, exiting.") + } os.Exit(0) } } else { -- cgit v1.2.3 From f4c13f865634bae6c9cc7cd0478b7765a24fa695 Mon Sep 17 00:00:00 2001 From: zelig Date: Wed, 16 Apr 2014 13:37:04 +0100 Subject: logfile - add logfile option to ethereum client flags - fallback to StdOut - Logger appended to ethutil.Config.Log loggers - wrapper uses ethutil.Config.Log --- ethereum/ethereum.go | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) (limited to 'ethereum/ethereum.go') diff --git a/ethereum/ethereum.go b/ethereum/ethereum.go index e1e803771..f00c75ad0 100644 --- a/ethereum/ethereum.go +++ b/ethereum/ethereum.go @@ -25,7 +25,6 @@ func RegisterInterupts(s *eth.Ethereum) { go func() { for sig := range c { fmt.Printf("Shutting down (%v) ... \n", sig) - s.Stop() } }() @@ -36,8 +35,25 @@ func main() { runtime.GOMAXPROCS(runtime.NumCPU()) - ethchain.InitFees() + // set logger + var logger *log.Logger + flags := log.LstdFlags + + if LogFile != "" { + logfile, err := os.OpenFile(LogFile, os.O_RDWR | os.O_CREATE | os.O_APPEND, 0666) + if err != nil { + panic(fmt.Sprintf("error opening log file '%s': %v", LogFile, err)) + } + defer logfile.Close() + log.SetOutput(logfile) + logger = log.New(logfile, "", flags) + } else { + logger = log.New(os.Stdout, "", flags) + } ethutil.ReadConfig(DataDir) + ethutil.Config.Log.AddLogSystem(logger) + + ethchain.InitFees() ethutil.Config.Seed = UseSeed // Instantiated a eth stack @@ -108,7 +124,7 @@ func main() { os.Exit(0) } - log.Printf("Starting Ethereum v%s\n", ethutil.Config.Ver) + ethutil.Config.Log.Infoln(fmt.Sprintf("Starting Ethereum v%s", ethutil.Config.Ver)) // Set the max peers ethereum.MaxPeers = MaxPeer @@ -128,13 +144,13 @@ func main() { ethereum.Start() if StartMining { - log.Printf("Miner started\n") + ethutil.Config.Log.Infoln("Miner started") // Fake block mining. It broadcasts a new block every 5 seconds go func() { if StartMining { - log.Printf("Miner started\n") + ethutil.Config.Log.Infoln("Miner started") go func() { data, _ := ethutil.Config.Db.Get([]byte("KeyRing")) -- cgit v1.2.3 From 32b09d652de90d1626888c4ed6b61fb5bce0a7dc Mon Sep 17 00:00:00 2001 From: zelig Date: Wed, 16 Apr 2014 14:57:51 +0100 Subject: non-interactive option - add -y flag for non-interactive use - refactor main - output to logfile (not ideal..) but not to all ethutil loggers for privacy --- ethereum/ethereum.go | 104 +++++++++++++++++++++++---------------------------- 1 file changed, 47 insertions(+), 57 deletions(-) (limited to 'ethereum/ethereum.go') diff --git a/ethereum/ethereum.go b/ethereum/ethereum.go index f00c75ad0..4f5c3756a 100644 --- a/ethereum/ethereum.go +++ b/ethereum/ethereum.go @@ -30,13 +30,27 @@ func RegisterInterupts(s *eth.Ethereum) { }() } +func confirm(message string) bool { + fmt.Println(message, "Are you sure? (y/n)") + var r string + fmt.Scanln(&r) + for ; ; fmt.Scanln(&r) { + if r == "n" || r == "y" { + break + } else { + fmt.Printf("Yes or no?", r) + } + } + return r == "y" +} + func main() { Init() runtime.GOMAXPROCS(runtime.NumCPU()) // set logger - var logger *log.Logger + var logSys *log.Logger flags := log.LstdFlags if LogFile != "" { @@ -46,12 +60,13 @@ func main() { } defer logfile.Close() log.SetOutput(logfile) - logger = log.New(logfile, "", flags) + logSys = log.New(logfile, "", flags) } else { - logger = log.New(os.Stdout, "", flags) + logSys = log.New(os.Stdout, "", flags) } ethutil.ReadConfig(DataDir) - ethutil.Config.Log.AddLogSystem(logger) + logger := ethutil.Config.Log + logger.AddLogSystem(logSys) ethchain.InitFees() ethutil.Config.Seed = UseSeed @@ -64,67 +79,42 @@ func main() { } ethereum.Port = OutboundPort - if GenAddr { - fmt.Println("This action overwrites your old private key. Are you sure? (y/n)") - - var r string - fmt.Scanln(&r) - for ; ; fmt.Scanln(&r) { - if r == "n" || r == "y" { - break - } else { - fmt.Printf("Yes or no?", r) - } - } - - if r == "y" { + // bookkeeping tasks + switch { + case GenAddr: + if NonInteractive || confirm("This action overwrites your old private key.") { utils.CreateKeyPair(true) } os.Exit(0) - } else { - if len(ImportKey) > 0 { - fmt.Println("This action overwrites your old private key. Are you sure? (y/n)") - var r string - fmt.Scanln(&r) - for ; ; fmt.Scanln(&r) { - if r == "n" || r == "y" { - break - } else { - fmt.Printf("Yes or no?", r) - } - } - - if r == "y" { - mnemonic := strings.Split(ImportKey, " ") - if len(mnemonic) == 24 { - fmt.Println("Got mnemonic key, importing.") - key := ethutil.MnemonicDecode(mnemonic) - utils.ImportPrivateKey(key) - } else if len(mnemonic) == 1 { - fmt.Println("Got hex key, importing.") - utils.ImportPrivateKey(ImportKey) - } else { - fmt.Println("Did not recognise format, exiting.") - } - os.Exit(0) + case len(ImportKey) > 0: + if NonInteractive || confirm("This action overwrites your old private key.") { + mnemonic := strings.Split(ImportKey, " ") + if len(mnemonic) == 24 { + logSys.Println("Got mnemonic key, importing.") + key := ethutil.MnemonicDecode(mnemonic) + utils.ImportPrivateKey(key) + } else if len(mnemonic) == 1 { + logSys.Println("Got hex key, importing.") + utils.ImportPrivateKey(ImportKey) + } else { + logSys.Println("Did not recognise format, exiting.") } - } else { - utils.CreateKeyPair(false) } - } - - if ExportKey { + os.Exit(0) + case len(ImportKey) == 0: + utils.CreateKeyPair(false) + fallthrough + case ExportKey: key := ethutil.Config.Db.GetKeys()[0] - fmt.Printf("%x\n", key.PrivateKey) + logSys.Println(fmt.Sprintf("prvk: %x\n", key.PrivateKey)) os.Exit(0) - } - - if ShowGenesis { - fmt.Println(ethereum.BlockChain().Genesis()) + case ShowGenesis: + logSys.Println(ethereum.BlockChain().Genesis()) os.Exit(0) } - ethutil.Config.Log.Infoln(fmt.Sprintf("Starting Ethereum v%s", ethutil.Config.Ver)) + // client + logger.Infoln(fmt.Sprintf("Starting Ethereum v%s", ethutil.Config.Ver)) // Set the max peers ethereum.MaxPeers = MaxPeer @@ -144,13 +134,13 @@ func main() { ethereum.Start() if StartMining { - ethutil.Config.Log.Infoln("Miner started") + logger.Infoln("Miner started") // Fake block mining. It broadcasts a new block every 5 seconds go func() { if StartMining { - ethutil.Config.Log.Infoln("Miner started") + logger.Infoln("Miner started") go func() { data, _ := ethutil.Config.Db.Get([]byte("KeyRing")) -- cgit v1.2.3 From 59a7b130191286f141a40d294981805677414eb5 Mon Sep 17 00:00:00 2001 From: zelig Date: Wed, 16 Apr 2014 15:01:22 +0100 Subject: typo interrupt --- ethereum/ethereum.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'ethereum/ethereum.go') diff --git a/ethereum/ethereum.go b/ethereum/ethereum.go index 4f5c3756a..881f39ece 100644 --- a/ethereum/ethereum.go +++ b/ethereum/ethereum.go @@ -17,7 +17,7 @@ import ( const Debug = true // Register interrupt handlers so we can stop the ethereum -func RegisterInterupts(s *eth.Ethereum) { +func RegisterInterrupts(s *eth.Ethereum) { // Buffered chan of one is enough c := make(chan os.Signal, 1) // Notify about interrupts for now @@ -130,7 +130,7 @@ func main() { go console.Start() } - RegisterInterupts(ethereum) + RegisterInterrupts(ethereum) ethereum.Start() if StartMining { -- cgit v1.2.3 From e16fd323e800297602a60b7a0e7b7897a55d2fa0 Mon Sep 17 00:00:00 2001 From: obscuren Date: Sat, 26 Apr 2014 01:47:04 +0200 Subject: Leverage the new watch & address:changed functionality --- ethereum/ethereum.go | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) (limited to 'ethereum/ethereum.go') diff --git a/ethereum/ethereum.go b/ethereum/ethereum.go index 881f39ece..04851d2bd 100644 --- a/ethereum/ethereum.go +++ b/ethereum/ethereum.go @@ -53,22 +53,24 @@ func main() { var logSys *log.Logger flags := log.LstdFlags + ethutil.ReadConfig(DataDir) + logger := ethutil.Config.Log + if LogFile != "" { - logfile, err := os.OpenFile(LogFile, os.O_RDWR | os.O_CREATE | os.O_APPEND, 0666) - if err != nil { - panic(fmt.Sprintf("error opening log file '%s': %v", LogFile, err)) - } - defer logfile.Close() + logfile, err := os.OpenFile(LogFile, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) + if err != nil { + panic(fmt.Sprintf("error opening log file '%s': %v", LogFile, err)) + } + defer logfile.Close() log.SetOutput(logfile) logSys = log.New(logfile, "", flags) - } else { - logSys = log.New(os.Stdout, "", flags) - } - ethutil.ReadConfig(DataDir) - logger := ethutil.Config.Log - logger.AddLogSystem(logSys) + logger.AddLogSystem(logSys) + } + /*else { + logSys = log.New(os.Stdout, "", flags) + }*/ - ethchain.InitFees() + ethchain.InitFees() ethutil.Config.Seed = UseSeed // Instantiated a eth stack @@ -101,9 +103,6 @@ func main() { } } os.Exit(0) - case len(ImportKey) == 0: - utils.CreateKeyPair(false) - fallthrough case ExportKey: key := ethutil.Config.Db.GetKeys()[0] logSys.Println(fmt.Sprintf("prvk: %x\n", key.PrivateKey)) @@ -111,6 +110,9 @@ func main() { case ShowGenesis: logSys.Println(ethereum.BlockChain().Genesis()) os.Exit(0) + default: + // Creates a keypair if non exists + utils.CreateKeyPair(false) } // client -- cgit v1.2.3 From 3424bf17ca791b97ea512bef5290d1a52c1758af Mon Sep 17 00:00:00 2001 From: Maran Date: Fri, 2 May 2014 13:35:03 +0200 Subject: Moved RPC Server and implemented it as a package --- ethereum/ethereum.go | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'ethereum/ethereum.go') diff --git a/ethereum/ethereum.go b/ethereum/ethereum.go index 04851d2bd..0b56855e0 100644 --- a/ethereum/ethereum.go +++ b/ethereum/ethereum.go @@ -4,6 +4,7 @@ import ( "fmt" "github.com/ethereum/eth-go" "github.com/ethereum/eth-go/ethchain" + "github.com/ethereum/eth-go/etherpc" "github.com/ethereum/eth-go/ethminer" "github.com/ethereum/eth-go/ethutil" "github.com/ethereum/go-ethereum/utils" @@ -131,6 +132,10 @@ func main() { console := NewConsole(ethereum) go console.Start() } + if StartRpc { + ethereum.RpcServer = etherpc.NewJsonRpcServer() + go ethereum.RpcServer.Start() + } RegisterInterrupts(ethereum) ethereum.Start() -- cgit v1.2.3 From bcb3ad733258b3d8f639763c2c78c85f43b2c826 Mon Sep 17 00:00:00 2001 From: Maran Date: Fri, 2 May 2014 20:01:25 +0200 Subject: Fix circular deps --- ethereum/ethereum.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'ethereum/ethereum.go') diff --git a/ethereum/ethereum.go b/ethereum/ethereum.go index 0b56855e0..829f71e39 100644 --- a/ethereum/ethereum.go +++ b/ethereum/ethereum.go @@ -6,6 +6,7 @@ import ( "github.com/ethereum/eth-go/ethchain" "github.com/ethereum/eth-go/etherpc" "github.com/ethereum/eth-go/ethminer" + "github.com/ethereum/eth-go/ethpub" "github.com/ethereum/eth-go/ethutil" "github.com/ethereum/go-ethereum/utils" "log" @@ -133,8 +134,10 @@ func main() { go console.Start() } if StartRpc { - ethereum.RpcServer = etherpc.NewJsonRpcServer() - go ethereum.RpcServer.Start() + // TODO: Can we make this work again? + //ethereum.RpcServer = etherpc.NewJsonRpcServer(ethpub.NewPEthereum(ethereum)) + rpc := etherpc.NewJsonRpcServer(ethpub.NewPEthereum(ethereum)) + go rpc.Start() } RegisterInterrupts(ethereum) -- cgit v1.2.3 From e94e5ac75dbbc4ec52228ae11377a4fa71ab95ab Mon Sep 17 00:00:00 2001 From: Maran Date: Mon, 5 May 2014 14:16:14 +0200 Subject: Implemented rpc for ethereal and ethereum --- ethereum/ethereum.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'ethereum/ethereum.go') diff --git a/ethereum/ethereum.go b/ethereum/ethereum.go index 829f71e39..1315c0120 100644 --- a/ethereum/ethereum.go +++ b/ethereum/ethereum.go @@ -134,10 +134,8 @@ func main() { go console.Start() } if StartRpc { - // TODO: Can we make this work again? - //ethereum.RpcServer = etherpc.NewJsonRpcServer(ethpub.NewPEthereum(ethereum)) - rpc := etherpc.NewJsonRpcServer(ethpub.NewPEthereum(ethereum)) - go rpc.Start() + ethereum.RpcServer = etherpc.NewJsonRpcServer(ethpub.NewPEthereum(ethereum.StateManager(), ethereum.BlockChain(), ethereum.TxPool())) + go ethereum.RpcServer.Start() } RegisterInterrupts(ethereum) -- cgit v1.2.3 From c9852c4929c39ab47eab7b70f9304432f2c8225e Mon Sep 17 00:00:00 2001 From: Maran Date: Mon, 5 May 2014 15:15:04 +0200 Subject: Renamed etherpc to ethrpc All work and no play makes Maran a dull boy --- ethereum/ethereum.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'ethereum/ethereum.go') diff --git a/ethereum/ethereum.go b/ethereum/ethereum.go index 1315c0120..8719f3e87 100644 --- a/ethereum/ethereum.go +++ b/ethereum/ethereum.go @@ -4,9 +4,9 @@ import ( "fmt" "github.com/ethereum/eth-go" "github.com/ethereum/eth-go/ethchain" - "github.com/ethereum/eth-go/etherpc" "github.com/ethereum/eth-go/ethminer" "github.com/ethereum/eth-go/ethpub" + "github.com/ethereum/eth-go/ethrpc" "github.com/ethereum/eth-go/ethutil" "github.com/ethereum/go-ethereum/utils" "log" @@ -134,7 +134,7 @@ func main() { go console.Start() } if StartRpc { - ethereum.RpcServer = etherpc.NewJsonRpcServer(ethpub.NewPEthereum(ethereum.StateManager(), ethereum.BlockChain(), ethereum.TxPool())) + ethereum.RpcServer = ethrpc.NewJsonRpcServer(ethpub.NewPEthereum(ethereum.StateManager(), ethereum.BlockChain(), ethereum.TxPool())) go ethereum.RpcServer.Start() } -- cgit v1.2.3