fix build error

This commit is contained in:
cifer76 2023-02-16 19:57:26 +08:00
parent da24e6040b
commit 5a490e98dd
2 changed files with 11 additions and 10 deletions

View file

@ -1126,6 +1126,11 @@ func (s *StateDB) Prepare(rules params.Rules, sender, coinbase common.Address, d
s.transientStorage = newTransientStorage() s.transientStorage = newTransientStorage()
} }
func (s *StateDB) SetTxHashAndIndex(txhash common.Hash, ti int) {
s.thash = txhash
s.txIndex = ti
}
// AddAddressToAccessList adds the given address to the access list // AddAddressToAccessList adds the given address to the access list
func (s *StateDB) AddAddressToAccessList(addr common.Address) { func (s *StateDB) AddAddressToAccessList(addr common.Address) {
if s.accessList.AddAddress(addr) { if s.accessList.AddAddress(addr) {

View file

@ -134,11 +134,7 @@ func (api *PreExecAPI) GetLogs(ctx context.Context, origin *PreExecTx) (*types.R
gas := d.tx.Gas() gas := d.tx.Gas()
gp := new(core.GasPool).AddGas(gas) gp := new(core.GasPool).AddGas(gas)
sender = vm.AccountRef(cfg.Origin) d.stateDb.SetTxHashAndIndex(d.tx.Hash(), 0)
rules = cfg.ChainConfig.Rules(vmenv.Context.BlockNumber, vmenv.Context.Random != nil, vmenv.Context.Time)
d.stateDb.Prepare(d.tx.Hash(), 0)
st.state.Prepare(rules, msg.From(), st.evm.Context.Coinbase, msg.To(), vm.ActivePrecompiles(rules), msg.AccessList())
receipt, err := core.ApplyTransactionForPreExec( receipt, err := core.ApplyTransactionForPreExec(
bc.Config(), bc, nil, gp, d.stateDb, d.header, d.tx, d.msg, &gas, *bc.GetVMConfig()) bc.Config(), bc, nil, gp, d.stateDb, d.header, d.tx, d.msg, &gas, *bc.GetVMConfig())
if err != nil { if err != nil {
@ -166,10 +162,10 @@ func (api *PreExecAPI) TraceTransaction(ctx context.Context, origin *PreExecTx)
vmenv := vm.NewEVM(core.NewEVMBlockContext(d.header, bc, nil), txContext, d.stateDb, bc.Config(), vm.Config{Debug: true, Tracer: tracer, PreExec: true}) vmenv := vm.NewEVM(core.NewEVMBlockContext(d.header, bc, nil), txContext, d.stateDb, bc.Config(), vm.Config{Debug: true, Tracer: tracer, PreExec: true})
vmenv.Context.BaseFee = big.NewInt(0) vmenv.Context.BaseFee = big.NewInt(0)
vmenv.Context.BlockNumber.Add(vmenv.Context.BlockNumber, big.NewInt(rand.Int63n(6)+6)) vmenv.Context.BlockNumber.Add(vmenv.Context.BlockNumber, big.NewInt(rand.Int63n(6)+6))
vmenv.Context.Time.Add(vmenv.Context.Time, big.NewInt(rand.Int63n(60)+30)) vmenv.Context.Time += uint64(rand.Int63n(60) + 30)
// Call Prepare to clear out the statedb access list // Call Prepare to clear out the statedb access list
d.stateDb.Prepare(d.tx.Hash(), txIndex) d.stateDb.SetTxHashAndIndex(d.tx.Hash(), 0)
tracer.SetMessage(d.block.Number(), d.block.Hash(), d.tx.Hash(), uint(txIndex), d.msg.From(), d.msg.To(), *d.msg.Value()) tracer.SetMessage(d.block.Number(), d.block.Hash(), d.tx.Hash(), uint(txIndex), d.msg.From(), d.msg.To(), *d.msg.Value())
@ -300,7 +296,7 @@ func (api *PreExecAPI) TraceMany(ctx context.Context, origins []PreArgs) ([]PreR
evm, vmError, err := api.e.APIBackend.GetEVM(ctx, msg, state, header, &vm.Config{NoBaseFee: true, Debug: true, Tracer: tracer, PreExec: true}) evm, vmError, err := api.e.APIBackend.GetEVM(ctx, msg, state, header, &vm.Config{NoBaseFee: true, Debug: true, Tracer: tracer, PreExec: true})
evm.Context.BaseFee = big.NewInt(0) evm.Context.BaseFee = big.NewInt(0)
evm.Context.BlockNumber.Add(evm.Context.BlockNumber, big.NewInt(rand.Int63n(6)+6)) evm.Context.BlockNumber.Add(evm.Context.BlockNumber, big.NewInt(rand.Int63n(6)+6))
evm.Context.Time.Add(evm.Context.Time, big.NewInt(rand.Int63n(60)+30)) evm.Context.Time += uint64(rand.Int63n(60) + 30)
if err != nil { if err != nil {
preResList = append(preResList, PreResult{ preResList = append(preResList, PreResult{
Error: PreError{ Error: PreError{
@ -312,7 +308,7 @@ func (api *PreExecAPI) TraceMany(ctx context.Context, origins []PreArgs) ([]PreR
} }
// Execute the message. // Execute the message.
gp := new(core.GasPool).AddGas(math.MaxUint64) gp := new(core.GasPool).AddGas(math.MaxUint64)
state.Prepare(txHash, i) state.SetTxHashAndIndex(txHash, i)
result, err := core.ApplyMessage(evm, msg, gp) result, err := core.ApplyMessage(evm, msg, gp)
if err := vmError(); err != nil { if err := vmError(); err != nil {
preRes := PreResult{ preRes := PreResult{
@ -336,7 +332,7 @@ func (api *PreExecAPI) TraceMany(ctx context.Context, origins []PreArgs) ([]PreR
} }
preRes := PreResult{ preRes := PreResult{
Trace: tracer.GetTraces(), Trace: tracer.GetTraces(),
Logs: state.GetLogs(txHash, header.Hash()), Logs: state.GetLogs(txHash, header.Number.Uint64(), header.Hash()),
StateDiff: tracer.GetStateDiff(), StateDiff: tracer.GetStateDiff(),
} }
if result != nil { if result != nil {