Skip to content

Commit

Permalink
Make all tests pass and bump to latest go-ethereum version
Browse files Browse the repository at this point in the history
  • Loading branch information
maoueh committed Mar 15, 2024
1 parent 5e81591 commit 37fc6fb
Show file tree
Hide file tree
Showing 14 changed files with 101 additions and 76 deletions.
13 changes: 12 additions & 1 deletion evmrpc/config_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package evmrpc_test

import (
"fmt"
"testing"
"time"

Expand All @@ -25,6 +26,8 @@ type opts struct {
checkTxTimeout interface{}
maxTxPoolTxs interface{}
slow interface{}
liveEVMTracer interface{}
liveEVMTracerChainID interface{}
}

func (o *opts) Get(k string) interface{} {
Expand Down Expand Up @@ -76,7 +79,13 @@ func (o *opts) Get(k string) interface{} {
if k == "evm.slow" {
return o.slow
}
panic("unknown key")
if k == "evm.live_evm_tracer" {
return o.slow
}
if k == "evm.live_evm_tracer_chain_id" {
return o.slow
}
panic(fmt.Errorf("unknown key: %s", k))
}

func TestReadConfig(t *testing.T) {
Expand All @@ -97,6 +106,8 @@ func TestReadConfig(t *testing.T) {
time.Duration(5),
1000,
false,
"",
0,
}
_, err := evmrpc.ReadConfig(&goodOpts)
require.Nil(t, err)
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@ replace (
github.com/cosmos/cosmos-sdk => github.com/sei-protocol/sei-cosmos v0.2.73-evm-rebase-10
github.com/cosmos/iavl => github.com/sei-protocol/sei-iavl v0.1.9
github.com/cosmos/ibc-go/v3 => github.com/sei-protocol/sei-ibc-go/v3 v3.3.0
github.com/ethereum/go-ethereum => github.com/streamingfast/go-ethereum v1.13.6-0.20240223010308-d0fd1bd7f3cf
github.com/ethereum/go-ethereum => github.com/streamingfast/go-ethereum v1.13.6-0.20240315211644-7ea867c72711
github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1
github.com/sei-protocol/sei-db => github.com/sei-protocol/sei-db v0.0.30
// Latest goleveldb is broken, we have to stick to this version
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1427,8 +1427,8 @@ github.com/stbenjam/no-sprintf-host-port v0.1.1/go.mod h1:TLhvtIvONRzdmkFiio4O8L
github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI=
github.com/streamingfast/go-ethereum v1.13.6-0.20240223010308-d0fd1bd7f3cf h1:sB6WRi5KuZMc0I9sVxSStN1cNJxSToPh3RfX9lO5iD0=
github.com/streamingfast/go-ethereum v1.13.6-0.20240223010308-d0fd1bd7f3cf/go.mod h1:kcRZmuzRn1lVejiFNTz4l4W7imnpq1bDAnuKS/RyhbQ=
github.com/streamingfast/go-ethereum v1.13.6-0.20240315211644-7ea867c72711 h1:cFjcFr/S7U8ApOvdCv2TOCPPblo+6tmntTfjyYMKq5A=
github.com/streamingfast/go-ethereum v1.13.6-0.20240315211644-7ea867c72711/go.mod h1:kcRZmuzRn1lVejiFNTz4l4W7imnpq1bDAnuKS/RyhbQ=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
Expand Down
18 changes: 9 additions & 9 deletions precompiles/bank/bank_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func TestRun(t *testing.T) {
require.Nil(t, err)
args, err := send.Inputs.Pack(senderEVMAddr, evmAddr, "usei", big.NewInt(25))
require.Nil(t, err)
_, err = p.Run(&evm, senderEVMAddr, append(p.SendID, args...)) // should error because address is not whitelisted
_, err = p.Run(&evm, senderEVMAddr, append(p.SendID, args...), nil) // should error because address is not whitelisted
require.NotNil(t, err)

k.BankKeeper().SendCoins(ctx, senderAddr, seiAddr, sdk.NewCoins(sdk.NewCoin("usei", sdk.NewInt(50))))
Expand All @@ -44,21 +44,21 @@ func TestRun(t *testing.T) {
require.Nil(t, err)
args, err = balance.Inputs.Pack(evmAddr, "usei")
require.Nil(t, err)
res, err := p.Run(&evm, common.Address{}, append(p.BalanceID, args...))
res, err := p.Run(&evm, common.Address{}, append(p.BalanceID, args...), nil)
require.Nil(t, err)
is, err := balance.Outputs.Unpack(res)
require.Nil(t, err)
require.Equal(t, 1, len(is))
require.Equal(t, big.NewInt(50), is[0].(*big.Int))
res, err = p.Run(&evm, common.Address{}, append(p.BalanceID, args[:1]...))
res, err = p.Run(&evm, common.Address{}, append(p.BalanceID, args[:1]...), nil)
require.NotNil(t, err)
args, err = balance.Inputs.Pack(evmAddr, "")
require.Nil(t, err)
res, err = p.Run(&evm, common.Address{}, append(p.BalanceID, args...))
res, err = p.Run(&evm, common.Address{}, append(p.BalanceID, args...), nil)
require.NotNil(t, err)

// invalid input
_, err = p.Run(&evm, common.Address{}, []byte{1, 2, 3, 4})
_, err = p.Run(&evm, common.Address{}, []byte{1, 2, 3, 4}, nil)
require.NotNil(t, err)
}

Expand All @@ -75,7 +75,7 @@ func TestMetadata(t *testing.T) {
require.Nil(t, err)
args, err := name.Inputs.Pack("usei")
require.Nil(t, err)
res, err := p.Run(&evm, common.Address{}, append(p.NameID, args...))
res, err := p.Run(&evm, common.Address{}, append(p.NameID, args...), nil)
require.Nil(t, err)
outputs, err := name.Outputs.Unpack(res)
require.Nil(t, err)
Expand All @@ -85,7 +85,7 @@ func TestMetadata(t *testing.T) {
require.Nil(t, err)
args, err = symbol.Inputs.Pack("usei")
require.Nil(t, err)
res, err = p.Run(&evm, common.Address{}, append(p.SymbolID, args...))
res, err = p.Run(&evm, common.Address{}, append(p.SymbolID, args...), nil)
require.Nil(t, err)
outputs, err = symbol.Outputs.Unpack(res)
require.Nil(t, err)
Expand All @@ -95,7 +95,7 @@ func TestMetadata(t *testing.T) {
require.Nil(t, err)
args, err = decimal.Inputs.Pack("usei")
require.Nil(t, err)
res, err = p.Run(&evm, common.Address{}, append(p.DecimalsID, args...))
res, err = p.Run(&evm, common.Address{}, append(p.DecimalsID, args...), nil)
require.Nil(t, err)
outputs, err = decimal.Outputs.Unpack(res)
require.Nil(t, err)
Expand All @@ -105,7 +105,7 @@ func TestMetadata(t *testing.T) {
require.Nil(t, err)
args, err = supply.Inputs.Pack("usei")
require.Nil(t, err)
res, err = p.Run(&evm, common.Address{}, append(p.SupplyID, args...))
res, err = p.Run(&evm, common.Address{}, append(p.SupplyID, args...), nil)
require.Nil(t, err)
outputs, err = supply.Outputs.Unpack(res)
require.Nil(t, err)
Expand Down
6 changes: 3 additions & 3 deletions precompiles/json/json_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ func TestExtractAsBytes(t *testing.T) {
args, err := method.Inputs.Pack(test.body, "key")
require.Nil(t, err)
input := append(p.ExtractAsBytesID, args...)
res, err := p.Run(evm, common.Address{}, input)
res, err := p.Run(evm, common.Address{}, input, nil)
require.Nil(t, err)
output, err := method.Outputs.Unpack(res)
require.Nil(t, err)
Expand Down Expand Up @@ -79,7 +79,7 @@ func TestExtractAsBytesList(t *testing.T) {
args, err := method.Inputs.Pack(test.body, "key")
require.Nil(t, err)
input := append(p.ExtractAsBytesListID, args...)
res, err := p.Run(evm, common.Address{}, input)
res, err := p.Run(evm, common.Address{}, input, nil)
require.Nil(t, err)
output, err := method.Outputs.Unpack(res)
require.Nil(t, err)
Expand Down Expand Up @@ -113,7 +113,7 @@ func TestExtractAsUint256(t *testing.T) {
args, err := method.Inputs.Pack(test.body, "key")
require.Nil(t, err)
input := append(p.ExtractAsUint256ID, args...)
res, err := p.Run(evm, common.Address{}, input)
res, err := p.Run(evm, common.Address{}, input, nil)
require.Nil(t, err)
output, err := method.Outputs.Unpack(res)
require.Nil(t, err)
Expand Down
28 changes: 14 additions & 14 deletions precompiles/wasmd/wasmd_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ func TestInstantiate(t *testing.T) {
StateDB: statedb,
}
suppliedGas := uint64(1000000)
res, g, err := p.RunAndCalculateGas(&evm, mockEVMAddr, mockEVMAddr, append(p.InstantiateID, args...), suppliedGas)
res, g, err := p.RunAndCalculateGas(&evm, mockEVMAddr, mockEVMAddr, append(p.InstantiateID, args...), suppliedGas, nil)
require.Nil(t, err)
outputs, err := instantiateMethod.Outputs.Unpack(res)
require.Nil(t, err)
Expand All @@ -78,16 +78,16 @@ func TestInstantiate(t *testing.T) {
"test",
amtsbz,
)
res, g, err = p.RunAndCalculateGas(&evm, mockEVMAddr, mockEVMAddr, append(p.InstantiateID, args...), suppliedGas)
res, g, err = p.RunAndCalculateGas(&evm, mockEVMAddr, mockEVMAddr, append(p.InstantiateID, args...), suppliedGas, nil)
require.NotNil(t, err)
require.Equal(t, uint64(0), g)

// bad inputs
badArgs, _ := instantiateMethod.Inputs.Pack(codeID, "not bech32", []byte("{}"), "test", amtsbz)
_, g, err = p.RunAndCalculateGas(&evm, mockEVMAddr, mockEVMAddr, append(p.InstantiateID, badArgs...), suppliedGas)
_, g, err = p.RunAndCalculateGas(&evm, mockEVMAddr, mockEVMAddr, append(p.InstantiateID, badArgs...), suppliedGas, nil)
require.NotNil(t, err)
badArgs, _ = instantiateMethod.Inputs.Pack(codeID, mockAddr.String(), []byte("{}"), "test", []byte("bad coins"))
_, g, err = p.RunAndCalculateGas(&evm, mockEVMAddr, mockEVMAddr, append(p.InstantiateID, badArgs...), suppliedGas)
_, g, err = p.RunAndCalculateGas(&evm, mockEVMAddr, mockEVMAddr, append(p.InstantiateID, badArgs...), suppliedGas, nil)
require.NotNil(t, err)
}

Expand Down Expand Up @@ -122,7 +122,7 @@ func TestExecute(t *testing.T) {
StateDB: statedb,
}
suppliedGas := uint64(1000000)
res, g, err := p.RunAndCalculateGas(&evm, mockEVMAddr, mockEVMAddr, append(p.ExecuteID, args...), suppliedGas)
res, g, err := p.RunAndCalculateGas(&evm, mockEVMAddr, mockEVMAddr, append(p.ExecuteID, args...), suppliedGas, nil)
require.Nil(t, err)
outputs, err := executeMethod.Outputs.Unpack(res)
require.Nil(t, err)
Expand All @@ -135,27 +135,27 @@ func TestExecute(t *testing.T) {
contractAddrAllowed := common.BytesToAddress([]byte("contractA"))
testApp.EvmKeeper.SetCode(ctx, contractAddrAllowed, []byte("allowed"))
testApp.EvmKeeper.AddCodeHashWhitelistedForDelegateCall(ctx, testApp.EvmKeeper.GetCodeHash(ctx, contractAddrAllowed))
res, g, err = p.RunAndCalculateGas(&evm, mockEVMAddr, contractAddrAllowed, append(p.ExecuteID, args...), suppliedGas)
res, g, err = p.RunAndCalculateGas(&evm, mockEVMAddr, contractAddrAllowed, append(p.ExecuteID, args...), suppliedGas, nil)
require.Nil(t, err)

// disallowed delegatecall
contractAddrDisallowed := common.BytesToAddress([]byte("contractB"))
res, g, err = p.RunAndCalculateGas(&evm, mockEVMAddr, contractAddrDisallowed, append(p.ExecuteID, args...), suppliedGas)
res, g, err = p.RunAndCalculateGas(&evm, mockEVMAddr, contractAddrDisallowed, append(p.ExecuteID, args...), suppliedGas, nil)
require.NotNil(t, err)

// bad contract address
args, _ = executeMethod.Inputs.Pack(mockAddr.String(), []byte("{\"echo\":{\"message\":\"test msg\"}}"), amtsbz)
res, g, err = p.RunAndCalculateGas(&evm, mockEVMAddr, mockEVMAddr, append(p.ExecuteID, args...), suppliedGas)
res, g, err = p.RunAndCalculateGas(&evm, mockEVMAddr, mockEVMAddr, append(p.ExecuteID, args...), suppliedGas, nil)
require.NotNil(t, err)
require.Equal(t, uint64(0), g)

// bad inputs
args, _ = executeMethod.Inputs.Pack("not bech32", []byte("{\"echo\":{\"message\":\"test msg\"}}"), amtsbz)
res, g, err = p.RunAndCalculateGas(&evm, mockEVMAddr, mockEVMAddr, append(p.ExecuteID, args...), suppliedGas)
res, g, err = p.RunAndCalculateGas(&evm, mockEVMAddr, mockEVMAddr, append(p.ExecuteID, args...), suppliedGas, nil)
require.NotNil(t, err)
require.Equal(t, uint64(0), g)
args, _ = executeMethod.Inputs.Pack(contractAddr.String(), []byte("{\"echo\":{\"message\":\"test msg\"}}"), []byte("bad coins"))
res, g, err = p.RunAndCalculateGas(&evm, mockEVMAddr, mockEVMAddr, append(p.ExecuteID, args...), suppliedGas)
res, g, err = p.RunAndCalculateGas(&evm, mockEVMAddr, mockEVMAddr, append(p.ExecuteID, args...), suppliedGas, nil)
require.NotNil(t, err)
require.Equal(t, uint64(0), g)
}
Expand Down Expand Up @@ -183,7 +183,7 @@ func TestQuery(t *testing.T) {
StateDB: statedb,
}
suppliedGas := uint64(1000000)
res, g, err := p.RunAndCalculateGas(&evm, common.Address{}, common.Address{}, append(p.QueryID, args...), suppliedGas)
res, g, err := p.RunAndCalculateGas(&evm, common.Address{}, common.Address{}, append(p.QueryID, args...), suppliedGas, nil)
require.Nil(t, err)
outputs, err := queryMethod.Outputs.Unpack(res)
require.Nil(t, err)
Expand All @@ -193,17 +193,17 @@ func TestQuery(t *testing.T) {

// bad contract address
args, _ = queryMethod.Inputs.Pack(mockAddr.String(), []byte("{\"info\":{}}"))
res, g, err = p.RunAndCalculateGas(&evm, common.Address{}, common.Address{}, append(p.ExecuteID, args...), suppliedGas)
res, g, err = p.RunAndCalculateGas(&evm, common.Address{}, common.Address{}, append(p.ExecuteID, args...), suppliedGas, nil)
require.NotNil(t, err)
require.Equal(t, uint64(0), g)

// bad input
args, _ = queryMethod.Inputs.Pack("not bech32", []byte("{\"info\":{}}"))
res, g, err = p.RunAndCalculateGas(&evm, common.Address{}, common.Address{}, append(p.ExecuteID, args...), suppliedGas)
res, g, err = p.RunAndCalculateGas(&evm, common.Address{}, common.Address{}, append(p.ExecuteID, args...), suppliedGas, nil)
require.NotNil(t, err)
require.Equal(t, uint64(0), g)
args, _ = queryMethod.Inputs.Pack(contractAddr.String(), []byte("{\"bad\":{}}"))
res, g, err = p.RunAndCalculateGas(&evm, common.Address{}, common.Address{}, append(p.ExecuteID, args...), suppliedGas)
res, g, err = p.RunAndCalculateGas(&evm, common.Address{}, common.Address{}, append(p.ExecuteID, args...), suppliedGas, nil)
require.NotNil(t, err)
require.Equal(t, uint64(0), g)
}
6 changes: 3 additions & 3 deletions x/evm/keeper/msg_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -159,12 +159,12 @@ func (server msgServer) getEVM(ctx sdk.Context, msg *core.Message, stateDB *stat
cfg := types.DefaultChainConfig().EthereumConfig(server.ChainID(ctx))
txCtx := core.NewEVMTxContext(msg)

logger := evmtracers.GetCtxBlockchainLogger(ctx)
hooks := evmtracers.GetCtxEthTracingHooks(ctx)
evmInstance := vm.NewEVM(*blockCtx, txCtx, stateDB, cfg, vm.Config{
Tracer: logger.Hooks,
Tracer: hooks,
})
stateDB.SetEVM(evmInstance)
stateDB.SetLogger(logger.Hooks)
stateDB.SetLogger(hooks)

return evmInstance, nil
}
Expand Down
16 changes: 8 additions & 8 deletions x/evm/module_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
sdk "github.com/cosmos/cosmos-sdk/types"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
"github.com/ethereum/go-ethereum/common"
ethstate "github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/core/tracing"
ethtypes "github.com/ethereum/go-ethereum/core/types"
testkeeper "github.com/sei-protocol/sei-chain/testutil/keeper"
"github.com/sei-protocol/sei-chain/x/evm"
Expand All @@ -29,19 +29,19 @@ func TestABCI(t *testing.T) {
m.BeginBlock(ctx, abci.RequestBeginBlock{})
// 1st tx
s := state.NewDBImpl(ctx.WithTxIndex(1), k, false)
s.SubBalance(evmAddr1, big.NewInt(10000000000000), ethstate.BalanceChangeUnspecified)
s.AddBalance(evmAddr2, big.NewInt(8000000000000), ethstate.BalanceChangeUnspecified)
s.SubBalance(evmAddr1, big.NewInt(10000000000000), tracing.BalanceChangeUnspecified)
s.AddBalance(evmAddr2, big.NewInt(8000000000000), tracing.BalanceChangeUnspecified)
feeCollectorAddr, err := k.GetFeeCollectorAddress(ctx)
require.Nil(t, err)
s.AddBalance(feeCollectorAddr, big.NewInt(2000000000000), ethstate.BalanceChangeUnspecified)
s.AddBalance(feeCollectorAddr, big.NewInt(2000000000000), tracing.BalanceChangeUnspecified)
surplus, err := s.Finalize()
require.Nil(t, err)
require.Equal(t, sdk.ZeroInt(), surplus)
k.AppendToEvmTxDeferredInfo(ctx.WithTxIndex(1), ethtypes.Bloom{}, common.Hash{}, surplus)
// 3rd tx
s = state.NewDBImpl(ctx.WithTxIndex(3), k, false)
s.SubBalance(evmAddr2, big.NewInt(5000000000000), ethstate.BalanceChangeUnspecified)
s.AddBalance(evmAddr1, big.NewInt(5000000000000), ethstate.BalanceChangeUnspecified)
s.SubBalance(evmAddr2, big.NewInt(5000000000000), tracing.BalanceChangeUnspecified)
s.AddBalance(evmAddr1, big.NewInt(5000000000000), tracing.BalanceChangeUnspecified)
surplus, err = s.Finalize()
require.Nil(t, err)
require.Equal(t, sdk.ZeroInt(), surplus)
Expand All @@ -55,8 +55,8 @@ func TestABCI(t *testing.T) {
m.BeginBlock(ctx, abci.RequestBeginBlock{})
// 2nd tx
s = state.NewDBImpl(ctx.WithTxIndex(2), k, false)
s.SubBalance(evmAddr2, big.NewInt(3000000000000), ethstate.BalanceChangeUnspecified)
s.AddBalance(evmAddr1, big.NewInt(2000000000000), ethstate.BalanceChangeUnspecified)
s.SubBalance(evmAddr2, big.NewInt(3000000000000), tracing.BalanceChangeUnspecified)
s.AddBalance(evmAddr1, big.NewInt(2000000000000), tracing.BalanceChangeUnspecified)
surplus, err = s.Finalize()
require.Nil(t, err)
require.Equal(t, sdk.NewInt(1000000000000), surplus)
Expand Down
Loading

0 comments on commit 37fc6fb

Please sign in to comment.