Skip to content

Commit 0a16a03

Browse files
authored
chore: bump ics to v4.2.0-lsm-rc0 (#3089)
* chore: bump ics to v4.2.0-lsm-rc0 * disable unused test * deps!: add provider to transferstack * rename ibcprovider -> icsprovider * add comment on transferstack * fix!: mv provider middlewares up the stack * tests: add extra gas on unbond (due to LSM)
1 parent 07c1fe9 commit 0a16a03

File tree

6 files changed

+84
-111
lines changed

6 files changed

+84
-111
lines changed

app/keepers/keepers.go

+15-12
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ import (
3333
porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types"
3434
ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported"
3535
ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper"
36-
ibcprovider "github.com/cosmos/interchain-security/v4/x/ccv/provider"
37-
ibcproviderkeeper "github.com/cosmos/interchain-security/v4/x/ccv/provider/keeper"
36+
icsprovider "github.com/cosmos/interchain-security/v4/x/ccv/provider"
37+
icsproviderkeeper "github.com/cosmos/interchain-security/v4/x/ccv/provider/keeper"
3838
providertypes "github.com/cosmos/interchain-security/v4/x/ccv/provider/types"
3939

4040
"github.com/cosmos/cosmos-sdk/baseapp"
@@ -110,7 +110,7 @@ type AppKeepers struct {
110110
ConsensusParamsKeeper consensusparamkeeper.Keeper
111111

112112
// ICS
113-
ProviderKeeper ibcproviderkeeper.Keeper
113+
ProviderKeeper icsproviderkeeper.Keeper
114114

115115
PFMRouterKeeper *pfmrouterkeeper.Keeper
116116
RatelimitKeeper ratelimitkeeper.Keeper
@@ -121,14 +121,14 @@ type AppKeepers struct {
121121
TransferModule transfer.AppModule
122122
PFMRouterModule pfmrouter.AppModule
123123
RateLimitModule ratelimit.AppModule
124-
ProviderModule ibcprovider.AppModule
124+
ProviderModule icsprovider.AppModule
125125

126126
// make scoped keepers public for test purposes
127127
ScopedIBCKeeper capabilitykeeper.ScopedKeeper
128128
ScopedTransferKeeper capabilitykeeper.ScopedKeeper
129129
ScopedICAHostKeeper capabilitykeeper.ScopedKeeper
130130
ScopedICAControllerKeeper capabilitykeeper.ScopedKeeper
131-
ScopedIBCProviderKeeper capabilitykeeper.ScopedKeeper
131+
ScopedICSproviderkeeper capabilitykeeper.ScopedKeeper
132132
}
133133

134134
func NewAppKeeper(
@@ -186,7 +186,7 @@ func NewAppKeeper(
186186
appKeepers.ScopedICAHostKeeper = appKeepers.CapabilityKeeper.ScopeToModule(icahosttypes.SubModuleName)
187187
appKeepers.ScopedICAControllerKeeper = appKeepers.CapabilityKeeper.ScopeToModule(icacontrollertypes.SubModuleName)
188188
appKeepers.ScopedTransferKeeper = appKeepers.CapabilityKeeper.ScopeToModule(ibctransfertypes.ModuleName)
189-
appKeepers.ScopedIBCProviderKeeper = appKeepers.CapabilityKeeper.ScopeToModule(providertypes.ModuleName)
189+
appKeepers.ScopedICSproviderkeeper = appKeepers.CapabilityKeeper.ScopeToModule(providertypes.ModuleName)
190190

191191
// Applications that wish to enforce statically created ScopedKeepers should call `Seal` after creating
192192
// their scoped modules in `NewApp` with `ScopeToModule`
@@ -312,11 +312,11 @@ func NewAppKeeper(
312312
govConfig,
313313
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
314314
)
315-
appKeepers.ProviderKeeper = ibcproviderkeeper.NewKeeper(
315+
appKeepers.ProviderKeeper = icsproviderkeeper.NewKeeper(
316316
appCodec,
317317
appKeepers.keys[providertypes.StoreKey],
318318
appKeepers.GetSubspace(providertypes.ModuleName),
319-
appKeepers.ScopedIBCProviderKeeper,
319+
appKeepers.ScopedICSproviderkeeper,
320320
appKeepers.IBCKeeper.ChannelKeeper,
321321
&appKeepers.IBCKeeper.PortKeeper,
322322
appKeepers.IBCKeeper.ConnectionKeeper,
@@ -330,7 +330,7 @@ func NewAppKeeper(
330330
authtypes.FeeCollectorName,
331331
)
332332

333-
appKeepers.ProviderModule = ibcprovider.NewAppModule(&appKeepers.ProviderKeeper, appKeepers.GetSubspace(providertypes.ModuleName))
333+
appKeepers.ProviderModule = icsprovider.NewAppModule(&appKeepers.ProviderKeeper, appKeepers.GetSubspace(providertypes.ModuleName))
334334

335335
// Register the proposal types
336336
// Deprecated: Avoid adding new handlers, instead use the new proposal flow
@@ -342,7 +342,7 @@ func NewAppKeeper(
342342
AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(appKeepers.ParamsKeeper)).
343343
AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(appKeepers.UpgradeKeeper)).
344344
AddRoute(ibcclienttypes.RouterKey, ibcclient.NewClientProposalHandler(appKeepers.IBCKeeper.ClientKeeper)).
345-
AddRoute(providertypes.RouterKey, ibcprovider.NewProviderProposalHandler(appKeepers.ProviderKeeper))
345+
AddRoute(providertypes.RouterKey, icsprovider.NewProviderProposalHandler(appKeepers.ProviderKeeper))
346346

347347
// Set legacy router for backwards compatibility with gov v1beta1
348348
appKeepers.GovKeeper.SetLegacyRouter(govRouter)
@@ -445,13 +445,16 @@ func NewAppKeeper(
445445
// - ibcfee
446446
// - ratelimit
447447
// - pfm
448+
// - provider
448449
// - transfer
449450
//
450451
// This is how transfer stack will work in the end:
451-
// * RecvPacket -> IBC core -> Fee -> RateLimit -> PFM -> Transfer (AddRoute)
452-
// * SendPacket -> Transfer -> PFM -> RateLimit -> Fee -> IBC core (ICS4Wrapper)
452+
// * RecvPacket -> IBC core -> Fee -> RateLimit -> PFM -> Provider -> Transfer (AddRoute)
453+
// * SendPacket -> Transfer -> Provider -> PFM -> RateLimit -> Fee -> IBC core (ICS4Wrapper)
454+
453455
var transferStack porttypes.IBCModule
454456
transferStack = transfer.NewIBCModule(appKeepers.TransferKeeper)
457+
transferStack = icsprovider.NewIBCMiddleware(transferStack, appKeepers.ProviderKeeper)
455458
transferStack = pfmrouter.NewIBCMiddleware(
456459
transferStack,
457460
appKeepers.PFMRouterKeeper,

app/upgrades/v16/upgrades.go

+16-13
Original file line numberDiff line numberDiff line change
@@ -163,23 +163,26 @@ func AddRateLimits(ctx sdk.Context, k ratelimitkeeper.Keeper) error {
163163
return nil
164164
}
165165

166+
// NOTE: This is commented out because the valset is already initialized and the function has no effect
167+
// ComputeNextEpochConsumerValSet was removed and build was broken
168+
// code is kept here for reference
166169
func InitICSEpochs(ctx sdk.Context, pk providerkeeper.Keeper, sk stakingkeeper.Keeper) error {
167170
ctx.Logger().Info("Initializing ICS epochs...")
168171

169172
// get the bonded validators from the staking module
170-
bondedValidators := sk.GetLastValidators(ctx)
171-
172-
for _, chain := range pk.GetAllConsumerChains(ctx) {
173-
chainID := chain.ChainId
174-
valset := pk.GetConsumerValSet(ctx, chainID)
175-
if len(valset) > 0 {
176-
ctx.Logger().Info("consumer chain `%s` already has the valset initialized", chainID)
177-
} else {
178-
// init valset for consumer with chainID
179-
nextValidators := pk.ComputeNextEpochConsumerValSet(ctx, chainID, bondedValidators)
180-
pk.SetConsumerValSet(ctx, chainID, nextValidators)
181-
}
182-
}
173+
// _ = sk.GetLastValidators(ctx)
174+
175+
// for _, chain := range pk.GetAllConsumerChains(ctx) {
176+
// chainID := chain.ChainId
177+
// valset := pk.GetConsumerValSet(ctx, chainID)
178+
// if len(valset) > 0 {
179+
// ctx.Logger().Info("consumer chain `%s` already has the valset initialized", chainID)
180+
// } else {
181+
// // init valset for consumer with chainID
182+
// nextValidators := pk.ComputeNextEpochConsumerValSet(ctx, chainID, bondedValidators)
183+
// pk.SetConsumerValSet(ctx, chainID, nextValidators)
184+
// }
185+
// }
183186

184187
ctx.Logger().Info("Finished initializing ICS epochs")
185188
return nil

app/upgrades/v16/upgrades_test.go

-34
Original file line numberDiff line numberDiff line change
@@ -73,37 +73,3 @@ func TestAddRateLimits(t *testing.T) {
7373
require.Equal(t, expectedRateLimit, rateLimit)
7474
}
7575
}
76-
77-
func TestInitICSEpochs(t *testing.T) {
78-
gaiaApp := helpers.Setup(t)
79-
ctx := gaiaApp.NewUncachedContext(true, tmproto.Header{})
80-
81-
providerKeeper := gaiaApp.ProviderKeeper
82-
stakingKeeper := gaiaApp.StakingKeeper
83-
84-
// the setup has only one validator that is bonded
85-
expBondedVals := stakingKeeper.GetAllValidators(ctx)
86-
require.Equal(t, 1, len(expBondedVals))
87-
expVal := expBondedVals[0]
88-
expPower := expVal.ConsensusPower(stakingKeeper.PowerReduction(ctx))
89-
expConsAddr, err := expVal.GetConsAddr()
90-
require.NoError(t, err)
91-
expConsumerPublicKey, err := expVal.TmConsPublicKey()
92-
require.NoError(t, err)
93-
94-
providerKeeper.SetConsumerClientId(ctx, "chainID-0", "clientID-0")
95-
providerKeeper.SetConsumerClientId(ctx, "chainID-1", "clientID-1")
96-
97-
err = v16.InitICSEpochs(ctx, providerKeeper, *stakingKeeper)
98-
require.NoError(t, err)
99-
100-
for _, chain := range providerKeeper.GetAllConsumerChains(ctx) {
101-
chainID := chain.ChainId
102-
valset := providerKeeper.GetConsumerValSet(ctx, chainID)
103-
require.Equal(t, 1, len(valset))
104-
val := valset[0]
105-
require.Equal(t, expPower, val.Power)
106-
require.Equal(t, expConsAddr.Bytes(), val.ProviderConsAddr)
107-
require.Equal(t, expConsumerPublicKey, *val.ConsumerPublicKey)
108-
}
109-
}

go.mod

+18-18
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ require (
1616
github.com/cosmos/gogoproto v1.4.10
1717
github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7 v7.1.3
1818
github.com/cosmos/ibc-go/v7 v7.4.0
19-
github.com/cosmos/interchain-security/v4 v4.1.1
19+
github.com/cosmos/interchain-security/v4 v4.2.0
2020
github.com/google/gofuzz v1.2.0
2121
github.com/gorilla/mux v1.8.1
2222
github.com/ory/dockertest/v3 v3.10.0
@@ -26,20 +26,20 @@ require (
2626
github.com/spf13/pflag v1.0.5
2727
github.com/spf13/viper v1.18.2
2828
github.com/stretchr/testify v1.9.0
29-
google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80
29+
google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de
3030
)
3131

3232
require (
3333
cloud.google.com/go v0.112.0 // indirect
34-
cloud.google.com/go/compute v1.23.3 // indirect
34+
cloud.google.com/go/compute v1.24.0 // indirect
3535
cloud.google.com/go/compute/metadata v0.2.3 // indirect
36-
cloud.google.com/go/iam v1.1.5 // indirect
36+
cloud.google.com/go/iam v1.1.6 // indirect
3737
cloud.google.com/go/storage v1.36.0 // indirect
3838
github.com/golang/protobuf v1.5.4
3939
// github.com/gravity-devs/liquidity v1.6.0
4040
github.com/grpc-ecosystem/grpc-gateway v1.16.0
41-
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect
42-
google.golang.org/grpc v1.62.1
41+
google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect
42+
google.golang.org/grpc v1.63.2
4343
)
4444

4545
require (
@@ -100,7 +100,7 @@ require (
100100
github.com/go-kit/kit v0.12.0 // indirect
101101
github.com/go-kit/log v0.2.1 // indirect
102102
github.com/go-logfmt/logfmt v0.6.0 // indirect
103-
github.com/go-logr/logr v1.3.0 // indirect
103+
github.com/go-logr/logr v1.4.1 // indirect
104104
github.com/go-logr/stdr v1.2.2 // indirect
105105
github.com/gobwas/ws v1.1.0 // indirect
106106
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect
@@ -125,7 +125,7 @@ require (
125125
github.com/gtank/merlin v0.1.1 // indirect
126126
github.com/gtank/ristretto255 v0.1.2 // indirect
127127
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
128-
github.com/hashicorp/go-getter v1.7.1 // indirect
128+
github.com/hashicorp/go-getter v1.7.4 // indirect
129129
github.com/hashicorp/go-immutable-radix v1.3.1 // indirect
130130
github.com/hashicorp/go-safetemp v1.0.0 // indirect
131131
github.com/hashicorp/go-version v1.6.0 // indirect
@@ -192,28 +192,28 @@ require (
192192
github.com/zondax/ledger-go v0.14.3 // indirect
193193
go.etcd.io/bbolt v1.3.8 // indirect
194194
go.opencensus.io v0.24.0 // indirect
195-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // indirect
196-
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect
197-
go.opentelemetry.io/otel v1.21.0 // indirect
198-
go.opentelemetry.io/otel/metric v1.21.0 // indirect
199-
go.opentelemetry.io/otel/trace v1.21.0 // indirect
195+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.47.0 // indirect
196+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.47.0 // indirect
197+
go.opentelemetry.io/otel v1.22.0 // indirect
198+
go.opentelemetry.io/otel/metric v1.22.0 // indirect
199+
go.opentelemetry.io/otel/trace v1.22.0 // indirect
200200
go.uber.org/atomic v1.10.0 // indirect
201201
go.uber.org/mock v0.2.0 // indirect
202202
go.uber.org/multierr v1.9.0 // indirect
203203
golang.org/x/crypto v0.21.0 // indirect
204204
golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect
205-
golang.org/x/mod v0.16.0 // indirect
205+
golang.org/x/mod v0.17.0 // indirect
206206
golang.org/x/net v0.23.0 // indirect
207-
golang.org/x/oauth2 v0.16.0 // indirect
207+
golang.org/x/oauth2 v0.17.0 // indirect
208208
golang.org/x/sync v0.6.0 // indirect
209209
golang.org/x/sys v0.18.0 // indirect
210210
golang.org/x/term v0.18.0 // indirect
211211
golang.org/x/text v0.14.0 // indirect
212212
golang.org/x/time v0.5.0 // indirect
213213
golang.org/x/tools v0.13.0 // indirect
214-
google.golang.org/api v0.155.0 // indirect
214+
google.golang.org/api v0.162.0 // indirect
215215
google.golang.org/appengine v1.6.8 // indirect
216-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect
216+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect
217217
google.golang.org/protobuf v1.33.0 // indirect
218218
gopkg.in/ini.v1 v1.67.0 // indirect
219219
gopkg.in/yaml.v2 v2.4.0 // indirect
@@ -231,7 +231,7 @@ replace (
231231
github.com/cosmos/cosmos-sdk => github.com/cosmos/cosmos-sdk v0.47.13-ics-lsm
232232

233233
// Use special ICS v4.1.0-ics-lsm release with support for LSM
234-
github.com/cosmos/interchain-security/v4 => github.com/cosmos/interchain-security/v4 v4.1.1-lsm
234+
github.com/cosmos/interchain-security/v4 => github.com/cosmos/interchain-security/v4 v4.2.0-lsm-rc0
235235

236236
// TODO: remove it: https://github.com/cosmos/cosmos-sdk/issues/13134
237237
github.com/dgrijalva/jwt-go => github.com/golang-jwt/jwt/v4 v4.4.2

0 commit comments

Comments
 (0)