Skip to content

Commit

Permalink
Refactor EVM chain ID to refer to constant map instead of config (sei…
Browse files Browse the repository at this point in the history
…-protocol#1589)

* Refactor EVM chain ID to refer to constant map instead of config

* update test

* update test

* update tests

* update default config

* update test

* revert default chain ID
  • Loading branch information
udpatil authored Apr 24, 2024
1 parent 17ba757 commit 36b7290
Show file tree
Hide file tree
Showing 35 changed files with 76 additions and 85 deletions.
4 changes: 2 additions & 2 deletions aclmapping/evm/mappings_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,9 +80,9 @@ func (suite *KeeperTestSuite) buildSendMsgTo(to common.Address, amt *big.Int) *t
To: &to,
Value: amt,
Data: []byte(""),
ChainID: suite.App.EvmKeeper.ChainID(),
ChainID: suite.App.EvmKeeper.ChainID(suite.Ctx),
}
ethCfg := types.DefaultChainConfig().EthereumConfig(suite.App.EvmKeeper.ChainID())
ethCfg := types.DefaultChainConfig().EthereumConfig(suite.App.EvmKeeper.ChainID(suite.Ctx))
signer := ethtypes.MakeSigner(ethCfg, big.NewInt(suite.Ctx.BlockHeight()), uint64(suite.Ctx.BlockTime().Unix()))
tx := ethtypes.NewTx(&txData)
tx, err := ethtypes.SignTx(tx, signer, suite.sender)
Expand Down
2 changes: 1 addition & 1 deletion app/ante_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ func TestEvmAnteErrorHandler(t *testing.T) {
Data: []byte{},
Nonce: 1, // will cause ante error
}
chainID := testkeeper.EVMTestApp.EvmKeeper.ChainID()
chainID := testkeeper.EVMTestApp.EvmKeeper.ChainID(ctx)
chainCfg := evmtypes.DefaultChainConfig()
ethCfg := chainCfg.EthereumConfig(chainID)
blockNum := big.NewInt(ctx.BlockHeight())
Expand Down
7 changes: 1 addition & 6 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,6 @@ import (
"github.com/sei-protocol/sei-chain/x/evm"
evmante "github.com/sei-protocol/sei-chain/x/evm/ante"
"github.com/sei-protocol/sei-chain/x/evm/blocktest"
evmconfig "github.com/sei-protocol/sei-chain/x/evm/config"
evmkeeper "github.com/sei-protocol/sei-chain/x/evm/keeper"
"github.com/sei-protocol/sei-chain/x/evm/querier"
"github.com/sei-protocol/sei-chain/x/evm/replay"
Expand Down Expand Up @@ -588,13 +587,9 @@ func New(
wasmOpts...,
)

evmConfig, err := evmconfig.ReadConfig(appOpts)
if err != nil {
panic(fmt.Sprintf("error reading EVM config due to %s", err))
}
app.EvmKeeper = *evmkeeper.NewKeeper(keys[evmtypes.StoreKey], memKeys[evmtypes.MemStoreKey],
app.GetSubspace(evmtypes.ModuleName), app.BankKeeper, &app.AccountKeeper, &app.StakingKeeper,
app.TransferKeeper, wasmkeeper.NewDefaultPermissionKeeper(app.WasmKeeper), &evmConfig)
app.TransferKeeper, wasmkeeper.NewDefaultPermissionKeeper(app.WasmKeeper))
app.evmRPCConfig, err = evmrpc.ReadConfig(appOpts)
if err != nil {
panic(fmt.Sprintf("error reading EVM config due to %s", err))
Expand Down
3 changes: 2 additions & 1 deletion app/app_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (
"github.com/sei-protocol/sei-chain/app"
testkeeper "github.com/sei-protocol/sei-chain/testutil/keeper"
dextypes "github.com/sei-protocol/sei-chain/x/dex/types"
"github.com/sei-protocol/sei-chain/x/evm/config"
evmtypes "github.com/sei-protocol/sei-chain/x/evm/types"
"github.com/sei-protocol/sei-chain/x/evm/types/ethtx"
oracletypes "github.com/sei-protocol/sei-chain/x/oracle/types"
Expand Down Expand Up @@ -372,7 +373,7 @@ func TestDecodeTransactionsConcurrently(t *testing.T) {
Data: []byte("abc"),
}
chainCfg := evmtypes.DefaultChainConfig()
ethCfg := chainCfg.EthereumConfig(big.NewInt(713715))
ethCfg := chainCfg.EthereumConfig(big.NewInt(config.DefaultChainID))
signer := ethtypes.MakeSigner(ethCfg, big.NewInt(1), uint64(123))
tx, err := ethtypes.SignTx(ethtypes.NewTx(&txData), signer, key)
ethtxdata, _ := ethtx.NewTxDataFromTx(tx)
Expand Down
7 changes: 0 additions & 7 deletions cmd/seid/cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ import (
"github.com/sei-protocol/sei-chain/evmrpc"
"github.com/sei-protocol/sei-chain/tools"
"github.com/sei-protocol/sei-chain/x/evm/blocktest"
evmconfig "github.com/sei-protocol/sei-chain/x/evm/config"
"github.com/sei-protocol/sei-chain/x/evm/querier"
"github.com/sei-protocol/sei-chain/x/evm/replay"
"github.com/spf13/cast"
Expand Down Expand Up @@ -382,8 +381,6 @@ func initAppConfig() (string, interface{}) {
ETHBlockTest blocktest.Config `mapstructure:"eth_block_test"`

EvmQuery querier.Config `mapstructure:"evm_query"`

EvmModule evmconfig.Config `mapstructure:"evm_module"`
}

// Optionally allow the chain developer to overwrite the SDK's default
Expand Down Expand Up @@ -427,7 +424,6 @@ func initAppConfig() (string, interface{}) {
ETHReplay: replay.DefaultConfig,
ETHBlockTest: blocktest.DefaultConfig,
EvmQuery: querier.DefaultConfig,
EvmModule: evmconfig.DefaultConfig,
}

customAppTemplate := serverconfig.DefaultConfigTemplate + `
Expand Down Expand Up @@ -516,9 +512,6 @@ eth_blocktest_test_data_path = "{{ .ETHBlockTest.TestDataPath }}"
[evm_query]
evm_query_gas_limit = {{ .EvmQuery.GasLimit }}
[evm_module]
evm_chain_id = {{ .EvmModule.ChainID }}
`

return customAppTemplate, customAppConfig
Expand Down
2 changes: 1 addition & 1 deletion evmrpc/info.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ func (i *InfoAPI) BlockNumber() hexutil.Uint64 {
func (i *InfoAPI) ChainId() *hexutil.Big {
startTime := time.Now()
defer recordMetrics("eth_ChainId", startTime, true)
return (*hexutil.Big)(i.keeper.ChainID())
return (*hexutil.Big)(i.keeper.ChainID(i.ctxProvider(LatestCtxHeight)))
}

func (i *InfoAPI) Coinbase() (common.Address, error) {
Expand Down
2 changes: 1 addition & 1 deletion evmrpc/net.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,5 @@ func NewNetAPI(tmClient rpcclient.Client, k *keeper.Keeper, ctxProvider func(int
func (i *NetAPI) Version() string {
startTime := time.Now()
defer recordMetrics("net_version", startTime, true)
return fmt.Sprintf("%d", i.keeper.ChainID().Uint64())
return fmt.Sprintf("%d", i.keeper.ChainID(i.ctxProvider(LatestCtxHeight)).Uint64())
}
2 changes: 1 addition & 1 deletion evmrpc/send.go
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ func (s *SendAPI) signTransaction(unsignedTx *ethtypes.Transaction, from string)
if !ok {
return nil, errors.New("from address does not have hosted key")
}
chainId := s.keeper.ChainID()
chainId := s.keeper.ChainID(s.ctxProvider(LatestCtxHeight))
signer := ethtypes.LatestSignerForChainID(chainId)
return ethtypes.SignTx(unsignedTx, signer, privKey)
}
4 changes: 2 additions & 2 deletions evmrpc/send_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,14 @@ func TestSendRawTransaction(t *testing.T) {
To: &to,
Value: big.NewInt(1000),
Data: []byte("abc"),
ChainID: EVMKeeper.ChainID(),
ChainID: EVMKeeper.ChainID(Ctx),
}
mnemonic := "fish mention unlock february marble dove vintage sand hub ordinary fade found inject room embark supply fabric improve spike stem give current similar glimpse"
derivedPriv, _ := hd.Secp256k1.Derive()(mnemonic, "", "")
privKey := hd.Secp256k1.Generate()(derivedPriv)
testPrivHex := hex.EncodeToString(privKey.Bytes())
key, _ := crypto.HexToECDSA(testPrivHex)
ethCfg := types.DefaultChainConfig().EthereumConfig(EVMKeeper.ChainID())
ethCfg := types.DefaultChainConfig().EthereumConfig(EVMKeeper.ChainID(Ctx))
signer := ethtypes.MakeSigner(ethCfg, big.NewInt(Ctx.BlockHeight()), uint64(Ctx.BlockTime().Unix()))
tx := ethtypes.NewTx(&txData)
tx, err := ethtypes.SignTx(tx, signer, key)
Expand Down
4 changes: 2 additions & 2 deletions evmrpc/setup_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -451,7 +451,7 @@ func init() {
}

func generateTxData() {
chainId := big.NewInt(config.DefaultConfig.ChainID)
chainId := big.NewInt(config.DefaultChainID)
to := common.HexToAddress("010203")
var txBuilder1, txBuilder1_5, txBuilder2, txBuilder3, txBuilder4 client.TxBuilder
txBuilder1, tx1 = buildTx(ethtypes.DynamicFeeTx{
Expand Down Expand Up @@ -574,7 +574,7 @@ func generateTxData() {
}

func buildTx(txData ethtypes.DynamicFeeTx) (client.TxBuilder, *ethtypes.Transaction) {
chainId := big.NewInt(config.DefaultConfig.ChainID)
chainId := big.NewInt(config.DefaultChainID)
mnemonic := "fish mention unlock february marble dove vintage sand hub ordinary fade found inject room embark supply fabric improve spike stem give current similar glimpse"
derivedPriv, _ := hd.Secp256k1.Derive()(mnemonic, "", "")
privKey := hd.Secp256k1.Generate()(derivedPriv)
Expand Down
3 changes: 2 additions & 1 deletion evmrpc/simulate.go
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,8 @@ func (b *Backend) RPCGasCap() uint64 { return b.config.GasCap }
func (b *Backend) RPCEVMTimeout() time.Duration { return b.config.EVMTimeout }

func (b *Backend) ChainConfig() *params.ChainConfig {
return types.DefaultChainConfig().EthereumConfig(b.keeper.ChainID())
ctx := b.ctxProvider(LatestCtxHeight)
return types.DefaultChainConfig().EthereumConfig(b.keeper.ChainID(ctx))
}

func (b *Backend) GetPoolNonce(_ context.Context, addr common.Address) (uint64, error) {
Expand Down
8 changes: 4 additions & 4 deletions evmrpc/simulate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ func TestEstimateGas(t *testing.T) {
"to": to.Hex(),
"value": "0x10",
"nonce": "0x1",
"chainId": fmt.Sprintf("%#x", EVMKeeper.ChainID()),
"chainId": fmt.Sprintf("%#x", EVMKeeper.ChainID(Ctx)),
}
amts := sdk.NewCoins(sdk.NewCoin(EVMKeeper.GetBaseDenom(Ctx), sdk.NewInt(20)))
EVMKeeper.BankKeeper().MintCoins(Ctx, types.ModuleName, amts)
Expand Down Expand Up @@ -57,7 +57,7 @@ func TestEstimateGas(t *testing.T) {
"to": contractAddr.Hex(),
"value": "0x0",
"nonce": "0x2",
"chainId": fmt.Sprintf("%#x", EVMKeeper.ChainID()),
"chainId": fmt.Sprintf("%#x", EVMKeeper.ChainID(Ctx)),
"input": fmt.Sprintf("%#x", input),
}
resObj = sendRequestGood(t, "estimateGas", txArgs, nil, map[string]interface{}{})
Expand Down Expand Up @@ -86,7 +86,7 @@ func TestCreateAccessList(t *testing.T) {
"to": contractAddr.Hex(),
"value": "0x0",
"nonce": "0x1",
"chainId": fmt.Sprintf("%#x", EVMKeeper.ChainID()),
"chainId": fmt.Sprintf("%#x", EVMKeeper.ChainID(Ctx)),
"input": fmt.Sprintf("%#x", input),
}
amts := sdk.NewCoins(sdk.NewCoin(EVMKeeper.GetBaseDenom(Ctx), sdk.NewInt(20)))
Expand Down Expand Up @@ -122,7 +122,7 @@ func TestCall(t *testing.T) {
"to": contractAddr.Hex(),
"value": "0x0",
"nonce": "0x2",
"chainId": fmt.Sprintf("%#x", EVMKeeper.ChainID()),
"chainId": fmt.Sprintf("%#x", EVMKeeper.ChainID(Ctx)),
"input": fmt.Sprintf("%#x", input),
}
resObj := sendRequestGood(t, "call", txArgs, nil, map[string]interface{}{}, map[string]interface{}{})
Expand Down
2 changes: 1 addition & 1 deletion evmrpc/tx.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ func (t *TransactionAPI) GetTransactionByHash(ctx context.Context, hash common.H
etx := getEthTxForTxBz(tx, t.txConfig.TxDecoder())
if etx != nil && etx.Hash() == hash {
signer := ethtypes.MakeSigner(
types.DefaultChainConfig().EthereumConfig(t.keeper.ChainID()),
types.DefaultChainConfig().EthereumConfig(t.keeper.ChainID(sdkCtx)),
big.NewInt(sdkCtx.BlockHeight()),
uint64(sdkCtx.BlockTime().Unix()),
)
Expand Down
2 changes: 1 addition & 1 deletion evmrpc/txpool.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ func (t *TxPoolAPI) Content(ctx context.Context) (result map[string]map[string]m

sdkCtx := t.ctxProvider(LatestCtxHeight)
signer := ethtypes.MakeSigner(
types.DefaultChainConfig().EthereumConfig(t.keeper.ChainID()),
types.DefaultChainConfig().EthereumConfig(t.keeper.ChainID(sdkCtx)),
big.NewInt(sdkCtx.BlockHeight()),
uint64(sdkCtx.BlockTime().Unix()),
)
Expand Down
2 changes: 1 addition & 1 deletion precompiles/bank/bank_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ func TestRun(t *testing.T) {
Data: argsNative,
Nonce: 0,
}
chainID := k.ChainID()
chainID := k.ChainID(ctx)
chainCfg := types.DefaultChainConfig()
ethCfg := chainCfg.EthereumConfig(chainID)
blockNum := big.NewInt(ctx.BlockHeight())
Expand Down
2 changes: 1 addition & 1 deletion precompiles/distribution/distribution_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ func TestWithdraw(t *testing.T) {
Data: args,
Nonce: 0,
}
chainID := k.ChainID()
chainID := k.ChainID(ctx)
chainCfg := evmtypes.DefaultChainConfig()
ethCfg := chainCfg.EthereumConfig(chainID)
blockNum := big.NewInt(ctx.BlockHeight())
Expand Down
4 changes: 2 additions & 2 deletions precompiles/gov/gov_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ func TestVoteDeposit(t *testing.T) {
Data: args,
Nonce: 0,
}
chainID := k.ChainID()
chainID := k.ChainID(ctx)
chainCfg := evmtypes.DefaultChainConfig()
ethCfg := chainCfg.EthereumConfig(chainID)
blockNum := big.NewInt(ctx.BlockHeight())
Expand Down Expand Up @@ -90,7 +90,7 @@ func TestVoteDeposit(t *testing.T) {
Data: args,
Nonce: 0,
}
chainID := k.ChainID()
chainID := k.ChainID(ctx)
chainCfg := evmtypes.DefaultChainConfig()
ethCfg := chainCfg.EthereumConfig(chainID)
blockNum := big.NewInt(ctx.BlockHeight())
Expand Down
2 changes: 1 addition & 1 deletion precompiles/pointer/pointer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ func TestAddNative(t *testing.T) {
ctx := testApp.GetContextForDeliverTx([]byte{}).WithBlockTime(time.Now())
_, caller := testkeeper.MockAddressPair()
suppliedGas := uint64(10000000)
cfg := types.DefaultChainConfig().EthereumConfig(testApp.EvmKeeper.ChainID())
cfg := types.DefaultChainConfig().EthereumConfig(testApp.EvmKeeper.ChainID(ctx))

// token has no metadata
m, err := p.ABI.MethodById(p.AddNativePointerID)
Expand Down
4 changes: 2 additions & 2 deletions precompiles/staking/staking_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ func TestStaking(t *testing.T) {
Data: args,
Nonce: 0,
}
chainID := k.ChainID()
chainID := k.ChainID(ctx)
chainCfg := evmtypes.DefaultChainConfig()
ethCfg := chainCfg.EthereumConfig(chainID)
blockNum := big.NewInt(ctx.BlockHeight())
Expand Down Expand Up @@ -162,7 +162,7 @@ func TestStakingError(t *testing.T) {
Data: args,
Nonce: 0,
}
chainID := k.ChainID()
chainID := k.ChainID(ctx)
chainCfg := evmtypes.DefaultChainConfig()
ethCfg := chainCfg.EthereumConfig(chainID)
blockNum := big.NewInt(ctx.BlockHeight())
Expand Down
2 changes: 1 addition & 1 deletion x/evm/ante/fee.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ func (fc EVMFeeCheckDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate b
if err != nil {
return ctx, err
}
cfg := evmtypes.DefaultChainConfig().EthereumConfig(fc.evmKeeper.ChainID())
cfg := evmtypes.DefaultChainConfig().EthereumConfig(fc.evmKeeper.ChainID(ctx))
txCtx := core.NewEVMTxContext(emsg)
evmInstance := vm.NewEVM(*blockCtx, txCtx, stateDB, cfg, vm.Config{})
stateDB.SetEVM(evmInstance)
Expand Down
2 changes: 1 addition & 1 deletion x/evm/ante/fee_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ func TestEVMFeeCheckDecorator(t *testing.T) {
key, _ := crypto.HexToECDSA(testPrivHex)
to := new(common.Address)
copy(to[:], []byte("0x1234567890abcdef1234567890abcdef12345678"))
chainID := k.ChainID()
chainID := k.ChainID(ctx)
txData := ethtypes.DynamicFeeTx{
Nonce: 0,
GasFeeCap: big.NewInt(10000000000000),
Expand Down
2 changes: 1 addition & 1 deletion x/evm/ante/preprocess_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func TestPreprocessAnteHandler(t *testing.T) {
Value: big.NewInt(1000),
Data: []byte("abc"),
}
chainID := k.ChainID()
chainID := k.ChainID(ctx)
chainCfg := types.DefaultChainConfig()
ethCfg := chainCfg.EthereumConfig(chainID)
blockNum := big.NewInt(ctx.BlockHeight())
Expand Down
4 changes: 2 additions & 2 deletions x/evm/ante/sig_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ func TestEVMSigVerifyDecorator(t *testing.T) {
Value: big.NewInt(1000),
Data: []byte("abc"),
}
chainID := k.ChainID()
chainID := k.ChainID(ctx)
chainCfg := types.DefaultChainConfig()
ethCfg := chainCfg.EthereumConfig(chainID)
blockNum := big.NewInt(ctx.BlockHeight())
Expand Down Expand Up @@ -116,7 +116,7 @@ func TestSigVerifyPendingTransaction(t *testing.T) {
Value: big.NewInt(1000),
Data: []byte("abc"),
}
chainID := k.ChainID()
chainID := k.ChainID(ctx)
chainCfg := types.DefaultChainConfig()
ethCfg := chainCfg.EthereumConfig(chainID)
blockNum := big.NewInt(ctx.BlockHeight())
Expand Down
2 changes: 1 addition & 1 deletion x/evm/artifacts/native/artifacts_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ func TestSimple(t *testing.T) {
Data: contractData,
Nonce: 0,
}
chainID := k.ChainID()
chainID := k.ChainID(ctx)
chainCfg := types.DefaultChainConfig()
ethCfg := chainCfg.EthereumConfig(chainID)
blockNum := big.NewInt(ctx.BlockHeight())
Expand Down
2 changes: 1 addition & 1 deletion x/evm/client/wasm/query_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ func TestHandleStaticCall(t *testing.T) {
Data: bz,
Nonce: 0,
}
chainID := k.ChainID()
chainID := k.ChainID(ctx)
chainCfg := evmtypes.DefaultChainConfig()
ethCfg := chainCfg.EthereumConfig(chainID)
blockNum := big.NewInt(ctx.BlockHeight())
Expand Down
34 changes: 13 additions & 21 deletions x/evm/config/config.go
Original file line number Diff line number Diff line change
@@ -1,29 +1,21 @@
package config

import (
servertypes "github.com/cosmos/cosmos-sdk/server/types"
"github.com/spf13/cast"
)
import "math/big"

type Config struct {
ChainID int64 `mapstructure:"evm_chain_id"`
}
const DefaultChainID = int64(713715)

var DefaultConfig = Config{
ChainID: 713715,
// ChainIDMapping is a mapping of cosmos chain IDs to their respective chain IDs.
var ChainIDMapping = map[string]int64{
// pacific-1 chain ID == 0x531
"pacific-1": int64(1329),
// atlantic-2 chain ID == 0x530
"atlantic-2": int64(1328),
"arctic-1": int64(713715),
}

const (
flagChainID = "evm_module.evm_chain_id"
)

func ReadConfig(opts servertypes.AppOptions) (Config, error) {
cfg := DefaultConfig // copy
var err error
if v := opts.Get(flagChainID); v != nil {
if cfg.ChainID, err = cast.ToInt64E(v); err != nil {
return cfg, err
}
func GetEVMChainID(cosmosChainID string) *big.Int {
if evmChainID, ok := ChainIDMapping[cosmosChainID]; ok {
return big.NewInt(evmChainID)
}
return cfg, nil
return big.NewInt(DefaultChainID)
}
2 changes: 1 addition & 1 deletion x/evm/keeper/evm.go
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ func (k *Keeper) getOrCreateEVM(ctx sdk.Context, from sdk.AccAddress) (*vm.EVM,
if err != nil {
return nil, err
}
cfg := types.DefaultChainConfig().EthereumConfig(k.ChainID())
cfg := types.DefaultChainConfig().EthereumConfig(k.ChainID(ctx))
txCtx := vm.TxContext{Origin: k.GetEVMAddressOrDefault(ctx, from)}
evm = vm.NewEVM(*blockCtx, txCtx, stateDB, cfg, vm.Config{})
stateDB.SetEVM(evm)
Expand Down
Loading

0 comments on commit 36b7290

Please sign in to comment.