mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-19 21:31:37 +00:00
internal/ethapi: refactor func DoCall (#1586)
This commit is contained in:
parent
28c75fc213
commit
940aeb3ccd
1 changed files with 18 additions and 12 deletions
|
|
@ -1119,14 +1119,26 @@ func (context *ChainContext) GetHeader(hash common.Hash, number uint64) *types.H
|
|||
func DoCall(ctx context.Context, b Backend, args TransactionArgs, blockNrOrHash rpc.BlockNumberOrHash, overrides *StateOverride, blockOverrides *BlockOverrides, timeout time.Duration, globalGasCap uint64) (*core.ExecutionResult, error) {
|
||||
defer func(start time.Time) { log.Debug("Executing EVM call finished", "runtime", time.Since(start)) }(time.Now())
|
||||
|
||||
statedb, header, err := b.StateAndHeaderByNumberOrHash(ctx, blockNrOrHash)
|
||||
if statedb == nil || err != nil {
|
||||
state, header, err := b.StateAndHeaderByNumberOrHash(ctx, blockNrOrHash)
|
||||
if state == nil || err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if header == nil {
|
||||
return nil, errors.New("nil header in DoCall")
|
||||
}
|
||||
if err := overrides.Apply(statedb); err != nil {
|
||||
block, err := b.BlockByNumberOrHash(ctx, blockNrOrHash)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if block == nil {
|
||||
return nil, fmt.Errorf("nil block in DoCall: number=%d, hash=%s", header.Number.Uint64(), header.Hash().Hex())
|
||||
}
|
||||
|
||||
return doCall(ctx, b, args, state, block, overrides, blockOverrides, timeout, globalGasCap)
|
||||
}
|
||||
|
||||
func doCall(ctx context.Context, b Backend, args TransactionArgs, state *state.StateDB, block *types.Block, overrides *StateOverride, blockOverrides *BlockOverrides, timeout time.Duration, globalGasCap uint64) (*core.ExecutionResult, error) {
|
||||
if err := overrides.Apply(state); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
|
@ -1142,14 +1154,8 @@ func DoCall(ctx context.Context, b Backend, args TransactionArgs, blockNrOrHash
|
|||
// this makes sure resources are cleaned up.
|
||||
defer cancel()
|
||||
|
||||
block, err := b.BlockByNumberOrHash(ctx, blockNrOrHash)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if block == nil {
|
||||
return nil, fmt.Errorf("nil block in DoCall: number=%d, hash=%s", header.Number.Uint64(), header.Hash().Hex())
|
||||
}
|
||||
author, err := b.Engine().Author(block.Header())
|
||||
header := block.Header()
|
||||
author, err := b.Engine().Author(header)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -1169,7 +1175,7 @@ func DoCall(ctx context.Context, b Backend, args TransactionArgs, blockNrOrHash
|
|||
msg := args.ToMessage(b, blockCtx.BaseFee)
|
||||
msg.BalanceTokenFee = new(big.Int).SetUint64(msg.GasLimit)
|
||||
msg.BalanceTokenFee.Mul(msg.BalanceTokenFee, msg.GasPrice)
|
||||
evm, vmError, err := b.GetEVM(ctx, msg, statedb, XDCxState, header, &vm.Config{NoBaseFee: true}, &blockCtx)
|
||||
evm, vmError, err := b.GetEVM(ctx, msg, state, XDCxState, header, &vm.Config{NoBaseFee: true}, &blockCtx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue