evm: decouple tracer from evm creation (#459)

This commit is contained in:
crypto-facs
2021-08-19 04:18:20 -04:00
committed by GitHub
parent 83c838330f
commit fc46430e0f
3 changed files with 13 additions and 11 deletions
+5 -2
View File
@@ -378,7 +378,8 @@ func (k Keeper) EthCall(c context.Context, req *types.EthCallRequest) (*types.Ms
return nil, status.Error(codes.Internal, err.Error())
}
evm := k.NewEVM(msg, ethCfg, params, coinbase, k.tracer)
tracer := types.NewTracer(k.tracer, msg, ethCfg, k.Ctx().BlockHeight(), k.debug)
evm := k.NewEVM(msg, ethCfg, params, coinbase, tracer)
// pass true means execute in query mode, which don't do actual gas refund.
res, err := k.ApplyMessage(evm, msg, ethCfg, true)
@@ -449,7 +450,9 @@ func (k Keeper) EstimateGas(c context.Context, req *types.EthCallRequest) (*type
k.WithContext(ctx)
msg := args.ToMessage(req.GasCap)
evm := k.NewEVM(msg, ethCfg, params, coinbase, k.tracer)
tracer := types.NewTracer(k.tracer, msg, ethCfg, k.Ctx().BlockHeight(), k.debug)
evm := k.NewEVM(msg, ethCfg, params, coinbase, tracer)
// pass true means execute in query mode, which don't do actual gas refund.
rsp, err := k.ApplyMessage(evm, msg, ethCfg, true)
+5 -6
View File
@@ -32,7 +32,7 @@ func (k *Keeper) NewEVM(
config *params.ChainConfig,
params types.Params,
coinbase common.Address,
tracer string,
tracer vm.Tracer,
) *vm.EVM {
blockCtx := vm.BlockContext{
CanTransfer: core.CanTransfer,
@@ -53,12 +53,10 @@ func (k *Keeper) NewEVM(
// VMConfig creates an EVM configuration from the debug setting and the extra EIPs enabled on the
// module parameters. The config generated uses the default JumpTable from the EVM.
func (k Keeper) VMConfig(msg core.Message, params types.Params, tracer string) vm.Config {
cfg := params.ChainConfig.EthereumConfig(k.eip155ChainID)
func (k Keeper) VMConfig(msg core.Message, params types.Params, tracer vm.Tracer) vm.Config {
return vm.Config{
Debug: k.debug,
Tracer: types.NewTracer(tracer, msg, cfg, k.Ctx().BlockHeight(), k.debug),
Tracer: tracer,
NoRecursion: false, // TODO: consider disabling recursion though params
ExtraEips: params.EIPs(),
}
@@ -161,7 +159,8 @@ func (k *Keeper) ApplyTransaction(tx *ethtypes.Transaction) (*types.MsgEthereumT
}
// create an ethereum EVM instance and run the message
evm := k.NewEVM(msg, ethCfg, params, coinbase, k.tracer)
tracer := types.NewTracer(k.tracer, msg, ethCfg, k.Ctx().BlockHeight(), k.debug)
evm := k.NewEVM(msg, ethCfg, params, coinbase, tracer)
txHash := tx.Hash()