From c5af7a7921ad092b7f995e0775c924fdc158d7e3 Mon Sep 17 00:00:00 2001 From: Randy Ang Date: Thu, 6 Nov 2025 18:10:53 +0800 Subject: [PATCH 1/2] fix: staking optimization, add integration tests for staking cache --- .github/workflows/test.yml | 2 +- CHANGELOG.md | 2 + app/app.go | 22 +- cmd/cronosd/cmd/versiondb.go | 2 +- go.mod | 42 +- go.sum | 83 +- gomod2nix.toml | 83 +- .../configs/staking_cache.jsonnet | 270 +++++ integration_tests/cosmoscli.py | 104 +- integration_tests/test_staking_cache.py | 977 ++++++++++++++++++ 10 files changed, 1432 insertions(+), 155 deletions(-) create mode 100644 integration_tests/configs/staking_cache.jsonnet create mode 100644 integration_tests/test_staking_cache.py diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7886a368ce..9632964761 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,7 +19,7 @@ jobs: timeout-minutes: 240 strategy: matrix: - tests: [unmarked, ibc, ibc_rly_evm, ibc_rly_gas, ibc_timeout, ibc_update_client, ica, gov, upgrade, slow, gas, mint] + tests: [unmarked, ibc, ibc_rly_evm, ibc_rly_gas, ibc_timeout, ibc_update_client, ica, gov, upgrade, slow, gas, mint, staking] env: TESTS_TO_RUN: ${{ matrix.tests }} steps: diff --git a/CHANGELOG.md b/CHANGELOG.md index d40ea9c8b2..a4bfb13d89 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## UNRELEASED +* [#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 + ### Improvements * [#1903](https://github.com/crypto-org-chain/cronos/pull/1903) Feat: check authorization list in e2ee. diff --git a/app/app.go b/app/app.go index c5387bbacf..98bcd0ef9d 100644 --- a/app/app.go +++ b/app/app.go @@ -234,6 +234,7 @@ func StoreKeys() ( map[string]*storetypes.KVStoreKey, map[string]*storetypes.TransientStoreKey, map[string]*storetypes.ObjectStoreKey, + map[string]*storetypes.MemoryStoreKey, ) { storeKeys := []string{ authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey, @@ -255,9 +256,10 @@ func StoreKeys() ( } keys := storetypes.NewKVStoreKeys(storeKeys...) tkeys := storetypes.NewTransientStoreKeys(paramstypes.TStoreKey) + memKeys := storetypes.NewMemoryStoreKeys(stakingtypes.CacheStoreKey, cronostypes.MemStoreKey) okeys := storetypes.NewObjectStoreKeys(banktypes.ObjectStoreKey, evmtypes.ObjectStoreKey) - return keys, tkeys, okeys + return keys, tkeys, okeys, memKeys } var ( @@ -285,10 +287,10 @@ type App struct { pendingTxListeners []evmante.PendingTxListener // keys to access the substores - keys map[string]*storetypes.KVStoreKey - tkeys map[string]*storetypes.TransientStoreKey - okeys map[string]*storetypes.ObjectStoreKey - + keys map[string]*storetypes.KVStoreKey + tkeys map[string]*storetypes.TransientStoreKey + okeys map[string]*storetypes.ObjectStoreKey + memKeys map[string]*storetypes.MemoryStoreKey // keepers AccountKeeper authkeeper.AccountKeeper BankKeeper bankkeeper.Keeper @@ -447,7 +449,7 @@ func New( bApp.SetInterfaceRegistry(interfaceRegistry) bApp.SetTxEncoder(txConfig.TxEncoder()) - keys, tkeys, okeys := StoreKeys() + keys, tkeys, okeys, memKeys := StoreKeys() invCheckPeriod := cast.ToUint(appOpts.Get(server.FlagInvCheckPeriod)) app := &App{ @@ -461,6 +463,7 @@ func New( keys: keys, tkeys: tkeys, okeys: okeys, + memKeys: memKeys, blockProposalHandler: blockProposalHandler, dummyCheckTx: cast.ToBool(appOpts.Get(FlagUnsafeDummyCheckTx)), } @@ -516,14 +519,17 @@ func New( panic(err) } app.txConfig = txConfig + stakingCacheSize := cast.ToInt(appOpts.Get(server.FlagStakingCacheSize)) app.StakingKeeper = stakingkeeper.NewKeeper( appCodec, runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), + runtime.NewMemStoreService(memKeys[stakingtypes.CacheStoreKey]), app.AccountKeeper, app.BankKeeper, authAddr, address.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix()), address.NewBech32Codec(sdk.GetConfig().GetBech32ConsensusAddrPrefix()), + stakingCacheSize, ) app.MintKeeper = mintkeeper.NewKeeper( appCodec, @@ -666,7 +672,7 @@ func New( app.CronosKeeper = *cronoskeeper.NewKeeper( appCodec, keys[cronostypes.StoreKey], - keys[cronostypes.MemStoreKey], + memKeys[cronostypes.MemStoreKey], app.BankKeeper, app.TransferKeeper, app.EvmKeeper, @@ -975,7 +981,7 @@ func New( app.MountKVStores(keys) app.MountTransientStores(tkeys) app.MountObjectStores(okeys) - + app.MountMemoryStores(memKeys) // initialize BaseApp app.SetInitChainer(app.InitChainer) app.SetPreBlocker(app.PreBlocker) diff --git a/cmd/cronosd/cmd/versiondb.go b/cmd/cronosd/cmd/versiondb.go index 490e1be566..30639f522d 100644 --- a/cmd/cronosd/cmd/versiondb.go +++ b/cmd/cronosd/cmd/versiondb.go @@ -14,7 +14,7 @@ import ( ) func ChangeSetCmd() *cobra.Command { - keys, _, _ := app.StoreKeys() + keys, _, _, _ := app.StoreKeys() storeNames := make([]string, 0, len(keys)) for name := range keys { storeNames = append(storeNames, name) diff --git a/go.mod b/go.mod index 0227196c71..cb1edc3bad 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/cosmos/cosmos-db v1.1.3 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.53.0 - github.com/cosmos/gogoproto v1.7.0 + github.com/cosmos/gogoproto v1.7.2 // release/v10.0.x github.com/cosmos/ibc-go/v10 v10.1.1 github.com/cosmos/rosetta v0.50.12 @@ -34,15 +34,15 @@ require ( github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/hashicorp/go-metrics v0.5.4 github.com/linxGnu/grocksdb v1.10.2 - github.com/spf13/cast v1.9.2 + github.com/spf13/cast v1.10.0 github.com/spf13/cobra v1.9.1 - github.com/spf13/pflag v1.0.6 - github.com/spf13/viper v1.20.1 + github.com/spf13/pflag v1.0.10 + github.com/spf13/viper v1.21.0 github.com/stretchr/testify v1.11.1 golang.org/x/crypto v0.41.0 google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 - google.golang.org/grpc v1.75.0 - google.golang.org/protobuf v1.36.8 + google.golang.org/grpc v1.75.1 + google.golang.org/protobuf v1.36.10 gopkg.in/yaml.v2 v2.4.0 ) @@ -77,8 +77,8 @@ require ( github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.2.0 // indirect github.com/bits-and-blooms/bitset v1.22.0 // indirect - github.com/btcsuite/btcd v0.24.2 // indirect - github.com/btcsuite/btcd/btcec/v2 v2.3.4 // 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/chaincfg/chainhash v1.1.0 // indirect github.com/bytedance/sonic v1.14.0 // indirect @@ -97,8 +97,7 @@ require ( github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/coinbase/rosetta-sdk-go/types v1.0.0 // indirect github.com/cometbft/cometbft-db v0.15.0 // indirect - github.com/consensys/bavard v0.1.27 // indirect - github.com/consensys/gnark-crypto v0.16.0 // indirect + github.com/consensys/gnark-crypto v0.18.1 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect @@ -196,7 +195,6 @@ require ( github.com/minio/highwayhash v1.0.3 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/mmcloughlin/addchain v0.4.0 // indirect github.com/mtibben/percent v0.2.1 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect @@ -221,11 +219,11 @@ require ( github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/rs/cors v1.11.1 // indirect github.com/rs/zerolog v1.34.0 // indirect - github.com/sagikazarmark/locafero v0.7.0 // indirect + github.com/sagikazarmark/locafero v0.11.0 // indirect github.com/sasha-s/go-deadlock v0.3.5 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect - github.com/sourcegraph/conc v0.3.0 // indirect - github.com/spf13/afero v1.12.0 // indirect + github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect + github.com/spf13/afero v1.15.0 // indirect github.com/spiffe/go-spiffe/v2 v2.5.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/supranational/blst v0.3.14 // indirect @@ -234,7 +232,7 @@ require ( github.com/tidwall/btree v1.7.0 // indirect github.com/tidwall/gjson v1.18.0 // indirect github.com/tidwall/match v1.1.1 // indirect - github.com/tidwall/pretty v1.2.0 // indirect + github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect github.com/tidwall/tinylru v1.1.0 // indirect github.com/tidwall/wal v1.1.7 // indirect @@ -242,7 +240,7 @@ require ( github.com/tklauser/numcpus v0.6.1 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/tyler-smith/go-bip39 v1.1.0 // indirect - github.com/ulikunitz/xz v0.5.14 // indirect + github.com/ulikunitz/xz v0.5.15 // indirect github.com/zbiljic/go-filelock v0.0.0-20170914061330-1dbf7103ab7d // indirect github.com/zeebo/errs v1.4.0 // indirect github.com/zondax/hid v0.9.2 // indirect @@ -258,8 +256,8 @@ require ( go.opentelemetry.io/otel/sdk v1.37.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect go.opentelemetry.io/otel/trace v1.37.0 // indirect - go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/arch v0.17.0 // indirect golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect golang.org/x/net v0.43.0 // indirect @@ -271,12 +269,11 @@ require ( golang.org/x/time v0.10.0 // indirect google.golang.org/api v0.222.0 // indirect google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.2 // indirect nhooyr.io/websocket v1.8.11 // indirect pgregory.net/rapid v1.2.0 // indirect - rsc.io/tmplfunc v0.0.3 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) @@ -284,7 +281,8 @@ replace ( // release/v0.50.x cosmossdk.io/store => github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241217090828-cfbca9fe8254 cosmossdk.io/x/tx => github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241217090828-cfbca9fe8254 - github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20251119062431-8d0a31ef043d + // release/v0.50-cronosv1.6.x + github.com/cosmos/cosmos-sdk => github.com/crypto-org-chain/cosmos-sdk v0.0.0-20251121110054-d5e74b9954c1 ) replace ( @@ -305,8 +303,8 @@ replace ( github.com/dgrijalva/jwt-go => github.com/golang-jwt/jwt/v4 v4.4.2 // release/v1.15 github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20250815065500-a4fbafcae0dd - // release/v0.22.x - github.com/evmos/ethermint => github.com/crypto-org-chain/ethermint v0.22.1-0.20251105021702-154426496ecd + // develop + github.com/evmos/ethermint => github.com/randy-cro/ethermint v0.0.0-20251121082919-46c057ac4dde // 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 72679e0359..cda08004e6 100644 --- a/go.sum +++ b/go.sum @@ -744,12 +744,13 @@ github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl 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 h1:aLmxPguqxza+4ag8R1I2nnJjSu2iFn/kqtHTIImswcY= 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.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= -github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +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= @@ -850,10 +851,8 @@ github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONN github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= github.com/cometbft/cometbft-db v0.15.0 h1:VLtsRt8udD4jHCyjvrsTBpgz83qne5hnL245AcPJVRk= github.com/cometbft/cometbft-db v0.15.0/go.mod h1:EBrFs1GDRiTqrWXYi4v90Awf/gcdD5ExzdPbg4X8+mk= -github.com/consensys/bavard v0.1.27 h1:j6hKUrGAy/H+gpNrpLU3I26n1yc+VMGmd6ID5+gAhOs= -github.com/consensys/bavard v0.1.27/go.mod h1:k/zVjHHC4B+PQy1Pg7fgvG3ALicQw540Crag8qx+dZs= -github.com/consensys/gnark-crypto v0.16.0 h1:8Dl4eYmUWK9WmlP1Bj6je688gBRJCJbT8Mw4KoTAawo= -github.com/consensys/gnark-crypto v0.16.0/go.mod h1:Ke3j06ndtPTVvo++PhGNgvm+lgpLvzbcE2MqljY7diU= +github.com/consensys/gnark-crypto v0.18.1 h1:RyLV6UhPRoYYzaFnPQA4qK3DyuDgkTgskDdoGqFt3fI= +github.com/consensys/gnark-crypto v0.18.1/go.mod h1:L3mXGFTe1ZN+RSJ+CLjUt9x7PNdx8ubaYfDROyp2Z8c= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -871,8 +870,8 @@ github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4x github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro= -github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0= +github.com/cosmos/gogoproto v1.7.2 h1:5G25McIraOC0mRFv9TVO139Uh3OklV2hczr13KKVHCA= +github.com/cosmos/gogoproto v1.7.2/go.mod h1:8S7w53P1Y1cHwND64o0BnArT6RmdgIvsBuco6uTllsk= github.com/cosmos/iavl v1.2.6 h1:Hs3LndJbkIB+rEvToKJFXZvKo6Vy0Ex1SJ54hhtioIs= github.com/cosmos/iavl v1.2.6/go.mod h1:GiM43q0pB+uG53mLxLDzimxM9l/5N9UuSY3/D0huuVw= github.com/cosmos/ibc-go/v10 v10.1.1 h1:Mtl0Ydr9dVdOrPqmxCAG49RmX2/VDYeKYdwv3G2y0g8= @@ -906,14 +905,12 @@ github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c h1:MOgfS4+F github.com/crypto-org-chain/btree v0.0.0-20240406140148-2687063b042c/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= github.com/crypto-org-chain/cometbft v0.0.0-20251014161156-b0e778b18408 h1:7dfWkDRYCsguKrpd0t14nrZ3Xf/9aVHiQrWx5o0DCdo= github.com/crypto-org-chain/cometbft v0.0.0-20251014161156-b0e778b18408/go.mod h1:khbgmtxbgwJfMqDmnGY4rl2sQpTdzpPb1f9nqnfpy1o= -github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20251119062431-8d0a31ef043d h1:ffzsdKbhbSSBIMBAGJGjezjEr60A/JgpznOJhMUMbfE= -github.com/crypto-org-chain/cosmos-sdk v0.50.6-0.20251119062431-8d0a31ef043d/go.mod h1:8/AdT5lF3ILCCl/sDQXyBgzWGtcmD1tInWyhYeREVPA= +github.com/crypto-org-chain/cosmos-sdk v0.0.0-20251121110054-d5e74b9954c1 h1:4aMpMx19bBo0vXDLx9jBtBW/BvWyOVW5SN4ciC7WhDc= +github.com/crypto-org-chain/cosmos-sdk v0.0.0-20251121110054-d5e74b9954c1/go.mod h1:8/AdT5lF3ILCCl/sDQXyBgzWGtcmD1tInWyhYeREVPA= github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241217090828-cfbca9fe8254 h1:NEgy0r3otU/O+0OAjMdEhbn4VotQlg+98hHbD7M23wU= github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241217090828-cfbca9fe8254/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241217090828-cfbca9fe8254 h1:JzLOFRiKsDtLJt5h0M0jkEIPDKvFFyja7VEp7gG6O9U= github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241217090828-cfbca9fe8254/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= -github.com/crypto-org-chain/ethermint v0.22.1-0.20251105021702-154426496ecd h1:R6G28wQwmbjLhtTp6qJQk8vRSk65b2LaA237hkrMpWo= -github.com/crypto-org-chain/ethermint v0.22.1-0.20251105021702-154426496ecd/go.mod h1:StA36YNgLruMKlg6FG+fUie0+k3hQS8dapZJzl+CPI4= github.com/crypto-org-chain/go-block-stm v0.0.0-20241213061541-7afe924fb4a6 h1:6KPEi8dWkDSBddQb4NAvEXmNnTXymF3yVeTaT4Hz1iU= github.com/crypto-org-chain/go-block-stm v0.0.0-20241213061541-7afe924fb4a6/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20250815065500-a4fbafcae0dd h1:ebSnzvM9yKVGFjvoGly7LFQQCS2HuOWMCvQyByJ52Gs= @@ -1203,7 +1200,6 @@ github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC 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= -github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -1465,9 +1461,6 @@ github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyua github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= -github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= -github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= -github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= @@ -1507,8 +1500,8 @@ 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.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo/v2 v2.25.1 h1:Fwp6crTREKM+oA6Cz4MsO8RhKQzs2/gOIVOUscMAfZY= -github.com/onsi/ginkgo/v2 v2.25.1/go.mod h1:ppTWQ1dh9KM/F1XgpeRqelR+zHVwV81DGRSDnFxK7Sk= +github.com/onsi/ginkgo/v2 v2.27.2 h1:LzwLj0b89qtIy6SSASkzlNvX6WktqurSHwkk2ipF/Ns= +github.com/onsi/ginkgo/v2 v2.27.2/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= 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= @@ -1615,6 +1608,8 @@ github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/randy-cro/ethermint v0.0.0-20251121082919-46c057ac4dde h1:6aXJ2U+NOAAaetAuPJ9ixLCtByn+hqC/MwnnafrpjUQ= +github.com/randy-cro/ethermint v0.0.0-20251121082919-46c057ac4dde/go.mod h1:ZLSoAlnXOn5fiK1+BZSEi7xeuXU5W2SSEU1UeGVNwgY= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= @@ -1641,8 +1636,8 @@ github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo= -github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k= +github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc= +github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU= github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U= @@ -1660,25 +1655,26 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1 github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= -github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= +github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw= +github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= -github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= -github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= -github.com/spf13/cast v1.9.2 h1:SsGfm7M8QOFtEzumm7UZrZdLLquNdzFYfIbEXntcFbE= -github.com/spf13/cast v1.9.2/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= +github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I= +github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= +github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= +github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4= -github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU= +github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY= github.com/spiffe/go-spiffe/v2 v2.5.0 h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE= github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= github.com/status-im/keycard-go v0.3.3 h1:qk/JHSkT9sMka+lVXrTOIVSgHIY7lDm46wrUqTsNa4s= @@ -1722,8 +1718,9 @@ github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= 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 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/tidwall/tinylru v1.1.0 h1:XY6IUfzVTU9rpwdhKUF6nQdChgCdGjkMfLzbWyiau6I= @@ -1742,8 +1739,8 @@ github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2n github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/ugorji/go/codec v1.2.9/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/ulikunitz/xz v0.5.14 h1:uv/0Bq533iFdnMHZdRBTOlaNMdb1+ZxXIlHDZHIHcvg= -github.com/ulikunitz/xz v0.5.14/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/ulikunitz/xz v0.5.15 h1:9DNdB5s+SgV3bQ2ApL10xRc35ck0DuIX/isZvIk+ubY= +github.com/ulikunitz/xz v0.5.15/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= @@ -1811,16 +1808,12 @@ go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= -go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= -go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= @@ -1918,6 +1911,8 @@ golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= +golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= 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= @@ -2518,8 +2513,8 @@ google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD google.golang.org/genproto v0.0.0-20241118233622-e639e219e697/go.mod h1:JJrvXBWRZaFMxBufik1a4RpFw4HhgVtBBWQeQgUj2cc= google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 h1:FiusG7LWj+4byqhbvmB+Q93B/mOxJLN2DTozDuZm4EU= google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b h1:zPKJod4w6F1+nRGDI9ubnXYhU9NSWoFAijkHkUXeTK8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -2567,8 +2562,8 @@ google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5v google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= +google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -2588,8 +2583,8 @@ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -2677,8 +2672,6 @@ rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8 rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= -rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/gomod2nix.toml b/gomod2nix.toml index 239b25a079..f9fdf341ec 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -137,11 +137,11 @@ schema = 3 version = "v1.22.0" hash = "sha256-lY1K29h4vlAmJVvwKgbTG8BTACYGjFaginCszN+ST6w=" [mod."github.com/btcsuite/btcd"] - version = "v0.24.2" - hash = "sha256-ahlpwEr4KfyrEA899X07QtuSDnC8U+SnwL+z72DiK5E=" + version = "v0.25.0" + hash = "sha256-Yh3UJ8HmzY+5WXZHhcl3oFcXl2PkBTd4O4s8FYyNbos=" [mod."github.com/btcsuite/btcd/btcec/v2"] - version = "v2.3.4" - hash = "sha256-9fV41jYeTUrpoyu19LPuGBG/N9wFv6D6wVBE8R5WzRI=" + version = "v2.3.5" + hash = "sha256-stpoaGQ1PNPqtLYIQc96YH24s8owcV+PoSo6xREi9LI=" [mod."github.com/btcsuite/btcd/btcutil"] version = "v1.1.6" hash = "sha256-TYbwJLNX/+63nm+b3RqPH3ZIvTBnsm9peqJP05v9Z90=" @@ -200,12 +200,9 @@ schema = 3 [mod."github.com/cometbft/cometbft-db"] version = "v0.15.0" hash = "sha256-hNtUoPsgrsc9MhU7AONKMOB6k4bEbg757BSXVp7G5EA=" - [mod."github.com/consensys/bavard"] - version = "v0.1.27" - hash = "sha256-qRbdMAIcsg/2RCkmyfUtsFc/R99n50epZtTjX6QaWac=" [mod."github.com/consensys/gnark-crypto"] - version = "v0.16.0" - hash = "sha256-Yq7cCmfiNdnX5Vl0oW9/wioxi9hOkXBWCB4pvHu4/fw=" + version = "v0.18.1" + hash = "sha256-8NFI8oeqRkMBnKdGUpGZfwt3gr4nmzmE3yoasQ3zZkg=" [mod."github.com/cosmos/btcutil"] version = "v1.0.5" hash = "sha256-t572Sr5iiHcuMKLMWa2i+LBAt192oa+G1oA371tG/eI=" @@ -216,8 +213,8 @@ schema = 3 version = "v1.0.0-beta.5" hash = "sha256-Fy/PbsOsd6iq0Njy3DVWK6HqWsogI+MkE8QslHGWyVg=" [mod."github.com/cosmos/cosmos-sdk"] - version = "v0.50.6-0.20251119062431-8d0a31ef043d" - hash = "sha256-VxQus9ynUK8nAZh3ubNXRcxJsITzgndjd7UYYgMt6C0=" + version = "v0.0.0-20251121110054-d5e74b9954c1" + hash = "sha256-XzBX/BIFpKZWMBqyGML0RpSBHMnQu1QVY9+dMi85mws=" replaced = "github.com/crypto-org-chain/cosmos-sdk" [mod."github.com/cosmos/go-bip39"] version = "v1.0.0" @@ -226,8 +223,8 @@ schema = 3 version = "v1.2.0" hash = "sha256-Hd19V0RCiMoCL67NsqvWIsvWF8KM3LnuJTbYjWtQkEo=" [mod."github.com/cosmos/gogoproto"] - version = "v1.7.0" - hash = "sha256-ZkEUImxBBo8Q/6c7tVR0rybpLbtlplzvgfLl5xvtV00=" + version = "v1.7.2" + hash = "sha256-L9sJZoQGWaix43AJ7rsm1DUng8uoD8HJ6Mb92Ynq8+s=" [mod."github.com/cosmos/iavl"] version = "v1.2.6" hash = "sha256-9kLtVepU5b3m2Sne8pBQNvF9LxM374LEmvuLWeYBfFU=" @@ -315,9 +312,9 @@ schema = 3 version = "v0.2.2" hash = "sha256-0MLfSJKdeK3Z7tWAXTdzwB4091dmyxIX38S5SKH5QAw=" [mod."github.com/evmos/ethermint"] - version = "v0.22.1-0.20251105021702-154426496ecd" - hash = "sha256-VU/v4owuoa6L9BffE/8dN/fEU7cJTZPwIUyNxDBjvdE=" - replaced = "github.com/crypto-org-chain/ethermint" + version = "v0.0.0-20251121082919-46c057ac4dde" + hash = "sha256-8eJk4xUTm1aRKJiuHdTv0ZGg4kwTUrTiO8E/NyHlU8A=" + replaced = "github.com/randy-cro/ethermint" [mod."github.com/fatih/color"] version = "v1.17.0" hash = "sha256-QsKMy3MsvjbYNcA9jP8w6c3wpmWDZ0079bybAEzmXR0=" @@ -537,9 +534,6 @@ schema = 3 [mod."github.com/mitchellh/mapstructure"] version = "v1.5.0" hash = "sha256-ztVhGQXs67MF8UadVvG72G3ly0ypQW0IRDdOOkjYwoE=" - [mod."github.com/mmcloughlin/addchain"] - version = "v0.4.0" - hash = "sha256-zSWSSUElCVFH5mydFlF2mzn4Wsm1WHASRxQ5TKa+To8=" [mod."github.com/mtibben/percent"] version = "v0.2.1" hash = "sha256-Zj1lpCP6mKQ0UUTMs2By4LC414ou+iJzKkK+eBHfEcc=" @@ -613,8 +607,8 @@ schema = 3 version = "v1.34.0" hash = "sha256-M503WwzPvqbOas3f70FQNXoWG17eV/XU6FubtB6P0uo=" [mod."github.com/sagikazarmark/locafero"] - version = "v0.7.0" - hash = "sha256-ZmaGOKHDw18jJqdkwQwSpUT11F9toR6KPs3241TONeY=" + version = "v0.11.0" + hash = "sha256-PUX8dzJtkD8YDZFNqpHnl4qgb0tE1W/DLnL7V+/d1z4=" [mod."github.com/sasha-s/go-deadlock"] version = "v0.3.5" hash = "sha256-1vyxWqOTVVVeodipm/tpDgRKUMkEdkoLWSgtiVZaZmw=" @@ -622,23 +616,23 @@ schema = 3 version = "v3.21.4-0.20210419000835-c7a38de76ee5+incompatible" hash = "sha256-oqIqyFquWabIE6DID6uTEc8oFEmM1rVu2ATn3toiCEg=" [mod."github.com/sourcegraph/conc"] - version = "v0.3.0" - hash = "sha256-mIdMs9MLAOBKf3/0quf1iI3v8uNWydy7ae5MFa+F2Ko=" + version = "v0.3.1-0.20240121214520-5f936abd7ae8" + hash = "sha256-AUNFlY6K7s1aoW/vb4pjK84ROdnVZY1i6cOmdeG+wN8=" [mod."github.com/spf13/afero"] - version = "v1.12.0" - hash = "sha256-TX3DcyAdrXqf+TxmEz4TilWQo2Y4hcBXOeRY6BjDp+s=" + version = "v1.15.0" + hash = "sha256-LhcezbOqfuBzacytbqck0hNUxi6NbWNhifUc5/9uHQ8=" [mod."github.com/spf13/cast"] - version = "v1.9.2" - hash = "sha256-B+Nw/DDgWR0NV6J6EO2oOahw75qbjLtV8Tm3wrN5NDw=" + version = "v1.10.0" + hash = "sha256-dQ6Qqf26IZsa6XsGKP7GDuCj+WmSsBmkBwGTDfue/rk=" [mod."github.com/spf13/cobra"] version = "v1.9.1" hash = "sha256-dzEqquABE3UqZmJuj99244QjvfojS8cFlsPr/MXQGj0=" [mod."github.com/spf13/pflag"] - version = "v1.0.6" - hash = "sha256-NjrK0FZPIfO/p2xtL1J7fOBQNTZAPZOC6Cb4aMMvhxI=" + version = "v1.0.10" + hash = "sha256-uDPnWjHpSrzXr17KEYEA1yAbizfcsfo5AyztY2tS6ZU=" [mod."github.com/spf13/viper"] - version = "v1.20.1" - hash = "sha256-gbCM0k7RAlvn7jpSuWB2LX5Nip9vgwsPNGbDXTI7JvM=" + version = "v1.21.0" + hash = "sha256-A9A8i7HH/ge4j3hw7G++HNj8BjhhpZKvxHhfY+QAxkI=" [mod."github.com/spiffe/go-spiffe/v2"] version = "v2.5.0" hash = "sha256-FPtPVF4+MF+Ybe9NI58i5mnGILvTKadk8JSZJQ8gD6s=" @@ -669,8 +663,8 @@ schema = 3 version = "v1.1.1" hash = "sha256-M2klhPId3Q3T3VGkSbOkYl/2nLHnsG+yMbXkPkyrRdg=" [mod."github.com/tidwall/pretty"] - version = "v1.2.0" - hash = "sha256-esRQGsn2Ee/CiySlwyuOICSLdqUkH4P7u8qXszos8Yc=" + version = "v1.2.1" + hash = "sha256-S0uTDDGD8qr415Ut7QinyXljCp0TkL4zOIrlJ+9OMl8=" [mod."github.com/tidwall/sjson"] version = "v1.2.5" hash = "sha256-OYGNolkmL7E1Qs2qrQ3IVpQp5gkcHNU/AB/z2O+Myps=" @@ -693,8 +687,8 @@ schema = 3 version = "v1.1.0" hash = "sha256-3YhWBtSwRLGwm7vNwqumphZG3uLBW1vwT9QkQ8JuSjU=" [mod."github.com/ulikunitz/xz"] - version = "v0.5.14" - hash = "sha256-21oXcIVmFyw+ukGQtflly0wpqaqh1jE0C9hLDSFYR7E=" + version = "v0.5.15" + hash = "sha256-L5KYLue5U14bxUuNyhZ6lIjbda6eCQsx1V6gToqfRdk=" [mod."github.com/zbiljic/go-filelock"] version = "v0.0.0-20170914061330-1dbf7103ab7d" hash = "sha256-JqNj/Wg8nGFSmndgYC7+FZzL2zG7rwOQMjlqYs3ZGvw=" @@ -740,12 +734,12 @@ schema = 3 [mod."go.opentelemetry.io/otel/trace"] version = "v1.37.0" hash = "sha256-FBeLOb5qmIiE9VmbgCf1l/xpndBqHkRiaPt1PvoKrVY=" - [mod."go.uber.org/multierr"] - version = "v1.11.0" - hash = "sha256-Lb6rHHfR62Ozg2j2JZy3MKOMKdsfzd1IYTR57r3Mhp0=" [mod."go.yaml.in/yaml/v2"] version = "v2.4.2" hash = "sha256-oC8RWdf1zbMYCtmR0ATy/kCkhIwPR9UqFZSMOKLVF/A=" + [mod."go.yaml.in/yaml/v3"] + version = "v3.0.4" + hash = "sha256-NkGFiDPoCxbr3LFsI6OCygjjkY0rdmg5ggvVVwpyDQ4=" [mod."golang.org/x/arch"] version = "v0.17.0" hash = "sha256-avV63nZlJxuo3/LLBKQ2a96Nn1wflNtc1Dr7GSPbHAs=" @@ -786,14 +780,14 @@ schema = 3 version = "v0.0.0-20250707201910-8d1bb00bc6a7" hash = "sha256-xtTBmzlyynWQa0KtuQpNZ4fzSTB/5ozXclE3SuP3naI=" [mod."google.golang.org/genproto/googleapis/rpc"] - version = "v0.0.0-20250707201910-8d1bb00bc6a7" + version = "v0.0.0-20250804133106-a7a43d27e69b" hash = "sha256-WK7iDtAhH19NPe3TywTQlGjDawNaDKWnxhFL9PgVUwM=" [mod."google.golang.org/grpc"] - version = "v1.75.0" - hash = "sha256-bMJEB2luUeYWwsQWqzuq4Wro2tTKBWGJPuTtzioJcfM=" + version = "v1.75.1" + hash = "sha256-t5w9BLW8P3SuxHRSAqsVBn8kddzCDKVijh4oxatLIps=" [mod."google.golang.org/protobuf"] - version = "v1.36.8" - hash = "sha256-yZN8ZON0b5HjUNUSubHst7zbvnMsOzd81tDPYQRtPgM=" + version = "v1.36.10" + hash = "sha256-gUrj1qSpjcpRKCBnrYlKMm+P0OSh7B/8EBREstwhD1w=" [mod."gopkg.in/yaml.v2"] version = "v2.4.0" hash = "sha256-uVEGglIedjOIGZzHW4YwN1VoRSTK8o0eGZqzd+TNdd0=" @@ -809,9 +803,6 @@ schema = 3 [mod."pgregory.net/rapid"] version = "v1.2.0" hash = "sha256-GT8thcMb5IH7KSFiK7p2IpThK9daDvZwqOGAP8eELko=" - [mod."rsc.io/tmplfunc"] - version = "v0.0.3" - hash = "sha256-Kii+7DxaSzzn2NphVcEk0W42TXMBFINtm3+B2t7e0cc=" [mod."sigs.k8s.io/yaml"] version = "v1.6.0" hash = "sha256-49hg7IVPzwxeovp+HTMiWa/10NMMTSTjAdCmIv6p9dw=" diff --git a/integration_tests/configs/staking_cache.jsonnet b/integration_tests/configs/staking_cache.jsonnet new file mode 100644 index 0000000000..804f0c3cab --- /dev/null +++ b/integration_tests/configs/staking_cache.jsonnet @@ -0,0 +1,270 @@ +{ + 'cronos_777-1': { + 'start-flags': '--trace', + cmd: 'cronosd', + + local _1mil_tcro = '1000000000000000000000000basetcro', + local _10quintillion_stake = '10000000000000000000stake', + local _1quintillion_stake = '1000000000000000000stake', + local _1mil_qatest = '1000000qatest', + + validators: [ + { + coins: std.join(',', [_1mil_tcro, _10quintillion_stake]), + staked: _1quintillion_stake, + mnemonic: 'elbow flight coast travel move behind sister tell avocado road wait above', + gas_prices: '100000000000000000basetcro', + base_port: 26650, + 'app-config': { + staking: { + 'cache-size': -1, // disabled + }, + }, + }, + { + coins: std.join(',', [_1mil_tcro, _10quintillion_stake]), + staked: _1quintillion_stake, + mnemonic: 'nasty large defy garage violin casual alarm blue marble industry infant inside', + gas_prices: '100000000000000000basetcro', + base_port: 26660, + 'app-config': { + staking: { + 'cache-size': 0, // unlimited + }, + }, + }, + { + coins: std.join(',', [_1mil_tcro, _10quintillion_stake]), + staked: _1quintillion_stake, + mnemonic: 'lobster culture confirm twist oak sock lucky core kiss echo term faint robot purity fluid mix rescue music drive spot term pistol feed abuse', + gas_prices: '100000000000000000basetcro', + base_port: 26670, + 'app-config': { + staking: { + 'cache-size': 1, // size limit 1 + }, + }, + }, + { + coins: std.join(',', [_1mil_tcro, _10quintillion_stake]), + staked: _1quintillion_stake, + mnemonic: 'wonder grocery sing soccer two portion shift science gain tuition mean garbage feed execute brush civil buddy filter mandate aunt rocket quarter aim first', + gas_prices: '100000000000000000basetcro', + base_port: 26680, + 'app-config': { + staking: { + 'cache-size': 2, // size limit 2 + }, + }, + }, + { + coins: std.join(',', [_1mil_tcro, _10quintillion_stake]), + staked: _1quintillion_stake, + mnemonic: 'super develop desert oak load field ring jazz tray spray found novel', + gas_prices: '100000000000000000basetcro', + base_port: 26690, + 'app-config': { + staking: { + 'cache-size': 3, // size limit 3 + }, + }, + }, + { + coins: std.join(',', [_1mil_tcro, _10quintillion_stake]), + staked: _1quintillion_stake, + mnemonic: 'author satoshi neck arm afraid route carbon invite frozen drink upon point devote slow chase', + gas_prices: '100000000000000000basetcro', + base_port: 26700, + 'app-config': { + staking: { + 'cache-size': 100, // size limit 100 + }, + }, + }, + { + coins: std.join(',', [_1mil_tcro, _10quintillion_stake]), + staked: _1quintillion_stake, + mnemonic: 'visual loyal reward cloud other remember sting control half flight maze unveil cherry elite carry', + gas_prices: '100000000000000000basetcro', + base_port: 26710, + 'app-config': { + staking: { + 'cache-size': 1000, // size limit 1000 + }, + }, + }, + ], + accounts: [ + { + name: 'rich', + coins: std.join(',', [_1mil_tcro, _1mil_qatest, _10quintillion_stake]), + mnemonic: 'loyal legend allow glow wheel heavy pretty example tell peasant myself garlic battle bachelor buddy stand true grit manual letter wire alone polar glove', + }, + { + name: 'alice', + coins: std.join(',', [_1mil_tcro, _1mil_qatest, _10quintillion_stake]), + mnemonic: 'style recipe economy valve curtain raw scare unable chair silly impact thrive moment copy able voyage slush diary adjust boss smile finger volume reward', + }, + { + name: 'bob', + coins: std.join(',', [_1mil_tcro, _1mil_qatest, _10quintillion_stake]), + mnemonic: 'frost worth crisp gasp this waste harbor able ethics raise december tent kid brief banner frame absent fragile police garage remind stomach side midnight', + }, + { + name: 'charlie', + coins: std.join(',', [_1mil_tcro, _1mil_qatest, _10quintillion_stake]), + mnemonic: 'worth lounge teach critic forward disease shy genuine rain gorilla end depth sort clutch museum festival stay joke custom anchor seven outside equip crawl', + }, + ], + + config: { + 'unsafe-ignore-block-list-failure': true, + consensus: { + timeout_commit: '1s', + create_empty_blocks_interval: '1s', + }, + }, + + 'app-config': { + 'minimum-gas-prices': '5000000000000basetcro', + 'app-db-backend': 'goleveldb', + pruning: 'nothing', + rosetta: { + 'denom-to-suggest': 'basetcro', + }, + evm: { + 'max-tx-gas-wanted': 0, + }, + 'json-rpc': { + address: '0.0.0.0:{EVMRPC_PORT}', + 'ws-address': '0.0.0.0:{EVMRPC_PORT_WS}', + api: 'eth,net,web3,debug,cronos', + 'block-range-cap': 30, + 'evm-timeout': '10s', + }, + 'blocked-addresses': [], + mempool: { + 'max-txs': 0, + }, + }, + genesis: { + consensus: { + params: { + block: { + max_bytes: '1048576', + max_gas: '81500000', + }, + evidence: { + max_age_num_blocks: '403200', + max_age_duration: '2419200000000000', + max_bytes: '150000', + }, + }, + }, + app_state: { + bank: { + send_enabled: [ + { + denom: 'stake', + enabled: true, + }, + { + denom: 'basetcro', + enabled: false, + }, + ], + }, + cronos: { + params: { + cronos_admin: 'crc12luku6uxehhak02py4rcz65zu0swh7wjsrw0pp', + ibc_cro_denom: 'ibc/6B5A664BF0AF4F71B2F0BAA33141E2F1321242FBD5D19762F541EC971ACB0865', + }, + }, + distribution: { + params: { + community_tax: '0', + base_proposer_reward: '0', + bonus_proposer_reward: '0', + }, + }, + evm: { + params: { + evm_denom: 'basetcro', + }, + }, + gov: { + params: { + min_deposit: [ + { + denom: 'basetcro', + amount: '5', + }, + ], + max_deposit_period: '30s', + voting_period: '30s', + expedited_voting_period: '15s', + expedited_min_deposit: [ + { + denom: 'basetcro', + amount: '25', + }, + ], + }, + }, + ibc: { + client_genesis: { + params: { + allowed_clients: [ + '06-solomachine', + '07-tendermint', + '09-localhost', + ], + }, + }, + }, + mint: { + minter: { + inflation: '0.000000000000000000', + annual_provisions: '0.000000000000000000', + }, + params: { + inflation_rate_change: '0', + inflation_max: '0', + inflation_min: '0', + goal_bonded: '1', + }, + }, + slashing: { + params: { + downtime_jail_duration: '60s', + min_signed_per_window: '0.5', + signed_blocks_window: '10', + slash_fraction_double_sign: '0', + slash_fraction_downtime: '0', + }, + }, + staking: { + params: { + unbonding_time: '60s', + max_validators: '50', + }, + }, + feemarket: { + // from https://rest-t3.cronos.org/ethermint/feemarket/v1/params + params: { + no_base_fee: false, + base_fee_change_denominator: 100, + elasticity_multiplier: 4, + // enabled at genesis, different from testnet + enable_height: '0', + // initial base fee at genesis, testnet shows the current base fee, hence different + base_fee: '1000000000', + min_gas_price: '1000000000', + min_gas_multiplier: '0.500000000000000000', + }, + }, + }, + }, + }, +} + diff --git a/integration_tests/cosmoscli.py b/integration_tests/cosmoscli.py index d07a7cbc35..f6c478e729 100644 --- a/integration_tests/cosmoscli.py +++ b/integration_tests/cosmoscli.py @@ -19,6 +19,7 @@ # the default initial base fee used by integration tests DEFAULT_GAS_PRICE = "100000000000basetcro" DEFAULT_GAS = "250000" +STAKING_DEFAULT_GAS = "1000000" class ModuleAccount(enum.Enum): @@ -409,40 +410,71 @@ def get_delegated_amount(self, which_addr): ) ) - def delegate_amount(self, to_addr, amount, from_addr, gas_price=None): - if gas_price is None: - return json.loads( - self.raw( - "tx", - "staking", - "delegate", - to_addr, - amount, - "-y", - home=self.data_dir, - from_=from_addr, - keyring_backend="test", - chain_id=self.chain_id, - node=self.node_rpc, - ) + def get_delegations(self, which_addr): + """Query all delegations made from one delegator.""" + return json.loads( + self.raw( + "query", + "staking", + "delegations", + which_addr, + home=self.data_dir, + chain_id=self.chain_id, + node=self.node_rpc, + output="json", ) - else: - return json.loads( - self.raw( - "tx", - "staking", - "delegate", - to_addr, - amount, - "-y", - home=self.data_dir, - from_=from_addr, - keyring_backend="test", - chain_id=self.chain_id, - node=self.node_rpc, - gas_prices=gas_price, - ) + ) + + def get_unbonding_delegations(self, which_addr): + """Query all unbonding delegations from a delegator.""" + return json.loads( + self.raw( + "query", + "staking", + "unbonding-delegations", + which_addr, + home=self.data_dir, + chain_id=self.chain_id, + node=self.node_rpc, + output="json", + ) + ).get("unbonding_responses", []) + + def get_redelegations(self, delegator_addr, src_validator_addr, dst_validator_addr): + """Query all redelegations from a delegator.""" + return json.loads( + self.raw( + "query", + "staking", + "redelegation", + delegator_addr, + src_validator_addr, + dst_validator_addr, + home=self.data_dir, + chain_id=self.chain_id, + node=self.node_rpc, + output="json", + ) + ).get("redelegation_responses", []) + + def delegate_amount(self, to_addr, amount, from_addr): + return json.loads( + self.raw( + "tx", + "staking", + "delegate", + to_addr, + amount, + "-y", + home=self.data_dir, + from_=from_addr, + keyring_backend="test", + chain_id=self.chain_id, + node=self.node_rpc, + gas_prices=DEFAULT_GAS_PRICE, + gas=STAKING_DEFAULT_GAS, ) + ) # to_addr: croclcl1... , from_addr: cro1... def unbond_amount(self, to_addr, amount, from_addr): @@ -459,6 +491,8 @@ def unbond_amount(self, to_addr, amount, from_addr): keyring_backend="test", chain_id=self.chain_id, node=self.node_rpc, + gas=STAKING_DEFAULT_GAS, + gas_prices=DEFAULT_GAS_PRICE, ) ) @@ -480,6 +514,8 @@ def redelegate_amount( keyring_backend="test", chain_id=self.chain_id, node=self.node_rpc, + gas=STAKING_DEFAULT_GAS, + gas_prices=DEFAULT_GAS_PRICE, ) ) @@ -693,6 +729,7 @@ def edit_validator( website=None, security_contact=None, details=None, + min_self_delegation=None, ): """MsgEditValidator""" options = dict( @@ -703,6 +740,7 @@ def edit_validator( website=website, security_contact=security_contact, details=details, + min_self_delegation=min_self_delegation, ) return json.loads( self.raw( @@ -715,6 +753,8 @@ def edit_validator( node=self.node_rpc, keyring_backend="test", chain_id=self.chain_id, + gas_prices=DEFAULT_GAS_PRICE, + gas=STAKING_DEFAULT_GAS, **{k: v for k, v in options.items() if v is not None}, ) ) diff --git a/integration_tests/test_staking_cache.py b/integration_tests/test_staking_cache.py new file mode 100644 index 0000000000..7414e8a673 --- /dev/null +++ b/integration_tests/test_staking_cache.py @@ -0,0 +1,977 @@ +""" +Test staking cache functionality with different cache sizes. + +This test verifies that staking operations work correctly across nodes +with different cache size configurations: +- Node 0: cache-size = -1 (disabled) +- Node 1: cache-size = 0 (unlimited) +- Node 2: cache-size = 1 +- Node 3: cache-size = 2 +- Node 4: cache-size = 3 +- Node 5: cache-size = 100 +- Node 6: cache-size = 1000 + +Test scenarios: +1. Multiple unbonding operations from different delegators +2. Multiple redelegations between validators +3. Unbonding validators by removing all self-delegation +""" + +import pytest + +from .network import setup_custom_cronos +from .utils import wait_for_new_blocks + +pytestmark = pytest.mark.staking + + +@pytest.fixture(scope="function") +def cronos_staking_cache(tmp_path_factory): + """Setup cronos cluster with different staking cache sizes per node.""" + from pathlib import Path + + path = tmp_path_factory.mktemp("staking_cache") + yield from setup_custom_cronos( + path, + 26650, + Path(__file__).parent / "configs/staking_cache.jsonnet", + ) + + +def get_delegator_address(cli, account_name): + """Get delegator address for a specific account.""" + return cli.address(account_name) + + +def test_staking_cache_multiple_unbonding(cronos_staking_cache): + """ + Test multiple unbonding operations across nodes with different cache sizes. + + This test performs multiple unbonding operations from different accounts + to different validators and verifies that all nodes maintain consistent state + regardless of their cache configuration. + """ + cronos = cronos_staking_cache + + # Get CLI instances for different nodes + cli = cronos.cosmos_cli() + + # Get validator addresses + validators = [] + for i in range(7): + val_addr = cronos.cosmos_cli(i).address("validator", bech="val") + validators.append(val_addr) + + print(f"Validators: {validators}") + + # Delegate some tokens from rich account to all validators + rich_addr = get_delegator_address(cli, "rich") + delegation_amount = "1000000000000000000stake" # 1 stake token + + print("\n=== Phase 1: Delegating to validators ===") + for i, val_addr in enumerate(validators): + print(f"Delegating to validator {i}: {val_addr}") + rsp = cli.delegate_amount( + val_addr, + delegation_amount, + "rich", + ) + assert rsp["code"] == 0, f"Delegation failed: {rsp.get('raw_log', rsp)}" + wait_for_new_blocks(cli, 2) + + # Verify delegations were successful on all nodes + print("\n=== Verifying delegations on all nodes ===") + delegation_counts = [] + for node_idx in range(7): + node_cli = cronos.cosmos_cli(node_idx) + delegations = node_cli.get_delegated_amount(rich_addr) + delegation_responses = ( + delegations.get("delegation_responses", []) if delegations else [] + ) + count = len(delegation_responses) + delegation_counts.append(count) + cache_size = [-1, 0, 1, 2, 3, 100, 1000][node_idx] + print(f"Node {node_idx} (cache-size={cache_size}): " f"{count} delegations") + + # Verify all nodes have the same number of delegations + assert ( + len(set(delegation_counts)) == 1 + ), f"Nodes have different delegation counts: {delegation_counts}" + print(f"✓ All nodes consistent: {delegation_counts[0]} delegations each") + + # Perform multiple unbonding operations from different accounts + print("\n=== Phase 2: Multiple unbonding operations ===") + + # Unbond from rich account + unbond_amount = "500000000000000000stake" # 0.5 stake token + unbonding_ops = [] + + for i in range(3): # Unbond from first 3 validators + val_addr = validators[i] + print(f"Unbonding from validator {i}: {val_addr}") + rsp = cli.unbond_amount(val_addr, unbond_amount, "rich") + assert rsp["code"] == 0, f"Unbonding failed: {rsp.get('raw_log', rsp)}" + unbonding_ops.append((rich_addr, val_addr, unbond_amount)) + wait_for_new_blocks(cli, 2) + + # Delegate from alice and then unbond + alice_addr = get_delegator_address(cli, "alice") + print("\nDelegating from alice to validator 3") + rsp = cli.delegate_amount(validators[3], delegation_amount, "alice") + assert rsp["code"] == 0, f"Alice delegation failed: {rsp.get('raw_log', rsp)}" + + wait_for_new_blocks(cli, 2) + + print("Unbonding from alice") + rsp = cli.unbond_amount(validators[3], unbond_amount, "alice") + assert rsp["code"] == 0, f"Alice unbonding failed: {rsp.get('raw_log', rsp)}" + unbonding_ops.append((alice_addr, validators[3], unbond_amount)) + + # Delegate from bob and then unbond + bob_addr = get_delegator_address(cli, "bob") + print("\nDelegating from bob to validator 4") + rsp = cli.delegate_amount(validators[4], delegation_amount, "bob") + assert rsp["code"] == 0, f"Bob delegation failed: {rsp.get('raw_log', rsp)}" + + wait_for_new_blocks(cli, 2) + + print("Unbonding from bob") + rsp = cli.unbond_amount(validators[4], unbond_amount, "bob") + assert rsp["code"] == 0, f"Bob unbonding failed: {rsp.get('raw_log', rsp)}" + unbonding_ops.append((bob_addr, validators[4], unbond_amount)) + + wait_for_new_blocks(cli, 2) + + # Verify unbonding entries exist on all nodes + print("\n=== Phase 3: Verifying unbonding entries on all nodes ===") + + # Get unique delegator addresses from unbonding operations + unique_delegators = set(delegator_addr for delegator_addr, _, _ in unbonding_ops) + + # Collect total unbonding delegation counts from each node + total_unbonding_counts = [] + + for node_idx in range(7): + node_cli = cronos.cosmos_cli(node_idx) + cache_size = [-1, 0, 1, 2, 3, 100, 1000][node_idx] + + # Get unbonding delegations for all delegators + total_count = 0 + for delegator_addr in unique_delegators: + unbonding = node_cli.get_unbonding_delegations(delegator_addr) + count = len(unbonding) if unbonding else 0 + total_count += count + + total_unbonding_counts.append(total_count) + msg = ( + f"Node {node_idx} (cache-size={cache_size}): " + f"{total_count} total unbonding delegations" + ) + print(msg) + + # Verify all nodes have the same total count + assert ( + len(set(total_unbonding_counts)) == 1 + ), f"Nodes have different unbonding delegation counts: {total_unbonding_counts}" + msg = ( + f"Node {node_idx} (cache-size={cache_size}): " + f"{total_count} total unbonding delegations" + ) + print(msg) + + # Wait for unbonding period to complete (20 seconds, 20 blocks) + print("\n=== Phase 4: Waiting for unbonding period to complete ===") + print("Waiting 60 seconds for unbonding delegations to mature...") + wait_for_new_blocks(cli, 60) + + # Verify unbonding delegations are now empty/matured on all nodes + print( + "\n=== Phase 5: Verifying unbonding delegations matured " + "(should be empty) ===" + ) + matured_unbonding_counts = [] + + for node_idx in range(7): + node_cli = cronos.cosmos_cli(node_idx) + cache_size = [-1, 0, 1, 2, 3, 100, 1000][node_idx] + + # Get unbonding delegations for all delegators + total_count = 0 + for delegator_addr in unique_delegators: + unbonding = node_cli.get_unbonding_delegations(delegator_addr) + count = len(unbonding) if unbonding else 0 + total_count += count + + matured_unbonding_counts.append(total_count) + msg = ( + f"Node {node_idx} (cache-size={cache_size}): " + f"{total_count} unbonding delegations remaining" + ) + print(msg) + + # Verify all nodes agree that unbonding delegations are empty + assert ( + len(set(matured_unbonding_counts)) == 1 + ), f"Nodes have different matured unbonding counts: {matured_unbonding_counts}" + assert matured_unbonding_counts[0] == 0, ( + f"Expected 0 unbonding delegations after maturation " + f"but got {matured_unbonding_counts[0]}" + ) + msg = ( + f"✓ All nodes consistent: {matured_unbonding_counts[0]} " + f"unbonding delegations (all matured)" + ) + print(msg) + + print("\n=== Test completed successfully ===") + + +def test_staking_cache_multiple_redelegations(cronos_staking_cache): + """ + Test multiple redelegation operations across nodes with different cache sizes. + + This test performs multiple redelegations between validators and verifies + that all nodes maintain consistent state regardless of cache configuration. + """ + cronos = cronos_staking_cache + cli = cronos.cosmos_cli() + + # Get validator addresses + validators = [] + for i in range(7): + val_addr = cronos.cosmos_cli(i).address("validator", bech="val") + validators.append(val_addr) + + print(f"Validators: {validators}") + + # Get delegator addresses + charlie_addr = get_delegator_address(cli, "charlie") + alice_addr = get_delegator_address(cli, "alice") + + delegation_amount = "2000000000000000000stake" # 2 stake tokens + + print("\n=== Phase 1: Initial delegations ===") + + # Charlie delegates to first 3 validators + print("Charlie delegating to validators 0, 1, 2") + for i in range(3): + print(f" Delegating to validator {i}") + rsp = cli.delegate_amount(validators[i], delegation_amount, "charlie") + assert rsp["code"] == 0, f"Charlie delegation failed: {rsp.get('raw_log', rsp)}" + wait_for_new_blocks(cli, 2) + + # Alice delegates to validators 1, 2, 3 + print("Alice delegating to validators 1, 2, 3") + for i in range(1, 4): + print(f" Delegating to validator {i}") + rsp = cli.delegate_amount(validators[i], delegation_amount, "alice") + assert rsp["code"] == 0, f"Alice delegation failed: {rsp.get('raw_log', rsp)}" + wait_for_new_blocks(cli, 2) + + # Perform multiple redelegations + print("\n=== Phase 2: Redelegations ===") + redelegate_amount = "1000000000000000000stake" # 1 stake token + + # Charlie: Redelegate once (from validator 0 to validator 3) + print("Charlie redelegating from validator 0 to validator 3") + rsp = cli.redelegate_amount( + validators[3], validators[0], redelegate_amount, "charlie" # to # from + ) + assert rsp["code"] == 0, f"Charlie redelegation failed: {rsp.get('raw_log', rsp)}" + wait_for_new_blocks(cli, 2) + + # Alice: First redelegation (from validator 1 to validator 0) + print("Alice redelegating from validator 1 to validator 0") + rsp = cli.redelegate_amount( + validators[0], validators[1], redelegate_amount, "alice" # to # from + ) + assert rsp["code"] == 0, f"Alice redelegation failed: {rsp.get('raw_log', rsp)}" + wait_for_new_blocks(cli, 2) + + # Alice: Second redelegation (from validator 2 to validator 4) + print("Alice redelegating from validator 2 to validator 4") + rsp = cli.redelegate_amount( + validators[4], validators[2], redelegate_amount, "alice" # to # from + ) + assert rsp["code"] == 0, f"Alice redelegation failed: {rsp.get('raw_log', rsp)}" + wait_for_new_blocks(cli, 2) + + # Verify redelegation consistency across all nodes + print("\n=== Phase 3: Verifying redelegation consistency on all nodes ===") + + # Expected redelegations: (src_validator, dst_validator, delegator_name) + expected_redelegations = [ + # Charlie: validator 0 -> 3 + (validators[0], validators[3], charlie_addr, "Charlie"), + # Alice: validator 1 -> 0 + (validators[1], validators[0], alice_addr, "Alice"), + # Alice: validator 2 -> 4 + (validators[2], validators[4], alice_addr, "Alice"), + ] + + for src_val, dst_val, delegator_addr, delegator_name in expected_redelegations: + redelegation_counts = [] + + msg = ( + f"\nChecking {delegator_name}'s redelegation from " + f"{src_val}... to {dst_val}...:" + ) + print(msg) + for node_idx in range(7): + node_cli = cronos.cosmos_cli(node_idx) + cache_size = [-1, 0, 1, 2, 3, 100, 1000][node_idx] + + redelegations = node_cli.get_redelegations(delegator_addr, src_val, dst_val) + count = len(redelegations) if redelegations else 0 + redelegation_counts.append(count) + msg = ( + f" Node {node_idx} (cache-size={cache_size}): " + f"{count} redelegation(s)" + ) + print(msg) + + # Verify consistency across nodes + assert len(set(redelegation_counts)) == 1, ( + f"{delegator_name}'s redelegation has different counts " + f"across nodes: {redelegation_counts}" + ) + + # Verify we have exactly 1 redelegation entry + assert redelegation_counts[0] == 1, ( + f"{delegator_name}'s redelegation expected 1 entry " + f"but got {redelegation_counts[0]}" + ) + + print(f" ✓ All nodes consistent: {redelegation_counts[0]} redelegation entry") + + # Wait for redelegation completion period (20 seconds, 20 blocks) + print("\n=== Phase 4: Waiting for redelegation completion period ===") + print("Waiting 60 seconds for redelegations to complete...") + wait_for_new_blocks(cli, 60) + + # Verify redelegations are now empty/completed on all nodes + print("\n=== Phase 5: Verifying redelegations completed (should be empty) ===") + + for src_val, dst_val, delegator_addr, delegator_name in expected_redelegations: + matured_redelegation_counts = [] + + msg = ( + f"\nChecking {delegator_name}'s redelegation from " + f"{src_val}... to {dst_val}... (after completion):" + ) + print(msg) + for node_idx in range(7): + node_cli = cronos.cosmos_cli(node_idx) + cache_size = [-1, 0, 1, 2, 3, 100, 1000][node_idx] + + try: + redelegations = node_cli.get_redelegations( + delegator_addr, src_val, dst_val + ) + count = len(redelegations) if redelegations else 0 + matured_redelegation_counts.append(count) + msg = ( + f" Node {node_idx} (cache-size={cache_size}): " + f"{count} redelegation(s) remaining" + ) + print(msg) + except Exception as e: + # "not found" errors are expected when redelegations have matured + error_str = str(e).lower() + if "not found" in error_str: + matured_redelegation_counts.append(0) + msg = ( + f" Node {node_idx} (cache-size={cache_size}): " + f"0 redelegation(s) remaining" + ) + print(msg) + else: + # Unexpected error - fail the test + raise + + # Verify consistency across nodes + assert len(set(matured_redelegation_counts)) == 1, ( + f"{delegator_name}'s matured redelegation has different " + f"counts across nodes: {matured_redelegation_counts}" + ) + + # Verify redelegation is now complete (count should be 0) + assert matured_redelegation_counts[0] == 0, ( + f"{delegator_name}'s redelegation expected 0 entries " + f"after completion but got {matured_redelegation_counts[0]}" + ) + + msg = ( + f" ✓ All nodes consistent: {matured_redelegation_counts[0]} " + f"redelegation entries (completed)" + ) + print(msg) + + print("\n=== Test completed successfully ===") + + +def test_staking_cache_unbonding_validator(cronos_staking_cache): + """ + Test unbonding validators by removing all self-delegation. + + This test verifies that when validators unbond all their self-delegation, + they transition to unbonding state correctly across all nodes + with different cache configurations. + + Tests 3 validators: nodes 4, 5, and 6 (cache-size=3, 100, 1000) + """ + cronos = cronos_staking_cache + + # We'll unbond validators from nodes 4, 5, and 6 + test_node_indices = [4, 5, 6] + test_validators = [] + + print("\n=== Testing validator unbonding (3 validators) ===") + + # Collect validator info for all test nodes + for test_node_idx in test_node_indices: + cli = cronos.cosmos_cli(test_node_idx) + val_addr = cli.address("validator", bech="val") + val_account = cli.address("validator") + test_validators.append( + { + "node_idx": test_node_idx, + "cli": cli, + "val_addr": val_addr, + "val_account": val_account, + } + ) + cache_size = [-1, 0, 1, 2, 3, 100, 1000][test_node_idx] + print( + f"Node {test_node_idx} (cache-size={cache_size}): " + f"Validator address: {val_addr}" + ) + + # Get initial validator status on all nodes + print("\n=== Phase 1: Initial validator status ===") + for node_idx in range(7): + node_cli = cronos.cosmos_cli(node_idx) + cache_size = [-1, 0, 1, 2, 3, 100, 1000][node_idx] + validators = node_cli.validators() + + print( + f"Node {node_idx} (cache-size={cache_size}): {len(validators)} validators" + ) + + # Verify all test validators are present + for test_val_info in test_validators: + test_val = None + for v in validators: + if v["operator_address"] == test_val_info["val_addr"]: + test_val = v + break + + assert test_val is not None, ( + f"Node {node_idx} (cache-size={cache_size}): " + f"Validator {test_val_info['val_addr']} not found in " + f"initial status check" + ) + + # Query each validator's actual total tokens and set min_self_delegation + print( + "\n=== Phase 2: Query validators' actual tokens and set min_self_delegation ===" + ) + + for test_val_info in test_validators: + cli = test_val_info["cli"] + val_addr = test_val_info["val_addr"] + node_idx = test_val_info["node_idx"] + cache_size = [-1, 0, 1, 2, 3, 100, 1000][node_idx] + + print( + f"\nNode {node_idx} (cache-size={cache_size}): " + f"Processing validator {val_addr}" + ) + + validator_info = cli.validator(val_addr) + assert ( + validator_info and "validator" in validator_info + ), f"Failed to query validator {val_addr}" + + actual_tokens = int(validator_info["validator"].get("tokens", "0")) + print(f" Validator's actual total tokens: {actual_tokens}") + test_val_info["actual_tokens"] = actual_tokens + + # Set min_self_delegation to current tokens to trigger jailing on any unbond + print(f" Setting min_self_delegation to {actual_tokens}") + rsp = cli.edit_validator(min_self_delegation=str(actual_tokens)) + assert rsp["code"] == 0, ( + f"Edit validator failed with code {rsp['code']}: " + f"{rsp.get('raw_log', rsp)}" + ) + print(" Successfully set min_self_delegation") + wait_for_new_blocks(cli, 2) + + # Unbond from each validator to trigger the min_self_delegation check + unbond_amount = "1000000000000000000stake" # 1 stake token + + print("\n=== Phase 3: Unbonding to trigger min_self_delegation violation ===") + + for test_val_info in test_validators: + cli = test_val_info["cli"] + val_addr = test_val_info["val_addr"] + node_idx = test_val_info["node_idx"] + cache_size = [-1, 0, 1, 2, 3, 100, 1000][node_idx] + + print( + f"\nNode {node_idx} (cache-size={cache_size}): " + f"Unbonding {unbond_amount} from validator" + ) + rsp = cli.unbond_amount(val_addr, unbond_amount, "validator") + + assert rsp["code"] == 0, ( + f"Validator self-unbond returned code {rsp['code']}: " + f"{rsp.get('raw_log', rsp)}" + ) + print(" Unbonding transaction successful") + wait_for_new_blocks(cli, 2) + + # Wait for 3 more blocks to ensure state propagation and jailing across all nodes + cli = cronos.cosmos_cli() + wait_for_new_blocks(cli, 3) + + # Check validator status on all nodes after unbonding + print( + "\n=== Phase 4: Validator status after unbonding " "(should be UNBONDING) ===" + ) + + for test_val_info in test_validators: + val_addr = test_val_info["val_addr"] + node_idx = test_val_info["node_idx"] + + print(f"\nChecking validator from node {node_idx}: {val_addr}") + unbonding_statuses = [] + + for check_node_idx in range(7): + node_cli = cronos.cosmos_cli(check_node_idx) + cache_size = [-1, 0, 1, 2, 3, 100, 1000][check_node_idx] + validator = node_cli.validator(val_addr) + + assert validator and "validator" in validator, ( + f"Node {check_node_idx} (cache-size={cache_size}): " + f"Failed to query validator {val_addr} after unbonding" + ) + + val_info = validator["validator"] + status = val_info.get("status", "unknown") + tokens = val_info.get("tokens", "0") + jailed = val_info.get("jailed", False) + unbonding_statuses.append(status) + print( + f" Node {check_node_idx} (cache-size={cache_size}): " + f"Status={status}, Tokens={tokens}, Jailed={jailed}" + ) + + # Assert validator is in BOND_STATUS_UNBONDING on all nodes + assert len(set(unbonding_statuses)) == 1, ( + f"Validator has different statuses across nodes: " f"{unbonding_statuses}" + ) + assert ( + unbonding_statuses[0] == "BOND_STATUS_UNBONDING" + ), f"Expected BOND_STATUS_UNBONDING but got {unbonding_statuses[0]}" + print(" ✓ Validator is in BOND_STATUS_UNBONDING on all nodes") + + # Wait for unbonding period to complete (60 seconds, 60 blocks) + print("\n=== Phase 5: Waiting for unbonding period (60 seconds) ===") + wait_for_new_blocks(cli, 60) + + # Check validator count after unbonding period + print("\n=== Phase 6: Checking validator count " "after unbonding period ===") + initial_validator_count = 7 # We started with 7 validators + validator_counts = [] + + for node_idx in range(7): + node_cli = cronos.cosmos_cli(node_idx) + cache_size = [-1, 0, 1, 2, 3, 100, 1000][node_idx] + validators = node_cli.validators() + count = len(validators) + validator_counts.append(count) + msg = f"Node {node_idx} (cache-size={cache_size}): " f"{count} validators" + print(msg) + + # Assert all nodes have consistent validator count + assert ( + len(set(validator_counts)) == 1 + ), f"Nodes have different validator counts: {validator_counts}" + + # Assert validator count reduced by 3 (we unbonded 3 validators) + expected_count = initial_validator_count - 3 + assert validator_counts[0] == expected_count, ( + f"Expected {expected_count} validators but got " f"{validator_counts[0]}" + ) + msg = f"✓ All nodes consistent: {validator_counts[0]} " f"validators (reduced by 3)" + print(msg) + + print("\n=== Test completed successfully ===") + + +def test_staking_cache_consistency(cronos_staking_cache): + """ + Comprehensive test combining delegations, redelegations, and unbonding operations. + + This test performs a complete lifecycle of staking operations and verifies + consistency across all nodes before, during, and after the unbonding period: + 1. Initial delegations with consistency checks + 2. Redelegations with consistency checks (before maturation) + 3. Unbonding delegations with consistency checks (before maturation) + 4. Validator unbonding with status verification + 5. Wait for unbonding period + 6. Verify all unbonding delegations and redelegations have matured (empty) + """ + cronos = cronos_staking_cache + cli = cronos.cosmos_cli() + + print("\n=== Comprehensive Staking Cache Consistency Test ===") + + # Get all validator addresses + validators = [] + for i in range(7): + val_addr = cronos.cosmos_cli(i).address("validator", bech="val") + validators.append(val_addr) + + print(f"Validators: {validators}") + + # Get delegator addresses + rich_addr = cli.address("rich") + alice_addr = cli.address("alice") + bob_addr = cli.address("bob") + charlie_addr = cli.address("charlie") + + # ========== PHASE 1: Initial Delegations ========== + print("\n=== Phase 1: Initial delegations ===") + delegation_amount = "2000000000000000000stake" # 2 stake tokens + + # Rich delegates to validators 0 and 1 + print("Rich delegating to validators 0, 1") + for i in range(2): + print(f" Delegating to validator {i}") + rsp = cli.delegate_amount(validators[i], delegation_amount, "rich") + assert rsp["code"] == 0, f"Rich delegation failed: {rsp.get('raw_log', rsp)}" + wait_for_new_blocks(cli, 2) + + # Alice delegates to validators 1 and 2 + print("Alice delegating to validators 1, 2") + for i in range(1, 3): + print(f" Delegating to validator {i}") + rsp = cli.delegate_amount(validators[i], delegation_amount, "alice") + assert rsp["code"] == 0, f"Alice delegation failed: {rsp.get('raw_log', rsp)}" + wait_for_new_blocks(cli, 2) + + # Bob delegates to validator 3 + print("Bob delegating to validator 3") + rsp = cli.delegate_amount(validators[3], delegation_amount, "bob") + assert rsp["code"] == 0, f"Bob delegation failed: {rsp.get('raw_log', rsp)}" + wait_for_new_blocks(cli, 2) + + # Charlie delegates to validator 0 + print("Charlie delegating to validator 0") + rsp = cli.delegate_amount(validators[0], delegation_amount, "charlie") + assert rsp["code"] == 0, f"Charlie delegation failed: {rsp.get('raw_log', rsp)}" + wait_for_new_blocks(cli, 2) + + # Verify delegations consistency + print("\n=== Verifying initial delegations consistency ===") + for delegator_name, delegator_addr in [ + ("Rich", rich_addr), + ("Alice", alice_addr), + ("Bob", bob_addr), + ("Charlie", charlie_addr), + ]: + delegation_counts = [] + for node_idx in range(7): + node_cli = cronos.cosmos_cli(node_idx) + delegations = node_cli.get_delegated_amount(delegator_addr) + delegation_responses = ( + delegations.get("delegation_responses", []) if delegations else [] + ) + count = len(delegation_responses) + delegation_counts.append(count) + + assert len(set(delegation_counts)) == 1, ( + f"{delegator_name}'s delegations inconsistent " + f"across nodes: {delegation_counts}" + ) + msg = f"✓ {delegator_name}: {delegation_counts[0]} delegations across all nodes" + print(msg) + + # ========== PHASE 2: Redelegations ========== + print("\n=== Phase 2: Redelegations ===") + redelegate_amount = "1000000000000000000stake" # 1 stake token + + # Rich: Redelegate from validator 0 to validator 2 + print("Rich redelegating from validator 0 to validator 2") + rsp = cli.redelegate_amount(validators[2], validators[0], redelegate_amount, "rich") + assert rsp["code"] == 0, f"Rich redelegation failed: {rsp.get('raw_log', rsp)}" + wait_for_new_blocks(cli, 2) + + # Charlie: Redelegate from validator 0 to validator 3 + print("Charlie redelegating from validator 0 to validator 3") + rsp = cli.redelegate_amount( + validators[3], validators[0], redelegate_amount, "charlie" + ) + assert rsp["code"] == 0, f"Charlie redelegation failed: {rsp.get('raw_log', rsp)}" + wait_for_new_blocks(cli, 2) + + # Verify redelegations consistency (before maturation) + print("\n=== Verifying redelegations consistency (before maturation) ===") + expected_redelegations = [ + (validators[0], validators[2], rich_addr, "Rich"), + (validators[0], validators[3], charlie_addr, "Charlie"), + ] + + for src_val, dst_val, delegator_addr, delegator_name in expected_redelegations: + redelegation_counts = [] + for node_idx in range(7): + node_cli = cronos.cosmos_cli(node_idx) + redelegations = node_cli.get_redelegations(delegator_addr, src_val, dst_val) + count = len(redelegations) if redelegations else 0 + redelegation_counts.append(count) + + assert len(set(redelegation_counts)) == 1, ( + f"{delegator_name}'s redelegation inconsistent: " f"{redelegation_counts}" + ) + assert redelegation_counts[0] == 1, ( + f"{delegator_name}'s redelegation expected 1 entry " + f"but got {redelegation_counts[0]}" + ) + msg = ( + f"✓ {delegator_name}: {redelegation_counts[0]} " + f"redelegation across all nodes" + ) + print(msg) + + # ========== PHASE 3: Unbonding Delegations ========== + print("\n=== Phase 3: Unbonding delegations ===") + unbond_amount = "500000000000000000stake" # 0.5 stake token + + # Alice unbonds from validator 1 + print("Alice unbonding from validator 1") + rsp = cli.unbond_amount(validators[1], unbond_amount, "alice") + assert rsp["code"] == 0, f"Alice unbonding failed: {rsp.get('raw_log', rsp)}" + wait_for_new_blocks(cli, 2) + + # Bob unbonds from validator 3 + print("Bob unbonding from validator 3") + rsp = cli.unbond_amount(validators[3], unbond_amount, "bob") + assert rsp["code"] == 0, f"Bob unbonding failed: {rsp.get('raw_log', rsp)}" + wait_for_new_blocks(cli, 2) + + # Verify unbonding delegations consistency (before maturation) + print("\n=== Verifying unbonding delegations consistency (before maturation) ===") + unbonding_delegators = [("Alice", alice_addr), ("Bob", bob_addr)] + + for delegator_name, delegator_addr in unbonding_delegators: + unbonding_counts = [] + for node_idx in range(7): + node_cli = cronos.cosmos_cli(node_idx) + unbonding = node_cli.get_unbonding_delegations(delegator_addr) + count = len(unbonding) if unbonding else 0 + unbonding_counts.append(count) + + assert ( + len(set(unbonding_counts)) == 1 + ), f"{delegator_name}'s unbonding inconsistent: {unbonding_counts}" + msg = ( + f"✓ {delegator_name}: {unbonding_counts[0]} " + f"unbonding delegations across all nodes" + ) + print(msg) + + # ========== PHASE 4: Validator Unbonding ========== + print("\n=== Phase 4: Validator unbonding (3 validators) ===") + + # Use validators 4, 5, and 6 for unbonding test + test_node_indices = [4, 5, 6] + test_validators = [] + + # Get initial validator count + initial_validators = cli.validators() + initial_count = len(initial_validators) + print(f"Initial validator count: {initial_count}") + + # Collect validator info for all test nodes + for test_node_idx in test_node_indices: + val_cli = cronos.cosmos_cli(test_node_idx) + val_addr = val_cli.address("validator", bech="val") + test_validators.append( + {"node_idx": test_node_idx, "cli": val_cli, "val_addr": val_addr} + ) + cache_size = [-1, 0, 1, 2, 3, 100, 1000][test_node_idx] + print( + f"Will unbond validator from node {test_node_idx} " + f"(cache-size={cache_size}): {val_addr}" + ) + + # Query each validator's actual total tokens and set min_self_delegation + print("\nQuerying validators' actual tokens and setting min_self_delegation") + + for test_val_info in test_validators: + val_cli = test_val_info["cli"] + val_addr = test_val_info["val_addr"] + node_idx = test_val_info["node_idx"] + cache_size = [-1, 0, 1, 2, 3, 100, 1000][node_idx] + + print( + f"\nNode {node_idx} (cache-size={cache_size}): " + f"Processing validator {val_addr}" + ) + + validator_info = val_cli.validator(val_addr) + assert ( + validator_info and "validator" in validator_info + ), f"Failed to query validator {val_addr}" + + actual_tokens = int(validator_info["validator"].get("tokens", "0")) + print(f" Validator's actual total tokens: {actual_tokens}") + test_val_info["actual_tokens"] = actual_tokens + + # Set min_self_delegation to current tokens to trigger jailing on any unbond + print(f" Setting min_self_delegation to {actual_tokens}") + rsp = val_cli.edit_validator(min_self_delegation=str(actual_tokens)) + assert rsp["code"] == 0, ( + f"Edit validator failed with code {rsp['code']}: " + f"{rsp.get('raw_log', rsp)}" + ) + print(" Successfully set min_self_delegation") + wait_for_new_blocks(cli, 2) + + # Unbond from each validator to trigger the min_self_delegation check + unbond_val_amount = "1000000000000000000stake" # 1 stake token + print( + f"\nUnbonding {unbond_val_amount} from each validator to trigger " + f"min_self_delegation violation" + ) + + for test_val_info in test_validators: + val_cli = test_val_info["cli"] + val_addr = test_val_info["val_addr"] + node_idx = test_val_info["node_idx"] + cache_size = [-1, 0, 1, 2, 3, 100, 1000][node_idx] + + print(f"\nNode {node_idx} (cache-size={cache_size}): Unbonding from validator") + rsp = val_cli.unbond_amount(val_addr, unbond_val_amount, "validator") + assert ( + rsp["code"] == 0 + ), f"Validator unbonding failed: {rsp.get('raw_log', rsp)}" + print(" Unbonding transaction successful") + wait_for_new_blocks(cli, 2) + + # Wait for 3 more blocks to ensure state propagation and jailing across all nodes + wait_for_new_blocks(cli, 3) + + # Verify validators are in UNBONDING status across all nodes + print("\n=== Verifying validator UNBONDING status ===") + + for test_val_info in test_validators: + val_addr = test_val_info["val_addr"] + node_idx = test_val_info["node_idx"] + + print(f"\nChecking validator from node {node_idx}: {val_addr}") + unbonding_statuses = [] + + for check_node_idx in range(7): + node_cli = cronos.cosmos_cli(check_node_idx) + cache_size = [-1, 0, 1, 2, 3, 100, 1000][check_node_idx] + validator = node_cli.validator(val_addr) + + assert validator and "validator" in validator, ( + f"Node {check_node_idx} (cache-size={cache_size}): " + f"Failed to query validator {val_addr} after unbonding" + ) + + val_info = validator["validator"] + status = val_info.get("status", "unknown") + unbonding_statuses.append(status) + print(f" Node {check_node_idx} (cache-size={cache_size}): Status={status}") + + assert ( + len(set(unbonding_statuses)) == 1 + ), f"Validator has different statuses across nodes: {unbonding_statuses}" + assert ( + unbonding_statuses[0] == "BOND_STATUS_UNBONDING" + ), f"Expected BOND_STATUS_UNBONDING but got {unbonding_statuses[0]}" + print(" ✓ Validator is in BOND_STATUS_UNBONDING on all nodes") + + # ========== PHASE 5: Wait for Unbonding Period ========== + print("\n=== Phase 5: Waiting for unbonding period (60 blocks ≈ 60 seconds) ===") + wait_for_new_blocks(cli, 60) + + # ========== PHASE 6: Verify All Matured ========== + print("\n=== Phase 6: Verifying all operations matured ===") + + # Check redelegations are now empty + print("\n--- Checking redelegations matured (should be empty) ---") + for src_val, dst_val, delegator_addr, delegator_name in expected_redelegations: + matured_counts = [] + for node_idx in range(7): + node_cli = cronos.cosmos_cli(node_idx) + try: + redelegations = node_cli.get_redelegations( + delegator_addr, src_val, dst_val + ) + count = len(redelegations) if redelegations else 0 + matured_counts.append(count) + except Exception as e: + # "not found" errors are expected when redelegations have matured + error_str = str(e).lower() + if "not found" in error_str: + matured_counts.append(0) + else: + # Unexpected error - fail the test + raise + + assert ( + len(set(matured_counts)) == 1 + ), f"{delegator_name}'s matured redelegation inconsistent: {matured_counts}" + assert matured_counts[0] == 0, ( + f"{delegator_name}'s redelegation expected 0 " + f"after maturation but got {matured_counts[0]}" + ) + print(f"✓ {delegator_name}: 0 redelegations (matured)") + + # Check unbonding delegations are now empty + print("\n--- Checking unbonding delegations matured (should be empty) ---") + for delegator_name, delegator_addr in unbonding_delegators: + matured_counts = [] + for node_idx in range(7): + node_cli = cronos.cosmos_cli(node_idx) + unbonding = node_cli.get_unbonding_delegations(delegator_addr) + count = len(unbonding) if unbonding else 0 + matured_counts.append(count) + + assert ( + len(set(matured_counts)) == 1 + ), f"{delegator_name}'s matured unbonding inconsistent: {matured_counts}" + assert matured_counts[0] == 0, ( + f"{delegator_name}'s unbonding expected 0 " + f"after maturation but got {matured_counts[0]}" + ) + print(f"✓ {delegator_name}: 0 unbonding delegations (matured)") + + # Check validator count reduced by 3 + print("\n--- Checking validator count after unbonding period ---") + validator_counts = [] + for node_idx in range(7): + node_cli = cronos.cosmos_cli(node_idx) + cache_size = [-1, 0, 1, 2, 3, 100, 1000][node_idx] + validators_list = node_cli.validators() + count = len(validators_list) + validator_counts.append(count) + print(f" Node {node_idx} (cache-size={cache_size}): {count} validators") + + assert ( + len(set(validator_counts)) == 1 + ), f"Nodes have different validator counts: {validator_counts}" + expected_count = initial_count - 3 + assert ( + validator_counts[0] == expected_count + ), f"Expected {expected_count} validators but got {validator_counts[0]}" + msg = f"✓ All nodes consistent: {validator_counts[0]} validators (reduced by 3)" + print(msg) + + print("\n=== Test completed successfully ===") From 5c763d4c88c22d96996af7a461b837f10ba5780d Mon Sep 17 00:00:00 2001 From: Randy Ang Date: Thu, 13 Nov 2025 16:17:54 +0800 Subject: [PATCH 2/2] reject staking related messages --- CHANGELOG.md | 1 + go.mod | 39 +++++++++++++------------ go.sum | 79 +++++++++++++++++++++++++++----------------------- gomod2nix.toml | 79 ++++++++++++++++++++++++++++---------------------- 4 files changed, 109 insertions(+), 89 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a4bfb13d89..bae538361b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## UNRELEASED +* [#1910](https://github.com/crypto-org-chain/cronos/pull/1910) fix: Optimize staking endblocker with an in-memory KV store and standardize gas consumption for staking related messages. Temporary patch to not allow staking messages. * [#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 ### Improvements diff --git a/go.mod b/go.mod index cb1edc3bad..999fa23c00 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/cosmos/cosmos-db v1.1.3 github.com/cosmos/cosmos-proto v1.0.0-beta.5 github.com/cosmos/cosmos-sdk v0.53.0 - github.com/cosmos/gogoproto v1.7.2 + github.com/cosmos/gogoproto v1.7.0 // release/v10.0.x github.com/cosmos/ibc-go/v10 v10.1.1 github.com/cosmos/rosetta v0.50.12 @@ -34,15 +34,15 @@ require ( github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/hashicorp/go-metrics v0.5.4 github.com/linxGnu/grocksdb v1.10.2 - github.com/spf13/cast v1.10.0 + github.com/spf13/cast v1.9.2 github.com/spf13/cobra v1.9.1 - github.com/spf13/pflag v1.0.10 - github.com/spf13/viper v1.21.0 + github.com/spf13/pflag v1.0.6 + github.com/spf13/viper v1.20.1 github.com/stretchr/testify v1.11.1 golang.org/x/crypto v0.41.0 google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 - google.golang.org/grpc v1.75.1 - google.golang.org/protobuf v1.36.10 + google.golang.org/grpc v1.75.0 + google.golang.org/protobuf v1.36.8 gopkg.in/yaml.v2 v2.4.0 ) @@ -77,8 +77,8 @@ require ( github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.2.0 // indirect github.com/bits-and-blooms/bitset v1.22.0 // indirect - github.com/btcsuite/btcd v0.25.0 // indirect - github.com/btcsuite/btcd/btcec/v2 v2.3.5 // indirect + github.com/btcsuite/btcd v0.24.2 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect github.com/btcsuite/btcd/btcutil v1.1.6 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect github.com/bytedance/sonic v1.14.0 // indirect @@ -97,7 +97,8 @@ require ( github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/coinbase/rosetta-sdk-go/types v1.0.0 // indirect github.com/cometbft/cometbft-db v0.15.0 // indirect - github.com/consensys/gnark-crypto v0.18.1 // indirect + github.com/consensys/bavard v0.1.27 // indirect + github.com/consensys/gnark-crypto v0.16.0 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect @@ -195,6 +196,7 @@ require ( github.com/minio/highwayhash v1.0.3 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/mmcloughlin/addchain v0.4.0 // indirect github.com/mtibben/percent v0.2.1 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect @@ -219,11 +221,11 @@ require ( github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/rs/cors v1.11.1 // indirect github.com/rs/zerolog v1.34.0 // indirect - github.com/sagikazarmark/locafero v0.11.0 // indirect + github.com/sagikazarmark/locafero v0.7.0 // indirect github.com/sasha-s/go-deadlock v0.3.5 // indirect github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect - github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect - github.com/spf13/afero v1.15.0 // indirect + github.com/sourcegraph/conc v0.3.0 // indirect + github.com/spf13/afero v1.12.0 // indirect github.com/spiffe/go-spiffe/v2 v2.5.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/supranational/blst v0.3.14 // indirect @@ -232,7 +234,7 @@ require ( github.com/tidwall/btree v1.7.0 // indirect github.com/tidwall/gjson v1.18.0 // indirect github.com/tidwall/match v1.1.1 // indirect - github.com/tidwall/pretty v1.2.1 // indirect + github.com/tidwall/pretty v1.2.0 // indirect github.com/tidwall/sjson v1.2.5 // indirect github.com/tidwall/tinylru v1.1.0 // indirect github.com/tidwall/wal v1.1.7 // indirect @@ -240,7 +242,7 @@ require ( github.com/tklauser/numcpus v0.6.1 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/tyler-smith/go-bip39 v1.1.0 // indirect - github.com/ulikunitz/xz v0.5.15 // indirect + github.com/ulikunitz/xz v0.5.14 // indirect github.com/zbiljic/go-filelock v0.0.0-20170914061330-1dbf7103ab7d // indirect github.com/zeebo/errs v1.4.0 // indirect github.com/zondax/hid v0.9.2 // indirect @@ -256,8 +258,8 @@ require ( go.opentelemetry.io/otel/sdk v1.37.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.37.0 // indirect go.opentelemetry.io/otel/trace v1.37.0 // indirect + go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/arch v0.17.0 // indirect golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect golang.org/x/net v0.43.0 // indirect @@ -269,11 +271,12 @@ require ( golang.org/x/time v0.10.0 // indirect google.golang.org/api v0.222.0 // indirect google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.2 // indirect nhooyr.io/websocket v1.8.11 // indirect pgregory.net/rapid v1.2.0 // indirect + rsc.io/tmplfunc v0.0.3 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) @@ -303,8 +306,8 @@ replace ( github.com/dgrijalva/jwt-go => github.com/golang-jwt/jwt/v4 v4.4.2 // release/v1.15 github.com/ethereum/go-ethereum => github.com/crypto-org-chain/go-ethereum v1.10.20-0.20250815065500-a4fbafcae0dd - // develop - github.com/evmos/ethermint => github.com/randy-cro/ethermint v0.0.0-20251121082919-46c057ac4dde + // release/v0.22.x-cronosv1.6-optstaking + github.com/evmos/ethermint => github.com/crypto-org-chain/ethermint v0.0.0-20251124090103-12d426c14aea // 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 cda08004e6..cc90b99d1d 100644 --- a/go.sum +++ b/go.sum @@ -744,13 +744,12 @@ github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl 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 h1:aLmxPguqxza+4ag8R1I2nnJjSu2iFn/kqtHTIImswcY= 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/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= +github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= 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= @@ -851,8 +850,10 @@ github.com/coinbase/rosetta-sdk-go/types v1.0.0 h1:jpVIwLcPoOeCR6o1tU+Xv7r5bMONN github.com/coinbase/rosetta-sdk-go/types v1.0.0/go.mod h1:eq7W2TMRH22GTW0N0beDnN931DW0/WOI1R2sdHNHG4c= github.com/cometbft/cometbft-db v0.15.0 h1:VLtsRt8udD4jHCyjvrsTBpgz83qne5hnL245AcPJVRk= github.com/cometbft/cometbft-db v0.15.0/go.mod h1:EBrFs1GDRiTqrWXYi4v90Awf/gcdD5ExzdPbg4X8+mk= -github.com/consensys/gnark-crypto v0.18.1 h1:RyLV6UhPRoYYzaFnPQA4qK3DyuDgkTgskDdoGqFt3fI= -github.com/consensys/gnark-crypto v0.18.1/go.mod h1:L3mXGFTe1ZN+RSJ+CLjUt9x7PNdx8ubaYfDROyp2Z8c= +github.com/consensys/bavard v0.1.27 h1:j6hKUrGAy/H+gpNrpLU3I26n1yc+VMGmd6ID5+gAhOs= +github.com/consensys/bavard v0.1.27/go.mod h1:k/zVjHHC4B+PQy1Pg7fgvG3ALicQw540Crag8qx+dZs= +github.com/consensys/gnark-crypto v0.16.0 h1:8Dl4eYmUWK9WmlP1Bj6je688gBRJCJbT8Mw4KoTAawo= +github.com/consensys/gnark-crypto v0.16.0/go.mod h1:Ke3j06ndtPTVvo++PhGNgvm+lgpLvzbcE2MqljY7diU= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -870,8 +871,8 @@ github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4x github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= -github.com/cosmos/gogoproto v1.7.2 h1:5G25McIraOC0mRFv9TVO139Uh3OklV2hczr13KKVHCA= -github.com/cosmos/gogoproto v1.7.2/go.mod h1:8S7w53P1Y1cHwND64o0BnArT6RmdgIvsBuco6uTllsk= +github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro= +github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0= github.com/cosmos/iavl v1.2.6 h1:Hs3LndJbkIB+rEvToKJFXZvKo6Vy0Ex1SJ54hhtioIs= github.com/cosmos/iavl v1.2.6/go.mod h1:GiM43q0pB+uG53mLxLDzimxM9l/5N9UuSY3/D0huuVw= github.com/cosmos/ibc-go/v10 v10.1.1 h1:Mtl0Ydr9dVdOrPqmxCAG49RmX2/VDYeKYdwv3G2y0g8= @@ -911,6 +912,8 @@ github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241217090828-cfbca9fe8254 github.com/crypto-org-chain/cosmos-sdk/store v0.0.0-20241217090828-cfbca9fe8254/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241217090828-cfbca9fe8254 h1:JzLOFRiKsDtLJt5h0M0jkEIPDKvFFyja7VEp7gG6O9U= github.com/crypto-org-chain/cosmos-sdk/x/tx v0.0.0-20241217090828-cfbca9fe8254/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= +github.com/crypto-org-chain/ethermint v0.0.0-20251124090103-12d426c14aea h1:H1hoG9J3ElBeAL3RzJufa0VvR6+hEqXDvp+ME7sKhpI= +github.com/crypto-org-chain/ethermint v0.0.0-20251124090103-12d426c14aea/go.mod h1:/E17R2sdjWWygJJP+ZSh3CkfJD2U8Z4HbA85iObApoc= github.com/crypto-org-chain/go-block-stm v0.0.0-20241213061541-7afe924fb4a6 h1:6KPEi8dWkDSBddQb4NAvEXmNnTXymF3yVeTaT4Hz1iU= github.com/crypto-org-chain/go-block-stm v0.0.0-20241213061541-7afe924fb4a6/go.mod h1:iwQTX9xMX8NV9k3o2BiWXA0SswpsZrDk5q3gA7nWYiE= github.com/crypto-org-chain/go-ethereum v1.10.20-0.20250815065500-a4fbafcae0dd h1:ebSnzvM9yKVGFjvoGly7LFQQCS2HuOWMCvQyByJ52Gs= @@ -1200,6 +1203,7 @@ github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC 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= +github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -1461,6 +1465,9 @@ github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyua github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= +github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= +github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= +github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= @@ -1500,8 +1507,8 @@ 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.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo/v2 v2.27.2 h1:LzwLj0b89qtIy6SSASkzlNvX6WktqurSHwkk2ipF/Ns= -github.com/onsi/ginkgo/v2 v2.27.2/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo= +github.com/onsi/ginkgo/v2 v2.25.1 h1:Fwp6crTREKM+oA6Cz4MsO8RhKQzs2/gOIVOUscMAfZY= +github.com/onsi/ginkgo/v2 v2.25.1/go.mod h1:ppTWQ1dh9KM/F1XgpeRqelR+zHVwV81DGRSDnFxK7Sk= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= 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= @@ -1608,8 +1615,6 @@ github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= -github.com/randy-cro/ethermint v0.0.0-20251121082919-46c057ac4dde h1:6aXJ2U+NOAAaetAuPJ9ixLCtByn+hqC/MwnnafrpjUQ= -github.com/randy-cro/ethermint v0.0.0-20251121082919-46c057ac4dde/go.mod h1:ZLSoAlnXOn5fiK1+BZSEi7xeuXU5W2SSEU1UeGVNwgY= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= @@ -1636,8 +1641,8 @@ github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc= -github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik= +github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo= +github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU= github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U= @@ -1655,26 +1660,25 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1 github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw= -github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= -github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I= -github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= -github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= -github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= +github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= +github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= +github.com/spf13/cast v1.9.2 h1:SsGfm7M8QOFtEzumm7UZrZdLLquNdzFYfIbEXntcFbE= +github.com/spf13/cast v1.9.2/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= -github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU= -github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY= +github.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4= +github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= github.com/spiffe/go-spiffe/v2 v2.5.0 h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE= github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= github.com/status-im/keycard-go v0.3.3 h1:qk/JHSkT9sMka+lVXrTOIVSgHIY7lDm46wrUqTsNa4s= @@ -1718,9 +1722,8 @@ github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= 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 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= -github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/tidwall/tinylru v1.1.0 h1:XY6IUfzVTU9rpwdhKUF6nQdChgCdGjkMfLzbWyiau6I= @@ -1739,8 +1742,8 @@ github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2n github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/ugorji/go/codec v1.2.9/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/ulikunitz/xz v0.5.15 h1:9DNdB5s+SgV3bQ2ApL10xRc35ck0DuIX/isZvIk+ubY= -github.com/ulikunitz/xz v0.5.15/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/ulikunitz/xz v0.5.14 h1:uv/0Bq533iFdnMHZdRBTOlaNMdb1+ZxXIlHDZHIHcvg= +github.com/ulikunitz/xz v0.5.14/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= @@ -1808,12 +1811,16 @@ go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= +go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= @@ -1911,8 +1918,6 @@ golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= -golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= 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= @@ -2513,8 +2518,8 @@ google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD google.golang.org/genproto v0.0.0-20241118233622-e639e219e697/go.mod h1:JJrvXBWRZaFMxBufik1a4RpFw4HhgVtBBWQeQgUj2cc= google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 h1:FiusG7LWj+4byqhbvmB+Q93B/mOxJLN2DTozDuZm4EU= google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b h1:zPKJod4w6F1+nRGDI9ubnXYhU9NSWoFAijkHkUXeTK8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250804133106-a7a43d27e69b/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -2562,8 +2567,8 @@ google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5v google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= -google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= -google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= +google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -2583,8 +2588,8 @@ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= -google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= +google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -2672,6 +2677,8 @@ rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8 rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= +rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= diff --git a/gomod2nix.toml b/gomod2nix.toml index f9fdf341ec..46f209c9e3 100644 --- a/gomod2nix.toml +++ b/gomod2nix.toml @@ -137,11 +137,11 @@ schema = 3 version = "v1.22.0" hash = "sha256-lY1K29h4vlAmJVvwKgbTG8BTACYGjFaginCszN+ST6w=" [mod."github.com/btcsuite/btcd"] - version = "v0.25.0" - hash = "sha256-Yh3UJ8HmzY+5WXZHhcl3oFcXl2PkBTd4O4s8FYyNbos=" + version = "v0.24.2" + hash = "sha256-ahlpwEr4KfyrEA899X07QtuSDnC8U+SnwL+z72DiK5E=" [mod."github.com/btcsuite/btcd/btcec/v2"] - version = "v2.3.5" - hash = "sha256-stpoaGQ1PNPqtLYIQc96YH24s8owcV+PoSo6xREi9LI=" + version = "v2.3.4" + hash = "sha256-9fV41jYeTUrpoyu19LPuGBG/N9wFv6D6wVBE8R5WzRI=" [mod."github.com/btcsuite/btcd/btcutil"] version = "v1.1.6" hash = "sha256-TYbwJLNX/+63nm+b3RqPH3ZIvTBnsm9peqJP05v9Z90=" @@ -200,9 +200,12 @@ schema = 3 [mod."github.com/cometbft/cometbft-db"] version = "v0.15.0" hash = "sha256-hNtUoPsgrsc9MhU7AONKMOB6k4bEbg757BSXVp7G5EA=" + [mod."github.com/consensys/bavard"] + version = "v0.1.27" + hash = "sha256-qRbdMAIcsg/2RCkmyfUtsFc/R99n50epZtTjX6QaWac=" [mod."github.com/consensys/gnark-crypto"] - version = "v0.18.1" - hash = "sha256-8NFI8oeqRkMBnKdGUpGZfwt3gr4nmzmE3yoasQ3zZkg=" + version = "v0.16.0" + hash = "sha256-Yq7cCmfiNdnX5Vl0oW9/wioxi9hOkXBWCB4pvHu4/fw=" [mod."github.com/cosmos/btcutil"] version = "v1.0.5" hash = "sha256-t572Sr5iiHcuMKLMWa2i+LBAt192oa+G1oA371tG/eI=" @@ -223,8 +226,8 @@ schema = 3 version = "v1.2.0" hash = "sha256-Hd19V0RCiMoCL67NsqvWIsvWF8KM3LnuJTbYjWtQkEo=" [mod."github.com/cosmos/gogoproto"] - version = "v1.7.2" - hash = "sha256-L9sJZoQGWaix43AJ7rsm1DUng8uoD8HJ6Mb92Ynq8+s=" + version = "v1.7.0" + hash = "sha256-ZkEUImxBBo8Q/6c7tVR0rybpLbtlplzvgfLl5xvtV00=" [mod."github.com/cosmos/iavl"] version = "v1.2.6" hash = "sha256-9kLtVepU5b3m2Sne8pBQNvF9LxM374LEmvuLWeYBfFU=" @@ -312,9 +315,9 @@ schema = 3 version = "v0.2.2" hash = "sha256-0MLfSJKdeK3Z7tWAXTdzwB4091dmyxIX38S5SKH5QAw=" [mod."github.com/evmos/ethermint"] - version = "v0.0.0-20251121082919-46c057ac4dde" - hash = "sha256-8eJk4xUTm1aRKJiuHdTv0ZGg4kwTUrTiO8E/NyHlU8A=" - replaced = "github.com/randy-cro/ethermint" + version = "v0.0.0-20251124090103-12d426c14aea" + hash = "sha256-4C9kaSpyzHGtM1mY5UC6HiWpZZDoG2P/2vNQ/zO9bzc=" + replaced = "github.com/crypto-org-chain/ethermint" [mod."github.com/fatih/color"] version = "v1.17.0" hash = "sha256-QsKMy3MsvjbYNcA9jP8w6c3wpmWDZ0079bybAEzmXR0=" @@ -534,6 +537,9 @@ schema = 3 [mod."github.com/mitchellh/mapstructure"] version = "v1.5.0" hash = "sha256-ztVhGQXs67MF8UadVvG72G3ly0ypQW0IRDdOOkjYwoE=" + [mod."github.com/mmcloughlin/addchain"] + version = "v0.4.0" + hash = "sha256-zSWSSUElCVFH5mydFlF2mzn4Wsm1WHASRxQ5TKa+To8=" [mod."github.com/mtibben/percent"] version = "v0.2.1" hash = "sha256-Zj1lpCP6mKQ0UUTMs2By4LC414ou+iJzKkK+eBHfEcc=" @@ -607,8 +613,8 @@ schema = 3 version = "v1.34.0" hash = "sha256-M503WwzPvqbOas3f70FQNXoWG17eV/XU6FubtB6P0uo=" [mod."github.com/sagikazarmark/locafero"] - version = "v0.11.0" - hash = "sha256-PUX8dzJtkD8YDZFNqpHnl4qgb0tE1W/DLnL7V+/d1z4=" + version = "v0.7.0" + hash = "sha256-ZmaGOKHDw18jJqdkwQwSpUT11F9toR6KPs3241TONeY=" [mod."github.com/sasha-s/go-deadlock"] version = "v0.3.5" hash = "sha256-1vyxWqOTVVVeodipm/tpDgRKUMkEdkoLWSgtiVZaZmw=" @@ -616,23 +622,23 @@ schema = 3 version = "v3.21.4-0.20210419000835-c7a38de76ee5+incompatible" hash = "sha256-oqIqyFquWabIE6DID6uTEc8oFEmM1rVu2ATn3toiCEg=" [mod."github.com/sourcegraph/conc"] - version = "v0.3.1-0.20240121214520-5f936abd7ae8" - hash = "sha256-AUNFlY6K7s1aoW/vb4pjK84ROdnVZY1i6cOmdeG+wN8=" + version = "v0.3.0" + hash = "sha256-mIdMs9MLAOBKf3/0quf1iI3v8uNWydy7ae5MFa+F2Ko=" [mod."github.com/spf13/afero"] - version = "v1.15.0" - hash = "sha256-LhcezbOqfuBzacytbqck0hNUxi6NbWNhifUc5/9uHQ8=" + version = "v1.12.0" + hash = "sha256-TX3DcyAdrXqf+TxmEz4TilWQo2Y4hcBXOeRY6BjDp+s=" [mod."github.com/spf13/cast"] - version = "v1.10.0" - hash = "sha256-dQ6Qqf26IZsa6XsGKP7GDuCj+WmSsBmkBwGTDfue/rk=" + version = "v1.9.2" + hash = "sha256-B+Nw/DDgWR0NV6J6EO2oOahw75qbjLtV8Tm3wrN5NDw=" [mod."github.com/spf13/cobra"] version = "v1.9.1" hash = "sha256-dzEqquABE3UqZmJuj99244QjvfojS8cFlsPr/MXQGj0=" [mod."github.com/spf13/pflag"] - version = "v1.0.10" - hash = "sha256-uDPnWjHpSrzXr17KEYEA1yAbizfcsfo5AyztY2tS6ZU=" + version = "v1.0.6" + hash = "sha256-NjrK0FZPIfO/p2xtL1J7fOBQNTZAPZOC6Cb4aMMvhxI=" [mod."github.com/spf13/viper"] - version = "v1.21.0" - hash = "sha256-A9A8i7HH/ge4j3hw7G++HNj8BjhhpZKvxHhfY+QAxkI=" + version = "v1.20.1" + hash = "sha256-gbCM0k7RAlvn7jpSuWB2LX5Nip9vgwsPNGbDXTI7JvM=" [mod."github.com/spiffe/go-spiffe/v2"] version = "v2.5.0" hash = "sha256-FPtPVF4+MF+Ybe9NI58i5mnGILvTKadk8JSZJQ8gD6s=" @@ -663,8 +669,8 @@ schema = 3 version = "v1.1.1" hash = "sha256-M2klhPId3Q3T3VGkSbOkYl/2nLHnsG+yMbXkPkyrRdg=" [mod."github.com/tidwall/pretty"] - version = "v1.2.1" - hash = "sha256-S0uTDDGD8qr415Ut7QinyXljCp0TkL4zOIrlJ+9OMl8=" + version = "v1.2.0" + hash = "sha256-esRQGsn2Ee/CiySlwyuOICSLdqUkH4P7u8qXszos8Yc=" [mod."github.com/tidwall/sjson"] version = "v1.2.5" hash = "sha256-OYGNolkmL7E1Qs2qrQ3IVpQp5gkcHNU/AB/z2O+Myps=" @@ -687,8 +693,8 @@ schema = 3 version = "v1.1.0" hash = "sha256-3YhWBtSwRLGwm7vNwqumphZG3uLBW1vwT9QkQ8JuSjU=" [mod."github.com/ulikunitz/xz"] - version = "v0.5.15" - hash = "sha256-L5KYLue5U14bxUuNyhZ6lIjbda6eCQsx1V6gToqfRdk=" + version = "v0.5.14" + hash = "sha256-21oXcIVmFyw+ukGQtflly0wpqaqh1jE0C9hLDSFYR7E=" [mod."github.com/zbiljic/go-filelock"] version = "v0.0.0-20170914061330-1dbf7103ab7d" hash = "sha256-JqNj/Wg8nGFSmndgYC7+FZzL2zG7rwOQMjlqYs3ZGvw=" @@ -734,12 +740,12 @@ schema = 3 [mod."go.opentelemetry.io/otel/trace"] version = "v1.37.0" hash = "sha256-FBeLOb5qmIiE9VmbgCf1l/xpndBqHkRiaPt1PvoKrVY=" + [mod."go.uber.org/multierr"] + version = "v1.11.0" + hash = "sha256-Lb6rHHfR62Ozg2j2JZy3MKOMKdsfzd1IYTR57r3Mhp0=" [mod."go.yaml.in/yaml/v2"] version = "v2.4.2" hash = "sha256-oC8RWdf1zbMYCtmR0ATy/kCkhIwPR9UqFZSMOKLVF/A=" - [mod."go.yaml.in/yaml/v3"] - version = "v3.0.4" - hash = "sha256-NkGFiDPoCxbr3LFsI6OCygjjkY0rdmg5ggvVVwpyDQ4=" [mod."golang.org/x/arch"] version = "v0.17.0" hash = "sha256-avV63nZlJxuo3/LLBKQ2a96Nn1wflNtc1Dr7GSPbHAs=" @@ -780,14 +786,14 @@ schema = 3 version = "v0.0.0-20250707201910-8d1bb00bc6a7" hash = "sha256-xtTBmzlyynWQa0KtuQpNZ4fzSTB/5ozXclE3SuP3naI=" [mod."google.golang.org/genproto/googleapis/rpc"] - version = "v0.0.0-20250804133106-a7a43d27e69b" + version = "v0.0.0-20250707201910-8d1bb00bc6a7" hash = "sha256-WK7iDtAhH19NPe3TywTQlGjDawNaDKWnxhFL9PgVUwM=" [mod."google.golang.org/grpc"] - version = "v1.75.1" - hash = "sha256-t5w9BLW8P3SuxHRSAqsVBn8kddzCDKVijh4oxatLIps=" + version = "v1.75.0" + hash = "sha256-bMJEB2luUeYWwsQWqzuq4Wro2tTKBWGJPuTtzioJcfM=" [mod."google.golang.org/protobuf"] - version = "v1.36.10" - hash = "sha256-gUrj1qSpjcpRKCBnrYlKMm+P0OSh7B/8EBREstwhD1w=" + version = "v1.36.8" + hash = "sha256-yZN8ZON0b5HjUNUSubHst7zbvnMsOzd81tDPYQRtPgM=" [mod."gopkg.in/yaml.v2"] version = "v2.4.0" hash = "sha256-uVEGglIedjOIGZzHW4YwN1VoRSTK8o0eGZqzd+TNdd0=" @@ -803,6 +809,9 @@ schema = 3 [mod."pgregory.net/rapid"] version = "v1.2.0" hash = "sha256-GT8thcMb5IH7KSFiK7p2IpThK9daDvZwqOGAP8eELko=" + [mod."rsc.io/tmplfunc"] + version = "v0.0.3" + hash = "sha256-Kii+7DxaSzzn2NphVcEk0W42TXMBFINtm3+B2t7e0cc=" [mod."sigs.k8s.io/yaml"] version = "v1.6.0" hash = "sha256-49hg7IVPzwxeovp+HTMiWa/10NMMTSTjAdCmIv6p9dw="