|
|
|
@ -11,6 +11,7 @@ import ( |
|
|
|
|
"github.com/ethereum/go-ethereum/ethutil" |
|
|
|
|
"github.com/ethereum/go-ethereum/event" |
|
|
|
|
ethlogger "github.com/ethereum/go-ethereum/logger" |
|
|
|
|
"github.com/ethereum/go-ethereum/miner" |
|
|
|
|
"github.com/ethereum/go-ethereum/p2p" |
|
|
|
|
"github.com/ethereum/go-ethereum/p2p/discover" |
|
|
|
|
"github.com/ethereum/go-ethereum/p2p/nat" |
|
|
|
@ -95,6 +96,7 @@ type Ethereum struct { |
|
|
|
|
eventMux *event.TypeMux |
|
|
|
|
txSub event.Subscription |
|
|
|
|
blockSub event.Subscription |
|
|
|
|
miner *miner.Miner |
|
|
|
|
|
|
|
|
|
RpcServer rpc.RpcServer |
|
|
|
|
WsServer rpc.RpcServer |
|
|
|
@ -151,6 +153,7 @@ func New(config *Config) (*Ethereum, error) { |
|
|
|
|
eth.blockProcessor = core.NewBlockProcessor(db, eth.txPool, eth.chainManager, eth.EventMux()) |
|
|
|
|
eth.chainManager.SetProcessor(eth.blockProcessor) |
|
|
|
|
eth.whisper = whisper.New() |
|
|
|
|
eth.miner = miner.New(keyManager.Address(), eth) |
|
|
|
|
|
|
|
|
|
hasBlock := eth.chainManager.HasBlock |
|
|
|
|
insertChain := eth.chainManager.InsertChain |
|
|
|
@ -181,69 +184,22 @@ func New(config *Config) (*Ethereum, error) { |
|
|
|
|
return eth, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (s *Ethereum) KeyManager() *crypto.KeyManager { |
|
|
|
|
return s.keyManager |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (s *Ethereum) Logger() ethlogger.LogSystem { |
|
|
|
|
return s.logger |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
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) Whisper() *whisper.Whisper { |
|
|
|
|
return s.whisper |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (s *Ethereum) EventMux() *event.TypeMux { |
|
|
|
|
return s.eventMux |
|
|
|
|
} |
|
|
|
|
func (self *Ethereum) Db() ethutil.Database { |
|
|
|
|
return self.db |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (s *Ethereum) IsMining() bool { |
|
|
|
|
return s.Mining |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (s *Ethereum) IsListening() bool { |
|
|
|
|
// XXX TODO
|
|
|
|
|
return false |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (s *Ethereum) PeerCount() int { |
|
|
|
|
return s.net.PeerCount() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (s *Ethereum) Peers() []*p2p.Peer { |
|
|
|
|
return s.net.Peers() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (s *Ethereum) MaxPeers() int { |
|
|
|
|
return s.net.MaxPeers |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (s *Ethereum) Coinbase() []byte { |
|
|
|
|
return nil // TODO
|
|
|
|
|
} |
|
|
|
|
func (s *Ethereum) KeyManager() *crypto.KeyManager { return s.keyManager } |
|
|
|
|
func (s *Ethereum) Logger() ethlogger.LogSystem { return s.logger } |
|
|
|
|
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) 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) Miner() *miner.Miner { return s.miner } |
|
|
|
|
func (s *Ethereum) IsListening() bool { return true } // Always listening
|
|
|
|
|
func (s *Ethereum) PeerCount() int { return s.net.PeerCount() } |
|
|
|
|
func (s *Ethereum) Peers() []*p2p.Peer { return s.net.Peers() } |
|
|
|
|
func (s *Ethereum) MaxPeers() int { return s.net.MaxPeers } |
|
|
|
|
func (s *Ethereum) Coinbase() []byte { return nil } // TODO
|
|
|
|
|
|
|
|
|
|
// Start the ethereum
|
|
|
|
|
func (s *Ethereum) Start() error { |
|
|
|
|