forked from cerc-io/plugeth
Removed the need of having a backend for the tx pool
This commit is contained in:
parent
ae2c90cc28
commit
d336e24dce
@ -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)
|
||||
|
@ -43,22 +43,19 @@ type TxPool struct {
|
||||
|
||||
subscribers []chan TxMsg
|
||||
|
||||
stateQuery StateQuery
|
||||
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,
|
||||
}
|
||||
}
|
||||
|
||||
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.
|
||||
|
@ -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) {
|
||||
|
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user