From 028760ed329f3e2df12e84fbb00057505c2d6ca0 Mon Sep 17 00:00:00 2001 From: mmsqe Date: Tue, 2 Apr 2024 14:28:56 +0800 Subject: [PATCH] Problem: can't support prevrando opcode by default (#449) --- CHANGELOG.md | 9 +++++++-- app/app.go | 1 - tests/integration_tests/test_call.py | 6 ++---- x/evm/keeper/keeper.go | 10 ---------- x/evm/keeper/state_transition.go | 11 +++-------- x/evm/statedb/statedb_test.go | 1 - 6 files changed, 12 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dbdbe147be..cda1577b5d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,7 +35,13 @@ Ref: https://keepachangelog.com/en/1.0.0/ # Changelog -## Unreleased +## v0.22.x-cronos + +### State Machine Breaking + +* (rpc) [#449](https://github.com/crypto-org-chain/ethermint/pull/449) Remove forkEnabled callback to keep zero random as default. + +## v0.21.x-cronos ### Bug Fixes @@ -47,7 +53,6 @@ Ref: https://keepachangelog.com/en/1.0.0/ * (rpc) [#443](https://github.com/crypto-org-chain/ethermint/pull/443) Keep behavior of random opcode as before. - ## v0.21.x-cronos ### Features diff --git a/app/app.go b/app/app.go index a62789f911..3d0bf0def3 100644 --- a/app/app.go +++ b/app/app.go @@ -482,7 +482,6 @@ func NewEthermintApp( tracer, evmSs, nil, allKeys, - nil, ) // Create IBC Keeper diff --git a/tests/integration_tests/test_call.py b/tests/integration_tests/test_call.py index 3a853392ed..fdf177da11 100644 --- a/tests/integration_tests/test_call.py +++ b/tests/integration_tests/test_call.py @@ -1,6 +1,5 @@ import json -import pytest from hexbytes import HexBytes from web3 import Web3 from web3._utils.contracts import encode_transaction_data @@ -103,6 +102,5 @@ def test_opcode(ethermint): ethermint.w3, CONTRACTS["Random"], ) - with pytest.raises(ValueError) as e_info: - contract.caller.randomTokenId() - assert "invalid memory address or nil pointer dereference" in str(e_info.value) + res = contract.caller.randomTokenId() + assert res > 0, res diff --git a/x/evm/keeper/keeper.go b/x/evm/keeper/keeper.go index 5bdd04ae17..a691bf4422 100644 --- a/x/evm/keeper/keeper.go +++ b/x/evm/keeper/keeper.go @@ -79,8 +79,6 @@ type Keeper struct { // a set of store keys that should cover all the precompile use cases, // or ideally just pass the application's all stores. keys map[string]storetypes.StoreKey - - forkEnabledFunc func(sdk.Context) bool } // NewKeeper generates new evm module keeper @@ -96,7 +94,6 @@ func NewKeeper( ss paramstypes.Subspace, customContractFns []CustomContractFn, keys map[string]storetypes.StoreKey, - forkEnabledFunc func(sdk.Context) bool, ) *Keeper { // ensure evm module account is set if addr := ak.GetModuleAddress(types.ModuleName); addr == nil { @@ -108,12 +105,6 @@ func NewKeeper( panic(err) } - if forkEnabledFunc == nil { - forkEnabledFunc = func(sdk.Context) bool { - return false - } - } - // NOTE: we pass in the parameter space to the CommitStateDB in order to use custom denominations for the EVM operations return &Keeper{ cdc: cdc, @@ -128,7 +119,6 @@ func NewKeeper( ss: ss, customContractFns: customContractFns, keys: keys, - forkEnabledFunc: forkEnabledFunc, } } diff --git a/x/evm/keeper/state_transition.go b/x/evm/keeper/state_transition.go index 4cb25d2f13..cd8d042e3c 100644 --- a/x/evm/keeper/state_transition.go +++ b/x/evm/keeper/state_transition.go @@ -51,8 +51,8 @@ func (k *Keeper) NewEVM( msg core.Message, cfg *EVMConfig, stateDB vm.StateDB, - random *common.Hash, ) *vm.EVM { + zero := common.BigToHash(big.NewInt(0)) blockCtx := vm.BlockContext{ CanTransfer: core.CanTransfer, Transfer: core.Transfer, @@ -63,7 +63,7 @@ func (k *Keeper) NewEVM( Time: uint64(ctx.BlockHeader().Time.Unix()), Difficulty: big.NewInt(0), // unused. Only required in PoW context BaseFee: cfg.BaseFee, - Random: random, // not supported + Random: &zero, // not supported } if cfg.BlockOverrides != nil { cfg.BlockOverrides.Apply(&blockCtx) @@ -362,12 +362,7 @@ func (k *Keeper) ApplyMessageWithConfig( return nil, errorsmod.Wrap(err, "failed to apply state override") } } - var random *common.Hash - if k.forkEnabledFunc(ctx) { - zero := common.BigToHash(big.NewInt(0)) - random = &zero - } - evm = k.NewEVM(ctx, msg, cfg, stateDB, random) + evm = k.NewEVM(ctx, msg, cfg, stateDB) leftoverGas := msg.GasLimit sender := vm.AccountRef(msg.From) // Allow the tracer captures the tx level events, mainly the gas consumption. diff --git a/x/evm/statedb/statedb_test.go b/x/evm/statedb/statedb_test.go index b9f622403c..9c88b2680e 100644 --- a/x/evm/statedb/statedb_test.go +++ b/x/evm/statedb/statedb_test.go @@ -825,7 +825,6 @@ func newTestKeeper(t *testing.T, cms sdk.MultiStore) (sdk.Context, *evmkeeper.Ke "", paramstypes.Subspace{}, nil, allKeys, - nil, ) ctx := sdk.NewContext(cms, tmproto.Header{}, false, log.NewNopLogger())