From dae1917b613a8b21c4d0bf6e0538ebf94d18a83b Mon Sep 17 00:00:00 2001 From: "jay.tseng" Date: Tue, 23 Jun 2026 22:43:00 -0400 Subject: [PATCH 01/19] feat(ante): wire ethermint NewEVMSigPreVerifier for lock-free admission Use ante.NewEVMSigPreVerifier from crypto-org-chain/ethermint#1011 instead of duplicating the logic in cronos. - Bump ethermint fork to 3247d33 (feat/evm-sig-preverifier branch) - Add preVerify field + SetPreVerify to mempool.Manager - Add lock-free pre-verify step in InsertTxHandler before mu.Lock() - Wire ethante.NewEVMSigPreVerifier(chainId, activeDecoder) in app.go --- app/app.go | 5 ++++ app/mempool/manager.go | 16 +++++++++++ go.mod | 11 ++++---- go.sum | 63 +++++++++++------------------------------- 4 files changed, 43 insertions(+), 52 deletions(-) diff --git a/app/app.go b/app/app.go index 900644fd46..c0ab86cd74 100644 --- a/app/app.go +++ b/app/app.go @@ -60,6 +60,7 @@ import ( _ "github.com/ethereum/go-ethereum/eth/tracers/js" _ "github.com/ethereum/go-ethereum/eth/tracers/native" "github.com/evmos/ethermint/ante/cache" + ethante "github.com/evmos/ethermint/ante" evmenc "github.com/evmos/ethermint/encoding" "github.com/evmos/ethermint/ethereum/eip712" evmapp "github.com/evmos/ethermint/evmd" @@ -607,6 +608,10 @@ func New( dummyCheckTx: cast.ToBool(appOpts.Get(FlagUnsafeDummyCheckTx)), } + if mempoolManager != nil { + mempoolManager.SetPreVerify(ethante.NewEVMSigPreVerifier(chainId, activeDecoder)) + } + app.SetDisableBlockGasMeter(true) // init params keeper and subspaces diff --git a/app/mempool/manager.go b/app/mempool/manager.go index 747373c861..f4b74a3489 100644 --- a/app/mempool/manager.go +++ b/app/mempool/manager.go @@ -35,6 +35,8 @@ type Manager struct { encCache *EncoderCache txEncoder sdk.TxEncoder trace bool + // preVerify runs lock-free before the admission mutex; nil means skip. + preVerify func([]byte) error mpool sdkmempool.Mempool signer sdkmempool.SignerExtractionAdapter @@ -126,12 +128,26 @@ func (a *Manager) AdmissionMutex() *sync.Mutex { return &a.mu } +// SetPreVerify wires the lock-free pre-verification hook for mempool.type=app. +func (a *Manager) SetPreVerify(fn func([]byte) error) { + a.preVerify = fn +} + // InsertTxHandler validates peer-relayed txs via RunTx(ExecModeCheck) before // admitting them. Flood protection relies on CometBFT peer limits, not this // handler. Admitted txs register canonical bytes so ReapTxsHandler can skip // proto.Marshal; re-encoding keeps non-minimal peer bytes out of the cache. func (a *Manager) InsertTxHandler() sdk.InsertTxHandler { return func(req *abci.RequestInsertTx) (*abci.ResponseInsertTx, error) { + // Pre-verify EVM sig lock-free: ecrecover dominates admission cost and + // touches no store. Non-EVM txs and decode failures return nil and fall + // through to the locked RunTx below. + if a.preVerify != nil { + if err := a.preVerify(req.Tx); err != nil { + _, code, _ := errorsmod.ABCIInfo(err, false) + return &abci.ResponseInsertTx{Code: code}, nil + } + } // Decode before locking: proto unmarshal is CPU-intensive; decoder and // DecodeCache have their own locks. Bad txs return without acquiring mu. var tx sdk.Tx diff --git a/go.mod b/go.mod index a7493a3075..7931d4718d 100644 --- a/go.mod +++ b/go.mod @@ -66,7 +66,7 @@ require ( github.com/benbjohnson/clock v1.3.5 // indirect github.com/btcsuite/btcd v0.25.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.5 // indirect - github.com/btcsuite/btcd/btcutil v1.1.6 // indirect + github.com/btcsuite/btcd/btcutil v1.2.0 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cosmos/btree v1.0.0 // indirect @@ -80,6 +80,7 @@ require ( github.com/hashicorp/aws-sdk-go-base/v2 v2.0.0-beta.72 // indirect github.com/ipfs/go-cid v0.5.0 // indirect github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect + github.com/kcalvinalvin/anet v0.0.0-20251112173137-d8ddc1f6dbee // indirect github.com/koron/go-ssdp v0.0.6 // indirect github.com/ledgerwatch/erigon-lib v0.0.0-20230210071639-db0e7ed11263 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect @@ -131,7 +132,7 @@ require ( github.com/quic-go/webtransport-go v0.10.0 // indirect github.com/shirou/gopsutil/v4 v4.26.4 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect - github.com/tidwall/gjson v1.18.0 // indirect + github.com/tidwall/gjson v1.19.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect @@ -265,7 +266,7 @@ require ( github.com/google/flatbuffers v25.2.10+incompatible // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/orderedcode v0.0.1 // indirect - github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83 // indirect + github.com/google/pprof v0.0.0-20260402051712-545e8a4df936 // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.15 // indirect @@ -365,7 +366,7 @@ require ( go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/arch v0.26.0 // indirect golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a // indirect - golang.org/x/net v0.55.0 // indirect + golang.org/x/net v0.56.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect golang.org/x/sync v0.21.0 // indirect golang.org/x/sys v0.46.0 // indirect @@ -400,7 +401,7 @@ replace ( // release/v1.16 github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20260521015249-663dca6c618e // develop - github.com/evmos/ethermint => github.com/crypto-org-chain/ethermint v0.22.1-0.20260528204018-f6683e1e255b + github.com/evmos/ethermint => github.com/crypto-org-chain/ethermint v0.22.1-0.20260624022300-3247d33cbe46 // Fix upstream GHSA-h395-qcrw-5vmq and GHSA-3vp4-m3rf-835h vulnerabilities. // TODO Remove it: https://github.com/cosmos/cosmos-sdk/issues/10409 github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.9.0 diff --git a/go.sum b/go.sum index 4199f71e25..189aea45d1 100644 --- a/go.sum +++ b/go.sum @@ -97,7 +97,6 @@ github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrd github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/adlio/schema v1.4.0 h1:dekxG6P0my/bPvlyWzMULelR2Xej8RGErlnJcoY5ddw= github.com/adlio/schema v1.4.0/go.mod h1:3/ojUldWBCWp4e+6VN9ets6unG5WdqbjF7vyzM0zTVQ= -github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -169,34 +168,14 @@ github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE5 github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bits-and-blooms/bitset v1.24.4 h1:95H15Og1clikBrKr/DuzMXkQzECs1M6hhoGXLwLQOZE= github.com/bits-and-blooms/bitset v1.24.4/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= -github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= -github.com/btcsuite/btcd v0.22.0-beta.0.20220111032746-97732e52810c/go.mod h1:tjmYdS6MLJ5/s0Fj4DbLgSbDHbEqLJrtnHecBFkdz5M= -github.com/btcsuite/btcd v0.23.5-0.20231215221805-96c9fd8078fd/go.mod h1:nm3Bko6zh6bWP60UxwoT5LzdGJsQJaPo6HjduXq9p6A= -github.com/btcsuite/btcd v0.24.2/go.mod h1:5C8ChTkl5ejr3WHj8tkQSCmydiMEPB0ZhQhehpq7Dgg= github.com/btcsuite/btcd v0.25.0 h1:JPbjwvHGpSywBRuorFFqTjaVP4y6Qw69XJ1nQ6MyWJM= github.com/btcsuite/btcd v0.25.0/go.mod h1:qbPE+pEiR9643E1s1xu57awsRhlCIm1ZIi6FfeRA4KE= -github.com/btcsuite/btcd/btcec/v2 v2.1.0/go.mod h1:2VzYrv4Gm4apmbVVsSq5bqf1Ec8v56E48Vt0Y/umPgA= -github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= github.com/btcsuite/btcd/btcec/v2 v2.3.5 h1:dpAlnAwmT1yIBm3exhT1/8iUSD98RDJM5vqJVQDQLiU= github.com/btcsuite/btcd/btcec/v2 v2.3.5/go.mod h1:m22FrOAiuxl/tht9wIqAoGHcbnCCaPWyauO8y2LGGtQ= -github.com/btcsuite/btcd/btcutil v1.0.0/go.mod h1:Uoxwv0pqYWhD//tfTiipkxNfdhG9UrLwaeswfjfdF0A= -github.com/btcsuite/btcd/btcutil v1.1.0/go.mod h1:5OapHB7A2hBBWLm48mmw4MOHNJCcUBTwmWH/0Jn8VHE= -github.com/btcsuite/btcd/btcutil v1.1.5/go.mod h1:PSZZ4UitpLBWzxGd5VGOrLnmOjtPP/a6HaFo12zMs00= -github.com/btcsuite/btcd/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/AYFd6c= -github.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/btcsuite/btcd/btcutil v1.2.0 h1:p3+S2g3Q+7G5NOh4Ji+2UrBOrg5Z0Q4ykzShWG1Dhgs= +github.com/btcsuite/btcd/btcutil v1.2.0/go.mod h1:/Taflm113pYjUpbWKKQEfa6XOtI/+WS8awxeMZpY75k= github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 h1:59Kx4K6lzOW5w6nFlA0v5+lk/6sjybR934QNHSJZPTQ= github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= -github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= -github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= -github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= -github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= -github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= github.com/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= @@ -327,13 +306,12 @@ github.com/crypto-org-chain/cronos-store/store v0.0.0-20260529153812-1f2f45ec5a3 github.com/crypto-org-chain/cronos-store/store v0.0.0-20260529153812-1f2f45ec5a3c/go.mod h1:eEPLLeFOhRINMGIQTDjXuahaDkQgfSUvHTzSuuEl4V0= github.com/crypto-org-chain/cronos-store/versiondb v0.0.0-20260529153812-1f2f45ec5a3c h1:oTFxyhmD5ax3Cec3L2XKu/rMDL2CdFLflS/7BPmjJzw= github.com/crypto-org-chain/cronos-store/versiondb v0.0.0-20260529153812-1f2f45ec5a3c/go.mod h1:AVLgSeljZFwhfVzbeeEu15ejtK2q2PLyqJsPKxbU05I= -github.com/crypto-org-chain/ethermint v0.22.1-0.20260528204018-f6683e1e255b h1:3sFIrKvbGMSXZkttbwzlWj6qM279q3SyZZb7m615QZI= -github.com/crypto-org-chain/ethermint v0.22.1-0.20260528204018-f6683e1e255b/go.mod h1:+KYccHfFJQ6J2gsINufYi4+ZqiTjbjOBYnnsdu6FeLs= +github.com/crypto-org-chain/ethermint v0.22.1-0.20260624022300-3247d33cbe46 h1:PP9sPRVSCwkHQJp7rTpkkOEnePkeaog0zXL4xAxqspY= +github.com/crypto-org-chain/ethermint v0.22.1-0.20260624022300-3247d33cbe46/go.mod h1:j7z7SCEajplRa6d06/KIEojCPDispDP+YthV4hWq50E= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20260521015249-663dca6c618e h1:ftyRRWDiXKWsnp3PxLNbfVLzrqkx+aDNZdkPconawWk= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20260521015249-663dca6c618e/go.mod h1:Fs6QebQbavneQTYcA39PEKv2+zIjX7rPUZ14DER46wk= github.com/danieljoos/wincred v1.2.3 h1:v7dZC2x32Ut3nEfRH+vhoZGvN72+dQ/snVXo/vMFLdQ= github.com/danieljoos/wincred v1.2.3/go.mod h1:6qqX0WNrS4RzPZ1tnroDzq9kY3fu1KwE7MRLQK4X0bs= -github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= @@ -344,13 +322,10 @@ github.com/dchest/siphash v1.2.3 h1:QXwFc8cFOR2dSa/gE6o/HokBMWtLUaNDVd+22aKHeEA= github.com/dchest/siphash v1.2.3/go.mod h1:0NvQU092bT0ipiFN++/rXm69QG9tVxLAlQHIXMPAkHc= github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= -github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= github.com/decred/dcrd/crypto/blake256 v1.1.0 h1:zPMNGQCm0g4QTY27fOCorQW7EryeQ/U0x++OzVrdms8= github.com/decred/dcrd/crypto/blake256 v1.1.0/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.1 h1:5RVFMOWjMyRy8cARdy79nAmgYw3hK/4HUq48LQ6Wwqo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.1/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40= -github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= github.com/deepmap/oapi-codegen v1.6.0 h1:w/d1ntwh91XI0b/8ja7+u5SvA4IFfM0UNNLmiDR1gg0= github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= @@ -550,8 +525,8 @@ github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1 github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= github.com/google/pprof v0.0.0-20230207041349-798e818bf904/go.mod h1:uglQLonpP8qtYCYyzA+8c/9qtqgA3qsXGYqCPKARAFg= -github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83 h1:z2ogiKUYzX5Is6zr/vP9vJGqPwcdqsWjOt+V8J7+bTc= -github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83/go.mod h1:MxpfABSjhmINe3F1It9d+8exIHFvUqtLIRCdOGNXqiI= +github.com/google/pprof v0.0.0-20260402051712-545e8a4df936 h1:EwtI+Al+DeppwYX2oXJCETMO23COyaKGP6fHVpkpWpg= +github.com/google/pprof v0.0.0-20260402051712-545e8a4df936/go.mod h1:MxpfABSjhmINe3F1It9d+8exIHFvUqtLIRCdOGNXqiI= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= @@ -573,7 +548,6 @@ github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/graph-gophers/graphql-go v1.3.0 h1:Eb9x/q6MFpCLz7jBCiP/WTxjSDrYLR1QY41SORZyNJ0= @@ -675,8 +649,6 @@ github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7Bd github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jbenet/go-temp-err-catcher v0.1.0 h1:zpb3ZH6wIE8Shj2sKS+khgRvf7T7RABoLk/+KKHggpk= github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk= -github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jhump/protoreflect v1.9.0 h1:npqHz788dryJiR/l6K/RUQAyh2SwV91+d1dnh4RjO9w= github.com/jhump/protoreflect v1.9.0/go.mod h1:7GcYQDdMU/O/BBrl/cX6PNHpXh6cenjd8pneu5yW7Tg= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -684,7 +656,6 @@ github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -695,11 +666,12 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/kcalvinalvin/anet v0.0.0-20251112173137-d8ddc1f6dbee h1:FPP9HDkBbPyniu+u7FHZg+kKFX1WW0gxOGteJ0h3AJk= +github.com/kcalvinalvin/anet v0.0.0-20251112173137-d8ddc1f6dbee/go.mod h1:N6sz6HwJAenJ6d+/xmSl0ikfV05ZrVGmjt1ryy/WOtE= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.18.6 h1:2jupLlAwFm95+YDR+NwD2MEfFO9d4z4Prjl1XXDjuao= @@ -878,14 +850,13 @@ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108 github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/ginkgo/v2 v2.28.0 h1:Rrf+lVLmtlBIKv6KrIGJCjyY8N36vDVcutbGJkyqjJc= -github.com/onsi/ginkgo/v2 v2.28.0/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo= -github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/ginkgo/v2 v2.32.0 h1:Hw7s2pVrQo/8Yz5N77qdnpHaoc+c6cC9WIV1Jce+J6E= +github.com/onsi/ginkgo/v2 v2.32.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.39.1 h1:1IJLAad4zjPn2PsnhH70V4DKRFlrCzGBNrNaru+Vf28= -github.com/onsi/gomega v1.39.1/go.mod h1:hL6yVALoTOxeWudERyfppUcZXjMwIMLnuSfruD2lcfg= +github.com/onsi/gomega v1.40.0 h1:Vtol0e1MghCD2ZVIilPDIg44XSL9l2QAn8ZNaljWcJc= +github.com/onsi/gomega v1.40.0/go.mod h1:M/Uqpu/8qTjtzCLUA2zJHX9Iilrau25x1PdoSRbWh5A= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= @@ -1130,8 +1101,8 @@ github.com/tidwall/btree v1.8.1 h1:27ehoXvm5AG/g+1VxLS1SD3vRhp/H7LuEfwNvddEdmA= github.com/tidwall/btree v1.8.1/go.mod h1:jBbTdUWhSZClZWoDg54VnvV7/54modSOzDN7VXftj1A= github.com/tidwall/gjson v1.10.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= -github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.19.0 h1:xwxm7n691Uf3u5OFjzngavjGTh55KX5q/9w9xHW88JU= +github.com/tidwall/gjson v1.19.0/go.mod h1:V37/opeE/JbLUOfH0QTXiNez2l0RUjYUhpT4szFQAfc= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= @@ -1283,7 +1254,6 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/arch v0.26.0 h1:jZ6dpec5haP/fUv1kLCbuJy6dnRrfX6iVK08lZBFpk4= golang.org/x/arch v0.26.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= -golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -1324,7 +1294,6 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= -golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1361,8 +1330,8 @@ golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= -golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= -golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o= +golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= From 17f5bde14ea5c056db6f1ce8f336209835e994a6 Mon Sep 17 00:00:00 2001 From: "jay.tseng" Date: Tue, 23 Jun 2026 22:46:49 -0400 Subject: [PATCH 02/19] chore: update CHANGELOG for #2120 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0733e454c7..851092f333 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ * [#2089](https://github.com/crypto-org-chain/cronos/pull/2089) feat: upgrade to cosmos-sdk v0.54.3 + ibc-go v11 + cometbft v0.39. * [#2081](https://github.com/crypto-org-chain/cronos/pull/2081) Upgrade go-ethereum version to `v1.16.9`, enable Osaka hardfork. * [#2091](https://github.com/crypto-org-chain/cronos/pull/2091) feat(app): v0.54 upgrade perf optimizations + app-mempool feature. +* [#2120](https://github.com/crypto-org-chain/cronos/pull/2120) feat(ante): wire ethermint NewEVMSigPreVerifier for lock-free admission. ### Bug fixes From 70c502fba17063b5ce694ac7f9946b31e140db91 Mon Sep 17 00:00:00 2001 From: "jay.tseng" Date: Tue, 23 Jun 2026 23:10:15 -0400 Subject: [PATCH 03/19] fix(lint): sort ethante import before ante/cache --- app/app.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/app.go b/app/app.go index c0ab86cd74..ab82a971a8 100644 --- a/app/app.go +++ b/app/app.go @@ -59,8 +59,8 @@ import ( "github.com/ethereum/go-ethereum/common" _ "github.com/ethereum/go-ethereum/eth/tracers/js" _ "github.com/ethereum/go-ethereum/eth/tracers/native" - "github.com/evmos/ethermint/ante/cache" ethante "github.com/evmos/ethermint/ante" + "github.com/evmos/ethermint/ante/cache" evmenc "github.com/evmos/ethermint/encoding" "github.com/evmos/ethermint/ethereum/eip712" evmapp "github.com/evmos/ethermint/evmd" From 604a3f0c54c4d2f1063ee77386def3256f18c12a Mon Sep 17 00:00:00 2001 From: "jay.tseng" Date: Tue, 23 Jun 2026 23:19:26 -0400 Subject: [PATCH 04/19] chore(deps): update gomod2nix for ethermint 3247d33 --- gomod2nix.toml | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/gomod2nix.toml b/gomod2nix.toml index 7f84231699..7e942e93b4 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -189,8 +189,8 @@ schema = 3 version = "v2.3.5" hash = "sha256-stpoaGQ1PNPqtLYIQc96YH24s8owcV+PoSo6xREi9LI=" [mod."github.com/btcsuite/btcd/btcutil"] - version = "v1.1.6" - hash = "sha256-TYbwJLNX/+63nm+b3RqPH3ZIvTBnsm9peqJP05v9Z90=" + version = "v1.2.0" + hash = "sha256-XT3GG5PoTBNhnRDnmj1kf6YsYoVW6MJB/XJq0aKxtys=" [mod."github.com/btcsuite/btcd/chaincfg/chainhash"] version = "v1.1.0" hash = "sha256-F+EqvufC+KBslZV/vL8ph6MqDoVD5ic5rVaM27reDqo=" @@ -379,8 +379,8 @@ schema = 3 version = "v0.2.2" hash = "sha256-0MLfSJKdeK3Z7tWAXTdzwB4091dmyxIX38S5SKH5QAw=" [mod."github.com/evmos/ethermint"] - version = "v0.22.1-0.20260528204018-f6683e1e255b" - hash = "sha256-OwIpJInlYV89RUMIMs67SjtjfujtgoFsB0R6AVe+/d8=" + version = "v0.22.1-0.20260624022300-3247d33cbe46" + hash = "sha256-db29bgwoA458DG4+eKjrXBvZMW8e+eDtro7CvG/adyQ=" replaced = "github.com/crypto-org-chain/ethermint" [mod."github.com/fatih/color"] version = "v1.18.0" @@ -458,8 +458,8 @@ schema = 3 version = "v0.0.1" hash = "sha256-KrExYovtUQrHGI1mPQf57jGw8soz7eWOC2xqEaV0uGk=" [mod."github.com/google/pprof"] - version = "v0.0.0-20260115054156-294ebfa9ad83" - hash = "sha256-fhalKl/thSt1gdsHZmFyNGF1Gwxb0YLXV0pBv65EZjE=" + version = "v0.0.0-20260402051712-545e8a4df936" + hash = "sha256-DBaCmfVLei1HComa+xJN76IpPFTUaDfUEhc1U9gmW8g=" [mod."github.com/google/s2a-go"] version = "v0.1.9" hash = "sha256-0AdSpSTso4bATmM/9qamWzKrVtOLDf7afvDhoiT/UpA=" @@ -562,6 +562,9 @@ schema = 3 [mod."github.com/jmhodges/levigo"] version = "v1.0.0" hash = "sha256-xEd0mDBeq3eR/GYeXjoTVb2sPs8sTCosn5ayWkcgENI=" + [mod."github.com/kcalvinalvin/anet"] + version = "v0.0.0-20251112173137-d8ddc1f6dbee" + hash = "sha256-GBQuTXh6oQI4caoM6gJgWXolh7c/fTCNiYnFNfGeRaU=" [mod."github.com/klauspost/compress"] version = "v1.18.6" hash = "sha256-gULc+A2Clg2HnwR9UNXSIHVGdFY/aGqhf0zlvMxqaSY=" @@ -876,8 +879,8 @@ schema = 3 version = "v1.8.1" hash = "sha256-QsYonFnbD/zaxUYAJMzDNI3ju0TjcBJrh8/DBhaJfbM=" [mod."github.com/tidwall/gjson"] - version = "v1.18.0" - hash = "sha256-CO6hqDu8Y58Po6A01e5iTpwiUBQ5khUZsw7czaJHw0I=" + version = "v1.19.0" + hash = "sha256-H0tqaftwuKVjuvlPov1Fr1a5W0JZmWUkOlPxY5qtSTE=" [mod."github.com/tidwall/match"] version = "v1.1.1" hash = "sha256-M2klhPId3Q3T3VGkSbOkYl/2nLHnsG+yMbXkPkyrRdg=" @@ -1056,8 +1059,8 @@ schema = 3 version = "v0.36.0" hash = "sha256-ZhyOvy9ptbV+pna/CNyQFr5cKRn5O+B2QzkQAISKgco=" [mod."golang.org/x/net"] - version = "v0.55.0" - hash = "sha256-Phi2mSmBGOJcvqPPAit3uqF3UP8SKRI9dHj6yTM3s5s=" + version = "v0.56.0" + hash = "sha256-JUORjxDZqZanYWo2yunaDpQ2/zvHiFb0TnF1Jw6D+30=" [mod."golang.org/x/oauth2"] version = "v0.36.0" hash = "sha256-evS7WkMrpgonmTcqtWFpC5rSKZN8O+vnAhNUs1MS9kw=" From 5c4abe44012eff4e32c2bd05b9e9f898263d47c7 Mon Sep 17 00:00:00 2001 From: "jay.tseng" Date: Tue, 23 Jun 2026 23:25:09 -0400 Subject: [PATCH 05/19] test(mempool): add pre-verify rejection + non-EVM fall-through tests Address review feedback on #2120: - Snapshot preVerify in InsertTxHandler for race-detector cleanliness - TestPreVerifyRejectsTamperedSig: tampered From rejected before RunTx - TestPreVerifyPassesThroughNonEVMTx: non-EVM tx falls through to antehandler --- app/mempool/admission_test.go | 33 +++++++++++++++++++++++++++++++++ app/mempool/manager.go | 6 ++++-- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/app/mempool/admission_test.go b/app/mempool/admission_test.go index d77f4fa9e7..892cf4707f 100644 --- a/app/mempool/admission_test.go +++ b/app/mempool/admission_test.go @@ -160,6 +160,39 @@ func setupAdmissionApp(tb testing.TB, accounts int) *admissionFixture { } } +// TestPreVerifyRejectsTamperedSig checks that the lock-free pre-verifier rejects +// an EVM tx whose From field was tampered after signing, without reaching RunTx. +func TestPreVerifyRejectsTamperedSig(t *testing.T) { + f := setupAdmissionApp(t, 2) + other := f.accounts[1].Address + bad := f.signTransfer(t, &f.accounts[0], &other) + resp, err := f.app.InsertTx(&abci.RequestInsertTx{Tx: bad}) + require.NoError(t, err) + require.NotEqual(t, abci.CodeTypeOK, resp.Code, "tampered From must be rejected by pre-verifier") +} + +// TestPreVerifyPassesThroughNonEVMTx checks that a non-EVM tx is not rejected +// by the pre-verifier (returns nil) and proceeds to the locked RunTx path. +// A bare bank MsgSend with no signature fails antehandler, not pre-verifier. +func TestPreVerifyPassesThroughNonEVMTx(t *testing.T) { + f := setupAdmissionApp(t, 1) + // Build an unsigned Cosmos tx (bank send). Pre-verify must not reject it; + // RunTx rejects it with a signature error, not the pre-verifier code. + builder := f.app.TxConfig().NewTxBuilder() + require.NoError(t, builder.SetMsgs(&banktypes.MsgSend{ + FromAddress: sdk.AccAddress(f.accounts[0].Address.Bytes()).String(), + ToAddress: sdk.AccAddress(f.accounts[0].Address.Bytes()).String(), + Amount: sdk.NewCoins(), + })) + bz, err := f.app.TxConfig().TxEncoder()(builder.GetTx()) + require.NoError(t, err) + resp, err := f.app.InsertTx(&abci.RequestInsertTx{Tx: bz}) + require.NoError(t, err) + // RunTx rejects the unsigned tx, but the code must not be the pre-verifier's + // signature-invalid code — it falls through to the locked antehandler path. + require.NotEqual(t, abci.CodeTypeOK, resp.Code, "unsigned tx must be rejected") +} + // TestInsertTxConcurrentAdmission drives many concurrent InsertTx calls // (pre-verify lock-free, then RunTx under the admission mutex). Run with -race // to prove the path is concurrency-safe: the signer is pure and the decode cache diff --git a/app/mempool/manager.go b/app/mempool/manager.go index f4b74a3489..b148eaf470 100644 --- a/app/mempool/manager.go +++ b/app/mempool/manager.go @@ -138,12 +138,14 @@ func (a *Manager) SetPreVerify(fn func([]byte) error) { // handler. Admitted txs register canonical bytes so ReapTxsHandler can skip // proto.Marshal; re-encoding keeps non-minimal peer bytes out of the cache. func (a *Manager) InsertTxHandler() sdk.InsertTxHandler { + // Snapshot preVerify once; safe for concurrent InsertTx callers. + preVerify := a.preVerify return func(req *abci.RequestInsertTx) (*abci.ResponseInsertTx, error) { // Pre-verify EVM sig lock-free: ecrecover dominates admission cost and // touches no store. Non-EVM txs and decode failures return nil and fall // through to the locked RunTx below. - if a.preVerify != nil { - if err := a.preVerify(req.Tx); err != nil { + if preVerify != nil { + if err := preVerify(req.Tx); err != nil { _, code, _ := errorsmod.ABCIInfo(err, false) return &abci.ResponseInsertTx{Code: code}, nil } From 1fa8c4d0c146f9b7146be9a5ab687d437d5bd290 Mon Sep 17 00:00:00 2001 From: "jay.tseng" Date: Tue, 23 Jun 2026 23:26:04 -0400 Subject: [PATCH 06/19] refactor(test): concise test comments --- app/mempool/admission_test.go | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/app/mempool/admission_test.go b/app/mempool/admission_test.go index 892cf4707f..843b4ea09e 100644 --- a/app/mempool/admission_test.go +++ b/app/mempool/admission_test.go @@ -160,8 +160,7 @@ func setupAdmissionApp(tb testing.TB, accounts int) *admissionFixture { } } -// TestPreVerifyRejectsTamperedSig checks that the lock-free pre-verifier rejects -// an EVM tx whose From field was tampered after signing, without reaching RunTx. +// TestPreVerifyRejectsTamperedSig: tampered From rejected lock-free before RunTx. func TestPreVerifyRejectsTamperedSig(t *testing.T) { f := setupAdmissionApp(t, 2) other := f.accounts[1].Address @@ -171,13 +170,9 @@ func TestPreVerifyRejectsTamperedSig(t *testing.T) { require.NotEqual(t, abci.CodeTypeOK, resp.Code, "tampered From must be rejected by pre-verifier") } -// TestPreVerifyPassesThroughNonEVMTx checks that a non-EVM tx is not rejected -// by the pre-verifier (returns nil) and proceeds to the locked RunTx path. -// A bare bank MsgSend with no signature fails antehandler, not pre-verifier. +// TestPreVerifyPassesThroughNonEVMTx: non-EVM tx skips pre-verifier, fails antehandler. func TestPreVerifyPassesThroughNonEVMTx(t *testing.T) { f := setupAdmissionApp(t, 1) - // Build an unsigned Cosmos tx (bank send). Pre-verify must not reject it; - // RunTx rejects it with a signature error, not the pre-verifier code. builder := f.app.TxConfig().NewTxBuilder() require.NoError(t, builder.SetMsgs(&banktypes.MsgSend{ FromAddress: sdk.AccAddress(f.accounts[0].Address.Bytes()).String(), @@ -188,9 +183,7 @@ func TestPreVerifyPassesThroughNonEVMTx(t *testing.T) { require.NoError(t, err) resp, err := f.app.InsertTx(&abci.RequestInsertTx{Tx: bz}) require.NoError(t, err) - // RunTx rejects the unsigned tx, but the code must not be the pre-verifier's - // signature-invalid code — it falls through to the locked antehandler path. - require.NotEqual(t, abci.CodeTypeOK, resp.Code, "unsigned tx must be rejected") + require.NotEqual(t, abci.CodeTypeOK, resp.Code, "unsigned tx must be rejected by antehandler") } // TestInsertTxConcurrentAdmission drives many concurrent InsertTx calls From b3e56897198c774808cb303b1614d49ce8acda97 Mon Sep 17 00:00:00 2001 From: "jay.tseng" Date: Tue, 23 Jun 2026 23:34:21 -0400 Subject: [PATCH 07/19] fix(ante): wire SetPreVerify before InsertTxHandler snapshot; no Log field - Move chainId declaration before baseAppOptions closure so it can be captured; call SetPreVerify inside the closure before InsertTxHandler() so the preVerify snapshot captures the non-nil verifier - ResponseInsertTx has no Log field; keep Code-only response --- app/app.go | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/app/app.go b/app/app.go index ab82a971a8..f8ceb6b7b2 100644 --- a/app/app.go +++ b/app/app.go @@ -475,6 +475,7 @@ func New( mpool = mempool.NoOpMempool{} } blockProposalHandler := NewProposalHandler(activeDecoder, identity, addressCodec) + chainId := cast.ToString(appOpts.Get(flags.FlagChainID)) mempoolType := cast.ToString(appOpts.Get(FlagMempoolType)) switch mempoolType { case "", "flood", cronosmempool.TypeApp: @@ -557,6 +558,8 @@ func New( app.SetReapTxsHandler(cronosmempool.NewReapTxsHandler(mpool, txConfig.TxEncoder(), encCache, gossipTTL, txsPerBlock, logger.With("module", "app-mempool"))) manager := cronosmempool.NewManager(app, encCache, txConfig.TxEncoder(), mpool, signerExtractor, activeDecoder, txsPerBlock, ttlNumBlocks) + // SetPreVerify before InsertTxHandler so the snapshot captures the non-nil verifier. + manager.SetPreVerify(ethante.NewEVMSigPreVerifier(chainId, activeDecoder)) app.SetInsertTxHandler(manager.InsertTxHandler()) app.SetCheckTxHandler(manager.CheckTxHandler()) mempoolManager = manager @@ -571,7 +574,6 @@ func New( // only enable memiavl cache if neither block-stm nor optimistic execution is enabled, because it's not concurrency-safe. cacheSize = cast.ToInt(appOpts.Get(memiavlstore.FlagCacheSize)) } - chainId := cast.ToString(appOpts.Get(flags.FlagChainID)) baseAppOptions = memiavlstore.SetupMemIAVL(logger, homePath, appOpts, false, false, cacheSize, chainId, baseAppOptions) // The default value of optimisticExecution is enabled. @@ -608,10 +610,6 @@ func New( dummyCheckTx: cast.ToBool(appOpts.Get(FlagUnsafeDummyCheckTx)), } - if mempoolManager != nil { - mempoolManager.SetPreVerify(ethante.NewEVMSigPreVerifier(chainId, activeDecoder)) - } - app.SetDisableBlockGasMeter(true) // init params keeper and subspaces From 8ab07e4949af7a4189ed2223d0dffaf1dab20f43 Mon Sep 17 00:00:00 2001 From: "jay.tseng" Date: Tue, 23 Jun 2026 23:54:00 -0400 Subject: [PATCH 08/19] test(integration): pass hex block number to eth_getBlockReceipts The ethermint bump changes GetBlockReceipts param from BlockNumber to BlockNumberOrHash. BlockNumber accepted a plain decimal int (cast.ToUint64 fallback on missing 0x prefix); BlockNumberOrHash does not, so the raw int arg now returns an error and the response has no 'result'. Pass hex(). --- integration_tests/test_basic.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/integration_tests/test_basic.py b/integration_tests/test_basic.py index ef2cffe1dc..eed164ba09 100644 --- a/integration_tests/test_basic.py +++ b/integration_tests/test_basic.py @@ -565,9 +565,9 @@ def assert_receipt_transaction_and_block(w3, futures): # check block receipts receipts.sort(key=lambda receipt: receipt["transactionIndex"]) - block_receipts = w3.provider.make_request("eth_getBlockReceipts", [block_number])[ - "result" - ] + block_receipts = w3.provider.make_request( + "eth_getBlockReceipts", [hex(block_number)] + )["result"] assert len(block_receipts) == 4 for i, block_receipt in enumerate(block_receipts): assert block_receipt["blockNumber"] == hex(receipts[i]["blockNumber"]) From 1dfb1826352af6b03475cd66c9bf07df8b039b7b Mon Sep 17 00:00:00 2001 From: "jay.tseng" Date: Thu, 25 Jun 2026 16:27:01 -0400 Subject: [PATCH 09/19] chore(deps): bump ethermint to 122de00 --- go.mod | 2 +- go.sum | 8 ++++---- gomod2nix.toml | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 7931d4718d..2bcd22b40a 100644 --- a/go.mod +++ b/go.mod @@ -401,7 +401,7 @@ replace ( // release/v1.16 github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20260521015249-663dca6c618e // develop - github.com/evmos/ethermint => github.com/crypto-org-chain/ethermint v0.22.1-0.20260624022300-3247d33cbe46 + github.com/evmos/ethermint => github.com/crypto-org-chain/ethermint v0.22.1-0.20260625201854-122de00d4da4 // Fix upstream GHSA-h395-qcrw-5vmq and GHSA-3vp4-m3rf-835h vulnerabilities. // TODO Remove it: https://github.com/cosmos/cosmos-sdk/issues/10409 github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.9.0 diff --git a/go.sum b/go.sum index 189aea45d1..0227440fd1 100644 --- a/go.sum +++ b/go.sum @@ -306,8 +306,8 @@ github.com/crypto-org-chain/cronos-store/store v0.0.0-20260529153812-1f2f45ec5a3 github.com/crypto-org-chain/cronos-store/store v0.0.0-20260529153812-1f2f45ec5a3c/go.mod h1:eEPLLeFOhRINMGIQTDjXuahaDkQgfSUvHTzSuuEl4V0= github.com/crypto-org-chain/cronos-store/versiondb v0.0.0-20260529153812-1f2f45ec5a3c h1:oTFxyhmD5ax3Cec3L2XKu/rMDL2CdFLflS/7BPmjJzw= github.com/crypto-org-chain/cronos-store/versiondb v0.0.0-20260529153812-1f2f45ec5a3c/go.mod h1:AVLgSeljZFwhfVzbeeEu15ejtK2q2PLyqJsPKxbU05I= -github.com/crypto-org-chain/ethermint v0.22.1-0.20260624022300-3247d33cbe46 h1:PP9sPRVSCwkHQJp7rTpkkOEnePkeaog0zXL4xAxqspY= -github.com/crypto-org-chain/ethermint v0.22.1-0.20260624022300-3247d33cbe46/go.mod h1:j7z7SCEajplRa6d06/KIEojCPDispDP+YthV4hWq50E= +github.com/crypto-org-chain/ethermint v0.22.1-0.20260625201854-122de00d4da4 h1:QLBEy9+xhifI3Xyw4qsblg3aBF4AF0CJdfmsG2+ZB5M= +github.com/crypto-org-chain/ethermint v0.22.1-0.20260625201854-122de00d4da4/go.mod h1:enttvb9MOYj/d9BBqRlz/J7Mj/TLkbEO+2Dt3N7Xi90= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20260521015249-663dca6c618e h1:ftyRRWDiXKWsnp3PxLNbfVLzrqkx+aDNZdkPconawWk= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20260521015249-663dca6c618e/go.mod h1:Fs6QebQbavneQTYcA39PEKv2+zIjX7rPUZ14DER46wk= github.com/danieljoos/wincred v1.2.3 h1:v7dZC2x32Ut3nEfRH+vhoZGvN72+dQ/snVXo/vMFLdQ= @@ -855,8 +855,8 @@ github.com/onsi/ginkgo/v2 v2.32.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.40.0 h1:Vtol0e1MghCD2ZVIilPDIg44XSL9l2QAn8ZNaljWcJc= -github.com/onsi/gomega v1.40.0/go.mod h1:M/Uqpu/8qTjtzCLUA2zJHX9Iilrau25x1PdoSRbWh5A= +github.com/onsi/gomega v1.42.1 h1:iN1rCUX+44NZ1Dc97MPoeFYbFR0vh8zxoxMFwKdyZ6I= +github.com/onsi/gomega v1.42.1/go.mod h1:REff/hsDsodHoKlWsP2mAPhu1+5/6hVYNf9rIEBpeSg= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= diff --git a/gomod2nix.toml b/gomod2nix.toml index 7e942e93b4..ee98c40c94 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -379,8 +379,8 @@ schema = 3 version = "v0.2.2" hash = "sha256-0MLfSJKdeK3Z7tWAXTdzwB4091dmyxIX38S5SKH5QAw=" [mod."github.com/evmos/ethermint"] - version = "v0.22.1-0.20260624022300-3247d33cbe46" - hash = "sha256-db29bgwoA458DG4+eKjrXBvZMW8e+eDtro7CvG/adyQ=" + version = "v0.22.1-0.20260625201854-122de00d4da4" + hash = "sha256-xKsKuc3kw9gc8209ZtXgd6vJGCFb5O/C7KZiZ85qeu0=" replaced = "github.com/crypto-org-chain/ethermint" [mod."github.com/fatih/color"] version = "v1.18.0" From df50c2db2b6ddabec45156accadc9fbcb6d0d576 Mon Sep 17 00:00:00 2001 From: "jay.tseng" Date: Thu, 25 Jun 2026 16:27:39 -0400 Subject: [PATCH 10/19] refactor(mempool): drop EVM-specific comment, remove snapshot comment --- app/mempool/manager.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/app/mempool/manager.go b/app/mempool/manager.go index b148eaf470..38b878ea3d 100644 --- a/app/mempool/manager.go +++ b/app/mempool/manager.go @@ -138,12 +138,10 @@ func (a *Manager) SetPreVerify(fn func([]byte) error) { // handler. Admitted txs register canonical bytes so ReapTxsHandler can skip // proto.Marshal; re-encoding keeps non-minimal peer bytes out of the cache. func (a *Manager) InsertTxHandler() sdk.InsertTxHandler { - // Snapshot preVerify once; safe for concurrent InsertTx callers. preVerify := a.preVerify return func(req *abci.RequestInsertTx) (*abci.ResponseInsertTx, error) { - // Pre-verify EVM sig lock-free: ecrecover dominates admission cost and - // touches no store. Non-EVM txs and decode failures return nil and fall - // through to the locked RunTx below. + // Run pre-verifier lock-free before the admission mutex; nil means skip. + // Non-verifiable txs return nil and fall through to the locked RunTx below. if preVerify != nil { if err := preVerify(req.Tx); err != nil { _, code, _ := errorsmod.ABCIInfo(err, false) From 49f7030ebee223baff36913443626d57c80b0473 Mon Sep 17 00:00:00 2001 From: "jay.tseng" Date: Thu, 25 Jun 2026 16:35:22 -0400 Subject: [PATCH 11/19] refactor(mempool): trim InsertTxHandler comments --- app/mempool/manager.go | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/app/mempool/manager.go b/app/mempool/manager.go index 38b878ea3d..a56a581d27 100644 --- a/app/mempool/manager.go +++ b/app/mempool/manager.go @@ -134,22 +134,18 @@ func (a *Manager) SetPreVerify(fn func([]byte) error) { } // InsertTxHandler validates peer-relayed txs via RunTx(ExecModeCheck) before -// admitting them. Flood protection relies on CometBFT peer limits, not this -// handler. Admitted txs register canonical bytes so ReapTxsHandler can skip -// proto.Marshal; re-encoding keeps non-minimal peer bytes out of the cache. +// admitting them. Admitted txs register canonical bytes so ReapTxsHandler can +// skip proto.Marshal; re-encoding keeps non-minimal peer bytes out of the cache. func (a *Manager) InsertTxHandler() sdk.InsertTxHandler { preVerify := a.preVerify return func(req *abci.RequestInsertTx) (*abci.ResponseInsertTx, error) { - // Run pre-verifier lock-free before the admission mutex; nil means skip. - // Non-verifiable txs return nil and fall through to the locked RunTx below. if preVerify != nil { if err := preVerify(req.Tx); err != nil { _, code, _ := errorsmod.ABCIInfo(err, false) return &abci.ResponseInsertTx{Code: code}, nil } } - // Decode before locking: proto unmarshal is CPU-intensive; decoder and - // DecodeCache have their own locks. Bad txs return without acquiring mu. + // Decode before locking: proto unmarshal is CPU-intensive. var tx sdk.Tx if a.encCache != nil { var err error From 678eed117086bf5c8ff3cc51e5d9d08288b84eea Mon Sep 17 00:00:00 2001 From: "jay.tseng" Date: Fri, 26 Jun 2026 13:31:31 -0400 Subject: [PATCH 12/19] refactor(ante): source EVM sig pre-verifier from appmempool Ethermint moved the sig pre-verifier out of the ante package into the new appmempool package (stack #1016+#1019+#1011); ante/preverify.go is gone. - Repoint app.go: ethante.NewEVMSigPreVerifier -> appmempool.NewEVMSigPreVerifier. SigPreVerifier is still func([]byte) error, so SetPreVerify is unchanged. - Bump ethermint pin to 562fa2a2 (go.mod, go.sum, gomod2nix.toml). --- app/app.go | 4 ++-- go.mod | 4 ++-- go.sum | 4 ++-- gomod2nix.toml | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/app.go b/app/app.go index f8ceb6b7b2..971b0110f4 100644 --- a/app/app.go +++ b/app/app.go @@ -59,8 +59,8 @@ import ( "github.com/ethereum/go-ethereum/common" _ "github.com/ethereum/go-ethereum/eth/tracers/js" _ "github.com/ethereum/go-ethereum/eth/tracers/native" - ethante "github.com/evmos/ethermint/ante" "github.com/evmos/ethermint/ante/cache" + "github.com/evmos/ethermint/appmempool" evmenc "github.com/evmos/ethermint/encoding" "github.com/evmos/ethermint/ethereum/eip712" evmapp "github.com/evmos/ethermint/evmd" @@ -559,7 +559,7 @@ func New( app.SetReapTxsHandler(cronosmempool.NewReapTxsHandler(mpool, txConfig.TxEncoder(), encCache, gossipTTL, txsPerBlock, logger.With("module", "app-mempool"))) manager := cronosmempool.NewManager(app, encCache, txConfig.TxEncoder(), mpool, signerExtractor, activeDecoder, txsPerBlock, ttlNumBlocks) // SetPreVerify before InsertTxHandler so the snapshot captures the non-nil verifier. - manager.SetPreVerify(ethante.NewEVMSigPreVerifier(chainId, activeDecoder)) + manager.SetPreVerify(appmempool.NewEVMSigPreVerifier(chainId, activeDecoder)) app.SetInsertTxHandler(manager.InsertTxHandler()) app.SetCheckTxHandler(manager.CheckTxHandler()) mempoolManager = manager diff --git a/go.mod b/go.mod index 2bcd22b40a..45bbd55841 100644 --- a/go.mod +++ b/go.mod @@ -400,8 +400,8 @@ replace ( github.com/dgrijalva/jwt-go => github.com/golang-jwt/jwt/v4 v4.4.2 // release/v1.16 github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20260521015249-663dca6c618e - // develop - github.com/evmos/ethermint => github.com/crypto-org-chain/ethermint v0.22.1-0.20260625201854-122de00d4da4 + // develop + appmempool refactor (#1016 EVM direct-insert, #1019 txpool, #1011 sig pre-verifier). + github.com/evmos/ethermint => github.com/crypto-org-chain/ethermint v0.22.1-0.20260626163648-562fa2a2a6da // Fix upstream GHSA-h395-qcrw-5vmq and GHSA-3vp4-m3rf-835h vulnerabilities. // TODO Remove it: https://github.com/cosmos/cosmos-sdk/issues/10409 github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.9.0 diff --git a/go.sum b/go.sum index 0227440fd1..38dd2717b0 100644 --- a/go.sum +++ b/go.sum @@ -306,8 +306,8 @@ github.com/crypto-org-chain/cronos-store/store v0.0.0-20260529153812-1f2f45ec5a3 github.com/crypto-org-chain/cronos-store/store v0.0.0-20260529153812-1f2f45ec5a3c/go.mod h1:eEPLLeFOhRINMGIQTDjXuahaDkQgfSUvHTzSuuEl4V0= github.com/crypto-org-chain/cronos-store/versiondb v0.0.0-20260529153812-1f2f45ec5a3c h1:oTFxyhmD5ax3Cec3L2XKu/rMDL2CdFLflS/7BPmjJzw= github.com/crypto-org-chain/cronos-store/versiondb v0.0.0-20260529153812-1f2f45ec5a3c/go.mod h1:AVLgSeljZFwhfVzbeeEu15ejtK2q2PLyqJsPKxbU05I= -github.com/crypto-org-chain/ethermint v0.22.1-0.20260625201854-122de00d4da4 h1:QLBEy9+xhifI3Xyw4qsblg3aBF4AF0CJdfmsG2+ZB5M= -github.com/crypto-org-chain/ethermint v0.22.1-0.20260625201854-122de00d4da4/go.mod h1:enttvb9MOYj/d9BBqRlz/J7Mj/TLkbEO+2Dt3N7Xi90= +github.com/crypto-org-chain/ethermint v0.22.1-0.20260626163648-562fa2a2a6da h1:dVXNbF4YyTgylf2hRoLWODAQ1lSLkvSJlJUIJIvGNOU= +github.com/crypto-org-chain/ethermint v0.22.1-0.20260626163648-562fa2a2a6da/go.mod h1:enttvb9MOYj/d9BBqRlz/J7Mj/TLkbEO+2Dt3N7Xi90= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20260521015249-663dca6c618e h1:ftyRRWDiXKWsnp3PxLNbfVLzrqkx+aDNZdkPconawWk= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20260521015249-663dca6c618e/go.mod h1:Fs6QebQbavneQTYcA39PEKv2+zIjX7rPUZ14DER46wk= github.com/danieljoos/wincred v1.2.3 h1:v7dZC2x32Ut3nEfRH+vhoZGvN72+dQ/snVXo/vMFLdQ= diff --git a/gomod2nix.toml b/gomod2nix.toml index ee98c40c94..a23a13b0a5 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -379,8 +379,8 @@ schema = 3 version = "v0.2.2" hash = "sha256-0MLfSJKdeK3Z7tWAXTdzwB4091dmyxIX38S5SKH5QAw=" [mod."github.com/evmos/ethermint"] - version = "v0.22.1-0.20260625201854-122de00d4da4" - hash = "sha256-xKsKuc3kw9gc8209ZtXgd6vJGCFb5O/C7KZiZ85qeu0=" + version = "v0.22.1-0.20260626163648-562fa2a2a6da" + hash = "sha256-spgtO24QhvYPjKuCLJRxHT/cgJXm+bHtbUZpDQaoEaM=" replaced = "github.com/crypto-org-chain/ethermint" [mod."github.com/fatih/color"] version = "v1.18.0" From 1a02a638082561dcbe25bee479443d56c76a4f1f Mon Sep 17 00:00:00 2001 From: "jay.tseng" Date: Fri, 26 Jun 2026 17:20:23 -0400 Subject: [PATCH 13/19] chore(deps): bump ethermint to c761415 --- go.mod | 4 ++-- go.sum | 29 ++++------------------------- gomod2nix.toml | 8 ++++---- 3 files changed, 10 insertions(+), 31 deletions(-) diff --git a/go.mod b/go.mod index 45bbd55841..3a73a17191 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/golang/protobuf v1.5.4 github.com/gorilla/mux v1.8.1 github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/hashicorp/go-metrics v0.5.4 + github.com/hashicorp/go-metrics v0.6.0 github.com/linxGnu/grocksdb v1.10.8 github.com/spf13/cast v1.10.0 github.com/spf13/cobra v1.10.2 @@ -401,7 +401,7 @@ replace ( // release/v1.16 github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20260521015249-663dca6c618e // develop + appmempool refactor (#1016 EVM direct-insert, #1019 txpool, #1011 sig pre-verifier). - github.com/evmos/ethermint => github.com/crypto-org-chain/ethermint v0.22.1-0.20260626163648-562fa2a2a6da + github.com/evmos/ethermint => github.com/crypto-org-chain/ethermint v0.22.1-0.20260626203154-c7614153ea01 // Fix upstream GHSA-h395-qcrw-5vmq and GHSA-3vp4-m3rf-835h vulnerabilities. // TODO Remove it: https://github.com/cosmos/cosmos-sdk/issues/10409 github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.9.0 diff --git a/go.sum b/go.sum index 38dd2717b0..e8c5de83d5 100644 --- a/go.sum +++ b/go.sum @@ -65,7 +65,6 @@ github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEK github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/datadog-go v4.8.3+incompatible h1:fNGaYSuObuQb5nzeTQqowRAd9bpDIRRV4/gUtIBjh8Q= github.com/DataDog/datadog-go v4.8.3+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.5.7 h1:ybO8RBeh29qrxIhCA9E8gKY6xfONU9T6G6aP9DTKfLE= @@ -112,7 +111,6 @@ github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= @@ -214,8 +212,6 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMn github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04= github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= -github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= -github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudwego/base64x v0.1.7 h1:NppS+Fgzg5ovhn4NkUXaDT3x9jldgH5ToMCqzBSi2zI= @@ -306,8 +302,8 @@ github.com/crypto-org-chain/cronos-store/store v0.0.0-20260529153812-1f2f45ec5a3 github.com/crypto-org-chain/cronos-store/store v0.0.0-20260529153812-1f2f45ec5a3c/go.mod h1:eEPLLeFOhRINMGIQTDjXuahaDkQgfSUvHTzSuuEl4V0= github.com/crypto-org-chain/cronos-store/versiondb v0.0.0-20260529153812-1f2f45ec5a3c h1:oTFxyhmD5ax3Cec3L2XKu/rMDL2CdFLflS/7BPmjJzw= github.com/crypto-org-chain/cronos-store/versiondb v0.0.0-20260529153812-1f2f45ec5a3c/go.mod h1:AVLgSeljZFwhfVzbeeEu15ejtK2q2PLyqJsPKxbU05I= -github.com/crypto-org-chain/ethermint v0.22.1-0.20260626163648-562fa2a2a6da h1:dVXNbF4YyTgylf2hRoLWODAQ1lSLkvSJlJUIJIvGNOU= -github.com/crypto-org-chain/ethermint v0.22.1-0.20260626163648-562fa2a2a6da/go.mod h1:enttvb9MOYj/d9BBqRlz/J7Mj/TLkbEO+2Dt3N7Xi90= +github.com/crypto-org-chain/ethermint v0.22.1-0.20260626203154-c7614153ea01 h1:dwB5ZDDatwam0HRu8VSS5ZQucBEhvLZVKAezyHnLP6U= +github.com/crypto-org-chain/ethermint v0.22.1-0.20260626203154-c7614153ea01/go.mod h1:FcXgK9DUW2h3MB5lC3jdZBMQlF0+kpWfmZYTsAI8zk8= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20260521015249-663dca6c618e h1:ftyRRWDiXKWsnp3PxLNbfVLzrqkx+aDNZdkPconawWk= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20260521015249-663dca6c618e/go.mod h1:Fs6QebQbavneQTYcA39PEKv2+zIjX7rPUZ14DER46wk= github.com/danieljoos/wincred v1.2.3 h1:v7dZC2x32Ut3nEfRH+vhoZGvN72+dQ/snVXo/vMFLdQ= @@ -511,7 +507,6 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -571,7 +566,6 @@ github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyN github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE= github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= -github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= @@ -582,13 +576,12 @@ github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVH github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-metrics v0.5.4 h1:8mmPiIJkTPPEbAiV97IxdAGNdRdaWwVap1BU6elejKY= -github.com/hashicorp/go-metrics v0.5.4/go.mod h1:CG5yz4NZ/AI/aQt9Ucm/vdBnbh7fvmv4lxZ350i+QQI= +github.com/hashicorp/go-metrics v0.6.0 h1:+kjWqHRH2HxAocneVfB/BI6EeWUUHyPhyQZozMT8Ed4= +github.com/hashicorp/go-metrics v0.6.0/go.mod h1:0B52B5pZ7+qm5Zhzs8Fygr87isvmUgr0Zv9rmJ9qsnQ= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-plugin v1.7.0 h1:YghfQH/0QmPNc/AZMTFE3ac8fipZyZECHdDPshfk+mA= github.com/hashicorp/go-plugin v1.7.0/go.mod h1:BExt6KEaIYx804z8k4gRzRLEvxKVb+kn0NMcihqOqb8= -github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= @@ -659,9 +652,7 @@ github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= @@ -878,8 +869,6 @@ github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4 github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= -github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= @@ -959,9 +948,7 @@ github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXP github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= @@ -975,10 +962,8 @@ github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvM github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= -github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -987,7 +972,6 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.20.1 h1:XwbrGOIplXW/AU3YhIhLODXMJYyC1isLFfYCsTEycfc= github.com/prometheus/procfs v0.20.1/go.mod h1:o9EMBZGRyvDrSPH1RqdxhojkuXstoe4UlK79eF5TGGo= github.com/prysmaticlabs/gohashtree v0.0.4-beta h1:H/EbCuXPeTV3lpKeXGPpEV9gsUpkqOOVnWapUyeWro4= @@ -1119,7 +1103,6 @@ github.com/tklauser/go-sysconf v0.3.16/go.mod h1:/qNL9xxDhc7tx3HSRsLWNnuzbVfh3e7 github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9RXw= github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= @@ -1344,7 +1327,6 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1374,7 +1356,6 @@ golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1387,11 +1368,9 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/gomod2nix.toml b/gomod2nix.toml index a23a13b0a5..51397c7a10 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -379,8 +379,8 @@ schema = 3 version = "v0.2.2" hash = "sha256-0MLfSJKdeK3Z7tWAXTdzwB4091dmyxIX38S5SKH5QAw=" [mod."github.com/evmos/ethermint"] - version = "v0.22.1-0.20260626163648-562fa2a2a6da" - hash = "sha256-spgtO24QhvYPjKuCLJRxHT/cgJXm+bHtbUZpDQaoEaM=" + version = "v0.22.1-0.20260626203154-c7614153ea01" + hash = "sha256-CAlNjZfMZQN3bp0uRhTLG5A7oUpWw6EbAKcDx32Nqs4=" replaced = "github.com/crypto-org-chain/ethermint" [mod."github.com/fatih/color"] version = "v1.18.0" @@ -509,8 +509,8 @@ schema = 3 version = "v1.3.1" hash = "sha256-65+A2HiVfS/GV9G+6/TkXXjzXhI/V98e6RlJWjxy+mg=" [mod."github.com/hashicorp/go-metrics"] - version = "v0.5.4" - hash = "sha256-WQGb38CuijG9YxHfqgKn1U655BmxLYhNXXdSw0MRiGc=" + version = "v0.6.0" + hash = "sha256-EJ6FZlQpPBQrPT0E2SNrKsqLu7APJPO/XVt9M/+FZp8=" [mod."github.com/hashicorp/go-plugin"] version = "v1.7.0" hash = "sha256-nPTlKEssbp3/uDRZ2kkdO8z5mbu3j417Bra4FpBceHk=" From fd068324bf4fedc068ed35cfe64b432518b03eca Mon Sep 17 00:00:00 2001 From: "jay.tseng" Date: Mon, 29 Jun 2026 15:58:38 -0400 Subject: [PATCH 14/19] refactor(mempool): own the pre-verifier registry in the app layer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move PreVerifierRegistry out of ethermint into cronos per review (crypto-org-chain/ethermint#1011): the registry is an app-level composition concern. The app registers per-module verifiers — today just ethermint's NewEVMSigPreVerifier for EVM txs — and hands the composite registry.Verify to the mempool manager. The manager stays generic (SetPreVerify takes any func([]byte) error), so this is wiring only; no manager change. --- CHANGELOG.md | 2 +- app/app.go | 7 +++++-- app/preverify.go | 31 +++++++++++++++++++++++++++++++ app/preverify_test.go | 41 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 app/preverify.go create mode 100644 app/preverify_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 851092f333..6e596ff68d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ * [#2089](https://github.com/crypto-org-chain/cronos/pull/2089) feat: upgrade to cosmos-sdk v0.54.3 + ibc-go v11 + cometbft v0.39. * [#2081](https://github.com/crypto-org-chain/cronos/pull/2081) Upgrade go-ethereum version to `v1.16.9`, enable Osaka hardfork. * [#2091](https://github.com/crypto-org-chain/cronos/pull/2091) feat(app): v0.54 upgrade perf optimizations + app-mempool feature. -* [#2120](https://github.com/crypto-org-chain/cronos/pull/2120) feat(ante): wire ethermint NewEVMSigPreVerifier for lock-free admission. +* [#2120](https://github.com/crypto-org-chain/cronos/pull/2120) feat(ante): wire ethermint NewEVMSigPreVerifier for lock-free admission, via an app-owned PreVerifierRegistry that composes per-module verifiers. ### Bug fixes diff --git a/app/app.go b/app/app.go index 971b0110f4..937b4f4b2c 100644 --- a/app/app.go +++ b/app/app.go @@ -558,8 +558,11 @@ func New( app.SetReapTxsHandler(cronosmempool.NewReapTxsHandler(mpool, txConfig.TxEncoder(), encCache, gossipTTL, txsPerBlock, logger.With("module", "app-mempool"))) manager := cronosmempool.NewManager(app, encCache, txConfig.TxEncoder(), mpool, signerExtractor, activeDecoder, txsPerBlock, ttlNumBlocks) - // SetPreVerify before InsertTxHandler so the snapshot captures the non-nil verifier. - manager.SetPreVerify(appmempool.NewEVMSigPreVerifier(chainId, activeDecoder)) + // Compose per-module admission pre-verifiers; the app owns the registry. + // SetPreVerify before InsertTxHandler so the handler snapshots the non-nil hook. + var preVerifiers PreVerifierRegistry + preVerifiers.Register(appmempool.NewEVMSigPreVerifier(chainId, activeDecoder)) + manager.SetPreVerify(preVerifiers.Verify) app.SetInsertTxHandler(manager.InsertTxHandler()) app.SetCheckTxHandler(manager.CheckTxHandler()) mempoolManager = manager diff --git a/app/preverify.go b/app/preverify.go new file mode 100644 index 0000000000..ee0d935b36 --- /dev/null +++ b/app/preverify.go @@ -0,0 +1,31 @@ +package app + +// PreVerifierRegistry collects lock-free admission pre-verifiers contributed by +// modules. The app composes them and hands Verify to the mempool manager, which +// runs it before the admission mutex (mempool.type=app). First rejection wins; a +// nil result defers to the locked admission path. +// +// Each module supplies its own verifier (e.g. ethermint's +// appmempool.NewEVMSigPreVerifier for EVM txs) and registers it in New. The +// registry is deliberately untyped (plain func) so it stays independent of any +// single module. +type PreVerifierRegistry struct { + verifiers []func([]byte) error +} + +// Register adds a pre-verifier; nil is ignored. +func (r *PreVerifierRegistry) Register(v func([]byte) error) { + if v != nil { + r.verifiers = append(r.verifiers, v) + } +} + +// Verify runs the registered pre-verifiers, returning the first rejection or nil. +func (r *PreVerifierRegistry) Verify(raw []byte) error { + for _, v := range r.verifiers { + if err := v(raw); err != nil { + return err + } + } + return nil +} diff --git a/app/preverify_test.go b/app/preverify_test.go new file mode 100644 index 0000000000..5703031040 --- /dev/null +++ b/app/preverify_test.go @@ -0,0 +1,41 @@ +package app + +import ( + "errors" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestPreVerifierRegistry(t *testing.T) { + reject := errors.New("reject") + + t.Run("empty registry defers", func(t *testing.T) { + var r PreVerifierRegistry + require.NoError(t, r.Verify(nil)) + }) + + t.Run("nil verifier ignored", func(t *testing.T) { + var r PreVerifierRegistry + r.Register(nil) + require.NoError(t, r.Verify(nil)) + }) + + t.Run("first rejection wins, later verifiers not run", func(t *testing.T) { + var r PreVerifierRegistry + ran := false + r.Register(func([]byte) error { return reject }) + r.Register(func([]byte) error { ran = true; return nil }) + require.ErrorIs(t, r.Verify(nil), reject) + require.False(t, ran, "verifier after a rejection must not run") + }) + + t.Run("all defer", func(t *testing.T) { + var r PreVerifierRegistry + count := 0 + r.Register(func([]byte) error { count++; return nil }) + r.Register(func([]byte) error { count++; return nil }) + require.NoError(t, r.Verify(nil)) + require.Equal(t, 2, count) + }) +} From b94ed2cf58b357b337a8f134ba1e0a0c388f399f Mon Sep 17 00:00:00 2001 From: "jay.tseng" Date: Mon, 29 Jun 2026 16:03:01 -0400 Subject: [PATCH 15/19] chore(deps): bump ethermint to ff87a62f (registry removed) --- go.mod | 2 +- go.sum | 4 ++-- gomod2nix.toml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 3a73a17191..1cddb04a62 100644 --- a/go.mod +++ b/go.mod @@ -401,7 +401,7 @@ replace ( // release/v1.16 github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20260521015249-663dca6c618e // develop + appmempool refactor (#1016 EVM direct-insert, #1019 txpool, #1011 sig pre-verifier). - github.com/evmos/ethermint => github.com/crypto-org-chain/ethermint v0.22.1-0.20260626203154-c7614153ea01 + github.com/evmos/ethermint => github.com/crypto-org-chain/ethermint v0.22.1-0.20260629195132-ff87a62fb956 // Fix upstream GHSA-h395-qcrw-5vmq and GHSA-3vp4-m3rf-835h vulnerabilities. // TODO Remove it: https://github.com/cosmos/cosmos-sdk/issues/10409 github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.9.0 diff --git a/go.sum b/go.sum index e8c5de83d5..d7526be3ff 100644 --- a/go.sum +++ b/go.sum @@ -302,8 +302,8 @@ github.com/crypto-org-chain/cronos-store/store v0.0.0-20260529153812-1f2f45ec5a3 github.com/crypto-org-chain/cronos-store/store v0.0.0-20260529153812-1f2f45ec5a3c/go.mod h1:eEPLLeFOhRINMGIQTDjXuahaDkQgfSUvHTzSuuEl4V0= github.com/crypto-org-chain/cronos-store/versiondb v0.0.0-20260529153812-1f2f45ec5a3c h1:oTFxyhmD5ax3Cec3L2XKu/rMDL2CdFLflS/7BPmjJzw= github.com/crypto-org-chain/cronos-store/versiondb v0.0.0-20260529153812-1f2f45ec5a3c/go.mod h1:AVLgSeljZFwhfVzbeeEu15ejtK2q2PLyqJsPKxbU05I= -github.com/crypto-org-chain/ethermint v0.22.1-0.20260626203154-c7614153ea01 h1:dwB5ZDDatwam0HRu8VSS5ZQucBEhvLZVKAezyHnLP6U= -github.com/crypto-org-chain/ethermint v0.22.1-0.20260626203154-c7614153ea01/go.mod h1:FcXgK9DUW2h3MB5lC3jdZBMQlF0+kpWfmZYTsAI8zk8= +github.com/crypto-org-chain/ethermint v0.22.1-0.20260629195132-ff87a62fb956 h1:Vzg0KORnzwSdMSi2SBKquz4KKoDegriKBIHuvcxhID4= +github.com/crypto-org-chain/ethermint v0.22.1-0.20260629195132-ff87a62fb956/go.mod h1:FcXgK9DUW2h3MB5lC3jdZBMQlF0+kpWfmZYTsAI8zk8= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20260521015249-663dca6c618e h1:ftyRRWDiXKWsnp3PxLNbfVLzrqkx+aDNZdkPconawWk= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20260521015249-663dca6c618e/go.mod h1:Fs6QebQbavneQTYcA39PEKv2+zIjX7rPUZ14DER46wk= github.com/danieljoos/wincred v1.2.3 h1:v7dZC2x32Ut3nEfRH+vhoZGvN72+dQ/snVXo/vMFLdQ= diff --git a/gomod2nix.toml b/gomod2nix.toml index 51397c7a10..c0ad5db7e8 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -379,8 +379,8 @@ schema = 3 version = "v0.2.2" hash = "sha256-0MLfSJKdeK3Z7tWAXTdzwB4091dmyxIX38S5SKH5QAw=" [mod."github.com/evmos/ethermint"] - version = "v0.22.1-0.20260626203154-c7614153ea01" - hash = "sha256-CAlNjZfMZQN3bp0uRhTLG5A7oUpWw6EbAKcDx32Nqs4=" + version = "v0.22.1-0.20260629195132-ff87a62fb956" + hash = "sha256-Uazew/v1QCnXpwzfULClBntN+o2q6TxHWp/7VM8qaBY=" replaced = "github.com/crypto-org-chain/ethermint" [mod."github.com/fatih/color"] version = "v1.18.0" From 2d496fc0c3400529e0f80eb31125f42717014f08 Mon Sep 17 00:00:00 2001 From: "jay.tseng" Date: Mon, 29 Jun 2026 17:42:02 -0400 Subject: [PATCH 16/19] simplify comment --- app/preverify.go | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/preverify.go b/app/preverify.go index ee0d935b36..dac124f9b1 100644 --- a/app/preverify.go +++ b/app/preverify.go @@ -4,11 +4,6 @@ package app // modules. The app composes them and hands Verify to the mempool manager, which // runs it before the admission mutex (mempool.type=app). First rejection wins; a // nil result defers to the locked admission path. -// -// Each module supplies its own verifier (e.g. ethermint's -// appmempool.NewEVMSigPreVerifier for EVM txs) and registers it in New. The -// registry is deliberately untyped (plain func) so it stays independent of any -// single module. type PreVerifierRegistry struct { verifiers []func([]byte) error } From 481b23cb141363bb2da24d460d1efdb52bd8be34 Mon Sep 17 00:00:00 2001 From: "jay.tseng" Date: Tue, 30 Jun 2026 14:50:43 -0400 Subject: [PATCH 17/19] chore: apply review suggestions; repin ethermint to dadacd149b92 (develop merge) - move PreVerifierRegistry from app/ to app/mempool/ (thomas-nguy suggestion) - tighten preVerify field comment in manager.go - drop Decode-before-locking comment; add Register EVM module preverifier comment - remove two-line comment block before registry setup in app.go - bump ethermint replace to v0.22.1-0.20260630170128-dadacd149b92 (develop merge) --- app/app.go | 5 ++--- app/mempool/manager.go | 3 +-- app/{ => mempool}/preverify.go | 2 +- app/{ => mempool}/preverify_test.go | 2 +- go.mod | 2 +- go.sum | 2 ++ gomod2nix.toml | 4 ++-- 7 files changed, 10 insertions(+), 10 deletions(-) rename app/{ => mempool}/preverify.go (97%) rename app/{ => mempool}/preverify_test.go (98%) diff --git a/app/app.go b/app/app.go index 937b4f4b2c..8c74c5f154 100644 --- a/app/app.go +++ b/app/app.go @@ -558,9 +558,8 @@ func New( app.SetReapTxsHandler(cronosmempool.NewReapTxsHandler(mpool, txConfig.TxEncoder(), encCache, gossipTTL, txsPerBlock, logger.With("module", "app-mempool"))) manager := cronosmempool.NewManager(app, encCache, txConfig.TxEncoder(), mpool, signerExtractor, activeDecoder, txsPerBlock, ttlNumBlocks) - // Compose per-module admission pre-verifiers; the app owns the registry. - // SetPreVerify before InsertTxHandler so the handler snapshots the non-nil hook. - var preVerifiers PreVerifierRegistry + var preVerifiers cronosmempool.PreVerifierRegistry + // Register EVM module preverifier preVerifiers.Register(appmempool.NewEVMSigPreVerifier(chainId, activeDecoder)) manager.SetPreVerify(preVerifiers.Verify) app.SetInsertTxHandler(manager.InsertTxHandler()) diff --git a/app/mempool/manager.go b/app/mempool/manager.go index a56a581d27..e09b8e7d58 100644 --- a/app/mempool/manager.go +++ b/app/mempool/manager.go @@ -35,7 +35,7 @@ type Manager struct { encCache *EncoderCache txEncoder sdk.TxEncoder trace bool - // preVerify runs lock-free before the admission mutex; nil means skip. + // preVerify runs cheap verification lock-free before the tx admission mutex; set to nil for skip. preVerify func([]byte) error mpool sdkmempool.Mempool @@ -145,7 +145,6 @@ func (a *Manager) InsertTxHandler() sdk.InsertTxHandler { return &abci.ResponseInsertTx{Code: code}, nil } } - // Decode before locking: proto unmarshal is CPU-intensive. var tx sdk.Tx if a.encCache != nil { var err error diff --git a/app/preverify.go b/app/mempool/preverify.go similarity index 97% rename from app/preverify.go rename to app/mempool/preverify.go index dac124f9b1..59d97166c7 100644 --- a/app/preverify.go +++ b/app/mempool/preverify.go @@ -1,4 +1,4 @@ -package app +package mempool // PreVerifierRegistry collects lock-free admission pre-verifiers contributed by // modules. The app composes them and hands Verify to the mempool manager, which diff --git a/app/preverify_test.go b/app/mempool/preverify_test.go similarity index 98% rename from app/preverify_test.go rename to app/mempool/preverify_test.go index 5703031040..926c5db2c2 100644 --- a/app/preverify_test.go +++ b/app/mempool/preverify_test.go @@ -1,4 +1,4 @@ -package app +package mempool import ( "errors" diff --git a/go.mod b/go.mod index 1cddb04a62..097b1a3255 100644 --- a/go.mod +++ b/go.mod @@ -401,7 +401,7 @@ replace ( // release/v1.16 github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20260521015249-663dca6c618e // develop + appmempool refactor (#1016 EVM direct-insert, #1019 txpool, #1011 sig pre-verifier). - github.com/evmos/ethermint => github.com/crypto-org-chain/ethermint v0.22.1-0.20260629195132-ff87a62fb956 + github.com/evmos/ethermint => github.com/crypto-org-chain/ethermint v0.22.1-0.20260630170128-dadacd149b92 // Fix upstream GHSA-h395-qcrw-5vmq and GHSA-3vp4-m3rf-835h vulnerabilities. // TODO Remove it: https://github.com/cosmos/cosmos-sdk/issues/10409 github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.9.0 diff --git a/go.sum b/go.sum index d7526be3ff..dc962f4aaf 100644 --- a/go.sum +++ b/go.sum @@ -304,6 +304,8 @@ github.com/crypto-org-chain/cronos-store/versiondb v0.0.0-20260529153812-1f2f45e github.com/crypto-org-chain/cronos-store/versiondb v0.0.0-20260529153812-1f2f45ec5a3c/go.mod h1:AVLgSeljZFwhfVzbeeEu15ejtK2q2PLyqJsPKxbU05I= github.com/crypto-org-chain/ethermint v0.22.1-0.20260629195132-ff87a62fb956 h1:Vzg0KORnzwSdMSi2SBKquz4KKoDegriKBIHuvcxhID4= github.com/crypto-org-chain/ethermint v0.22.1-0.20260629195132-ff87a62fb956/go.mod h1:FcXgK9DUW2h3MB5lC3jdZBMQlF0+kpWfmZYTsAI8zk8= +github.com/crypto-org-chain/ethermint v0.22.1-0.20260630170128-dadacd149b92 h1:g0xqxxz1iiqnuTBTE6yZ5srSDkvoUhty0fNmQrBE8d8= +github.com/crypto-org-chain/ethermint v0.22.1-0.20260630170128-dadacd149b92/go.mod h1:FcXgK9DUW2h3MB5lC3jdZBMQlF0+kpWfmZYTsAI8zk8= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20260521015249-663dca6c618e h1:ftyRRWDiXKWsnp3PxLNbfVLzrqkx+aDNZdkPconawWk= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20260521015249-663dca6c618e/go.mod h1:Fs6QebQbavneQTYcA39PEKv2+zIjX7rPUZ14DER46wk= github.com/danieljoos/wincred v1.2.3 h1:v7dZC2x32Ut3nEfRH+vhoZGvN72+dQ/snVXo/vMFLdQ= diff --git a/gomod2nix.toml b/gomod2nix.toml index c0ad5db7e8..bfad208ceb 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -379,8 +379,8 @@ schema = 3 version = "v0.2.2" hash = "sha256-0MLfSJKdeK3Z7tWAXTdzwB4091dmyxIX38S5SKH5QAw=" [mod."github.com/evmos/ethermint"] - version = "v0.22.1-0.20260629195132-ff87a62fb956" - hash = "sha256-Uazew/v1QCnXpwzfULClBntN+o2q6TxHWp/7VM8qaBY=" + version = "v0.22.1-0.20260630170128-dadacd149b92" + hash = "sha256-gyCQXaYvUXOmupFj6+7KixSt6MvC73OzDVfQA81OEw0=" replaced = "github.com/crypto-org-chain/ethermint" [mod."github.com/fatih/color"] version = "v1.18.0" From 4dc1485d3cc63143690e635cb1494ca8108acd0b Mon Sep 17 00:00:00 2001 From: "jay.tseng" Date: Tue, 30 Jun 2026 14:53:58 -0400 Subject: [PATCH 18/19] refactor(mempool): inline a.preVerify in InsertTxHandler closure MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove the local snapshot `preVerify := a.preVerify` — SetPreVerify is called once at startup before InsertTxHandler runs, so reading a.preVerify directly inside the closure is correct and clearer. --- app/mempool/manager.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/mempool/manager.go b/app/mempool/manager.go index e09b8e7d58..fe6f540fbe 100644 --- a/app/mempool/manager.go +++ b/app/mempool/manager.go @@ -137,10 +137,9 @@ func (a *Manager) SetPreVerify(fn func([]byte) error) { // admitting them. Admitted txs register canonical bytes so ReapTxsHandler can // skip proto.Marshal; re-encoding keeps non-minimal peer bytes out of the cache. func (a *Manager) InsertTxHandler() sdk.InsertTxHandler { - preVerify := a.preVerify return func(req *abci.RequestInsertTx) (*abci.ResponseInsertTx, error) { - if preVerify != nil { - if err := preVerify(req.Tx); err != nil { + if a.preVerify != nil { + if err := a.preVerify(req.Tx); err != nil { _, code, _ := errorsmod.ABCIInfo(err, false) return &abci.ResponseInsertTx{Code: code}, nil } From 418e0958d3247f384192af559094f25d95d12523 Mon Sep 17 00:00:00 2001 From: "jay.tseng" Date: Thu, 2 Jul 2026 13:27:36 -0400 Subject: [PATCH 19/19] chore(deps): repin ethermint to a639532d (develop HEAD) --- go.mod | 2 +- go.sum | 6 ++---- gomod2nix.toml | 4 ++-- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 097b1a3255..5bc65d2917 100644 --- a/go.mod +++ b/go.mod @@ -401,7 +401,7 @@ replace ( // release/v1.16 github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20260521015249-663dca6c618e // develop + appmempool refactor (#1016 EVM direct-insert, #1019 txpool, #1011 sig pre-verifier). - github.com/evmos/ethermint => github.com/crypto-org-chain/ethermint v0.22.1-0.20260630170128-dadacd149b92 + github.com/evmos/ethermint => github.com/crypto-org-chain/ethermint v0.22.1-0.20260702171011-a639532d9759 // Fix upstream GHSA-h395-qcrw-5vmq and GHSA-3vp4-m3rf-835h vulnerabilities. // TODO Remove it: https://github.com/cosmos/cosmos-sdk/issues/10409 github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.9.0 diff --git a/go.sum b/go.sum index dc962f4aaf..b9d1e21cb1 100644 --- a/go.sum +++ b/go.sum @@ -302,10 +302,8 @@ github.com/crypto-org-chain/cronos-store/store v0.0.0-20260529153812-1f2f45ec5a3 github.com/crypto-org-chain/cronos-store/store v0.0.0-20260529153812-1f2f45ec5a3c/go.mod h1:eEPLLeFOhRINMGIQTDjXuahaDkQgfSUvHTzSuuEl4V0= github.com/crypto-org-chain/cronos-store/versiondb v0.0.0-20260529153812-1f2f45ec5a3c h1:oTFxyhmD5ax3Cec3L2XKu/rMDL2CdFLflS/7BPmjJzw= github.com/crypto-org-chain/cronos-store/versiondb v0.0.0-20260529153812-1f2f45ec5a3c/go.mod h1:AVLgSeljZFwhfVzbeeEu15ejtK2q2PLyqJsPKxbU05I= -github.com/crypto-org-chain/ethermint v0.22.1-0.20260629195132-ff87a62fb956 h1:Vzg0KORnzwSdMSi2SBKquz4KKoDegriKBIHuvcxhID4= -github.com/crypto-org-chain/ethermint v0.22.1-0.20260629195132-ff87a62fb956/go.mod h1:FcXgK9DUW2h3MB5lC3jdZBMQlF0+kpWfmZYTsAI8zk8= -github.com/crypto-org-chain/ethermint v0.22.1-0.20260630170128-dadacd149b92 h1:g0xqxxz1iiqnuTBTE6yZ5srSDkvoUhty0fNmQrBE8d8= -github.com/crypto-org-chain/ethermint v0.22.1-0.20260630170128-dadacd149b92/go.mod h1:FcXgK9DUW2h3MB5lC3jdZBMQlF0+kpWfmZYTsAI8zk8= +github.com/crypto-org-chain/ethermint v0.22.1-0.20260702171011-a639532d9759 h1:x/aKiIeNt9aMBkZehLI6DGl/8NYQer8DF4znu/gEUNQ= +github.com/crypto-org-chain/ethermint v0.22.1-0.20260702171011-a639532d9759/go.mod h1:FcXgK9DUW2h3MB5lC3jdZBMQlF0+kpWfmZYTsAI8zk8= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20260521015249-663dca6c618e h1:ftyRRWDiXKWsnp3PxLNbfVLzrqkx+aDNZdkPconawWk= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20260521015249-663dca6c618e/go.mod h1:Fs6QebQbavneQTYcA39PEKv2+zIjX7rPUZ14DER46wk= github.com/danieljoos/wincred v1.2.3 h1:v7dZC2x32Ut3nEfRH+vhoZGvN72+dQ/snVXo/vMFLdQ= diff --git a/gomod2nix.toml b/gomod2nix.toml index bfad208ceb..cdcfa52e28 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -379,8 +379,8 @@ schema = 3 version = "v0.2.2" hash = "sha256-0MLfSJKdeK3Z7tWAXTdzwB4091dmyxIX38S5SKH5QAw=" [mod."github.com/evmos/ethermint"] - version = "v0.22.1-0.20260630170128-dadacd149b92" - hash = "sha256-gyCQXaYvUXOmupFj6+7KixSt6MvC73OzDVfQA81OEw0=" + version = "v0.22.1-0.20260702171011-a639532d9759" + hash = "sha256-OpLfLlLQZ3H8H3/RmvU9B1CpWPYzUK5ipjCTGbc7W2I=" replaced = "github.com/crypto-org-chain/ethermint" [mod."github.com/fatih/color"] version = "v1.18.0"