Skip to content

[Bug]: non-eip-155 tx panic when getting signer #280

@yihuang

Description

@yihuang

Is there an existing issue for this?

  • I have searched the existing issues

What happened?

non-eip155 tx is necessary to support universal contract deploy address, we do have parameter AllowUnprotectedTx for that, but if we enable it and try non-eip155 tx, it'll panic in signer getter.

github.com/cosmos/cosmos-sdk/baseapp.NewBaseApp.newDefaultRecoveryMiddleware.func5
	github.com/cosmos/cosmos-sdk@v0.53.0/baseapp/recovery.go:72
github.com/cosmos/cosmos-sdk/baseapp.NewBaseApp.newDefaultRecoveryMiddleware.newRecoveryMiddleware.func7
	github.com/cosmos/cosmos-sdk@v0.53.0/baseapp/recovery.go:42
github.com/cosmos/cosmos-sdk/baseapp.processRecovery
	github.com/cosmos/cosmos-sdk@v0.53.0/baseapp/recovery.go:31
github.com/cosmos/cosmos-sdk/baseapp.processRecovery
	github.com/cosmos/cosmos-sdk@v0.53.0/baseapp/recovery.go:36
github.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).runTx.func1
	github.com/cosmos/cosmos-sdk@v0.53.0/baseapp/baseapp.go:861
runtime.gopanic
	runtime/panic.go:791
github.com/ethereum/go-ethereum/core/types.newModernSigner
	github.com/ethereum/go-ethereum@v1.15.10/core/types/transaction_signing.go:193
github.com/ethereum/go-ethereum/core/types.NewPragueSigner
	github.com/ethereum/go-ethereum@v1.15.10/core/types/transaction_signing.go:287
github.com/ethereum/go-ethereum/core/types.LatestSignerForChainID
	github.com/ethereum/go-ethereum@v1.15.10/core/types/transaction_signing.go:103
github.com/cosmos/evm/api/cosmos/evm/vm/v1.getSender
	github.com/cosmos/evm@v1.0.0-rc0.0.20250602235914-3eb2135b9103/api/cosmos/evm/vm/v1/msg.go:24
github.com/cosmos/evm/api/cosmos/evm/vm/v1.GetSigners
	github.com/cosmos/evm@v1.0.0-rc0.0.20250602235914-3eb2135b9103/api/cosmos/evm/vm/v1/msg.go:51
cosmossdk.io/x/tx/signing.(*Context).GetSigners
	cosmossdk.io/x/tx@v0.14.0/signing/context.go:364
github.com/cosmos/cosmos-sdk/codec.ProtoCodec.GetMsgAnySigners
	github.com/cosmos/cosmos-sdk@v0.53.0/codec/proto_codec.go:311
github.com/cosmos/cosmos-sdk/types/tx.(*Tx).GetSigners
	github.com/cosmos/cosmos-sdk@v0.53.0/types/tx/types.go:106
github.com/cosmos/cosmos-sdk/x/auth/tx.(*wrapper).initSignersAndMsgsV2
	github.com/cosmos/cosmos-sdk@v0.53.0/x/auth/tx/builder.go:165
github.com/cosmos/cosmos-sdk/x/auth/tx.(*wrapper).GetMsgsV2
	github.com/cosmos/cosmos-sdk@v0.53.0/x/auth/tx/builder.go:80
github.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).runTx
	github.com/cosmos/cosmos-sdk@v0.53.0/baseapp/baseapp.go:980
github.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).CheckTx
	github.com/cosmos/cosmos-sdk@v0.53.0/baseapp/abci.go:355
github.com/cosmos/cosmos-sdk/server.cometABCIWrapper.CheckTx
	github.com/cosmos/cosmos-sdk@v0.53.0/server/cmt_abci.go:28
github.com/cometbft/cometbft/abci/client.(*localClient).CheckTxAsync
	github.com/cometbft/cometbft@v0.38.17/abci/client/local_client.go:51
github.com/cometbft/cometbft/proxy.(*appConnMempool).CheckTxAsync
	github.com/cometbft/cometbft@v0.38.17/proxy/app_conn.go:147
