From b9b7442b74a3a533f3b6eeefe6a1415d59eb8ccf Mon Sep 17 00:00:00 2001
From: Taylor Gerring <taylor.gerring@gmail.com>
Date: Tue, 24 Mar 2015 16:08:18 +0100
Subject: [PATCH] Remove redundant fields

---
 xeth/xeth.go | 57 ++++++++++++++++++++++------------------------------
 1 file changed, 24 insertions(+), 33 deletions(-)

diff --git a/xeth/xeth.go b/xeth/xeth.go
index 1176fef94..7ec464609 100644
--- a/xeth/xeth.go
+++ b/xeth/xeth.go
@@ -56,12 +56,9 @@ func (dummyFrontend) UnlockAccount([]byte) bool                  { return false
 func (dummyFrontend) ConfirmTransaction(*types.Transaction) bool { return true }
 
 type XEth struct {
-	backend        *eth.Ethereum
-	blockProcessor *core.BlockProcessor
-	chainManager   *core.ChainManager
-	accountManager *accounts.Manager
-	state          *State
-	whisper        *Whisper
+	backend *eth.Ethereum
+	state   *State
+	whisper *Whisper
 
 	frontend Frontend
 
@@ -86,24 +83,21 @@ type XEth struct {
 // confirms all transactions will be used.
 func New(eth *eth.Ethereum, frontend Frontend) *XEth {
 	xeth := &XEth{
-		backend:        eth,
-		blockProcessor: eth.BlockProcessor(),
-		chainManager:   eth.ChainManager(),
-		accountManager: eth.AccountManager(),
-		whisper:        NewWhisper(eth.Whisper()),
-		quit:           make(chan struct{}),
-		filterManager:  filter.NewFilterManager(eth.EventMux()),
-		frontend:       frontend,
-		logs:           make(map[int]*logFilter),
-		messages:       make(map[int]*whisperFilter),
-		agent:          miner.NewRemoteAgent(),
+		backend:       eth,
+		whisper:       NewWhisper(eth.Whisper()),
+		quit:          make(chan struct{}),
+		filterManager: filter.NewFilterManager(eth.EventMux()),
+		frontend:      frontend,
+		logs:          make(map[int]*logFilter),
+		messages:      make(map[int]*whisperFilter),
+		agent:         miner.NewRemoteAgent(),
 	}
 	eth.Miner().Register(xeth.agent)
 
 	if frontend == nil {
 		xeth.frontend = dummyFrontend{}
 	}
-	xeth.state = NewState(xeth, xeth.chainManager.TransState())
+	xeth.state = NewState(xeth, xeth.backend.ChainManager().TransState())
 	go xeth.start()
 	go xeth.filterManager.Start()
 
@@ -172,10 +166,7 @@ func (self *XEth) AtStateNum(num int64) *XEth {
 func (self *XEth) Backend() *eth.Ethereum { return self.backend }
 func (self *XEth) WithState(statedb *state.StateDB) *XEth {
 	xeth := &XEth{
-		backend:        self.backend,
-		blockProcessor: self.blockProcessor,
-		chainManager:   self.chainManager,
-		whisper:        self.whisper,
+		backend: self.backend,
 	}
 
 	xeth.state = NewState(xeth, statedb)
@@ -187,14 +178,14 @@ func (self *XEth) Whisper() *Whisper { return self.whisper }
 
 func (self *XEth) BlockByHash(strHash string) *Block {
 	hash := common.HexToHash(strHash)
-	block := self.chainManager.GetBlock(hash)
+	block := self.backend.ChainManager().GetBlock(hash)
 
 	return NewBlock(block)
 }
 
 func (self *XEth) EthBlockByHash(strHash string) *types.Block {
 	hash := common.HexToHash(strHash)
-	block := self.chainManager.GetBlock(hash)
+	block := self.backend.ChainManager().GetBlock(hash)
 
 	return block
 }
@@ -214,10 +205,10 @@ func (self *XEth) BlockByNumber(num int64) *Block {
 	}
 
 	if num == -1 {
-		return NewBlock(self.chainManager.CurrentBlock())
+		return NewBlock(self.backend.ChainManager().CurrentBlock())
 	}
 
-	return NewBlock(self.chainManager.GetBlockByNumber(uint64(num)))
+	return NewBlock(self.backend.ChainManager().GetBlockByNumber(uint64(num)))
 }
 
 func (self *XEth) EthBlockByNumber(num int64) *types.Block {
@@ -227,10 +218,10 @@ func (self *XEth) EthBlockByNumber(num int64) *types.Block {
 	}
 
 	if num == -1 {
-		return self.chainManager.CurrentBlock()
+		return self.backend.ChainManager().CurrentBlock()
 	}
 
-	return self.chainManager.GetBlockByNumber(uint64(num))
+	return self.backend.ChainManager().GetBlockByNumber(uint64(num))
 }
 
 func (self *XEth) Block(v interface{}) *Block {
@@ -530,7 +521,7 @@ func (self *XEth) PushTx(encodedTx string) (string, error) {
 }
 
 func (self *XEth) Call(fromStr, toStr, valueStr, gasStr, gasPriceStr, dataStr string) (string, error) {
-	statedb := self.State().State() //self.chainManager.TransState()
+	statedb := self.State().State() //self.eth.ChainManager().TransState()
 	msg := callmsg{
 		from:     statedb.GetOrNewStateObject(common.HexToAddress(fromStr)),
 		to:       common.HexToAddress(toStr),
@@ -547,8 +538,8 @@ func (self *XEth) Call(fromStr, toStr, valueStr, gasStr, gasPriceStr, dataStr st
 		msg.gasPrice = defaultGasPrice
 	}
 
-	block := self.chainManager.CurrentBlock()
-	vmenv := core.NewEnv(statedb, self.chainManager, msg, block)
+	block := self.backend.ChainManager().CurrentBlock()
+	vmenv := core.NewEnv(statedb, self.backend.ChainManager(), msg, block)
 
 	res, err := vmenv.Call(msg.from, msg.to, msg.data, msg.gas, msg.gasPrice, msg.value)
 	return common.ToHex(res), err
@@ -609,7 +600,7 @@ func (self *XEth) Transact(fromStr, toStr, valueStr, gasStr, gasPriceStr, codeSt
 		tx = types.NewTransactionMessage(to, value.BigInt(), gas, price, data)
 	}
 
-	state := self.chainManager.TxState()
+	state := self.backend.ChainManager().TxState()
 	nonce := state.NewNonce(from)
 	tx.SetNonce(nonce)
 
@@ -630,7 +621,7 @@ func (self *XEth) Transact(fromStr, toStr, valueStr, gasStr, gasPriceStr, codeSt
 }
 
 func (self *XEth) sign(tx *types.Transaction, from common.Address, didUnlock bool) error {
-	sig, err := self.accountManager.Sign(accounts.Account{Address: from.Bytes()}, tx.Hash().Bytes())
+	sig, err := self.backend.AccountManager().Sign(accounts.Account{Address: from.Bytes()}, tx.Hash().Bytes())
 	if err == accounts.ErrLocked {
 		if didUnlock {
 			return fmt.Errorf("sender account still locked after successful unlock")
-- 
2.18.1