Skip to content

Commit 6a9e900

Browse files
committed
fix: staking optimization, add integration tests for staking cache
1 parent 47a2ae0 commit 6a9e900

File tree

10 files changed

+1390
-58
lines changed

10 files changed

+1390
-58
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
timeout-minutes: 240
2020
strategy:
2121
matrix:
22-
tests: [unmarked, ibc, ibc_rly_evm, ibc_rly_gas, ibc_timeout, ibc_update_client, ica, gov, upgrade, slow, gas, mint]
22+
tests: [unmarked, ibc, ibc_rly_evm, ibc_rly_gas, ibc_timeout, ibc_update_client, ica, gov, upgrade, slow, gas, mint, staking]
2323
env:
2424
TESTS_TO_RUN: ${{ matrix.tests }}
2525
steps:

CHANGELOG.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,46 @@
22

33
## UNRELEASED
44

5+
* [#1907](https://github.com/crypto-org-chain/cronos/pull/1907) fix: Optimize staking endblocker with an in-memory KV store and standardize gas consumption for staking related messages
6+
7+
### Improvements
8+
9+
* [#1903](https://github.com/crypto-org-chain/cronos/pull/1903) Feat: check authorization list in e2ee.
10+
* [#1922](https://github.com/crypto-org-chain/cronos/pull/1922) Feat: check destination address in the blocklist
11+
* [#1904](https://github.com/crypto-org-chain/cronos/pull/1904) Test: add eip-7702 tests
12+
13+
### Bug fixes
14+
15+
* [#1918](https://github.com/crypto-org-chain/cronos/pull/1918) Chore: cleanup and improve x/mint params validation and test in cosmos-sdk
16+
17+
*Nov 30, 2025*
18+
19+
## v1.5.4
20+
21+
### Improvements
22+
23+
* [#1898](https://github.com/crypto-org-chain/cronos/pull/1898) Chore: cleanup release by reverting #1892, #1893 and #1850.
24+
* [#1901](https://github.com/crypto-org-chain/cronos/pull/1901) Feat: add mempool.feebump and disable-tx-replacement flags.
25+
* [#1911](https://github.com/crypto-org-chain/cronos/pull/1911) Fix: bug on multiple tx replacements
26+
27+
28+
*Oct 30, 2025*
29+
30+
## v1.5.3
31+
32+
### Bug fixes
33+
* [#1898](https://github.com/crypto-org-chain/cronos/pull/1898) Check authorisation list for blocklisted address.
34+
35+
## v1.5.2
36+
37+
* [#1892](https://github.com/crypto-org-chain/cronos/pull/1892) fix: disable memiavl cache when optimistic execution is enabled.
38+
* [#1893](https://github.com/crypto-org-chain/cronos/pull/1893) Normalize cache validator queue key to be UTC.
39+
* [#1850](https://github.com/crypto-org-chain/cronos/pull/1850) Optimize staking endblocker execution by caching queue entries from iterators. Upgrade RocksDB to `v10.4.2` and enable asyncIO.
40+
41+
*Oct 15, 2025*
42+
43+
## v1.5.1
44+
545
* [#1869](https://github.com/crypto-org-chain/cronos/pull/1869) Add missing tx context during vm initialisation
646
* [#1872](https://github.com/crypto-org-chain/cronos/pull/1872) Support 4byteTracer for tracer
747
* [#1875](https://github.com/crypto-org-chain/cronos/pull/1875) Support for preinstalls

app/app.go

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ func StoreKeys() (
229229
map[string]*storetypes.KVStoreKey,
230230
map[string]*storetypes.TransientStoreKey,
231231
map[string]*storetypes.ObjectStoreKey,
232+
map[string]*storetypes.MemoryStoreKey,
232233
) {
233234
storeKeys := []string{
234235
authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey,
@@ -250,9 +251,10 @@ func StoreKeys() (
250251
}
251252
keys := storetypes.NewKVStoreKeys(storeKeys...)
252253
tkeys := storetypes.NewTransientStoreKeys(paramstypes.TStoreKey)
254+
memKeys := storetypes.NewMemoryStoreKeys(stakingtypes.CacheStoreKey, cronostypes.MemStoreKey)
253255
okeys := storetypes.NewObjectStoreKeys(banktypes.ObjectStoreKey, evmtypes.ObjectStoreKey)
254256

255-
return keys, tkeys, okeys
257+
return keys, tkeys, okeys, memKeys
256258
}
257259

258260
var (
@@ -280,10 +282,10 @@ type App struct {
280282
pendingTxListeners []evmante.PendingTxListener
281283

282284
// keys to access the substores
283-
keys map[string]*storetypes.KVStoreKey
284-
tkeys map[string]*storetypes.TransientStoreKey
285-
okeys map[string]*storetypes.ObjectStoreKey
286-
285+
keys map[string]*storetypes.KVStoreKey
286+
tkeys map[string]*storetypes.TransientStoreKey
287+
okeys map[string]*storetypes.ObjectStoreKey
288+
memKeys map[string]*storetypes.MemoryStoreKey
287289
// keepers
288290
AccountKeeper authkeeper.AccountKeeper
289291
BankKeeper bankkeeper.Keeper
@@ -429,7 +431,7 @@ func New(
429431
bApp.SetInterfaceRegistry(interfaceRegistry)
430432
bApp.SetTxEncoder(txConfig.TxEncoder())
431433

432-
keys, tkeys, okeys := StoreKeys()
434+
keys, tkeys, okeys, memKeys := StoreKeys()
433435

434436
invCheckPeriod := cast.ToUint(appOpts.Get(server.FlagInvCheckPeriod))
435437
app := &App{
@@ -443,6 +445,7 @@ func New(
443445
keys: keys,
444446
tkeys: tkeys,
445447
okeys: okeys,
448+
memKeys: memKeys,
446449
blockProposalHandler: blockProposalHandler,
447450
dummyCheckTx: cast.ToBool(appOpts.Get(FlagUnsafeDummyCheckTx)),
448451
}
@@ -498,14 +501,17 @@ func New(
498501
panic(err)
499502
}
500503
app.txConfig = txConfig
504+
stakingCacheSize := cast.ToInt(appOpts.Get(server.FlagStakingCacheSize))
501505
app.StakingKeeper = stakingkeeper.NewKeeper(
502506
appCodec,
503507
runtime.NewKVStoreService(keys[stakingtypes.StoreKey]),
508+
runtime.NewMemStoreService(memKeys[stakingtypes.CacheStoreKey]),
504509
app.AccountKeeper,
505510
app.BankKeeper,
506511
authAddr,
507512
address.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix()),
508513
address.NewBech32Codec(sdk.GetConfig().GetBech32ConsensusAddrPrefix()),
514+
stakingCacheSize,
509515
)
510516
app.MintKeeper = mintkeeper.NewKeeper(
511517
appCodec,
@@ -648,7 +654,7 @@ func New(
648654
app.CronosKeeper = *cronoskeeper.NewKeeper(
649655
appCodec,
650656
keys[cronostypes.StoreKey],
651-
keys[cronostypes.MemStoreKey],
657+
memKeys[cronostypes.MemStoreKey],
652658
app.BankKeeper,
653659
app.TransferKeeper,
654660
app.EvmKeeper,
@@ -957,7 +963,7 @@ func New(
957963
app.MountKVStores(keys)
958964
app.MountTransientStores(tkeys)
959965
app.MountObjectStores(okeys)
960-
966+
app.MountMemoryStores(memKeys)
961967
// initialize BaseApp
962968
app.SetInitChainer(app.InitChainer)
963969
app.SetPreBlocker(app.PreBlocker)

cmd/cronosd/cmd/versiondb.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
)
1414

1515
func ChangeSetCmd() *cobra.Command {
16-
keys, _, _ := app.StoreKeys()
16+
keys, _, _, _ := app.StoreKeys()
1717
storeNames := make([]string, 0, len(keys))
1818
for name := range keys {
1919
storeNames = append(storeNames, name)

go.mod

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,8 @@ require (
281281
replace (
282282
cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241217090828-cfbca9fe8254
283283
cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241217090828-cfbca9fe8254
284-
github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20251119062431-8d0a31ef043d
284+
// release/v0.50-cronosv1.6.x
285+
github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.0.0-20251121110054-d5e74b9954c1
285286
)
286287

287288
replace (
@@ -302,8 +303,8 @@ replace (
302303
github.com/dgrijalva/jwt-go => github.com/golang-jwt/jwt/v4 v4.4.2
303304
// release/v1.15
304305
github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20250815065500-a4fbafcae0dd
305-
// develop
306-
github.com/evmos/ethermint => github.com/crypto-org-chain/ethermint v0.22.1-0.20251007011737-164da0caf703
306+
// release/v0.22.x-cronosv1.6-optstaking
307+
github.com/evmos/ethermint => github.com/randy-cro/ethermint v0.0.0-20251124083925-2498a0823d85
307308
// Fix upstream GHSA-h395-qcrw-5vmq and GHSA-3vp4-m3rf-835h vulnerabilities.
308309
// TODO Remove it: https://github.com/cosmos/cosmos-sdk/issues/10409
309310
github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.9.0

go.sum

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -904,14 +904,12 @@ github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c h1:MOgfS4+F
904904
github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY=
905905
github.com/crypto-org-chain/cometbft v0.0.0-20251014161156-b0e778b18408 h1:7dfWkDRYCsguKrpd0t14nrZ3Xf/9aVHiQrWx5o0DCdo=
906906
github.com/crypto-org-chain/cometbft v0.0.0-20251014161156-b0e778b18408/go.mod h1:khbgmtxbgwJfMqDmnGY4rl2sQpTdzpPb1f9nqnfpy1o=
907-
github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20251119062431-8d0a31ef043d h1:ffzsdKbhbSSBIMBAGJGjezjEr60A/JgpznOJhMUMbfE=
908-
github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20251119062431-8d0a31ef043d/go.mod h1:8/AdT5lF3ILCCl/sDQXyBgzWGtcmD1tInWyhYeREVPA=
907+
github.com/crypto-org-chain/cosmos-sdk v0.0.0-20251121110054-d5e74b9954c1 h1:4aMpMx19bBo0vXDLx9jBtBW/BvWyOVW5SN4ciC7WhDc=
908+
github.com/crypto-org-chain/cosmos-sdk v0.0.0-20251121110054-d5e74b9954c1/go.mod h1:8/AdT5lF3ILCCl/sDQXyBgzWGtcmD1tInWyhYeREVPA=
909909
github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241217090828-cfbca9fe8254 h1:NEgy0r3otU/O+0OAjMdEhbn4VotQlg+98hHbD7M23wU=
910910
github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241217090828-cfbca9fe8254/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM=
911911
github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241217090828-cfbca9fe8254 h1:JzLOFRiKsDtLJt5h0M0jkEIPDKvFFyja7VEp7gG6O9U=
912912
github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241217090828-cfbca9fe8254/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w=
913-
github.com/crypto-org-chain/ethermint v0.22.1-0.20251007011737-164da0caf703 h1:O0DF++IbEl5TAknuXtAcxFTocZ8zO8DlZRUMIo9HnLA=
914-
github.com/crypto-org-chain/ethermint v0.22.1-0.20251007011737-164da0caf703/go.mod h1:GVopiVE4ftDRfAm3e6qj7URhNTa3Tv3JrCbfO/s8P/I=
915913
github.com/crypto-org-chain/go-block-stm v0.0.0-20241213061541-7afe924fb4a6 h1:6KPEi8dWkDSBddQb4NAvEXmNnTXymF3yVeTaT4Hz1iU=
916914
github.com/crypto-org-chain/go-block-stm v0.0.0-20241213061541-7afe924fb4a6/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE=
917915
github.com/crypto-org-chain/go-ethereum v1.10.20-0.20250815065500-a4fbafcae0dd h1:ebSnzvM9yKVGFjvoGly7LFQQCS2HuOWMCvQyByJ52Gs=
@@ -1501,8 +1499,8 @@ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108
15011499
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
15021500
github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc=
15031501
github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
1504-
github.com/onsi/ginkgo/v2 v2.26.0 h1:1J4Wut1IlYZNEAWIV3ALrT9NfiaGW2cDCJQSFQMs/gE=
1505-
github.com/onsi/ginkgo/v2 v2.26.0/go.mod h1:qhEywmzWTBUY88kfO0BRvX4py7scov9yR+Az2oavUzw=
1502+
github.com/onsi/ginkgo/v2 v2.25.1 h1:Fwp6crTREKM+oA6Cz4MsO8RhKQzs2/gOIVOUscMAfZY=
1503+
github.com/onsi/ginkgo/v2 v2.25.1/go.mod h1:ppTWQ1dh9KM/F1XgpeRqelR+zHVwV81DGRSDnFxK7Sk=
15061504
github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
15071505
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
15081506
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
@@ -1609,6 +1607,8 @@ github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O
16091607
github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
16101608
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
16111609
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
1610+
github.com/randy-cro/ethermint v0.0.0-20251124083925-2498a0823d85 h1:IxR32nGsmfw42KHyJso2aK5ArxtNinTESMOVeL1LpQQ=
1611+
github.com/randy-cro/ethermint v0.0.0-20251124083925-2498a0823d85/go.mod h1:/E17R2sdjWWygJJP+ZSh3CkfJD2U8Z4HbA85iObApoc=
16121612
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
16131613
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM=
16141614
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
@@ -1912,8 +1912,6 @@ golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
19121912
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
19131913
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
19141914
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
1915-
golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ=
1916-
golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc=
19171915
golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
19181916
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
19191917
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=

gomod2nix.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -213,8 +213,8 @@ schema = 3
213213
version = "v1.0.0-beta.5"
214214
hash = "sha256-Fy/PbsOsd6iq0Njy3DVWK6HqWsogI+MkE8QslHGWyVg="
215215
[mod."github.com/cosmos/cosmos-sdk"]
216-
version = "v0.50.6-0.20251119062431-8d0a31ef043d"
217-
hash = "sha256-VxQus9ynUK8nAZh3ubNXRcxJsITzgndjd7UYYgMt6C0="
216+
version = "v0.0.0-20251121110054-d5e74b9954c1"
217+
hash = "sha256-XzBX/BIFpKZWMBqyGML0RpSBHMnQu1QVY9+dMi85mws="
218218
replaced = "github.com/crypto-org-chain/cosmos-sdk"
219219
[mod."github.com/cosmos/go-bip39"]
220220
version = "v1.0.0"
@@ -312,9 +312,9 @@ schema = 3
312312
version = "v0.2.2"
313313
hash = "sha256-0MLfSJKdeK3Z7tWAXTdzwB4091dmyxIX38S5SKH5QAw="
314314
[mod."github.com/evmos/ethermint"]
315-
version = "v0.22.1-0.20251007011737-164da0caf703"
316-
hash = "sha256-lWvRrVuhssOIMCv07iXwJLfN2gFRgsbK8HBiqMBTMew="
317-
replaced = "github.com/crypto-org-chain/ethermint"
315+
version = "v0.0.0-20251124083925-2498a0823d85"
316+
hash = "sha256-4C9kaSpyzHGtM1mY5UC6HiWpZZDoG2P/2vNQ/zO9bzc="
317+
replaced = "github.com/randy-cro/ethermint"
318318
[mod."github.com/fatih/color"]
319319
version = "v1.17.0"
320320
hash = "sha256-QsKMy3MsvjbYNcA9jP8w6c3wpmWDZ0079bybAEzmXR0="

0 commit comments

Comments
 (0)