瀏覽代碼

Removed the need of having a backend for the tx pool

obscuren 11 年之前
父節點
當前提交
d336e24dce
共有 4 個文件被更改,包括 14 次插入17 次删除
  1. 2 2
      core/chain_manager_test.go
  2. 10 13
      core/transaction_pool.go
  3. 1 1
      core/transaction_pool_test.go
  4. 1 1
      eth/backend.go

+ 2 - 2
core/chain_manager_test.go

@@ -78,7 +78,7 @@ func TestChainInsertions(t *testing.T) {
 
 	var eventMux event.TypeMux
 	chainMan := NewChainManager(&eventMux)
-	txPool := NewTxPool(chainMan, &eventMux)
+	txPool := NewTxPool(&eventMux)
 	blockMan := NewBlockManager(txPool, chainMan, &eventMux)
 	chainMan.SetProcessor(blockMan)
 
@@ -122,7 +122,7 @@ func TestChainMultipleInsertions(t *testing.T) {
 	}
 	var eventMux event.TypeMux
 	chainMan := NewChainManager(&eventMux)
-	txPool := NewTxPool(chainMan, &eventMux)
+	txPool := NewTxPool(&eventMux)
 	blockMan := NewBlockManager(txPool, chainMan, &eventMux)
 	chainMan.SetProcessor(blockMan)
 	done := make(chan bool, max)

+ 10 - 13
core/transaction_pool.go

@@ -43,22 +43,19 @@ type TxPool struct {
 
 	subscribers []chan TxMsg
 
-	stateQuery StateQuery
-	eventMux   *event.TypeMux
+	eventMux *event.TypeMux
 }
 
-func NewTxPool(stateQuery StateQuery, eventMux *event.TypeMux) *TxPool {
+func NewTxPool(eventMux *event.TypeMux) *TxPool {
 	return &TxPool{
-		pool:       set.New(),
-		queueChan:  make(chan *types.Transaction, txPoolQueueSize),
-		quit:       make(chan bool),
-		stateQuery: stateQuery,
-		eventMux:   eventMux,
+		pool:      set.New(),
+		queueChan: make(chan *types.Transaction, txPoolQueueSize),
+		quit:      make(chan bool),
+		eventMux:  eventMux,
 	}
 }
 
 func (pool *TxPool) addTransaction(tx *types.Transaction) {
-
 	pool.pool.Add(tx)
 
 	// Broadcast the transaction to the rest of the peers
@@ -75,6 +72,10 @@ func (pool *TxPool) ValidateTransaction(tx *types.Transaction) error {
 		return fmt.Errorf("tx.v != (28 || 27) => %v", v)
 	}
 
+	/* XXX this kind of validation needs to happen elsewhere in the gui when sending txs.
+	   Other clients should do their own validation. Value transfer could throw error
+	   but doesn't necessarily invalidate the tx. Gas can still be payed for and miner
+	   can still be rewarded for their inclusion and processing.
 	// Get the sender
 	senderAddr := tx.From()
 	if senderAddr == nil {
@@ -82,10 +83,6 @@ func (pool *TxPool) ValidateTransaction(tx *types.Transaction) error {
 	}
 	sender := pool.stateQuery.GetAccount(senderAddr)
 
-	/* XXX this kind of validation needs to happen elsewhere in the gui when sending txs.
-	   Other clients should do their own validation. Value transfer could be throw error
-	   but doesn't necessarily invalidate the tx. Gas can still be payed for and miner
-	   can still be rewarded for their inclusion and processing.
 	totAmount := new(big.Int).Set(tx.Value())
 	// Make sure there's enough in the sender's account. Having insufficient
 	// funds won't invalidate this transaction but simple ignores it.

+ 1 - 1
core/transaction_pool_test.go

@@ -25,7 +25,7 @@ func transaction() *types.Transaction {
 func setup() (*TxPool, *ecdsa.PrivateKey) {
 	var m event.TypeMux
 	key, _ := crypto.GenerateKey()
-	return NewTxPool(stateQuery{}, &m), key
+	return NewTxPool(&m), key
 }
 
 func TestTxAdding(t *testing.T) {

+ 1 - 1
eth/backend.go

@@ -70,7 +70,7 @@ func New(db ethutil.Database, identity p2p.ClientIdentity, keyManager *crypto.Ke
 	}
 
 	eth.chainManager = core.NewChainManager(eth.EventMux())
-	eth.txPool = core.NewTxPool(eth.chainManager, eth.EventMux())
+	eth.txPool = core.NewTxPool(eth.EventMux())
 	eth.blockManager = core.NewBlockManager(eth.txPool, eth.chainManager, eth.EventMux())
 	eth.chainManager.SetProcessor(eth.blockManager)
 	eth.whisper = whisper.New()