github.com/cometbft/cometbft/mempool.(*CListMempool).CheckTx
	github.com/cometbft/cometbft@v0.38.17/mempool/clist_mempool.go:271
github.com/cometbft/cometbft/rpc/core.(*Environment).BroadcastTxSync
	github.com/cometbft/cometbft@v0.38.17/rpc/core/mempool.go:35
github.com/cometbft/cometbft/rpc/client/local.(*Local).BroadcastTxSync
	github.com/cometbft/cometbft@v0.38.17/rpc/client/local/local.go:98
github.com/cosmos/cosmos-sdk/client.Context.BroadcastTxSync
	github.com/cosmos/cosmos-sdk@v0.53.0/client/broadcast.go:94
github.com/cosmos/cosmos-sdk/client.Context.BroadcastTx
	github.com/cosmos/cosmos-sdk@v0.53.0/client/broadcast.go:26
github.com/cosmos/evm/rpc/backend.(*Backend).SendRawTransaction
	github.com/cosmos/evm@v1.0.0-rc0.0.20250602235914-3eb2135b9103/rpc/backend/call_tx.go:149
github.com/cosmos/evm/rpc/namespaces/ethereum/eth.(*PublicAPI).SendRawTransaction
	github.com/cosmos/evm@v1.0.0-rc0.0.20250602235914-3eb2135b9103/rpc/namespaces/ethereum/eth/api.go:218
reflect.Value.call
	reflect/value.go:584
reflect.Value.Call
	reflect/value.go:368
github.com/ethereum/go-ethereum/rpc.(*callback).call
	github.com/ethereum/go-ethereum@v1.15.10/rpc/service.go:205
recovered: invalid chainID 0
stack:
goroutine 478 [running]:
runtime/debug.Stack()
	runtime/debug/stack.go:26 +0x64
github.com/cosmos/cosmos-sdk/baseapp.NewBaseApp.newDefaultRecoveryMiddleware.func5({0x104eb0000, 0x140032a3490})
	github.com/cosmos/cosmos-sdk@v0.53.0/baseapp/recovery.go:74 +0x24
github.com/cosmos/cosmos-sdk/baseapp.NewBaseApp.newDefaultRecoveryMiddleware.newRecoveryMiddleware.func7({0x104eb0000?, 0x140032a3490?})
	github.com/cosmos/cosmos-sdk@v0.53.0/baseapp/recovery.go:42 +0x38
github.com/cosmos/cosmos-sdk/baseapp.processRecovery({0x104eb0000, 0x140032a3490}, 0x1400346a0c8?)
	github.com/cosmos/cosmos-sdk@v0.53.0/baseapp/recovery.go:31 +0x38
github.com/cosmos/cosmos-sdk/baseapp.processRecovery({0x104eb0000, 0x140032a3490}, 0x10?)
	github.com/cosmos/cosmos-sdk@v0.53.0/baseapp/recovery.go:36 +0x60
github.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).runTx.func1()
	github.com/cosmos/cosmos-sdk@v0.53.0/baseapp/baseapp.go:861 +0xd4
panic({0x104eb0000?, 0x140032a3490?})
	runtime/panic.go:791 +0x124
github.com/ethereum/go-ethereum/core/types.newModernSigner(0x20?, 0x1400227c780?)
	github.com/ethereum/go-ethereum@v1.15.10/core/types/transaction_signing.go:193 +0x2b0
github.com/ethereum/go-ethereum/core/types.NewPragueSigner(...)
	github.com/ethereum/go-ethereum@v1.15.10/core/types/transaction_signing.go:287
github.com/ethereum/go-ethereum/core/types.LatestSignerForChainID(0x10584b000?)
	github.com/ethereum/go-ethereum@v1.15.10/core/types/transaction_signing.go:103 +0x3c
github.com/cosmos/evm/api/cosmos/evm/vm/v1.getSender({0x1058961a0, 0x140024b48f0})
	github.com/cosmos/evm@v1.0.0-rc0.0.20250602235914-3eb2135b9103/api/cosmos/evm/vm/v1/msg.go:24 +0x38
