forked from cerc-io/plugeth
		
	core, cmd: fill blockNumber in logs (#26345)
* core, cmd: fill blockNumber in logs * Update core/state/statedb.go Co-authored-by: Martin Holst Swende <martin@swende.se> * core/types: revert * core/state: improve comments Co-authored-by: Martin Holst Swende <martin@swende.se>
This commit is contained in:
		
							parent
							
								
									250a80a50e
								
							
						
					
					
						commit
						cda051eba7
					
				| @ -218,7 +218,7 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig, | ||||
| 			} | ||||
| 
 | ||||
| 			// Set the receipt logs and create the bloom filter.
 | ||||
| 			receipt.Logs = statedb.GetLogs(tx.Hash(), blockHash) | ||||
| 			receipt.Logs = statedb.GetLogs(tx.Hash(), vmContext.BlockNumber.Uint64(), blockHash) | ||||
| 			receipt.Bloom = types.CreateBloom(types.Receipts{receipt}) | ||||
| 			// These three are non-consensus fields:
 | ||||
| 			//receipt.BlockHash
 | ||||
|  | ||||
| @ -206,9 +206,12 @@ func (s *StateDB) AddLog(log *types.Log) { | ||||
| 	s.logSize++ | ||||
| } | ||||
| 
 | ||||
| func (s *StateDB) GetLogs(hash common.Hash, blockHash common.Hash) []*types.Log { | ||||
| // GetLogs returns the logs matching the specified transaction hash, and annotates
 | ||||
| // them with the given blockNumber and blockHash.
 | ||||
| func (s *StateDB) GetLogs(hash common.Hash, blockNumber uint64, blockHash common.Hash) []*types.Log { | ||||
| 	logs := s.logs[hash] | ||||
| 	for _, l := range logs { | ||||
| 		l.BlockNumber = blockNumber | ||||
| 		l.BlockHash = blockHash | ||||
| 	} | ||||
| 	return logs | ||||
|  | ||||
| @ -473,9 +473,9 @@ func (test *snapshotTest) checkEqual(state, checkstate *StateDB) error { | ||||
| 		return fmt.Errorf("got GetRefund() == %d, want GetRefund() == %d", | ||||
| 			state.GetRefund(), checkstate.GetRefund()) | ||||
| 	} | ||||
| 	if !reflect.DeepEqual(state.GetLogs(common.Hash{}, common.Hash{}), checkstate.GetLogs(common.Hash{}, common.Hash{})) { | ||||
| 	if !reflect.DeepEqual(state.GetLogs(common.Hash{}, 0, common.Hash{}), checkstate.GetLogs(common.Hash{}, 0, common.Hash{})) { | ||||
| 		return fmt.Errorf("got GetLogs(common.Hash{}) == %v, want GetLogs(common.Hash{}) == %v", | ||||
| 			state.GetLogs(common.Hash{}, common.Hash{}), checkstate.GetLogs(common.Hash{}, common.Hash{})) | ||||
| 			state.GetLogs(common.Hash{}, 0, common.Hash{}), checkstate.GetLogs(common.Hash{}, 0, common.Hash{})) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| @ -79,7 +79,7 @@ func (p *StateProcessor) Process(block *types.Block, statedb *state.StateDB, cfg | ||||
| 			return nil, nil, 0, fmt.Errorf("could not apply tx %d [%v]: %w", i, tx.Hash().Hex(), err) | ||||
| 		} | ||||
| 		statedb.SetTxContext(tx.Hash(), i) | ||||
| 		receipt, err := applyTransaction(msg, p.config, nil, gp, statedb, blockNumber, blockHash, tx, usedGas, vmenv) | ||||
| 		receipt, err := applyTransaction(msg, p.config, gp, statedb, blockNumber, blockHash, tx, usedGas, vmenv) | ||||
| 		if err != nil { | ||||
| 			return nil, nil, 0, fmt.Errorf("could not apply tx %d [%v]: %w", i, tx.Hash().Hex(), err) | ||||
| 		} | ||||
| @ -92,7 +92,7 @@ func (p *StateProcessor) Process(block *types.Block, statedb *state.StateDB, cfg | ||||
| 	return receipts, allLogs, *usedGas, nil | ||||
| } | ||||
| 
 | ||||
| func applyTransaction(msg types.Message, config *params.ChainConfig, author *common.Address, gp *GasPool, statedb *state.StateDB, blockNumber *big.Int, blockHash common.Hash, tx *types.Transaction, usedGas *uint64, evm *vm.EVM) (*types.Receipt, error) { | ||||
| func applyTransaction(msg types.Message, config *params.ChainConfig, gp *GasPool, statedb *state.StateDB, blockNumber *big.Int, blockHash common.Hash, tx *types.Transaction, usedGas *uint64, evm *vm.EVM) (*types.Receipt, error) { | ||||
| 	// Create a new context to be used in the EVM environment.
 | ||||
| 	txContext := NewEVMTxContext(msg) | ||||
| 	evm.Reset(txContext, statedb) | ||||
| @ -129,7 +129,7 @@ func applyTransaction(msg types.Message, config *params.ChainConfig, author *com | ||||
| 	} | ||||
| 
 | ||||
| 	// Set the receipt logs and create the bloom filter.
 | ||||
| 	receipt.Logs = statedb.GetLogs(tx.Hash(), blockHash) | ||||
| 	receipt.Logs = statedb.GetLogs(tx.Hash(), blockNumber.Uint64(), blockHash) | ||||
| 	receipt.Bloom = types.CreateBloom(types.Receipts{receipt}) | ||||
| 	receipt.BlockHash = blockHash | ||||
| 	receipt.BlockNumber = blockNumber | ||||
| @ -149,5 +149,5 @@ func ApplyTransaction(config *params.ChainConfig, bc ChainContext, author *commo | ||||
| 	// Create a new context to be used in the EVM environment
 | ||||
| 	blockContext := NewEVMBlockContext(header, bc, author) | ||||
| 	vmenv := vm.NewEVM(blockContext, vm.TxContext{}, statedb, config, cfg) | ||||
| 	return applyTransaction(msg, config, author, gp, statedb, header.Number, header.Hash(), tx, usedGas, vmenv) | ||||
| 	return applyTransaction(msg, config, gp, statedb, header.Number, header.Hash(), tx, usedGas, vmenv) | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user