From 16ecda951b767800b4e09ad8e86e0866b05136be Mon Sep 17 00:00:00 2001 From: zelig Date: Wed, 25 Feb 2015 20:06:59 +0700 Subject: integrate blockpool into eth - remove blockpool code - remove blockpool integration test (kinda embarrassing) - remove errors.go --- eth/backend.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'eth/backend.go') diff --git a/eth/backend.go b/eth/backend.go index 0e5d24429..f6cde5ccd 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -7,6 +7,7 @@ import ( "path" "strings" + "github.com/ethereum/go-ethereum/blockpool" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/ethdb" @@ -117,7 +118,7 @@ type Ethereum struct { blockProcessor *core.BlockProcessor txPool *core.TxPool chainManager *core.ChainManager - blockPool *BlockPool + blockPool *blockpool.BlockPool whisper *whisper.Whisper net *p2p.Server @@ -185,7 +186,7 @@ func New(config *Config) (*Ethereum, error) { hasBlock := eth.chainManager.HasBlock insertChain := eth.chainManager.InsertChain - eth.blockPool = NewBlockPool(hasBlock, insertChain, ezp.Verify) + eth.blockPool = blockpool.New(hasBlock, insertChain, ezp.Verify) netprv, err := config.nodeKey() if err != nil { @@ -220,7 +221,7 @@ func (s *Ethereum) Name() string { return s.net.Name } func (s *Ethereum) ChainManager() *core.ChainManager { return s.chainManager } func (s *Ethereum) BlockProcessor() *core.BlockProcessor { return s.blockProcessor } func (s *Ethereum) TxPool() *core.TxPool { return s.txPool } -func (s *Ethereum) BlockPool() *BlockPool { return s.blockPool } +func (s *Ethereum) BlockPool() *blockpool.BlockPool { return s.blockPool } func (s *Ethereum) Whisper() *whisper.Whisper { return s.whisper } func (s *Ethereum) EventMux() *event.TypeMux { return s.eventMux } func (s *Ethereum) Db() ethutil.Database { return s.db } -- cgit v1.2.3 From 313fe3861b3c338b3b6304adac46c86af7e2d52e Mon Sep 17 00:00:00 2001 From: obscuren Date: Tue, 3 Mar 2015 17:55:23 +0100 Subject: fixed pow stuff --- eth/backend.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'eth/backend.go') diff --git a/eth/backend.go b/eth/backend.go index 0de0fcf4a..50fb70720 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -7,6 +7,7 @@ import ( "path" "strings" + "github.com/ethereum/ethash" "github.com/ethereum/go-ethereum/blockpool" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/crypto" @@ -179,11 +180,13 @@ func New(config *Config) (*Ethereum, error) { } eth.chainManager = core.NewChainManager(db, eth.EventMux()) + pow := ethash.New(eth.chainManager) + eth.txPool = core.NewTxPool(eth.EventMux()) - eth.blockProcessor = core.NewBlockProcessor(db, eth.txPool, eth.chainManager, eth.EventMux()) + eth.blockProcessor = core.NewBlockProcessor(db, pow, eth.txPool, eth.chainManager, eth.EventMux()) eth.chainManager.SetProcessor(eth.blockProcessor) eth.whisper = whisper.New() - eth.miner = miner.New(keyManager.Address(), eth, config.MinerThreads) + eth.miner = miner.New(keyManager.Address(), eth, pow, config.MinerThreads) hasBlock := eth.chainManager.HasBlock insertChain := eth.chainManager.InsertChain -- cgit v1.2.3 From 215c763d53fc8e06e8c9807875eacaccf3ef45fa Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Wed, 4 Mar 2015 16:54:36 +0100 Subject: eth, p2p: delete p2p.Blacklist It is unused and untested right now. We can bring it back later if required. --- eth/backend.go | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) (limited to 'eth/backend.go') diff --git a/eth/backend.go b/eth/backend.go index 5cd7b308f..8b76e0ca3 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -108,11 +108,9 @@ func (cfg *Config) nodeKey() (*ecdsa.PrivateKey, error) { type Ethereum struct { // Channel for shutting down the ethereum shutdownChan chan bool - quit chan bool // DB interface - db ethutil.Database - blacklist p2p.Blacklist + db ethutil.Database //*** SERVICES *** // State manager for processing new blocks and managing the over all states @@ -170,10 +168,8 @@ func New(config *Config) (*Ethereum, error) { eth := &Ethereum{ shutdownChan: make(chan bool), - quit: make(chan bool), db: db, keyManager: keyManager, - blacklist: p2p.NewBlacklist(), eventMux: &event.TypeMux{}, logger: ethlogger, } @@ -206,7 +202,6 @@ func New(config *Config) (*Ethereum, error) { Name: config.Name, MaxPeers: config.MaxPeers, Protocols: protocols, - Blacklist: eth.blacklist, NAT: config.NAT, NoDial: !config.Dial, BootstrapNodes: config.parseBootNodes(), @@ -280,8 +275,6 @@ func (s *Ethereum) Stop() { // Close the database defer s.db.Close() - close(s.quit) - s.txSub.Unsubscribe() // quits txBroadcastLoop s.blockSub.Unsubscribe() // quits blockBroadcastLoop -- cgit v1.2.3 From c47866d25174bd783ee6bcd5b400d81d7bf598bb Mon Sep 17 00:00:00 2001 From: obscuren Date: Thu, 5 Mar 2015 09:14:58 +0100 Subject: Miner fixes and updates (including miner) --- eth/backend.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'eth/backend.go') diff --git a/eth/backend.go b/eth/backend.go index 5cd7b308f..88708b997 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -19,7 +19,6 @@ import ( "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/p2p/discover" "github.com/ethereum/go-ethereum/p2p/nat" - "github.com/ethereum/go-ethereum/pow/ezp" "github.com/ethereum/go-ethereum/rpc" "github.com/ethereum/go-ethereum/whisper" ) @@ -189,7 +188,7 @@ func New(config *Config) (*Ethereum, error) { hasBlock := eth.chainManager.HasBlock insertChain := eth.chainManager.InsertChain - eth.blockPool = blockpool.New(hasBlock, insertChain, ezp.Verify) + eth.blockPool = blockpool.New(hasBlock, insertChain, pow.Verify) netprv, err := config.nodeKey() if err != nil { -- cgit v1.2.3 From bdba044a8031d810555196cde1b97792fa2b8084 Mon Sep 17 00:00:00 2001 From: Felix Lange Date: Fri, 6 Mar 2015 02:46:56 +0100 Subject: ethutil: remove Config variable Various functions throughout the codebase used it to grab settings. This has to stop because I want to use them without reading the config file. These functions can now be used without reading the config first: * ethdb.NewLDBDatabase * ethrepl.NewJSRepl * vm.New --- eth/backend.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'eth/backend.go') diff --git a/eth/backend.go b/eth/backend.go index 88708b997..7351b4168 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -132,13 +132,15 @@ type Ethereum struct { logger logger.LogSystem - Mining bool + Mining bool + DataDir string } func New(config *Config) (*Ethereum, error) { // Boostrap database ethlogger := logger.New(config.DataDir, config.LogFile, config.LogLevel, config.LogFormat) - db, err := ethdb.NewLDBDatabase("blockchain") + + db, err := ethdb.NewLDBDatabase(path.Join(config.DataDir, "blockchain")) if err != nil { return nil, err } @@ -175,6 +177,7 @@ func New(config *Config) (*Ethereum, error) { blacklist: p2p.NewBlacklist(), eventMux: &event.TypeMux{}, logger: ethlogger, + DataDir: config.DataDir, } eth.chainManager = core.NewChainManager(db, eth.EventMux()) -- cgit v1.2.3 From ed84b58af57809a743e5be6f6ea53c079c50b765 Mon Sep 17 00:00:00 2001 From: obscuren Date: Fri, 6 Mar 2015 16:58:52 +0100 Subject: Debug option for VM & command line flag --- eth/backend.go | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'eth/backend.go') diff --git a/eth/backend.go b/eth/backend.go index 1c711a775..799937510 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -20,6 +20,7 @@ import ( "github.com/ethereum/go-ethereum/p2p/discover" "github.com/ethereum/go-ethereum/p2p/nat" "github.com/ethereum/go-ethereum/rpc" + "github.com/ethereum/go-ethereum/vm" "github.com/ethereum/go-ethereum/whisper" ) @@ -43,6 +44,7 @@ type Config struct { LogLevel int KeyRing string LogFormat string + VmDebug bool MaxPeers int Port string @@ -212,6 +214,8 @@ func New(config *Config) (*Ethereum, error) { eth.net.ListenAddr = ":" + config.Port } + vm.Debug = config.VmDebug + return eth, nil } -- cgit v1.2.3 From cd856cb2133d390758bb24b88fa3b538bb7bc306 Mon Sep 17 00:00:00 2001 From: obscuren Date: Fri, 6 Mar 2015 18:26:16 +0100 Subject: Separated block db from state db. Partial fix for #416 --- eth/backend.go | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'eth/backend.go') diff --git a/eth/backend.go b/eth/backend.go index 799937510..584d60c7e 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -111,7 +111,8 @@ type Ethereum struct { shutdownChan chan bool // DB interface - db ethutil.Database + blockDb ethutil.Database + stateDb ethutil.Database //*** SERVICES *** // State manager for processing new blocks and managing the over all states @@ -140,13 +141,17 @@ func New(config *Config) (*Ethereum, error) { // Boostrap database ethlogger := logger.New(config.DataDir, config.LogFile, config.LogLevel, config.LogFormat) - db, err := ethdb.NewLDBDatabase(path.Join(config.DataDir, "blockchain")) + blockDb, err := ethdb.NewLDBDatabase(path.Join(config.DataDir, "blockchain")) + if err != nil { + return nil, err + } + stateDb, err := ethdb.NewLDBDatabase(path.Join(config.DataDir, "state")) if err != nil { return nil, err } // Perform database sanity checks - d, _ := db.Get([]byte("ProtocolVersion")) + d, _ := blockDb.Get([]byte("ProtocolVersion")) protov := ethutil.NewValue(d).Uint() if protov != ProtocolVersion && protov != 0 { path := path.Join(config.DataDir, "blockchain") @@ -157,7 +162,7 @@ func New(config *Config) (*Ethereum, error) { var keyManager *crypto.KeyManager switch config.KeyStore { case "db": - keyManager = crypto.NewDBKeyManager(db) + keyManager = crypto.NewDBKeyManager(blockDb) case "file": keyManager = crypto.NewFileKeyManager(config.DataDir) default: @@ -166,23 +171,24 @@ func New(config *Config) (*Ethereum, error) { // Initialise the keyring keyManager.Init(config.KeyRing, 0, false) - saveProtocolVersion(db) + saveProtocolVersion(blockDb) //ethutil.Config.Db = db eth := &Ethereum{ shutdownChan: make(chan bool), - db: db, + blockDb: blockDb, + stateDb: stateDb, keyManager: keyManager, eventMux: &event.TypeMux{}, logger: ethlogger, DataDir: config.DataDir, } - eth.chainManager = core.NewChainManager(db, eth.EventMux()) + eth.chainManager = core.NewChainManager(blockDb, stateDb, eth.EventMux()) pow := ethash.New(eth.chainManager) eth.txPool = core.NewTxPool(eth.EventMux()) - eth.blockProcessor = core.NewBlockProcessor(db, pow, eth.txPool, eth.chainManager, eth.EventMux()) + eth.blockProcessor = core.NewBlockProcessor(stateDb, pow, eth.txPool, eth.chainManager, eth.EventMux()) eth.chainManager.SetProcessor(eth.blockProcessor) eth.whisper = whisper.New() eth.miner = miner.New(keyManager.Address(), eth, pow, config.MinerThreads) @@ -228,7 +234,8 @@ func (s *Ethereum) TxPool() *core.TxPool { return s.txPool } func (s *Ethereum) BlockPool() *blockpool.BlockPool { return s.blockPool } func (s *Ethereum) Whisper() *whisper.Whisper { return s.whisper } func (s *Ethereum) EventMux() *event.TypeMux { return s.eventMux } -func (s *Ethereum) Db() ethutil.Database { return s.db } +func (s *Ethereum) BlockDb() ethutil.Database { return s.blockDb } +func (s *Ethereum) StateDb() ethutil.Database { return s.stateDb } func (s *Ethereum) Miner() *miner.Miner { return s.miner } func (s *Ethereum) IsListening() bool { return true } // Always listening func (s *Ethereum) PeerCount() int { return s.net.PeerCount() } @@ -279,7 +286,8 @@ func (self *Ethereum) SuggestPeer(nodeURL string) error { func (s *Ethereum) Stop() { // Close the database - defer s.db.Close() + defer s.blockDb.Close() + defer s.stateDb.Close() s.txSub.Unsubscribe() // quits txBroadcastLoop s.blockSub.Unsubscribe() // quits blockBroadcastLoop -- cgit v1.2.3