diff --git a/x/evm/evmmodule/genesis_test.go b/x/evm/evmmodule/genesis_test.go index 806d150b1..31462e56c 100644 --- a/x/evm/evmmodule/genesis_test.go +++ b/x/evm/evmmodule/genesis_test.go @@ -8,7 +8,6 @@ import ( "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" gethcommon "github.com/ethereum/go-ethereum/common" - gethcore "github.com/ethereum/go-ethereum/core/types" "github.com/stretchr/testify/suite" "github.com/NibiruChain/nibiru/v2/eth" @@ -16,7 +15,6 @@ import ( "github.com/NibiruChain/nibiru/v2/x/evm/embeds" "github.com/NibiruChain/nibiru/v2/x/evm/evmmodule" "github.com/NibiruChain/nibiru/v2/x/evm/evmtest" - "github.com/NibiruChain/nibiru/v2/x/evm/keeper" ) type Suite struct { @@ -25,8 +23,7 @@ type Suite struct { // TestKeeperSuite: Runs all the tests in the suite. func TestKeeperSuite(t *testing.T) { - s := new(Suite) - suite.Run(t, s) + suite.Run(t, new(Suite)) } // TestExportInitGenesis @@ -51,23 +48,7 @@ func (s *Suite) TestExportInitGenesis() { s.Require().NoError(err) erc20Addr := deployResp.ContractAddr - txConfig := deps.EvmKeeper.TxConfig(deps.Ctx, gethcommon.BigToHash(big.NewInt(0))) - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, txConfig) - evmCfg := deps.EvmKeeper.GetEVMConfig(deps.Ctx) - evmMsg := gethcore.NewMessage( - evm.EVM_MODULE_ADDRESS, - &evm.EVM_MODULE_ADDRESS, - deps.EvmKeeper.GetAccNonce(deps.Ctx, evm.EVM_MODULE_ADDRESS), - big.NewInt(0), - keeper.Erc20GasLimitExecute, - big.NewInt(0), - big.NewInt(0), - big.NewInt(0), - []byte{}, - gethcore.AccessList{}, - false, - ) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmMsg, evmCfg, nil /*tracer*/, stateDB) + evmObj := deps.NewEVM() totalSupply, err := deps.EvmKeeper.ERC20().LoadERC20BigInt( deps.Ctx, evmObj, erc20Contract.ABI, erc20Addr, "totalSupply", ) diff --git a/x/evm/evmtest/test_deps.go b/x/evm/evmtest/test_deps.go index fa0bb6859..1f845cfe4 100644 --- a/x/evm/evmtest/test_deps.go +++ b/x/evm/evmtest/test_deps.go @@ -4,10 +4,9 @@ import ( "context" sdk "github.com/cosmos/cosmos-sdk/types" - gethcommon "github.com/ethereum/go-ethereum/common" - gethcore "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/core/vm" "github.com/NibiruChain/nibiru/v2/app" "github.com/NibiruChain/nibiru/v2/app/codec" @@ -34,14 +33,13 @@ func NewTestDeps() TestDeps { eth.RegisterInterfaces(encCfg.InterfaceRegistry) app, ctx := testapp.NewNibiruTestAppAndContext() ctx = ctx.WithChainID(eth.EIP155ChainID_Testnet) - ethAcc := NewEthPrivAcc() return TestDeps{ App: app, Ctx: ctx, EncCfg: encCfg, EvmKeeper: app.EvmKeeper, GenState: evm.DefaultGenesisState(), - Sender: ethAcc, + Sender: NewEthPrivAcc(), } } @@ -54,6 +52,12 @@ func (deps TestDeps) NewStateDB() *statedb.StateDB { ) } +func (deps TestDeps) NewEVM() *vm.EVM { + stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) + evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + return evmObj +} + func (deps *TestDeps) GethSigner() gethcore.Signer { return gethcore.LatestSignerForChainID(deps.App.EvmKeeper.EthChainID(deps.Ctx)) } diff --git a/x/evm/keeper/erc20_test.go b/x/evm/keeper/erc20_test.go index ab4bbfa85..abbf29ee6 100644 --- a/x/evm/keeper/erc20_test.go +++ b/x/evm/keeper/erc20_test.go @@ -4,8 +4,6 @@ package keeper_test import ( "math/big" - gethcommon "github.com/ethereum/go-ethereum/common" - "github.com/NibiruChain/nibiru/v2/x/evm" "github.com/NibiruChain/nibiru/v2/x/evm/evmtest" ) @@ -16,19 +14,16 @@ func (s *Suite) TestERC20Calls() { funtoken := evmtest.CreateFunTokenForBankCoin(deps, bankDenom, &s.Suite) contract := funtoken.Erc20Addr.Address - s.T().Log("create evmObj") - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, deps.EvmKeeper.TxConfig(deps.Ctx, gethcommon.Hash{})) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) - s.Run("Mint tokens - Fail from non-owner", func() { _, err := deps.EvmKeeper.ERC20().Mint( contract, deps.Sender.EthAddr, evm.EVM_MODULE_ADDRESS, - big.NewInt(69_420), deps.Ctx, evmObj, + big.NewInt(69_420), deps.Ctx, deps.NewEVM(), ) s.ErrorContains(err, "Ownable: caller is not the owner") }) s.Run("Mint tokens - Success", func() { + evmObj := deps.NewEVM() _, err := deps.EvmKeeper.ERC20().Mint( contract, /*erc20Addr*/ evm.EVM_MODULE_ADDRESS, /*sender*/ @@ -44,6 +39,7 @@ func (s *Suite) TestERC20Calls() { }) s.Run("Transfer - Not enough funds", func() { + evmObj := deps.NewEVM() _, _, err := deps.EvmKeeper.ERC20().Transfer( contract, deps.Sender.EthAddr, evm.EVM_MODULE_ADDRESS, big.NewInt(9_420), deps.Ctx, evmObj, @@ -55,6 +51,7 @@ func (s *Suite) TestERC20Calls() { }) s.Run("Transfer - Success (sanity check)", func() { + evmObj := deps.NewEVM() sentAmt, _, err := deps.EvmKeeper.ERC20().Transfer( contract, /*erc20Addr*/ evm.EVM_MODULE_ADDRESS, /*sender*/ @@ -73,6 +70,7 @@ func (s *Suite) TestERC20Calls() { }) s.Run("Burn tokens - Allowed as non-owner", func() { + evmObj := deps.NewEVM() _, err := deps.EvmKeeper.ERC20().Burn( contract, /*erc20Addr*/ deps.Sender.EthAddr, /*sender*/ @@ -87,6 +85,7 @@ func (s *Suite) TestERC20Calls() { }) s.Run("Burn tokens - Allowed as owner", func() { + evmObj := deps.NewEVM() _, err := deps.EvmKeeper.ERC20().Burn( contract, /*erc20Addr*/ evm.EVM_MODULE_ADDRESS, /*sender*/ diff --git a/x/evm/keeper/funtoken_from_coin_test.go b/x/evm/keeper/funtoken_from_coin_test.go index e2cb1e8ba..60e9e0811 100644 --- a/x/evm/keeper/funtoken_from_coin_test.go +++ b/x/evm/keeper/funtoken_from_coin_test.go @@ -8,7 +8,6 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" bank "github.com/cosmos/cosmos-sdk/x/bank/types" - gethcommon "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" "github.com/stretchr/testify/suite" @@ -20,7 +19,6 @@ import ( "github.com/NibiruChain/nibiru/v2/x/evm/evmtest" "github.com/NibiruChain/nibiru/v2/x/evm/keeper" "github.com/NibiruChain/nibiru/v2/x/evm/precompile" - "github.com/NibiruChain/nibiru/v2/x/evm/statedb" ) func (s *FunTokenFromCoinSuite) TestCreateFunTokenFromCoin() { @@ -29,8 +27,7 @@ func (s *FunTokenFromCoinSuite) TestCreateFunTokenFromCoin() { // Compute contract address. FindERC20 should fail nonce := deps.NewStateDB().GetNonce(deps.Sender.EthAddr) contractAddress := crypto.CreateAddress(deps.Sender.EthAddr, nonce) - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj := deps.NewEVM() metadata, err := deps.EvmKeeper.FindERC20Metadata(deps.Ctx, evmObj, contractAddress) s.Require().Error(err) s.Require().Nil(metadata) @@ -172,8 +169,7 @@ func (s *FunTokenFromCoinSuite) TestCreateFunTokenFromCoin() { func (s *FunTokenFromCoinSuite) TestConvertCoinToEvmAndBack() { deps := evmtest.NewTestDeps() - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj := deps.NewEVM() alice := evmtest.NewEthPrivAcc() // Initial setup @@ -240,8 +236,7 @@ func (s *FunTokenFromCoinSuite) TestConvertCoinToEvmAndBack() { deps.Sender.NibiruAddr.String(), ) s.Require().NoError(err) - stateDB = deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj = deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj = deps.NewEVM() _, err = deps.EvmKeeper.CallContractWithInput( deps.Ctx, evmObj, @@ -269,8 +264,7 @@ func (s *FunTokenFromCoinSuite) TestConvertCoinToEvmAndBack() { deps.ResetGasMeter() s.T().Log("sad: Convert more erc-20 to back to bank coin, insufficient funds") - stateDB = deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj = deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj = deps.NewEVM() _, err = deps.EvmKeeper.CallContractWithInput( deps.Ctx, evmObj, @@ -303,8 +297,7 @@ func (s *FunTokenFromCoinSuite) TestConvertCoinToEvmAndBack() { // - Module account: 0 NIBI escrowed func (s *FunTokenFromCoinSuite) TestNativeSendThenPrecompileSend() { deps := evmtest.NewTestDeps() - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj := deps.NewEVM() bankDenom := evm.EVMBankDenom // Initial setup @@ -382,8 +375,7 @@ func (s *FunTokenFromCoinSuite) TestNativeSendThenPrecompileSend() { newSendAmtSendToBank, /*amount*/ ) s.Require().NoError(err) - stateDB = deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj = deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj = deps.NewEVM() evmResp, err := deps.EvmKeeper.CallContractWithInput( deps.Ctx, evmObj, @@ -426,8 +418,7 @@ func (s *FunTokenFromCoinSuite) TestNativeSendThenPrecompileSend() { newSendAmtSendToBank, /*amount*/ ) s.Require().NoError(err) - stateDB = deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj = deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj = deps.NewEVM() evmResp, err = deps.EvmKeeper.CallContractWithInput( deps.Ctx, evmObj, @@ -482,8 +473,7 @@ func (s *FunTokenFromCoinSuite) TestNativeSendThenPrecompileSend() { // - Module account: 1 NIBI escrowed (which Alice holds as 1 WNIBI) func (s *FunTokenFromCoinSuite) TestERC20TransferThenPrecompileSend() { deps := evmtest.NewTestDeps() - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj := deps.NewEVM() funToken := s.fundAndCreateFunToken(deps, 10e6) @@ -541,8 +531,7 @@ func (s *FunTokenFromCoinSuite) TestERC20TransferThenPrecompileSend() { big.NewInt(9e6), /*amount*/ ) s.Require().NoError(err) - stateDB = deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj = deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj = deps.NewEVM() _, err = deps.EvmKeeper.CallContractWithInput( deps.Ctx, evmObj, @@ -598,8 +587,7 @@ func (s *FunTokenFromCoinSuite) TestERC20TransferThenPrecompileSend() { // - Module account: 10 NIBI escrowed (which Test contract holds as 10 WNIBI) func (s *FunTokenFromCoinSuite) TestPrecompileSelfCallRevert() { deps := evmtest.NewTestDeps() - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj := deps.NewEVM() // Initial setup funToken := s.fundAndCreateFunToken(deps, 10e6) diff --git a/x/evm/keeper/funtoken_from_erc20_test.go b/x/evm/keeper/funtoken_from_erc20_test.go index 85d85f491..bc37b8afd 100644 --- a/x/evm/keeper/funtoken_from_erc20_test.go +++ b/x/evm/keeper/funtoken_from_erc20_test.go @@ -8,8 +8,6 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" bank "github.com/cosmos/cosmos-sdk/x/bank/types" - gethcommon "github.com/ethereum/go-ethereum/common" - gethcore "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" "github.com/stretchr/testify/suite" @@ -21,7 +19,6 @@ import ( "github.com/NibiruChain/nibiru/v2/x/evm/evmtest" "github.com/NibiruChain/nibiru/v2/x/evm/keeper" "github.com/NibiruChain/nibiru/v2/x/evm/precompile" - "github.com/NibiruChain/nibiru/v2/x/evm/statedb" ) func (s *FunTokenFromErc20Suite) TestCreateFunTokenFromERC20() { @@ -43,8 +40,7 @@ func (s *FunTokenFromErc20Suite) TestCreateFunTokenFromERC20() { s.Require().NoError(err) s.Require().Equal(expectedERC20Addr, deployResp.ContractAddr) - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj := deps.NewEVM() actualMetadata, err := deps.EvmKeeper.FindERC20Metadata(deps.Ctx, evmObj, deployResp.ContractAddr) s.Require().NoError(err) @@ -205,8 +201,7 @@ func (s *FunTokenFromErc20Suite) TestSendFromEvmToBank_MadeFromErc20() { s.T().Logf("mint erc20 tokens to %s", deps.Sender.EthAddr.String()) contractInput, err := embeds.SmartContract_ERC20Minter.ABI.Pack("mint", deps.Sender.EthAddr, big.NewInt(69_420)) s.Require().NoError(err) - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj := deps.NewEVM() _, err = deps.EvmKeeper.CallContractWithInput( deps.Ctx, evmObj, @@ -224,8 +219,7 @@ func (s *FunTokenFromErc20Suite) TestSendFromEvmToBank_MadeFromErc20() { deps.ResetGasMeter() contractInput, err = embeds.SmartContract_FunToken.ABI.Pack("sendToBank", deployResp.ContractAddr, big.NewInt(1), randomAcc.String()) s.Require().NoError(err) - stateDB = deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj = deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj = deps.NewEVM() _, err = deps.EvmKeeper.CallContractWithInput( deps.Ctx, evmObj, @@ -249,8 +243,7 @@ func (s *FunTokenFromErc20Suite) TestSendFromEvmToBank_MadeFromErc20() { s.T().Log("sad: send too many erc20 tokens to Bank") contractInput, err = embeds.SmartContract_FunToken.ABI.Pack("sendToBank", deployResp.ContractAddr, big.NewInt(70_000), randomAcc.String()) s.Require().NoError(err) - stateDB = deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj = deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj = deps.NewEVM() evmResp, err := deps.EvmKeeper.CallContractWithInput( deps.Ctx, evmObj, @@ -277,8 +270,7 @@ func (s *FunTokenFromErc20Suite) TestSendFromEvmToBank_MadeFromErc20() { s.Require().NoError(err) s.T().Log("check balances") - stateDB = deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj = deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj = deps.NewEVM() evmtest.AssertERC20BalanceEqualWithDescription(s.T(), deps, evmObj, deployResp.ContractAddr, deps.Sender.EthAddr, big.NewInt(69_420), "expect nonzero balance") evmtest.AssertERC20BalanceEqualWithDescription(s.T(), deps, evmObj, deployResp.ContractAddr, evm.EVM_MODULE_ADDRESS, big.NewInt(0), "expect nonzero balance") s.Require().True( @@ -382,22 +374,7 @@ func (s *FunTokenFromErc20Suite) TestFunTokenFromERC20MaliciousTransfer() { s.T().Log("send erc20 tokens to cosmos") input, err := embeds.SmartContract_FunToken.ABI.Pack("sendToBank", deployResp.ContractAddr, big.NewInt(1), randomAcc.String()) s.Require().NoError(err) - evmMsg := gethcore.NewMessage( - deps.Sender.EthAddr, - &precompile.PrecompileAddr_FunToken, - deps.EvmKeeper.GetAccNonce(deps.Ctx, deps.Sender.EthAddr), - big.NewInt(0), - evmtest.FunTokenGasLimitSendToEvm, - big.NewInt(0), - big.NewInt(0), - big.NewInt(0), - input, - gethcore.AccessList{}, - false, - ) - evmCfg := deps.EvmKeeper.GetEVMConfig(deps.Ctx) - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, deps.EvmKeeper.TxConfig(deps.Ctx, gethcommon.BigToHash(big.NewInt(0)))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmMsg, evmCfg, nil /*tracer*/, stateDB) + evmObj := deps.NewEVM() _, err = deps.EvmKeeper.CallContractWithInput( deps.Ctx, evmObj, @@ -414,8 +391,6 @@ func (s *FunTokenFromErc20Suite) TestFunTokenFromERC20MaliciousTransfer() { // with a malicious recursive balanceOf() and transfer() functions. func (s *FunTokenFromErc20Suite) TestFunTokenInfiniteRecursionERC20() { deps := evmtest.NewTestDeps() - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) s.Require().NoError(testapp.FundAccount( deps.App.BankKeeper, deps.Ctx, @@ -454,6 +429,7 @@ func (s *FunTokenFromErc20Suite) TestFunTokenInfiniteRecursionERC20() { s.T().Log("happy: call attackBalance()") contractInput, err := embeds.SmartContract_TestInfiniteRecursionERC20.ABI.Pack("attackBalance") s.Require().NoError(err) + evmObj := deps.NewEVM() _, err = deps.EvmKeeper.CallContractWithInput( deps.Ctx, evmObj, @@ -468,6 +444,7 @@ func (s *FunTokenFromErc20Suite) TestFunTokenInfiniteRecursionERC20() { s.T().Log("sad: call attackTransfer()") contractInput, err = embeds.SmartContract_TestInfiniteRecursionERC20.ABI.Pack("attackTransfer") s.Require().NoError(err) + evmObj = deps.NewEVM() _, err = deps.EvmKeeper.CallContractWithInput( deps.Ctx, evmObj, @@ -484,8 +461,6 @@ func (s *FunTokenFromErc20Suite) TestFunTokenInfiniteRecursionERC20() { // Test ensures that after sending ERC20 token to coin and back, all bank coins are burned. func (s *FunTokenFromErc20Suite) TestSendERC20WithFee() { deps := evmtest.NewTestDeps() - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) s.Require().NoError(testapp.FundAccount( deps.App.BankKeeper, deps.Ctx, @@ -528,6 +503,7 @@ func (s *FunTokenFromErc20Suite) TestSendERC20WithFee() { randomAcc.String(), /*to*/ ) s.Require().NoError(err) + evmObj := deps.NewEVM() _, err = deps.EvmKeeper.CallContractWithInput( deps.Ctx, evmObj, @@ -561,8 +537,7 @@ func (s *FunTokenFromErc20Suite) TestSendERC20WithFee() { s.Require().NoError(err) s.T().Log("check balances") - stateDB = deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj = deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj = deps.NewEVM() evmtest.AssertERC20BalanceEqualWithDescription(s.T(), deps, evmObj, deployResp.ContractAddr, deps.Sender.EthAddr, big.NewInt(981), "expect 981 balance") evmtest.AssertERC20BalanceEqualWithDescription(s.T(), deps, evmObj, deployResp.ContractAddr, deployResp.ContractAddr, big.NewInt(19), "expect 19 balance") evmtest.AssertERC20BalanceEqualWithDescription(s.T(), deps, evmObj, deployResp.ContractAddr, evm.EVM_MODULE_ADDRESS, big.NewInt(0), "expect 0 balance") diff --git a/x/evm/keeper/random_test.go b/x/evm/keeper/random_test.go index 863131883..71d0bc061 100644 --- a/x/evm/keeper/random_test.go +++ b/x/evm/keeper/random_test.go @@ -4,19 +4,14 @@ package keeper_test import ( "time" - gethcommon "github.com/ethereum/go-ethereum/common" - - "github.com/NibiruChain/nibiru/v2/x/evm" "github.com/NibiruChain/nibiru/v2/x/evm/embeds" "github.com/NibiruChain/nibiru/v2/x/evm/evmtest" - "github.com/NibiruChain/nibiru/v2/x/evm/statedb" ) // TestRandom tests the random value generation within the EVM. func (s *Suite) TestRandom() { deps := evmtest.NewTestDeps() - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj := deps.NewEVM() deployResp, err := evmtest.DeployContract(&deps, embeds.SmartContract_TestRandom) s.Require().NoError(err) randomContractAddr := deployResp.ContractAddr @@ -31,8 +26,7 @@ func (s *Suite) TestRandom() { // Update block time to check that random changes deps.Ctx = deps.Ctx.WithBlockTime(deps.Ctx.BlockTime().Add(1 * time.Second)) - stateDB = deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj = deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj = deps.NewEVM() random2, err := deps.EvmKeeper.ERC20().LoadERC20BigInt( deps.Ctx, evmObj, embeds.SmartContract_TestRandom.ABI, randomContractAddr, "getRandom", ) diff --git a/x/evm/precompile/funtoken_test.go b/x/evm/precompile/funtoken_test.go index 88f8d5f08..2040637d4 100644 --- a/x/evm/precompile/funtoken_test.go +++ b/x/evm/precompile/funtoken_test.go @@ -18,7 +18,6 @@ import ( "github.com/NibiruChain/nibiru/v2/x/evm/evmtest" "github.com/NibiruChain/nibiru/v2/x/evm/keeper" "github.com/NibiruChain/nibiru/v2/x/evm/precompile" - "github.com/NibiruChain/nibiru/v2/x/evm/statedb" ) // TestSuite: Runs all the tests in the suite. @@ -85,8 +84,7 @@ func TestWhoAmI(t *testing.T) { fmt.Printf("arg: %s", arg) contractInput, err := embeds.SmartContract_FunToken.ABI.Pack("whoAmI", arg) require.NoError(t, err) - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj := deps.NewEVM() return deps.EvmKeeper.CallContractWithInput( deps.Ctx, evmObj, @@ -132,12 +130,10 @@ func (s *FuntokenSuite) TestHappyPath() { sdk.NewCoins(sdk.NewCoin(bankDenom, sdk.NewInt(69_420))), )) - s.T().Log("Call IFunToken.bankBalance()") s.Run("IFunToken.bankBalance()", func() { contractInput, err := embeds.SmartContract_FunToken.ABI.Pack("bankBalance", deps.Sender.EthAddr, funtoken.BankDenom) s.Require().NoError(err) - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj := deps.NewEVM() evmResp, err := deps.EvmKeeper.CallContractWithInput( deps.Ctx, evmObj, @@ -171,8 +167,7 @@ func (s *FuntokenSuite) TestHappyPath() { s.Run("Mint tokens - Fail from non-owner", func() { deps.ResetGasMeter() contractInput, err := embeds.SmartContract_ERC20Minter.ABI.Pack("mint", deps.Sender.EthAddr, big.NewInt(69_420)) - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj := deps.NewEVM() s.Require().NoError(err) _, err = deps.EvmKeeper.CallContractWithInput( deps.Ctx, @@ -186,16 +181,14 @@ func (s *FuntokenSuite) TestHappyPath() { s.ErrorContains(err, "Ownable: caller is not the owner") }) - randomAcc := testutil.AccAddress() - s.Run("IFunToken.sendToBank()", func() { deps.ResetGasMeter() + randomAcc := testutil.AccAddress() input, err := embeds.SmartContract_FunToken.ABI.Pack(string(precompile.FunTokenMethod_sendToBank), erc20, big.NewInt(420), randomAcc.String()) s.NoError(err) - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj := deps.NewEVM() ethTxResp, err := deps.EvmKeeper.CallContractWithInput( deps.Ctx, @@ -231,14 +224,13 @@ func (s *FuntokenSuite) TestHappyPath() { s.Run("IFuntoken.balance", func() { contractInput, err := embeds.SmartContract_FunToken.ABI.Pack("balance", deps.Sender.EthAddr, erc20) s.Require().NoError(err) - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj := deps.NewEVM() evmResp, err := deps.EvmKeeper.CallContractWithInput( deps.Ctx, evmObj, - deps.Sender.EthAddr, - &precompile.PrecompileAddr_FunToken, - false, + deps.Sender.EthAddr, // from + &precompile.PrecompileAddr_FunToken, // to + false, // commit contractInput, keeper.Erc20GasLimitQuery, ) @@ -257,8 +249,8 @@ func (s *FuntokenSuite) TestHappyPath() { func (s *FuntokenSuite) TestPrecompileLocalGas() { deps := evmtest.NewTestDeps() funtoken := evmtest.CreateFunTokenForBankCoin(deps, evm.EVMBankDenom, &s.Suite) - randomAcc := testutil.AccAddress() + deployResp, err := evmtest.DeployContract( &deps, embeds.SmartContract_TestFunTokenPrecompileLocalGas, funtoken.Erc20Addr.Address, @@ -296,8 +288,7 @@ func (s *FuntokenSuite) TestPrecompileLocalGas() { randomAcc.String(), ) s.Require().NoError(err) - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), nil /*tracer*/, stateDB) + evmObj := deps.NewEVM() _, err = deps.EvmKeeper.CallContractWithInput( deps.Ctx, evmObj, @@ -319,8 +310,7 @@ func (s *FuntokenSuite) TestPrecompileLocalGas() { big.NewInt(int64(evmtest.FunTokenGasLimitSendToEvm)), ) s.Require().NoError(err) - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), nil /*tracer*/, stateDB) + evmObj := deps.NewEVM() _, err = deps.EvmKeeper.CallContractWithInput( deps.Ctx, evmObj, @@ -342,8 +332,7 @@ func (s *FuntokenSuite) TestPrecompileLocalGas() { big.NewInt(50_000), // customGas - too small ) s.Require().NoError(err) - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), nil /*tracer*/, stateDB) + evmObj := deps.NewEVM() _, err = deps.EvmKeeper.CallContractWithInput( deps.Ctx, evmObj, @@ -361,8 +350,7 @@ func (s *FuntokenSuite) TestSendToEvm_MadeFromCoin() { deps := evmtest.NewTestDeps() s.T().Log("create evmObj") - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), nil /*tracer*/, stateDB) + evmObj := deps.NewEVM() s.T().Log("1) Create a new FunToken from coin 'ulibi'") bankDenom := "ulibi" @@ -379,6 +367,7 @@ func (s *FuntokenSuite) TestSendToEvm_MadeFromCoin() { s.Require().NoError(err) s.Run("Call sendToEvm(string bankDenom, uint256 amount, string to)", func() { + deps.ResetGasMeter() contractInput, err := embeds.SmartContract_FunToken.ABI.Pack( "sendToEvm", bankDenom, @@ -387,7 +376,6 @@ func (s *FuntokenSuite) TestSendToEvm_MadeFromCoin() { ) s.Require().NoError(err) - deps.ResetGasMeter() ethTxResp, err := deps.EvmKeeper.CallContractWithInput( deps.Ctx, evmObj, @@ -423,10 +411,10 @@ func (s *FuntokenSuite) TestSendToEvm_MadeFromCoin() { // 5) Now send some tokens *back* to the bank via `sendToBank`. //----------------------------------------------------------------------- // We'll pick a brand new random account to receive them. - recipient := testutil.AccAddress() s.Run("Sending 400 tokens back from EVM to Cosmos bank => recipient:", func() { deps.ResetGasMeter() + recipient := testutil.AccAddress() contractInput, err := embeds.SmartContract_FunToken.ABI.Pack( string(precompile.FunTokenMethod_sendToBank), erc20Addr, @@ -495,8 +483,7 @@ func (s *FuntokenSuite) TestSendToEvm_MadeFromERC20() { // - unescrow erc20 token deps := evmtest.NewTestDeps() - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj := deps.NewEVM() alice := evmtest.NewEthPrivAcc() bob := evmtest.NewEthPrivAcc() diff --git a/x/evm/precompile/oracle_test.go b/x/evm/precompile/oracle_test.go index 638944d33..c49797ff5 100644 --- a/x/evm/precompile/oracle_test.go +++ b/x/evm/precompile/oracle_test.go @@ -8,8 +8,6 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" - gethcommon "github.com/ethereum/go-ethereum/common" - gethcore "github.com/ethereum/go-ethereum/core/types" "github.com/stretchr/testify/suite" "github.com/NibiruChain/nibiru/v2/x/evm" @@ -69,23 +67,7 @@ func (s *OracleSuite) TestOracle_HappyPath() { "unibi:uusd", ) s.Require().NoError(err) - txConfig := deps.EvmKeeper.TxConfig(ctx, gethcommon.BigToHash(big.NewInt(0))) - stateDB := deps.EvmKeeper.NewStateDB(ctx, txConfig) - evmCfg := deps.EvmKeeper.GetEVMConfig(ctx) - evmMsg := gethcore.NewMessage( - evm.EVM_MODULE_ADDRESS, - &evm.EVM_MODULE_ADDRESS, - deps.EvmKeeper.GetAccNonce(ctx, evm.EVM_MODULE_ADDRESS), - big.NewInt(0), - OracleGasLimitQuery, - big.NewInt(0), - big.NewInt(0), - big.NewInt(0), - contractInput, - gethcore.AccessList{}, - false, - ) - evmObj := deps.EvmKeeper.NewEVM(ctx, evmMsg, evmCfg, nil /*tracer*/, stateDB) + evmObj := deps.NewEVM() return deps.EvmKeeper.CallContractWithInput( ctx, evmObj, @@ -150,23 +132,7 @@ func (s *OracleSuite) TestOracle_HappyPath() { "unibi:uusd", ) s.Require().NoError(err) - txConfig := deps.EvmKeeper.TxConfig(ctx, gethcommon.BigToHash(big.NewInt(0))) - stateDB := deps.EvmKeeper.NewStateDB(ctx, txConfig) - evmCfg := deps.EvmKeeper.GetEVMConfig(ctx) - evmMsg := gethcore.NewMessage( - evm.EVM_MODULE_ADDRESS, - &evm.EVM_MODULE_ADDRESS, - deps.EvmKeeper.GetAccNonce(ctx, evm.EVM_MODULE_ADDRESS), - big.NewInt(0), - OracleGasLimitQuery, - big.NewInt(0), - big.NewInt(0), - big.NewInt(0), - contractInput, - gethcore.AccessList{}, - false, - ) - evmObj := deps.EvmKeeper.NewEVM(ctx, evmMsg, evmCfg, nil /*tracer*/, stateDB) + evmObj := deps.NewEVM() resp, err := deps.EvmKeeper.CallContractWithInput( ctx, evmObj, diff --git a/x/evm/precompile/wasm_test.go b/x/evm/precompile/wasm_test.go index 713ff3d92..1e149b0f1 100644 --- a/x/evm/precompile/wasm_test.go +++ b/x/evm/precompile/wasm_test.go @@ -7,17 +7,13 @@ import ( "testing" wasm "github.com/CosmWasm/wasmd/x/wasm/types" - gethcommon "github.com/ethereum/go-ethereum/common" - gethcore "github.com/ethereum/go-ethereum/core/types" "github.com/NibiruChain/nibiru/v2/x/common/testutil" "github.com/NibiruChain/nibiru/v2/x/common/testutil/testapp" - "github.com/NibiruChain/nibiru/v2/x/evm" "github.com/NibiruChain/nibiru/v2/x/evm/embeds" "github.com/NibiruChain/nibiru/v2/x/evm/evmtest" "github.com/NibiruChain/nibiru/v2/x/evm/precompile" "github.com/NibiruChain/nibiru/v2/x/evm/precompile/test" - "github.com/NibiruChain/nibiru/v2/x/evm/statedb" tokenfactory "github.com/NibiruChain/nibiru/v2/x/tokenfactory/types" sdk "github.com/cosmos/cosmos-sdk/types" @@ -40,8 +36,8 @@ func TestWasmSuite(t *testing.T) { func (s *WasmSuite) TestExecuteHappy() { deps := evmtest.NewTestDeps() - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj := deps.NewEVM() + wasmContracts := test.SetupWasmContracts(&deps, evmObj, &s.Suite) wasmContract := wasmContracts[0] // nibi_stargate.wasm @@ -121,9 +117,7 @@ func (s *WasmSuite) TestExecuteHappy() { func (s *WasmSuite) TestExecuteMultiHappy() { deps := evmtest.NewTestDeps() - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) - + evmObj := deps.NewEVM() wasmContracts := test.SetupWasmContracts(&deps, evmObj, &s.Suite) wasmContract := wasmContracts[1] // hello_world_counter.wasm @@ -164,23 +158,7 @@ func (s *WasmSuite) assertWasmCounterStateRaw( []byte(`state`), ) s.Require().NoError(err) - txConfig := deps.EvmKeeper.TxConfig(deps.Ctx, gethcommon.BigToHash(big.NewInt(0))) - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, txConfig) - evmCfg := deps.EvmKeeper.GetEVMConfig(deps.Ctx) - evmMsg := gethcore.NewMessage( - evm.EVM_MODULE_ADDRESS, - &evm.EVM_MODULE_ADDRESS, - deps.EvmKeeper.GetAccNonce(deps.Ctx, evm.EVM_MODULE_ADDRESS), - big.NewInt(0), - WasmGasLimitQuery, - big.NewInt(0), - big.NewInt(0), - big.NewInt(0), - contractInput, - gethcore.AccessList{}, - false, - ) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmMsg, evmCfg, nil /*tracer*/, stateDB) + evmObj := deps.NewEVM() ethTxResp, err := deps.EvmKeeper.CallContractWithInput( deps.Ctx, @@ -356,23 +334,7 @@ func (s *WasmSuite) TestSadArgsExecute() { tc.callArgs..., ) s.Require().NoError(err) - txConfig := deps.EvmKeeper.TxConfig(deps.Ctx, gethcommon.BigToHash(big.NewInt(0))) - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, txConfig) - evmCfg := deps.EvmKeeper.GetEVMConfig(deps.Ctx) - evmMsg := gethcore.NewMessage( - evm.EVM_MODULE_ADDRESS, - &evm.EVM_MODULE_ADDRESS, - deps.EvmKeeper.GetAccNonce(deps.Ctx, evm.EVM_MODULE_ADDRESS), - big.NewInt(0), - WasmGasLimitExecute, - big.NewInt(0), - big.NewInt(0), - big.NewInt(0), - contractInput, - gethcore.AccessList{}, - false, - ) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmMsg, evmCfg, nil /*tracer*/, stateDB) + evmObj := deps.NewEVM() ethTxResp, err := deps.EvmKeeper.CallContractWithInput( deps.Ctx, @@ -397,8 +359,7 @@ type WasmExecuteMsg struct { func (s *WasmSuite) TestExecuteMultiValidation() { deps := evmtest.NewTestDeps() - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj := deps.NewEVM() s.Require().NoError(testapp.FundAccount( deps.App.BankKeeper, @@ -513,23 +474,7 @@ func (s *WasmSuite) TestExecuteMultiValidation() { tc.executeMsgs, ) s.Require().NoError(err) - txConfig := deps.EvmKeeper.TxConfig(deps.Ctx, gethcommon.BigToHash(big.NewInt(0))) - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, txConfig) - evmCfg := deps.EvmKeeper.GetEVMConfig(deps.Ctx) - evmMsg := gethcore.NewMessage( - evm.EVM_MODULE_ADDRESS, - &evm.EVM_MODULE_ADDRESS, - deps.EvmKeeper.GetAccNonce(deps.Ctx, evm.EVM_MODULE_ADDRESS), - big.NewInt(0), - WasmGasLimitExecute, - big.NewInt(0), - big.NewInt(0), - big.NewInt(0), - contractInput, - gethcore.AccessList{}, - false, - ) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmMsg, evmCfg, nil /*tracer*/, stateDB) + evmObj := deps.NewEVM() ethTxResp, err := deps.EvmKeeper.CallContractWithInput( deps.Ctx, evmObj, @@ -555,8 +500,7 @@ func (s *WasmSuite) TestExecuteMultiValidation() { // in the batch fails validation func (s *WasmSuite) TestExecuteMultiPartialExecution() { deps := evmtest.NewTestDeps() - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj := deps.NewEVM() wasmContracts := test.SetupWasmContracts(&deps, evmObj, &s.Suite) wasmContract := wasmContracts[1] // hello_world_counter.wasm diff --git a/x/evm/statedb/journal_test.go b/x/evm/statedb/journal_test.go index ecead37c2..745f10c43 100644 --- a/x/evm/statedb/journal_test.go +++ b/x/evm/statedb/journal_test.go @@ -8,7 +8,6 @@ import ( "github.com/MakeNowJust/heredoc/v2" sdk "github.com/cosmos/cosmos-sdk/types" - gethcommon "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/vm" serverconfig "github.com/NibiruChain/nibiru/v2/app/server/config" @@ -24,8 +23,7 @@ import ( func (s *Suite) TestCommitRemovesDirties() { deps := evmtest.NewTestDeps() - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj := deps.NewEVM() deployResp, err := evmtest.DeployContract( &deps, @@ -49,12 +47,13 @@ func (s *Suite) TestCommitRemovesDirties() { keeper.Erc20GasLimitExecute, ) s.Require().NoError(err) - s.Require().EqualValues(0, stateDB.DebugDirtiesCount()) + s.Require().EqualValues(0, evmObj.StateDB.(*statedb.StateDB).DebugDirtiesCount()) } func (s *Suite) TestCommitRemovesDirties_OnlyStateDB() { deps := evmtest.NewTestDeps() - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) + evmObj := deps.NewEVM() + stateDB := evmObj.StateDB.(*statedb.StateDB) randomAcc := evmtest.NewEthPrivAcc().EthAddr balDelta := evm.NativeToWei(big.NewInt(4)) @@ -80,8 +79,9 @@ func (s *Suite) TestCommitRemovesDirties_OnlyStateDB() { func (s *Suite) TestContractCallsAnotherContract() { deps := evmtest.NewTestDeps() - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj := deps.NewEVM() + stateDB := evmObj.StateDB.(*statedb.StateDB) + s.Require().NoError(testapp.FundAccount( deps.App.BankKeeper, deps.Ctx, @@ -161,8 +161,8 @@ func (s *Suite) TestContractCallsAnotherContract() { func (s *Suite) TestJournalReversion() { deps := evmtest.NewTestDeps() - stateDB := deps.EvmKeeper.NewStateDB(deps.Ctx, statedb.NewEmptyTxConfig(gethcommon.BytesToHash(deps.Ctx.HeaderHash()))) - evmObj := deps.EvmKeeper.NewEVM(deps.Ctx, evmtest.MOCK_GETH_MESSAGE, deps.EvmKeeper.GetEVMConfig(deps.Ctx), evm.NewNoOpTracer(), stateDB) + evmObj := deps.NewEVM() + stateDB := evmObj.StateDB.(*statedb.StateDB) s.Require().NoError(testapp.FundAccount( deps.App.BankKeeper, deps.Ctx,