Added eth_logs & fixed issue with manual log filtering
* Implemented `eth_logs` * Fixed issue with `filter.Find()` where logs were appended to an incorrect, non-returned slice resulting in no logs found
This commit is contained in:
		| @@ -60,12 +60,12 @@ func NewBlockProcessor(db ethutil.Database, txpool *TxPool, chainManager *ChainM | ||||
| 	return sm | ||||
| } | ||||
|  | ||||
| func (sm *BlockProcessor) TransitionState(statedb *state.StateDB, parent, block *types.Block) (receipts types.Receipts, err error) { | ||||
| func (sm *BlockProcessor) TransitionState(statedb *state.StateDB, parent, block *types.Block, transientProcess bool) (receipts types.Receipts, err error) { | ||||
| 	coinbase := statedb.GetOrNewStateObject(block.Header().Coinbase) | ||||
| 	coinbase.SetGasPool(CalcGasLimit(parent, block)) | ||||
|  | ||||
| 	// Process the transactions on to parent state | ||||
| 	receipts, _, _, _, err = sm.ApplyTransactions(coinbase, statedb, block, block.Transactions(), false) | ||||
| 	receipts, _, _, _, err = sm.ApplyTransactions(coinbase, statedb, block, block.Transactions(), transientProcess) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| @@ -100,10 +100,9 @@ func (self *BlockProcessor) ApplyTransaction(coinbase *state.StateObject, stated | ||||
| 	// Notify all subscribers | ||||
| 	if !transientProcess { | ||||
| 		go self.eventMux.Post(TxPostEvent{tx}) | ||||
| 		go self.eventMux.Post(statedb.Logs()) | ||||
| 	} | ||||
|  | ||||
| 	go self.eventMux.Post(statedb.Logs()) | ||||
|  | ||||
| 	return receipt, txGas, err | ||||
| } | ||||
|  | ||||
| @@ -179,7 +178,7 @@ func (sm *BlockProcessor) processWithParent(block, parent *types.Block) (td *big | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	receipts, err := sm.TransitionState(state, parent, block) | ||||
| 	receipts, err := sm.TransitionState(state, parent, block, false) | ||||
| 	if err != nil { | ||||
| 		return | ||||
| 	} | ||||
| @@ -316,13 +315,10 @@ func (sm *BlockProcessor) GetLogs(block *types.Block) (logs state.Logs, err erro | ||||
|  | ||||
| 	var ( | ||||
| 		parent = sm.bc.GetBlock(block.Header().ParentHash) | ||||
| 		//state  = state.New(parent.Trie().Copy()) | ||||
| 		state = state.New(parent.Root(), sm.db) | ||||
| 		state  = state.New(parent.Root(), sm.db) | ||||
| 	) | ||||
|  | ||||
| 	defer state.Reset() | ||||
|  | ||||
| 	sm.TransitionState(state, parent, block) | ||||
| 	sm.TransitionState(state, parent, block, true) | ||||
| 	sm.AccumulateRewards(state, block, parent) | ||||
|  | ||||
| 	return state.Logs(), nil | ||||
|   | ||||
		Reference in New Issue
	
	Block a user