github.com/cosmos/evm/api/cosmos/evm/vm/v1.GetSigners({0x105842ea0?, 0x14002877980?})
	github.com/cosmos/evm@v1.0.0-rc0.0.20250602235914-3eb2135b9103/api/cosmos/evm/vm/v1/msg.go:51 +0x1a8
cosmossdk.io/x/tx/signing.(*Context).GetSigners(0x14003e04460, {0x105842ea0, 0x14002877980})
	cosmossdk.io/x/tx@v0.14.0/signing/context.go:364 +0x84
github.com/cosmos/cosmos-sdk/codec.ProtoCodec.GetMsgAnySigners({{0x1058c7008?, 0x14002f746c0?}}, 0x1400346ab88?)
	github.com/cosmos/cosmos-sdk@v0.53.0/codec/proto_codec.go:311 +0xf4
github.com/cosmos/cosmos-sdk/types/tx.(*Tx).GetSigners(0x14002283560, {0x1058f75d0, 0x140012180b0})
	github.com/cosmos/cosmos-sdk@v0.53.0/types/tx/types.go:106 +0x100
github.com/cosmos/cosmos-sdk/x/auth/tx.(*wrapper).initSignersAndMsgsV2(...)
	github.com/cosmos/cosmos-sdk@v0.53.0/x/auth/tx/builder.go:165
github.com/cosmos/cosmos-sdk/x/auth/tx.(*wrapper).GetMsgsV2(0x14002892b80)
	github.com/cosmos/cosmos-sdk@v0.53.0/x/auth/tx/builder.go:80 +0x3c
github.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).runTx(0x14004066fc8, 0x0, {0x14004d7c340, 0x194, 0x194}, {0x0, 0x0})
	github.com/cosmos/cosmos-sdk@v0.53.0/baseapp/baseapp.go:980 +0xc80
github.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).CheckTx(0x14004066fc8, 0x100dd900c?)
	github.com/cosmos/cosmos-sdk@v0.53.0/baseapp/abci.go:355 +0xcc
github.com/cosmos/cosmos-sdk/server.cometABCIWrapper.CheckTx(...)
	github.com/cosmos/cosmos-sdk@v0.53.0/server/cmt_abci.go:28
github.com/cometbft/cometbft/abci/client.(*localClient).CheckTxAsync(0x140052a37a0, {0x10589f630?, 0x108492560?}, 0x14002534ea0)
	github.com/cometbft/cometbft@v0.38.17/abci/client/local_client.go:51 +0xec
github.com/cometbft/cometbft/proxy.(*appConnMempool).CheckTxAsync(0x140022f8d08, {0x10589f630, 0x108492560}, 0x14002534ea0)
	github.com/cometbft/cometbft@v0.38.17/proxy/app_conn.go:147 +0x128
github.com/cometbft/cometbft/mempool.(*CListMempool).CheckTx(0x14002656e40, {0x14004d7c340, 0x194, 0x194}, 0x140032d0d50, {0x2554?, {0x0?, 0x14000110808?}})
	github.com/cometbft/cometbft@v0.38.17/mempool/clist_mempool.go:271 +0x2cc
github.com/cometbft/cometbft/rpc/core.(*Environment).BroadcastTxSync(0x14003e12248, 0x1400524c0e0, {0x14004d7c340, 0x194, 0x194})
	github.com/cometbft/cometbft@v0.38.17/rpc/core/mempool.go:35 +0xc4
github.com/cometbft/cometbft/rpc/client/local.(*Local).BroadcastTxSync(0x140013c4848?, {0x1024e4680?, 0x140013c48a8?}, {0x14004d7c340?, 0x140013c48b8?, 0x1024e3f78?})
	github.com/cometbft/cometbft@v0.38.17/rpc/client/local/local.go:98 +0x38
