Skip to content

Commit 73f1631

Browse files
committed
fix: staking optimization, add integration tests for staking cache
1 parent ae678b5 commit 73f1631

File tree

10 files changed

+1217
-57
lines changed

10 files changed

+1217
-57
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]
22+
tests: [unmarked, ibc, ibc_rly_evm, ibc_rly_gas, ibc_timeout, ibc_update_client, ica, gov, upgrade, slow, gas,staking]
2323
env:
2424
TESTS_TO_RUN: ${{ matrix.tests }}
2525
steps:

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
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
56
* [#1869](https://github.com/crypto-org-chain/cronos/pull/1869) Add missing tx context during vm initialisation
67
* [#1872](https://github.com/crypto-org-chain/cronos/pull/1872) Support 4byteTracer for tracer
78
* [#1875](https://github.com/crypto-org-chain/cronos/pull/1875) Support for preinstalls

app/app.go

Lines changed: 13 additions & 7 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,
@@ -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: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ 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.20250424063720-28ea58ae20d8
284+
github.com/cosmos/cosmos-sdk => github.com/randy-cro/cosmos-sdk v0.0.0-20251113072857-fbecd698368d
285285
)
286286

287287
replace (
@@ -303,7 +303,7 @@ replace (
303303
// release/v1.15
304304
github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20250815065500-a4fbafcae0dd
305305
// develop
306-
github.com/evmos/ethermint => github.com/crypto-org-chain/ethermint v0.22.1-0.20251007011737-164da0caf703
306+
github.com/evmos/ethermint => github.com/randy-cro/ethermint v0.0.0-20251113080751-200a3fa21286
307307
// Fix upstream GHSA-h395-qcrw-5vmq and GHSA-3vp4-m3rf-835h vulnerabilities.
308308
// TODO Remove it: https://github.com/cosmos/cosmos-sdk/issues/10409
309309
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,10 @@ 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.20250424063720-28ea58ae20d8 h1:Sif0pGNc4C384OLucyQ7P/+KjYiJ6uDn8Cf8wR7MI+c=
908-
github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20250424063720-28ea58ae20d8/go.mod h1:JwwsMeZldLN20b72mmbWPY0EV9rs+v/12hRu1JFttvY=
909907
github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241217090828-cfbca9fe8254 h1:NEgy0r3otU/O+0OAjMdEhbn4VotQlg+98hHbD7M23wU=
910908
github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241217090828-cfbca9fe8254/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM=
911909
github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241217090828-cfbca9fe8254 h1:JzLOFRiKsDtLJt5h0M0jkEIPDKvFFyja7VEp7gG6O9U=
912910
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=
915911
github.com/crypto-org-chain/go-block-stm v0.0.0-20241213061541-7afe924fb4a6 h1:6KPEi8dWkDSBddQb4NAvEXmNnTXymF3yVeTaT4Hz1iU=
916912
github.com/crypto-org-chain/go-block-stm v0.0.0-20241213061541-7afe924fb4a6/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE=
917913
github.com/crypto-org-chain/go-ethereum v1.10.20-0.20250815065500-a4fbafcae0dd h1:ebSnzvM9yKVGFjvoGly7LFQQCS2HuOWMCvQyByJ52Gs=
@@ -1501,8 +1497,8 @@ github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108
15011497
github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
15021498
github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc=
15031499
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=
1500+
github.com/onsi/ginkgo/v2 v2.27.2 h1:LzwLj0b89qtIy6SSASkzlNvX6WktqurSHwkk2ipF/Ns=
1501+
github.com/onsi/ginkgo/v2 v2.27.2/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo=
15061502
github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
15071503
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
15081504
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
@@ -1609,6 +1605,10 @@ github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O
16091605
github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
16101606
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
16111607
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
1608+
github.com/randy-cro/cosmos-sdk v0.0.0-20251113072857-fbecd698368d h1:e+tr4hox24RlHHgw/ssnoGxbyVyTpi2mpCot7nCima0=
1609+
github.com/randy-cro/cosmos-sdk v0.0.0-20251113072857-fbecd698368d/go.mod h1:8/AdT5lF3ILCCl/sDQXyBgzWGtcmD1tInWyhYeREVPA=
1610+
github.com/randy-cro/ethermint v0.0.0-20251113080751-200a3fa21286 h1:RVtWqr2eYcKBrUcvxVQJqJEsn8ZxksiHsBTY1PYOk20=
1611+
github.com/randy-cro/ethermint v0.0.0-20251113080751-200a3fa21286/go.mod h1:J48dha1E5/Bekfybp6uFD8Pyzb1Ug+JUOH7ygrpiYqQ=
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=
@@ -1807,8 +1807,6 @@ go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
18071807
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
18081808
go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
18091809
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
1810-
go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
1811-
go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
18121810
go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
18131811
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
18141812
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=

gomod2nix.toml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -213,9 +213,9 @@ 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.20250424063720-28ea58ae20d8"
217-
hash = "sha256-UCynFh2IangiNqQsgux4dKCk8wuF1vgoINQGA8N59QY="
218-
replaced = "github.com/crypto-org-chain/cosmos-sdk"
216+
version = "v0.0.0-20251113072857-fbecd698368d"
217+
hash = "sha256-OKm0aCROqIURMJ55nJ7LF6bdHK8XztoyoWwjl8AoFko="
218+
replaced = "github.com/randy-cro/cosmos-sdk"
219219
[mod."github.com/cosmos/go-bip39"]
220220
version = "v1.0.0"
221221
hash = "sha256-Qm2aC2vaS8tjtMUbHmlBSagOSqbduEEDwc51qvQaBmA="
@@ -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-20251113080751-200a3fa21286"
316+
hash = "sha256-Tx58Js/jQfjJSkPE78sUlqbqYZbPNn0kxWWAK3Kl7UM="
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)