|
|
@ -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) |
|
|
|
return nil, nil, 0, fmt.Errorf("could not apply tx %d [%v]: %w", i, tx.Hash().Hex(), err) |
|
|
|
} |
|
|
|
} |
|
|
|
statedb.Prepare(tx.Hash(), i) |
|
|
|
statedb.Prepare(tx.Hash(), i) |
|
|
|
receipt, err := applyTransaction(msg, p.config, p.bc, nil, gp, statedb, blockNumber, blockHash, tx, usedGas, vmenv) |
|
|
|
receipt, err := applyTransaction(msg, p.config, nil, gp, statedb, blockNumber, blockHash, tx, usedGas, vmenv) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
return nil, nil, 0, fmt.Errorf("could not apply tx %d [%v]: %w", i, tx.Hash().Hex(), err) |
|
|
|
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 |
|
|
|
return receipts, allLogs, *usedGas, nil |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func applyTransaction(msg types.Message, config *params.ChainConfig, bc ChainContext, 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, 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) { |
|
|
|
// Create a new context to be used in the EVM environment.
|
|
|
|
// Create a new context to be used in the EVM environment.
|
|
|
|
txContext := NewEVMTxContext(msg) |
|
|
|
txContext := NewEVMTxContext(msg) |
|
|
|
evm.Reset(txContext, statedb) |
|
|
|
evm.Reset(txContext, statedb) |
|
|
@ -149,5 +149,5 @@ func ApplyTransaction(config *params.ChainConfig, bc ChainContext, author *commo |
|
|
|
// Create a new context to be used in the EVM environment
|
|
|
|
// Create a new context to be used in the EVM environment
|
|
|
|
blockContext := NewEVMBlockContext(header, bc, author) |
|
|
|
blockContext := NewEVMBlockContext(header, bc, author) |
|
|
|
vmenv := vm.NewEVM(blockContext, vm.TxContext{}, statedb, config, cfg) |
|
|
|
vmenv := vm.NewEVM(blockContext, vm.TxContext{}, statedb, config, cfg) |
|
|
|
return applyTransaction(msg, config, bc, author, gp, statedb, header.Number, header.Hash(), tx, usedGas, vmenv) |
|
|
|
return applyTransaction(msg, config, author, gp, statedb, header.Number, header.Hash(), tx, usedGas, vmenv) |
|
|
|
} |
|
|
|
} |
|
|
|