v0.50.x
to v0.53.x
.
This guide includes one required change and three optional features.
After completing this guide, applications will have:
- The
x/protocolpool
module - The
x/epochs
module - Unordered Transaction support
IMPORTANT: If your chain uses IBC, you can choose between IBC-Go v8.x or v10.x when upgrading to SDK v0.53. Both are compatible. See the IBC-Go Version Requirements section below for guidance on choosing.
Table of Contents
- IBC-Go Version Requirements
- App Wiring Changes (REQUIRED)
- Adding ProtocolPool Module (OPTIONAL)
- Adding Epochs Module (OPTIONAL)
- Enable Unordered Transactions (OPTIONAL)
- Upgrade Handler
IBC-Go Version Requirements
Compatibility
Cosmos SDK v0.53 is compatible with both IBC-Go v8.x and v10.x. You can choose either version.Cosmos SDK | IBC-Go v8.x | IBC-Go v10.x |
---|---|---|
v0.53.x | ✅ Compatible | ✅ Compatible |
v0.50.x | ✅ Compatible | ❌ Not Compatible |
Choosing Your IBC-Go Version
Option 1: Stay on IBC-Go v8.x
- Latest: v8.7.0
- Support until: May 10, 2025
- Migration: No IBC changes required for SDK v0.53 upgrade
- Middleware: All existing middleware continues to work
Option 2: Upgrade to IBC-Go v10.x
- Latest: v10.3.0
- Features: IBC v2 protocol support
- Migration: Follow the IBC-Go v8.1 to v10 migration guide
- Breaking changes: Fee middleware removed, capability module removed
Migration Considerations
If Staying on IBC-Go v8.x
No IBC-related changes are required. Your existing IBC configuration will continue to work with SDK v0.53.If Upgrading to IBC-Go v10.x
Key breaking changes:- Remove fee middleware (29-fee) from module configuration
- Remove capability module
- Update keeper constructors
- Reconfigure middleware stacks
App Wiring Changes REQUIRED
Thex/auth
module now contains a PreBlocker
that must be set in the module manager’s SetOrderPreBlockers
method.
Adding ProtocolPool Module OPTIONAL
Using an external community pool such as
x/protocolpool
will cause the following x/distribution
handlers to return an error:QueryServiceCommunityPool
CommunityPoolSpend
FundCommunityPool
x/distribution
, please update them to use either x/protocolpool
or your custom external community pool alternatives.Manual Wiring
Import the following:DI Wiring
Note: as long as an external community pool keeper (here,x/protocolpool
) is wired in DI configs, x/distribution
will automatically use it for its external pool.
First, set up the keeper for the application.
Import the protocolpool keeper:
Adding Epochs Module OPTIONAL
Manual Wiring
Import the following:DI Wiring
First, set up the keeper for the application. Import the epochs keeper:Enable Unordered Transactions OPTIONAL
To enable unordered transaction support on an application, thex/auth
keeper must be supplied with the WithUnorderedTransactions
option.
Note that unordered transactions require sequence values to be zero, and will FAIL if a non-zero sequence value is set.
Please ensure no sequence value is set when submitting an unordered transaction.
Services that rely on prior assumptions about sequence values should be updated to handle unordered transactions.
Services should be aware that when the transaction is unordered, the transaction sequence will always be zero.
SigVerifyOptions
field in x/auth's
ante.HandlerOptions
.
Upgrade Handler
The upgrade handler only requires adding the store upgrades for the modules added above. If your application is not addingx/protocolpool
or x/epochs
, you do not need to add the store upgrade.