github.com/cosmos/cosmos-sdk/client.Context.BroadcastTxSync({{0x0, 0x0, 0x0}, {0x1058d1d78, 0x14002846750}, 0x14002cfe808, {0x140026ae6d8, 0x13}, {0x1058f75d0, 0x14002287900}, ...}, ...)
	github.com/cosmos/cosmos-sdk@v0.53.0/client/broadcast.go:94 +0xc0
github.com/cosmos/cosmos-sdk/client.Context.BroadcastTx({{0x0, 0x0, 0x0}, {0x1058d1d78, 0x14002846750}, 0x14002cfe808, {0x140026ae6d8, 0x13}, {0x1058f75d0, 0x14002287900}, ...}, ...)
	github.com/cosmos/cosmos-sdk@v0.53.0/client/broadcast.go:26 +0x68
github.com/cosmos/evm/rpc/backend.(*Backend).SendRawTransaction(0x14003012a08, {0x14002564160, 0xa7, 0xa7})
	github.com/cosmos/evm@v1.0.0-rc0.0.20250602235914-3eb2135b9103/rpc/backend/call_tx.go:149 +0x7a8
github.com/cosmos/evm/rpc/namespaces/ethereum/eth.(*PublicAPI).SendRawTransaction(0x140027e5830, {0x14002564160, 0xa7, 0xa7})
	github.com/cosmos/evm@v1.0.0-rc0.0.20250602235914-3eb2135b9103/rpc/namespaces/ethereum/eth/api.go:218 +0xd8
reflect.Value.call({0x140025c2c00?, 0x140008b6aa8?, 0x14004706bf8?}, {0x104083517, 0x4}, {0x140025fce10, 0x2, 0x1037168d0?})
	reflect/value.go:584 +0x97c
reflect.Value.Call({0x140025c2c00?, 0x140008b6aa8?, 0x16?}, {0x140025fce10?, 0x0?, 0x14000110808?})
	reflect/value.go:368 +0x94
github.com/ethereum/go-ethereum/rpc.(*callback).call(0x140025c2c60, {0x10589f588, 0x140025fcdc0}, {0x140054246f0, 0x16}, {0x140032d0c60, 0x1, 0x10370f77c?})
	github.com/ethereum/go-ethereum@v1.15.10/rpc/service.go:205 +0x2c8
github.com/ethereum/go-ethereum/rpc.(*handler).runMethod(0x1400229c000?, {0x10589f588?, 0x140025fcdc0?}, 0x140012b4620, 0x1?, {0x140032d0c60?, 0x14025ef10d2?, 0x14000110808?})
	github.com/ethereum/go-ethereum@v1.15.10/rpc/handler.go:577 +0x40
github.com/ethereum/go-ethereum/rpc.(*handler).handleCall(0x140025abae0, 0x14002264630, 0x140012b4620)
	github.com/ethereum/go-ethereum@v1.15.10/rpc/handler.go:519 +0x2d8
github.com/ethereum/go-ethereum/rpc.(*handler).handleCallMsg(0x140025abae0, 0x14002264630, 0x140012b4620)
	github.com/ethereum/go-ethereum@v1.15.10/rpc/handler.go:473 +0x1d0
github.com/ethereum/go-ethereum/rpc.(*handler).handleNonBatchCall(0x140025abae0, 0x14002264630, 0x140012b4620)
	github.com/ethereum/go-ethereum@v1.15.10/rpc/handler.go:299 +0x148
github.com/ethereum/go-ethereum/rpc.(*handler).handleMsg.func1.1(0x10589f588?)
	github.com/ethereum/go-ethereum@v1.15.10/rpc/handler.go:272 +0x2c
github.com/ethereum/go-ethereum/rpc.(*handler).startCallProc.func1()
	github.com/ethereum/go-ethereum@v1.15.10/rpc/handler.go:390 +0xb8
created by github.com/ethereum/go-ethereum/rpc.(*handler).startCallProc in goroutine 187
	github.com/ethereum/go-ethereum@v1.15.10/rpc/handler.go:386 +0x84
: panic: panic

Cosmos EVM Version

main

How to reproduce?

Enable AllowUnprotectedTx in network parameter and json-rpc, send a non-eip155 tx to the network.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions