Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade cosmos-sdk in irishub to v0.50.10 #2975

Open
wants to merge 16 commits into
base: master
Choose a base branch
from
Open

Conversation

wangjiulian
Copy link
Collaborator

@wangjiulian wangjiulian commented Dec 9, 2024

Close:#2960

Summary by CodeRabbit

Release Notes

  • New Features

    • Enhanced error handling across various modules for improved robustness.
    • Updated context handling in multiple methods to use context.Context instead of sdk.Context.
    • Added new methods to the AppModule struct for defining module characteristics.
    • Introduced new adapter types for improved integration with existing keepers.
  • Bug Fixes

    • Improved error reporting in transaction processing and message handling.
  • Documentation

    • Updated comments and formatting in protocol buffer files for consistency.
    • Enhanced clarity in method signatures and error handling documentation.
  • Chores

    • Updated import paths to reflect new module structures and versions, including transitions from Cosmos SDK v7 to v8.
    • Comprehensive updates to dependencies in go.mod for compatibility with newer libraries.
  • Tests

    • Enhanced test cases to utilize updated mathematical types and improved error handling mechanisms.
    • Adjusted context initialization in tests to align with new context handling practices.

Copy link

coderabbitai bot commented Dec 9, 2024

Walkthrough

This pull request includes extensive updates across multiple files in the irishub codebase, primarily focusing on upgrading the Cosmos SDK to version 0.50.10 and the IBC module to version v8. Key changes involve modifying import paths, updating method signatures to use context.Context, and enhancing error handling mechanisms. Additionally, the changes reflect a shift to using the new cosmossdk.io namespace for various SDK components, along with adjustments in mathematical operations to utilize the new math package.

Changes

File Path Change Summary
app/ante/decorators.go Updated error handling by replacing sdkerrors with errortypes and updated IBC module imports.
app/ante/handler_options.go Changed IBC module imports from version 7 to version 8.
app/ante/reject_msgs.go Modified error handling in RejectMessagesDecorator to use errorsmod.Wrap.
app/ante/sigverify.go Updated gas meter type from sdk.GasMeter to storetypes.GasMeter.
app/app.go Changed import paths, updated method signatures for block handlers, and modified service registration.
app/export.go Enhanced error handling in ExportAppStateAndValidators and updated method signatures.
app/keepers/keepers.go Restructured imports, added interfaceRegistry to AppKeepers, and modified initialization logic.
app/keepers/keys.go Updated store key creation methods to use storetypes methods and modified return types.
app/keepers/types.go Introduced DistrKeeperAdapter and GovKeeperAdapter for interacting with respective keepers.
app/modules.go Updated module imports to version 8 and modified module initialization logic.
app/params/proto.go Enhanced MakeEncodingConfig for improved transaction signing configurability.
app/rpc/auth.go Updated authQueryServer to include a codec field and modified error handling in decodeAccount.
app/rpc/override.go Adjusted function signatures to include codec parameter for service registration.
app/sim_bench_test.go Changed context creation to NewContextLegacy.
app/sim_test.go Updated context creation and key-value store comparison methods.
app/upgrade.go Modified import paths for the upgradetypes package.
app/upgrades/types.go Updated method signatures for consensus parameters handling.
app/upgrades/v200/config.go Replaced sdk package usage with math package for decimal handling.
app/upgrades/v200/upgrades.go Updated import paths and context handling in upgrade process.
app/upgrades/v210/upgrades.go Adjusted import paths and context handling in upgrade process.
app/upgrades/v300/constants.go Updated mathematical types to use math package.
app/upgrades/v300/lsm.go Enhanced error handling in migration functions.
app/upgrades/v300/upgrades.go Updated import paths and refined error handling in upgrade handler.
cmd/iris/cmd/genaccounts.go Added error handling for BaseVestingAccount creation.
cmd/iris/cmd/root.go Updated logging and database management imports.
cmd/iris/cmd/testnet.go Improved power reduction handling and validator creation logic.
cmd/iris/main.go Simplified error handling in the main function.
go.mod Updated Go version to 1.22.7 and modified various dependencies.
modules/evm/keeper.go Updated import paths for metrics and mathematical handling.
modules/guardian/client/cli/cli_test.go Updated integer handling to use math package.
modules/guardian/genesis_test.go Updated codec and context initialization in test setup.
modules/guardian/handler.go Changed error handling imports and updated handler signature.
modules/guardian/keeper/keeper.go Updated context handling and store types imports.
modules/guardian/keeper/keeper_test.go Updated context initialization in test setup.
modules/guardian/keeper/msg_service.go Updated error handling imports for message services.
modules/guardian/module.go Modified lifecycle method signatures to accept context.Context.
modules/guardian/types/errors.go Updated error handling imports.
modules/guardian/types/msgs.go Standardized error handling using errortypes.
modules/internft/interface.go Updated AccountKeeper methods to use context.Context.
modules/internft/keeper.go Updated logging and NFT package imports.
modules/mint/abci_test.go Updated context creation and decimal handling in tests.
modules/mint/keeper/keeper.go Updated logging and store types imports.
modules/mint/keeper/keeper_test.go Updated integer handling and context initialization in tests.
modules/mint/keeper/msg_server.go Updated error handling imports.
modules/mint/module.go Modified lifecycle method signatures to accept context.Context.
modules/mint/simulation/genesis.go Updated inflation handling to use mathsdk types.
modules/mint/types/errors.go Updated error handling imports.
modules/mint/types/expected_keepers.go Updated method signatures to use context.Context.
modules/mint/types/minter.go Updated inflation handling to use sdkmath types.
modules/mint/types/minter_test.go Updated inflation parameter handling in tests.
modules/mint/types/msg.go Updated error handling imports.
modules/mint/types/params.go Updated parameter handling to use math.LegacyDec.
proto/irishub/guardian/tx.proto Added signer options to message definitions.
proto/irishub/mint/mint.proto Updated custom types for inflation-related fields.
scripts/protoc-swagger-gen-ibc.sh Updated IBC module version to v8.0.0.
testutil/app.go Updated logging and database imports.
testutil/test_helpers.go Updated integer and decimal handling to use math package.
wrapper/farm.go Updated context handling in governance hooks.
wrapper/token.go Updated IBC transfer imports to version 8.
proto/irishub/mint/tx.proto Added service option to Msg service in mint package.

Possibly related issues

Possibly related PRs

  • refactor: bump up irismod #2950: This PR includes updates to dependency versions, which may relate to the overall changes in error handling and dependency updates in this PR.

Suggested reviewers

  • harvey-smith
  • mitch1024

Poem

In the garden where code does bloom,
Upgrades dance, dispelling gloom.
With Cosmos SDK, we take a leap,
New paths we forge, new promises we keep.
Hopping through changes, both big and small,
Together we thrive, together we stand tall! 🐰✨


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Experiment)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 18

🧹 Outside diff range and nitpick comments (7)
app/upgrades/v300/lsm.go (2)

Line range hint 228-230: Avoid using log.Fatal; return the error instead

Using log.Fatal(err) will abruptly terminate the application, which is not appropriate during migrations. It's better to return the error to allow the caller to handle it gracefully.

Apply this diff:

 _, err = app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx)
 if err != nil {
-    log.Fatal(err)
+    return err
 }

Line range hint 130-134: Avoid panicking in setUBDToStore; return an error instead

Panicking in setUBDToStore can cause the application to crash during migration if an error occurs. Consider returning the error and handling it in the caller to ensure a smooth migration process.

Modify setUBDToStore to return an error:

-func setUBDToStore(_ sdk.Context, store storetypes.KVStore, cdc codec.BinaryCodec, ubd types.UnbondingDelegation) {
+func setUBDToStore(_ sdk.Context, store storetypes.KVStore, cdc codec.BinaryCodec, ubd types.UnbondingDelegation) error {
    delegatorAddress := sdk.MustAccAddressFromBech32(ubd.DelegatorAddress)

    bz := types.MustMarshalUBD(cdc, ubd)

    addr, err := sdk.ValAddressFromBech32(ubd.ValidatorAddress)
    if err != nil {
-       panic(err)
+       return err
    }

    key := types.GetUBDKey(delegatorAddress, addr)

    store.Set(key, bz)
+   return nil
}

Then, in migrateUBDEntries, handle the error returned by setUBDToStore:

 // set the new ubd to the store
-setUBDToStore(ctx, store, cdc, ubd)
+if err := setUBDToStore(ctx, store, cdc, ubd); err != nil {
+    return err
+}
modules/mint/keeper/msg_server.go (1)

Line range hint 32-36: Consider consolidating error handling imports

While the code is functionally correct, you're using sdkerrors.Wrapf with errorstypes.ErrUnauthorized. Consider using the error handling consistently from one package.

-			errorstypes.ErrUnauthorized,
+			sdkerrors.ErrUnauthorized,
modules/guardian/handler.go (1)

29-29: Consider using a more specific error message

While the error handling is correct, consider making the error message more specific to the guardian module.

-			return nil, sdkerrors.Wrapf(errorstypes.ErrUnknownRequest, "unrecognized bank message type: %T", msg)
+			return nil, sdkerrors.Wrapf(errorstypes.ErrUnknownRequest, "unrecognized guardian message type: %T", msg)
app/upgrades/v200/config.go (1)

33-34: Consider future migration from Legacy decimal methods

While the change to math.LegacyNewDec* methods is correct for the SDK v0.50.x upgrade, note that these are compatibility methods. Consider planning for a future migration to non-legacy decimal handling methods.

modules/guardian/keeper/keeper_test.go (1)

SDK v0.50.10 upgrade requires attention in several areas

Several items need attention for complete SDK v0.50.10 compatibility:

  • Legacy imports that should be updated:
    • github.com/cosmos/cosmos-sdk/types/errors is still used in 7 files
    • github.com/cosmos/cosmos-sdk/codec/types is used in 13 files
  • Math types that need migration:
    • Several instances of sdk.Dec, sdk.NewDec, sdk.ZeroDec in cmd/iris/cmd/util.go
    • Multiple occurrences of legacy sdk.Int usage in EVM-related code

The codebase is using a custom fork cosmos-sdk v0.50.10-lsm which may have specific compatibility requirements, but core SDK v0.50.10 breaking changes should still be addressed.

🔗 Analysis chain

Line range hint 1-1: Verify SDK v0.50.10 upgrade completeness

Let's verify if all breaking changes from SDK v0.50.10 have been addressed in the codebase.

Consider adding a migration guide document to help downstream users upgrade their own extensions and customizations to be compatible with SDK v0.50.10.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for potential missed SDK v0.50.10 migration items

# Check for remaining old import paths that should be migrated
echo "Checking for old import paths..."
rg -l "github.com/cometbft/cometbft/libs/log"
rg -l "github.com/cosmos/cosmos-sdk/store/types"

# Check for remaining sdk.Dec usages that should be migrated to math.LegacyDec
echo "Checking for remaining sdk.Dec usages..."
rg "sdk\.Dec|sdk\.NewDec|sdk\.ZeroDec"

# Check for remaining direct context creation that should use Legacy variant
echo "Checking for remaining NewContext usage in tests..."
rg "BaseApp\.NewContext\(" "**/*_test.go"

Length of output: 983


Script:

#!/bin/bash
# Let's verify SDK v0.50.10 upgrade completeness with more specific checks

# Check for any remaining legacy imports that should be updated
echo "=== Checking SDK Import Patterns ==="
rg -l "github.com/cosmos/cosmos-sdk/types/errors"
rg -l "github.com/cosmos/cosmos-sdk/codec/types"
rg -l "github.com/cosmos/cosmos-sdk/crypto/keyring"

# Check for legacy math usage
echo "=== Checking Math Usage ==="
rg "sdk\.Int|sdk\.NewInt|sdk\.ZeroInt"
rg "types\.Int|types\.NewInt|types\.ZeroInt"

# Check for legacy keeper patterns
echo "=== Checking Keeper Patterns ==="
rg "keeper\.Keeper" -A 2
rg "NewKeeper\(" -A 2

# Check for go.mod to verify SDK version
echo "=== Checking SDK Version ==="
cat go.mod | grep "cosmos-sdk"

Length of output: 19901

testutil/test_helpers.go (1)

126-134: Remove commented-out code

The commented-out code should be removed entirely rather than left in the codebase.

-	//// commit genesis changes
-	//_, err = app.Commit()
-	//require.NoError(t, err)
-	//r, err := app.FinalizeBlock(&abci.RequestFinalizeBlock{
-	//	Height:             app.LastBlockHeight() + 1,
-	//	Hash:               app.LastCommitID().Hash,
-	//	NextValidatorsHash: valSet.Hash(),
-	//})
-	//require.NoError(t, err)
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 72692e6 and 48d939b.

⛔ Files ignored due to path filters (3)
  • go.sum is excluded by !**/*.sum
  • modules/guardian/types/tx.pb.go is excluded by !**/*.pb.go
  • modules/mint/types/mint.pb.go is excluded by !**/*.pb.go
📒 Files selected for processing (60)
  • app/ante/decorators.go (3 hunks)
  • app/ante/handler_options.go (1 hunks)
  • app/ante/reject_msgs.go (1 hunks)
  • app/ante/sigverify.go (3 hunks)
  • app/app.go (7 hunks)
  • app/export.go (8 hunks)
  • app/keepers/keepers.go (19 hunks)
  • app/keepers/keys.go (3 hunks)
  • app/keepers/types.go (1 hunks)
  • app/modules.go (7 hunks)
  • app/params/proto.go (1 hunks)
  • app/rpc/auth.go (3 hunks)
  • app/rpc/override.go (2 hunks)
  • app/sim_bench_test.go (1 hunks)
  • app/sim_test.go (6 hunks)
  • app/upgrade.go (1 hunks)
  • app/upgrades/types.go (2 hunks)
  • app/upgrades/v200/config.go (1 hunks)
  • app/upgrades/v200/upgrades.go (2 hunks)
  • app/upgrades/v210/upgrades.go (3 hunks)
  • app/upgrades/v300/constants.go (1 hunks)
  • app/upgrades/v300/lsm.go (3 hunks)
  • app/upgrades/v300/upgrades.go (3 hunks)
  • cmd/iris/cmd/genaccounts.go (1 hunks)
  • cmd/iris/cmd/root.go (2 hunks)
  • cmd/iris/cmd/testnet.go (9 hunks)
  • cmd/iris/main.go (1 hunks)
  • go.mod (4 hunks)
  • modules/evm/keeper.go (2 hunks)
  • modules/guardian/client/cli/cli_test.go (5 hunks)
  • modules/guardian/genesis_test.go (1 hunks)
  • modules/guardian/handler.go (2 hunks)
  • modules/guardian/keeper/keeper.go (3 hunks)
  • modules/guardian/keeper/keeper_test.go (1 hunks)
  • modules/guardian/keeper/msg_service.go (1 hunks)
  • modules/guardian/module.go (3 hunks)
  • modules/guardian/types/errors.go (1 hunks)
  • modules/guardian/types/msgs.go (4 hunks)
  • modules/internft/interface.go (1 hunks)
  • modules/internft/keeper.go (1 hunks)
  • modules/mint/abci_test.go (2 hunks)
  • modules/mint/keeper/keeper.go (2 hunks)
  • modules/mint/keeper/keeper_test.go (5 hunks)
  • modules/mint/keeper/msg_server.go (2 hunks)
  • modules/mint/module.go (3 hunks)
  • modules/mint/simulation/genesis.go (2 hunks)
  • modules/mint/types/errors.go (1 hunks)
  • modules/mint/types/expected_keepers.go (2 hunks)
  • modules/mint/types/keys.go (1 hunks)
  • modules/mint/types/minter.go (2 hunks)
  • modules/mint/types/minter_test.go (2 hunks)
  • modules/mint/types/msg.go (1 hunks)
  • modules/mint/types/params.go (5 hunks)
  • proto/irishub/guardian/tx.proto (1 hunks)
  • proto/irishub/mint/mint.proto (2 hunks)
  • scripts/protoc-swagger-gen-ibc.sh (1 hunks)
  • testutil/app.go (1 hunks)
  • testutil/test_helpers.go (4 hunks)
  • wrapper/farm.go (2 hunks)
  • wrapper/token.go (1 hunks)
✅ Files skipped from review due to trivial changes (4)
  • modules/mint/types/errors.go
  • modules/guardian/types/errors.go
  • wrapper/token.go
  • app/ante/handler_options.go
🧰 Additional context used
🪛 buf (1.47.2)
proto/irishub/guardian/tx.proto

3-3: import "cosmos/msg/v1/msg.proto": file does not exist

(COMPILE)

🔇 Additional comments (123)
modules/mint/types/keys.go (1)

24-24: ⚠️ Potential issue

Critical: Verify state migration strategy for MinterKey change

Changing the MinterKey from 0x00 to 0x02 is a breaking change that affects state storage. This modification requires careful consideration of state migration to ensure existing chain data remains accessible.

Let's verify the migration strategy:

Please ensure:

  1. A state migration strategy is in place
  2. The upgrade handler correctly migrates data from the old key to the new key
  3. This change is documented in the upgrade guide
app/app.go (9)

12-13: Imports updated to reflect new package paths

The import statements for log and dbm have been correctly updated to the new package paths cosmossdk.io/log and github.com/cosmos/cosmos-db, ensuring compatibility with the updated dependencies.


17-17: Updated import for cmtservice

The import statement for cmtservice has been updated to github.com/cosmos/cosmos-sdk/client/grpc/cmtservice, aligning with the new package structure.


226-227: Update method signature of BeginBlocker to match SDK v0.50.10

The method signature of BeginBlocker has been updated to return (sdk.BeginBlock, error) without the req abci.RequestBeginBlock parameter. This aligns with the updated Cosmos SDK. Ensure all implementations and overrides are consistent with this change.


231-232: Update method signature of EndBlocker to match SDK v0.50.10

Similarly, the EndBlocker method now returns (sdk.EndBlock, error) without the req abci.RequestEndBlock parameter, reflecting changes in the SDK. Confirm that all references are updated accordingly.


236-236: Update method signature of InitChainer to match SDK v0.50.10

The InitChainer function now accepts *abci.RequestInitChain and returns (*abci.ResponseInitChain, error). Ensure this change is propagated throughout the application.


303-303: Use cmtservice.RegisterGRPCGatewayRoutes in RegisterAPIRoutes

The function now registers GRPC Gateway routes using cmtservice.RegisterGRPCGatewayRoutes, which is consistent with the updated package imports.


322-322: Update service registration in RegisterServices

The RegisterServices method now properly calls rpc.RegisterService with app.appCodec, enhancing service registration with the application codec.


338-338: Use cmtservice.RegisterTendermintService in RegisterTendermintService

The function now utilizes cmtservice.RegisterTendermintService, aligning with updated service registration practices.


349-350: Update RegisterNodeService to include configuration parameter

The RegisterNodeService method signature now includes c config.Config as a parameter, allowing for more flexible configuration during node service registration.

cmd/iris/cmd/testnet.go (8)

9-9: Import runtime package for updated functionality

The runtime package from github.com/cosmos/cosmos-sdk/runtime has been imported, which may be necessary for new configurations or functionalities introduced in the SDK upgrade.


26-26: Switch to cosmossdk.io/math for mathematical operations

The import of cosmossdk.io/math indicates a transition to the new math package, which provides improved functionality and compatibility with the upgraded SDK.


64-64: Initialize PowerReduction using math.NewIntFromUint64

The PowerReduction variable is now initialized with the new math package method math.NewIntFromUint64. This aligns with the updated math operations in the SDK.


269-273: Update validator creation parameters

  • Line 269: The validator address is converted to a string using .String(), which is necessary due to changes in the expected parameter types.
  • Line 273: Commission rates are set using math.LegacyOneDec(), reflecting the transition to the new math package.

293-293: Update tx.Sign method with new signing context

The tx.Sign function now includes clientCtx.CmdContext as the first argument, accommodating changes in the transaction signing process.


318-318: Include ValidatorAddressCodec in collectGenFiles function call

The collectGenFiles function now requires a valAddrCodec parameter to handle validator address encoding, necessitating an update to the function call.


Line range hint 424-453: Modify collectGenFiles to handle genesis state with valAddrCodec

The function signature and implementation of collectGenFiles have been updated to include valAddrCodec, which affects how validator addresses are encoded in the genesis state. Ensure that this change is consistent throughout the codebase.


463-470: Set genesis parameters before exporting genesis file

The appGenesis object now explicitly sets Consensus.Params.Block.MaxBytes, ChainID, GenesisTime, and AppState before exporting. This ensures that the genesis file contains the correct configurations for network initialization.

app/modules.go (8)

4-10: Update import paths to new module locations

The import statements for several modules have been updated to:

  • Use cosmossdk.io namespace for modules like evidence, feegrant, and upgrade.
  • Update IBC module imports to github.com/cosmos/ibc-go/v8.

This change aligns with the upgrade to Cosmos SDK v0.50.10 and IBC-Go v8.


41-44: Update IBC capability module imports

The imports for capability module have been updated to github.com/cosmos/ibc-go/modules/capability, reflecting changes in module organization in IBC-Go v8.


46-53: Update IBC application module imports to v8

Imports for IBC applications such as interchain accounts and transfer have been updated to:

  • github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts
  • github.com/cosmos/ibc-go/v8/modules/apps/transfer

Ensure compatibility with the IBC-Go v8 modules.


104-114: Modify legacyProposalHandlers to use new upgrade proposal handlers

The upgrade proposal handlers have been replaced with custom handlers that use the new address codec:

  • Lines 105-106: Custom handler for NewCmdSubmitUpgradeProposal.
  • Lines 107-108: Custom handler for NewCmdSubmitCancelUpgradeProposal.

Ensure these handlers are correctly implemented to process governance proposals.


206-208: Provide encodingConfig.TxConfig to genutil.NewAppModule

The genutil.NewAppModule function now includes encodingConfig.TxConfig, which may be required for transaction encoding with the updated SDK.


247-248: Include interfaceRegistry in slashing.NewAppModule

The slashing module now receives app.interfaceRegistry, enhancing type registration and encoding capabilities.


264-264: Update upgrade module instantiation with new address codec

The upgrade module is now instantiated with addresscodec.NewBech32Codec(iristypes.Bech32PrefixAccAddr), ensuring address encoding is consistent with the rest of the application.


401-402: Include interfaceRegistry in slashing.NewAppModule for simulations

In the simulation modules, the slashing module now includes app.interfaceRegistry, which may be necessary for accurate simulation behavior.

app/keepers/keepers.go (28)

4-7: Import new packages for signing and codec

New imports have been added for:

  • cosmossdk.io/x/tx/signing
  • github.com/cosmos/cosmos-sdk/codec/address
  • github.com/cosmos/cosmos-sdk/codec/types
  • github.com/cosmos/cosmos-sdk/runtime

Ensure these are required and correctly used for the updated SDK functionalities.


12-18: Update imports to use cosmossdk.io and updated module paths

Imports for log, math, storetypes, evidence, and feegrant have been updated to reflect the new module paths under cosmossdk.io.


24-25: Update imports for upgradekeeper and upgradetypes

These imports are now from cosmossdk.io/x/upgrade, aligning with the SDK upgrade.


Line range hint 41-43: Update IBC capability keeper imports

Imports for capabilitykeeper and capabilitytypes have been updated to github.com/cosmos/ibc-go/modules/capability, consistent with IBC-Go v8.


46-58: Update IBC module imports to v8

IBC module imports have been updated to github.com/cosmos/ibc-go/v8, ensuring compatibility with the upgraded IBC protocol.


66-70: Import IBC applications from IBC-Go v8

  • Lines 66-67: Import ica and icahostkeeper from IBC-Go v8.
  • Lines 68-69: Import transfer and ibctransferkeeper from IBC-Go v8.
  • Line 70: Import ibckeeper from IBC-Go v8.

129-130: Add interfaceRegistry to AppKeepers

An interfaceRegistry of type types.InterfaceRegistry has been added to AppKeepers, which is essential for registering and resolving interfaces in the updated SDK.


199-209: Initialize interfaceRegistry with custom options

The interfaceRegistry is initialized with:

  • ProtoFiles: Using proto.HybridResolver.
  • SigningOptions: Configured with AddressCodec and ValidatorAddressCodec using Bech32 prefixes.

Ensure these configurations are correct for address encoding and interface resolution.


212-213: Assign interfaceRegistry to AppKeepers

The newly initialized interfaceRegistry is assigned to appKeepers, making it available throughout the application.


219-220: Update error handling for streaming services registration

The error from RegisterStreamingServices is now handled by a panic on failure, ensuring that the application does not continue with an invalid state.


231-233: Initialize ConsensusParamsKeeper with updated parameters

The ConsensusParamsKeeper now uses runtime.NewKVStoreService and includes an EventService. The authority is set to the governance module account address.


252-255: Initialize AccountKeeper with Bech32 address codec

The AccountKeeper now uses authcodec.NewBech32Codec with iristypes.Bech32PrefixAccAddr, ensuring correct address encoding for accounts.


262-264: Initialize FeeGrantKeeper with updated store service

The FeeGrantKeeper now uses runtime.NewKVStoreService instead of directly accessing the store key.


268-272: Initialize BankKeeper with updated store service and logger

The BankKeeper is updated to use runtime.NewKVStoreService and includes the logger parameter, improving logging capabilities.


277-282: Initialize StakingKeeper with Bech32 address codecs

The StakingKeeper now uses Bech32 address codecs for validator and consensus addresses, ensuring consistent address encoding.


296-299: Initialize DistrKeeper with updated store service

The DistrKeeper is updated to use runtime.NewKVStoreService and includes the governance module account address as authority.


307-310: Initialize SlashingKeeper with updated store service

The SlashingKeeper now uses runtime.NewKVStoreService and includes the governance module account address.


314-319: Initialize CrisisKeeper with updated store service and Bech32 codec

The CrisisKeeper uses runtime.NewKVStoreService and authcodec.NewBech32Codec for address encoding.


335-338: Initialize UpgradeKeeper with updated store service

The UpgradeKeeper now uses runtime.NewKVStoreService and includes the governance module account address.


343-346: Initialize AuthzKeeper with updated store service

The AuthzKeeper now uses runtime.NewKVStoreService and includes the message service router.


358-359: Include governance module address in IBCKeeper initialization

The IBCKeeper now includes the governance module account address as the authority.


367-371: Update ICAHostKeeper initialization

The ICAHostKeeper includes the governance module account address and uses bApp.MsgServiceRouter(). It also calls WithQueryRouter to register query services.


420-424: Initialize IBCTransferKeeper with updated parameters

The IBCTransferKeeper now includes the governance module account address and uses authtypes.NewModuleAddress(ibctransfertypes.ModuleName).String().


435-438: Initialize IBCNFTTransferKeeper with updated parameters

The IBCNFTTransferKeeper now includes the governance module account address and uses internft.NewInterNftKeeper for NFT handling.


462-466: Initialize EvidenceKeeper with updated services

The EvidenceKeeper uses runtime.NewKVStoreService and includes runtime.ProvideCometInfoService() and authcodec.NewBech32Codec(iristypes.Bech32PrefixAccAddr).


520-525: Initialize GovKeeper with updated parameters

The GovKeeper includes the DistrKeeper and uses bApp.MsgServiceRouter(). It also specifies the governance module account address.


534-535: Update FarmKeeper initialization with new adapters

The FarmKeeper now uses NewDistrKeeperAdapter and NewGovKeeperAdapter for its dependencies, facilitating the interaction with the distribution and governance keepers.


593-597: Update TokenKeeper swap registry to use math.LegacyOneDec()

The swap parameters now use math.LegacyOneDec() for ratio calculations, aligning with the updated math package.

cmd/iris/main.go (1)

17-17: LGTM: Simplified error handling aligns with SDK v0.50.x practices

The simplified error handling approach is appropriate and consistent with modern Cosmos SDK practices. The removal of specific error code handling reduces complexity without losing meaningful functionality.

app/rpc/override.go (2)

15-15: LGTM: Handler type updated for SDK v0.50.x compatibility

The addition of the codec.Codec parameter to the handler type signature is appropriate for SDK v0.50.x compatibility and follows proper dependency injection patterns.


18-21: LGTM: RegisterService function properly updated

The changes to RegisterService correctly propagate the codec parameter to the handler while maintaining the existing module service registration logic.

proto/irishub/mint/mint.proto (2)

24-24: Verify LegacyDec usage and migration plan

The change to cosmossdk.io/math.LegacyDec is correct, but we should ensure there's a plan to migrate away from legacy types in future updates.

Let's check for other LegacyDec usages:

✅ Verification successful

Let me gather more context about the migration status and any potential plans by checking for related documentation or migration guides.


Let me check the changelog and upgrade documentation for any specific mentions of decimal type migrations.


Based on the gathered information, I can now provide a final response about the LegacyDec usage:

LegacyDec usage is part of Cosmos SDK v0.47.x migration path

The usage of LegacyDec in the mint module is aligned with the Cosmos SDK's migration strategy. The codebase shows consistent usage across mint module files, and the recent upgrade to Cosmos SDK v0.47.15-ics-lsm (as seen in CHANGELOG.md) indicates this is part of a planned migration path. No immediate action is required as this follows the SDK's compatibility approach.

  • modules/mint/types/params.go: Uses LegacyDec in params
  • modules/mint/types/minter.go: Uses LegacyDec for provisions
  • modules/mint/simulation/genesis.go: Uses LegacyDec for inflation simulation
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for LegacyDec usage patterns
rg "LegacyDec" modules/mint/

Length of output: 556


Script:

#!/bin/bash
# Check for migration documentation or plans
rg -i "legacy.*dec|dec.*migration" -g "*.md"

# Also check for any upgrade plans or documentation
fd -e md -e txt -X grep -l -i "upgrade.*plan\|migration\|legacy"

Length of output: 437


Script:

#!/bin/bash
# Check changelog and upgrade docs for decimal migration plans
cat CHANGELOG.md docs/features/upgrade.md

# Also check for any recent commits related to LegacyDec migrations
git log --oneline --grep="LegacyDec\|decimal.*migrat" -n 5

Length of output: 54911


14-14: LGTM: Math type migration for inflation_base

The update from github.com/cosmos/cosmos-sdk/types.Int to cosmossdk.io/math.Int is correct for SDK v0.50.x.

Let's verify the corresponding Go code has been updated:

✅ Verification successful

LGTM: Math type migration is properly implemented

The verification confirms that:

  • The protobuf generated code correctly uses cosmossdk_io_math.Int for inflation_base
  • The Go code has been properly updated to use the new math types:
    • Uses sdkmath alias for the new math package
    • All math-related operations use the new types consistently
  • The occurrences of types.Int in the codebase are only for interface registration and not related to math types
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for any remaining old Int type usage in mint-related files
rg "types\.Int" modules/mint/

Length of output: 224


Script:

#!/bin/bash
# Let's check the actual content of these files to understand the context of types.Int usage
rg -A 3 "types\.Int" modules/mint/

Length of output: 500


Script:

#!/bin/bash
# Let's also check if there are any references to the old math types in the generated code
fd -e pb.go . modules/mint/ -x rg "types\.Int"

Length of output: 48


Script:

#!/bin/bash
# Let's verify the actual imports in these files
rg "github.com/cosmos/cosmos-sdk/types" modules/mint/ -A 3

Length of output: 6323


Script:

#!/bin/bash
# Let's check the actual imports and usage of math types in the minter related files
rg "math\." modules/mint/types/

Length of output: 2659


Script:

#!/bin/bash
# Let's also check the content of the generated protobuf file
rg "inflation_base" modules/mint/types/mint.pb.go -A 3

Length of output: 293

modules/guardian/genesis_test.go (1)

30-31: Consider future migration from legacy context

The changes are correct for SDK v0.50.x:

  1. Using AppCodec() instead of NewAminoCodec aligns with the SDK's move away from Amino encoding
  2. NewContextLegacy is appropriate for now, but consider planning for migration to the new context system in future updates

Consider creating a tracking issue for migrating away from legacy contexts in future updates, as the SDK is moving towards using the standard context.Context.

Let's check for other legacy context usage patterns:

modules/mint/keeper/msg_server.go (1)

6-6: LGTM: Import changes align with Cosmos SDK v0.50.x

The update to use cosmossdk.io/errors and separate errorstypes import is correct for the SDK upgrade.

Also applies to: 8-8

modules/guardian/handler.go (1)

13-16: LGTM: Handler signature update improves type safety

The explicit function signature func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) is clearer and type-safe compared to the previous sdk.Handler type.

modules/mint/types/expected_keepers.go (2)

14-15: LGTM: Context type updates in AccountKeeper align with SDK v0.50.x

The migration from sdk.Context to context.Context in AccountKeeper interface methods follows the SDK v0.50.x context handling patterns.


22-22: LGTM: Context type updates in BankKeeper align with SDK v0.50.x

The migration from sdk.Context to context.Context in BankKeeper interface methods is consistent with the SDK upgrade.

Also applies to: 28-28, 32-32

app/params/proto.go (1)

18-25: LGTM: Signing options configuration aligns with SDK v0.50.x

The configuration of signing options with proper Bech32 address codecs for both account and validator addresses follows the SDK v0.50.x requirements.

modules/mint/simulation/genesis.go (1)

10-10: LGTM! Math package migration looks correct.

The changes correctly implement the migration from sdk.Dec to mathsdk.LegacyDec as part of the cosmos-sdk v0.50.x upgrade. The use of LegacyDec is appropriate during the migration phase.

Let's verify that all decimal operations in the mint module have been migrated:

Also applies to: 23-24, 30-33

✅ Verification successful

Math package migration is correctly implemented across the mint module

The verification confirms that:

  • All decimal operations use the new math.LegacyDec or mathsdk.LegacyDec types
  • The cosmossdk.io/math package is consistently imported across all relevant files
  • No instances of the old sdk.Dec, sdk.NewDec, or sdk.ZeroDec remain in the codebase
  • All decimal operations (NewDecWithPrec, ZeroDec, etc.) use the new math package implementations
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any remaining sdk.Dec usages in mint module
rg -t go "sdk\.Dec|sdk\.NewDec|sdk\.ZeroDec" modules/mint/

Length of output: 60


Script:

#!/bin/bash
# Let's search for any decimal-related operations in the mint module
rg -t go "Dec|NewDec|ZeroDec" modules/mint/

# Also search for specific math package imports to ensure consistency
rg -t go "\"cosmossdk.io/math\"" modules/mint/

Length of output: 3431

proto/irishub/guardian/tx.proto (1)

3-4: LGTM! Protobuf updates align with cosmos-sdk v0.50.x.

The changes correctly implement:

  • Signer attribution using cosmos.msg.v1.signer
  • Address field scalar type using cosmos_proto.scalar

These updates follow the cosmos-sdk v0.50.x protobuf guidelines for message signing and address handling.

Note: The static analysis warning about missing proto files can be ignored as these are standard cosmos-sdk proto imports.

Also applies to: 18-21, 29-31

🧰 Tools
🪛 buf (1.47.2)

3-3: import "cosmos/msg/v1/msg.proto": file does not exist

(COMPILE)

modules/mint/abci_test.go (2)

4-5: LGTM! Required imports added for SDK v0.50.x

The addition of cosmossdk.io/math and keeper adapter imports is correct for the SDK upgrade.


37-37: Verify the migration to SDK v0.50.x patterns

The changes correctly implement SDK v0.50.x patterns:

  1. Using NewContextLegacy instead of NewContext
  2. Using math.LegacyNewDecWithPrec instead of sdk.NewDecWithPrec
  3. Added proper error handling for SetFeePool

However, we should verify if we can migrate away from legacy methods in the future.

Let's check for other potential legacy method usage:

Also applies to: 40-40, 43-44

✅ Verification successful

Legacy methods are used consistently across the codebase

The verification shows that legacy methods are used consistently throughout the codebase, primarily in:

  • Decimal operations using LegacyNewDec, LegacyNewDecWithPrec, and LegacyNewDecFromInt
  • These usages appear in mint module tests, simulation, params, and EVM-related code

Since these are part of a broader SDK v0.50.x migration pattern and are used consistently, no immediate action is required. However, tracking these for future migration away from legacy methods would be beneficial.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for other legacy method usage that might need future updates
rg "Legacy(New|Create)" --type go

Length of output: 1298

app/upgrade.go (1)

6-6: LGTM: Import path update aligns with Cosmos SDK v0.50.x

The change from github.com/cosmos/cosmos-sdk/x/upgrade/types to cosmossdk.io/x/upgrade/types is consistent with the SDK upgrade.

✅ Verification successful

Import path migration to cosmossdk.io/x/upgrade is complete and consistent

The verification shows that all upgrade-related imports have been successfully migrated to the new cosmossdk.io/x/upgrade path. No instances of the old import path (github.com/cosmos/cosmos-sdk/x/upgrade) remain in the codebase, and all relevant files are using the new import consistently.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Verify that all upgrade-related imports are consistently updated
rg "github.com/cosmos/cosmos-sdk/x/upgrade/types" --type go

Length of output: 59


Script:

#!/bin/bash
# Let's verify both old and new import paths for upgrade types
echo "Checking for old import path..."
rg --type go "github\.com/cosmos/cosmos-sdk/x/upgrade"

echo -e "\nChecking for new import path..."
rg --type go "cosmossdk\.io/x/upgrade"

echo -e "\nChecking all Go files that might be related to upgrades..."
fd -e go . | grep -i "upgrad"

Length of output: 1407

modules/mint/types/minter.go (1)

18-18: LGTM: Consistent migration to sdkmath package

The changes correctly migrate from SDK math types to the new sdkmath package, which is part of the Cosmos SDK v0.50.x upgrade. The modifications maintain the same functionality while using the new type system:

  • NewMinter function now uses sdkmath.Int
  • Validation uses sdkmath.ZeroInt()
  • NextAnnualProvisions returns sdkmath.LegacyDec
  • Block provision calculation uses sdkmath.NewInt

Also applies to: 38-38, 45-45, 52-52

✅ Verification successful

The previous search might have failed because the pattern was too specific. I've broadened the search to include both sdk and sdkmath patterns, and also added a check for imports to verify the migration consistency. This will help us confirm whether the codebase has been properly migrated to use sdkmath types.


The previous search showed consistent usage of sdkmath types in the actual code, but we need to verify the imports to ensure complete migration. This will help us confirm that the file is properly importing from the new sdkmath package and not mixing old SDK math types.


Migration to sdkmath package is correctly implemented

The verification confirms that the migration to sdkmath is complete and consistent:

  • Proper import of sdkmath "cosmossdk.io/math"
  • All math operations use sdkmath types (Int, NewInt, ZeroInt, LegacyDec)
  • No usage of old SDK math types found in the code
  • The remaining sdk import is for other SDK types, not math-related
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Verify consistent usage of sdkmath package across the mint module
rg "sdk\.(Int|Dec|NewInt|NewDec)" modules/mint/

Length of output: 49


Script:

#!/bin/bash
# Let's verify the usage of both sdk and sdkmath types in the mint module
rg "(sdk|sdkmath)\.(Int|Dec|NewInt|NewDec|LegacyDec|ZeroInt)" modules/mint/

# Also check imports to ensure consistent usage of sdkmath
rg "\"github.com/cosmos/cosmos-sdk/(types/)?math" modules/mint/

Length of output: 1560


Script:

#!/bin/bash
# Let's check the imports in the minter.go file to ensure proper migration
rg -A 1 "^import \(" modules/mint/types/minter.go

# Also check for any remaining sdk.Int or sdk.Dec imports in the file
cat modules/mint/types/minter.go | grep -A 20 "^import"

Length of output: 549

wrapper/farm.go (1)

4-4: LGTM! Context handling updates align with Cosmos SDK v0.50.x

The changes consistently update all GovHooks interface methods to use context.Context instead of types.Context, properly unwrapping the SDK context using types.UnwrapSDKContext. This aligns with the Cosmos SDK v0.50.x context handling patterns.

Also applies to: 27-28, 34-35, 41-42, 48-50, 55-56

app/keepers/types.go (2)

13-27: LGTM! Well-structured DistrKeeperAdapter implementation

The DistrKeeperAdapter provides a clean interface to distribution keeper functionality with proper error handling and context usage.


29-51: LGTM! Well-structured GovKeeperAdapter implementation

The GovKeeperAdapter provides a clean interface to governance keeper functionality with proper error handling and context usage. The adapter methods cover essential governance operations like proposal submission, deposits, and queries.

app/upgrades/v210/upgrades.go (2)

4-6: LGTM! Import paths updated to match Cosmos SDK v0.50.x

The import paths are correctly updated to use the new cosmossdk.io namespace and IBC-Go v8.

Also applies to: 13-13


34-35: Verify consensus parameters migration

The upgrade handler correctly handles:

  1. Context unwrapping using SDK v0.50.x patterns
  2. Migration of consensus parameters from x/params to x/consensus module

However, let's verify the consensus params migration approach.

Also applies to: 46-46

✅ Verification successful

Let me gather more information about the consensus params migration pattern to verify its correctness.


Let me check one more aspect to verify the complete migration pattern.


Consensus parameters migration implementation is correct

The verification confirms that the consensus params migration follows the recommended pattern for SDK v0.50.x:

  • Correctly uses baseapp.MigrateParams to migrate from legacy params to the new x/consensus module
  • Properly initializes ConsensusParamsKeeper and sets it as the base app's parameter store
  • Follows the standard migration pattern seen in other Cosmos SDK v0.50.x upgrades
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify consensus params migration approach
# Check if other repos using cosmos-sdk v0.50.x follow the same pattern

# Search for similar consensus params migration patterns
rg -A 5 "MigrateParams.*ConsensusParamsKeeper"

# Search for any potential issues or discussions about this migration
gh api graphql -f query='
{
  search(query: "MigrateParams ConsensusParamsKeeper org:cosmos", type: ISSUE, first: 5) {
    nodes {
      ... on Issue {
        title
        url
        state
      }
    }
  }
}'

Length of output: 728


Script:

#!/bin/bash
# Search for the MigrateParams function definition to understand the migration logic
ast-grep --pattern 'func MigrateParams($$$) {
  $$$
}'

# Look for any other consensus params migration patterns in the codebase
rg -A 10 "ConsensusParamsKeeper|consensus.v1"

# Check for any imports of consensus module
rg "x/consensus|ConsensusParamsKeeper" --type go

Length of output: 4113


Script:

#!/bin/bash
# Check the baseapp package usage and migration pattern
rg -A 5 "baseapp\.MigrateParams" --type go

# Look for any param store initialization patterns
rg "SetParamStore.*ConsensusParamsKeeper" --type go -A 3

# Check for any legacy param store references
rg "x/params.*Subspace" --type go

Length of output: 685

app/ante/sigverify.go (1)

23-23: Verify impact of GasMeter type change

The change from sdk.GasMeter to storetypes.GasMeter aligns with Cosmos SDK v0.50.10's patterns. However, this could be a breaking change for any external code directly calling these functions.

Also applies to: 46-47

✅ Verification successful

Let me gather more information about the SDK's GasMeter types to understand if this is truly a breaking change.


Let me try a different approach to understand the GasMeter usage and changes.


Based on the search results and the original code changes, I can now provide the final response:

GasMeter type change is safe and aligned with SDK patterns

The change from sdk.GasMeter to storetypes.GasMeter is not a breaking change because:

  • The only direct usage is internal within the ante package
  • The functions are called through the ante handler setup, which properly handles the type conversion
  • The change aligns with Cosmos SDK v0.50.10's move of core interfaces to their respective packages
  • External consumers interact with these functions through the ante handler middleware, not directly
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any direct usage of these functions in the codebase
rg --type go "DefaultSigVerificationGasConsumer|ConsumeMultisignatureVerificationGas" -B 2 -A 2

Length of output: 2266


Script:

#!/bin/bash
# Check if we're using any sdk.GasMeter type in the codebase
rg --type go "sdk\.GasMeter" -B 2 -A 2

# Check the implementation details of storetypes.GasMeter
ast-grep --pattern 'type GasMeter interface {
  $$$
}'

Length of output: 97


Script:

#!/bin/bash
# Check imports to understand the GasMeter type transition
rg --type go "\"github.com/cosmos/cosmos-sdk/store/types\"" -B 2 -A 2

# Look for any other GasMeter related imports
rg --type go "GasMeter" -B 2 -A 2 --type-add 'go:*.{go,mod}'

Length of output: 1615

modules/guardian/keeper/keeper.go (3)

7-8: LGTM: Import path updates align with SDK v0.50.10

The migration to cosmossdk.io paths for log and store/types follows the correct pattern for SDK v0.50.10.


66-66: LGTM: Iterator type update

The change to use storetypes.KVStorePrefixIterator is consistent with the SDK v0.50.10 store types migration.


79-82: Verify context handling migration

The change to use context.Context with UnwrapSDKContext follows SDK v0.50.10 patterns, but we should verify all callers are updated.

✅ Verification successful

Based on the search results, I can now generate the final response:

Context migration appears to be properly isolated

The Authorized method is only defined and used within the guardian keeper module itself, with no direct external callers found in the codebase. The context handling change is self-contained and follows the SDK v0.50.10 patterns correctly.

  • The method is only present in modules/guardian/keeper/keeper.go
  • No test files or other code locations were found calling this method
  • The proto definitions and gRPC handlers don't expose this method externally
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for calls to Authorized to ensure they're updated
rg --type go "\.Authorized\(" -B 2 -A 2

Length of output: 41


Script:

#!/bin/bash
# Try a broader search pattern to find any usage of Authorized
rg --type go "Authorized" -B 2 -A 2

Length of output: 349


Script:

#!/bin/bash
# Search for the interface definition to understand expected usage
ast-grep --pattern 'interface {
  $$$
  Authorized($$$)
  $$$
}'

Length of output: 66


Script:

#!/bin/bash
# Look for test files that might use this method
fd -e go -x grep -l "Authorized" {}

Length of output: 73


Script:

#!/bin/bash
# Search for any msg server or handler that might use this method
rg --type go "guardian" -A 5 -B 5 "MsgServer|Handler"

Length of output: 111


Script:

#!/bin/bash
# Look for tests of the guardian module
fd "guardian.*test" -e go

Length of output: 27


Script:

#!/bin/bash
# Check if there are any gRPC or REST endpoints using this
rg --type go "guardian.*proto|guardian.*rest" -A 5 -B 5

Length of output: 7146

app/upgrades/types.go (2)

6-7: LGTM: Import path updates

The migration to cosmossdk.io paths for store and upgrade types follows SDK v0.50.10 patterns.


32-33: Verify ConsensusParams interface implementation updates

The interface changes for ConsensusParamsReaderWriter include:

  1. Removal of pointer for ConsensusParams
  2. Addition of error return for StoreConsensusParams

These are breaking changes that require verification of all implementations.

✅ Verification successful

Based on the search results, I can now provide a final response:

ConsensusParams interface changes are properly implemented

The codebase shows that the ConsensusParamsReaderWriter interface is implemented by the ConsensusParamsKeeper from the Cosmos SDK, which is correctly initialized in the app with the required signature changes:

  • The app uses consensuskeeper.Keeper which implements the non-pointer return type for ConsensusParams
  • The keeper is properly initialized with error handling for StoreConsensusParams
  • The interface is used consistently throughout the codebase, particularly in upgrades (v200, v210) with proper error handling
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for implementations of ConsensusParamsReaderWriter
rg --type go "type.*struct.*{" -A 5 | rg -B 5 "StoreConsensusParams|GetConsensusParams"

Length of output: 183


Script:

#!/bin/bash
# Search for implementations of ConsensusParamsReaderWriter interface methods
rg --type go "func.*StoreConsensusParams|func.*GetConsensusParams" -B 2 -A 5

Length of output: 78


Script:

#!/bin/bash
# Search for struct types that might implement the interface
ast-grep --pattern 'type $_ struct {
  $$$
}'

Length of output: 21324


Script:

#!/bin/bash
# Search for interface definition and its usage
rg --type go "ConsensusParamsReaderWriter"

Length of output: 290


Script:

#!/bin/bash
# Search for implementations of StoreConsensusParams and GetConsensusParams methods
rg --type go "func.*\(.*\).*StoreConsensusParams|func.*\(.*\).*GetConsensusParams" -B 1 -A 5

Length of output: 94


Script:

#!/bin/bash
# Search for ConsensusParamsKeeper usage and initialization
rg --type go "ConsensusParamsKeeper.*=.*" -B 2 -A 2

Length of output: 360


Script:

#!/bin/bash
# Search for ConsensusParamsKeeper type and its methods
rg --type go "ConsensusParamsKeeper" -B 5 -A 10

Length of output: 4115


Script:

#!/bin/bash
# Search for consensus params related imports
rg --type go "\"github.com/cosmos/cosmos-sdk/x/consensus\""

Length of output: 118


Script:

#!/bin/bash
# Look for consensus params related code in app initialization
rg --type go "consensus.*params" -i

Length of output: 1725

modules/mint/keeper/keeper.go (1)

6-6: LGTM: Import path updates align with SDK v0.50.10

The import path changes from github.com/cometbft/cometbft/libs/log to cosmossdk.io/log and cosmossdk.io/store/types are correct and align with the SDK v0.50.10 package reorganization.

Also applies to: 8-8

modules/mint/types/params.go (2)

10-11: LGTM: Import updates align with SDK v0.50.10

The import changes to use cosmossdk.io/errors and cosmossdk.io/math are correct and align with the SDK v0.50.10 package reorganization.


33-33: LGTM: Correct migration from sdk.Dec to math.LegacyDec

The migration from sdk.Dec to math.LegacyDec is implemented correctly across all usages:

  • Function signatures updated
  • Default parameter initialization updated
  • Validation logic updated to use LegacyDec methods

Also applies to: 43-43, 69-69, 87-87, 92-92

modules/guardian/keeper/keeper_test.go (1)

49-49: LGTM: Context initialization updated for SDK v0.50.10

The change from NewContext to NewContextLegacy is correct and aligns with SDK v0.50.10's context handling changes in test environments.

modules/guardian/keeper/msg_service.go (1)

6-6: LGTM: Import path update aligns with Cosmos SDK v0.50.x

The change from github.com/cosmos/cosmos-sdk/types/errors to cosmossdk.io/errors is correct and follows the Cosmos SDK v0.50.x migration guidelines.

app/upgrades/v200/upgrades.go (3)

7-10: LGTM: Import path updates align with Cosmos SDK v0.50.x

The migration of imports to cosmossdk.io namespace is correct and follows the SDK v0.50.x guidelines:

  • store/prefix
  • store/types
  • upgrade/types

15-16: LGTM: IBC-Go upgrade is consistent

The upgrade to IBC-Go v8 is appropriate as it's compatible with Cosmos SDK v0.50.x.


41-42: LGTM: Context handling updated correctly

The change from sdk.Context to context.Context with proper unwrapping follows the new context handling pattern in SDK v0.50.x.

modules/mint/keeper/keeper_test.go (3)

12-12: LGTM: Math package migration aligns with SDK v0.50.x

The addition of cosmossdk.io/math import is correct for the SDK upgrade.


29-29: LGTM: Context creation updated appropriately

The change to NewContextLegacy is correct for maintaining test compatibility in SDK v0.50.x.


42-42: LGTM: Integer operations migrated correctly

All instances of sdk.NewInt have been properly replaced with math.NewInt following SDK v0.50.x guidelines.

Also applies to: 59-59, 69-69

app/upgrades/v300/upgrades.go (3)

109-114: LGTM: Updated keeper parameter handling

The new parameter handling using Get and Set methods with proper error checking follows the correct pattern for SDK v0.50.x.


33-34: Verify context conversion compatibility

The context conversion using UnwrapSDKContext is correct for SDK v0.50.x, but ensure all downstream functions support the new context type.

✅ Verification successful

Let me analyze the results and generate a final response.

Context conversion is compatible across the codebase

The search results show that all functions in the codebase consistently use sdk.Context as their parameter type, including the functions in the v300 upgrade module that will receive the unwrapped context. There are no incompatible context type usages that would cause issues with the context conversion using UnwrapSDKContext.

Key evidence:

  • All functions in app/upgrades/v300/upgrades.go use sdk.Context
  • Related functions in other modules (mint, guardian, evm) also consistently use sdk.Context
  • No deprecated or incompatible context types were found
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if any function calls in the codebase still expect the old context type
rg -l "func.*\(.*sdk\.Context" | while read -r file; do
  echo "=== $file ==="
  rg "func.*\(.*sdk\.Context" "$file"
done

Length of output: 7506


11-14: Verify IBC compatibility

The upgrade to IBC-Go v8 modules is significant. Ensure all ICA-related functionality is compatible with the new version.

✅ Verification successful

Let me gather more information about the ICA module usage and potential version-specific features.


Let me check one more aspect focusing on the upgrade handler and ICA module configuration.


Based on the gathered information, I can now provide the final response:

IBC v8 upgrade appears compatible with ICA implementation

The upgrade implementation shows proper handling of ICA module configuration:

  • Correctly initializes ICA module with both controller and host parameters
  • Sets up appropriate host parameters with message allowlist
  • No v7 dependencies remain in the codebase
  • Proper module registration and initialization in the app setup
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for any remaining v7 IBC dependencies
rg -l "github.com/cosmos/ibc-go/v7"

# Check for ICA-related type changes
rg "ica\." --type go

Length of output: 343


Script:

#!/bin/bash
# Check ICA-related keeper initialization and usage
ast-grep --pattern 'type Keeper struct {
  $$$
}'  app/keepers/ica*.go

# Check for ICA host and controller configurations
rg -A 5 "NewKeeper.*ica" --type go

# Look for ICA-specific middleware or handlers
rg "RegisterServices|RegisterMsgServer|RegisterQueryServer" -A 3 --type go | grep -i "ica"

Length of output: 352


Script:

#!/bin/bash
# Check the upgrade handler implementation and ICA module configuration
rg -A 10 "CreateUpgradeHandler.*v300" --type go

# Look for ICA module configuration in app setup
rg -A 5 "icatypes.ModuleName" --type go

# Check for any ICA-specific parameters or constants that might need migration
rg "Params|Config" -A 3 --type go | grep -i "ica"

Length of output: 2724

app/sim_bench_test.go (1)

151-151: Verify the context creation change across simulation tests

The change from NewContext to NewContextLegacy aligns with the SDK v0.50.10 upgrade. However, we should ensure this change is consistently applied across all simulation tests.

✅ Verification successful

All simulation and test files have been updated to use NewContextLegacy

The verification shows that all context creation in simulation and test files consistently use NewContextLegacy. There are no remaining instances of NewContext in simulation-related files, and the change has been properly propagated across the codebase including:

  • Simulation tests in app/sim_test.go and app/sim_bench_test.go
  • Test files in various modules (guardian, mint)
  • Export functionality in app/export.go
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for any remaining instances of NewContext that should be updated
# and verify the consistency of context creation in simulation tests

# Search for NewContext usage in simulation-related files
echo "Checking for NewContext usage in simulation files..."
rg "NewContext\(" --type go | grep -i "sim"

# Search for NewContextLegacy usage to verify consistent adoption
echo "Checking for NewContextLegacy usage..."
rg "NewContextLegacy\(" --type go

Length of output: 1095

modules/internft/keeper.go (1)

4-5: Import path updates align with SDK v0.50.10

The import path changes reflect the SDK's module reorganization:

  1. cosmossdk.io/log is the new canonical path for the logging package
  2. cosmossdk.io/x/nft is the new location for the NFT module
✅ Verification successful

Import paths are correctly updated across the codebase

The verification confirms that:

  1. All NFT imports consistently use the new path cosmossdk.io/x/nft
  2. All logging imports use the new path cosmossdk.io/log
  3. The go.mod file shows correct dependencies:
    • cosmossdk.io/log v1.4.1
    • cosmossdk.io/x/nft v0.1.1

No instances of old import paths (github.com/cosmos/cosmos-sdk/x/nft or github.com/cometbft/cometbft/libs/log) were found in the codebase.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that all NFT-related imports are updated consistently

# Check for any remaining old import paths
echo "Checking for old NFT import paths..."
rg "github.com/cosmos/cosmos-sdk/x/nft" --type go

# Check for old logging import paths
echo "Checking for old logging import paths..."
rg "github.com/cometbft/cometbft/libs/log" --type go

Length of output: 276


Script:

#!/bin/bash
# Let's verify the imports more thoroughly by:
# 1. Finding all Go files that import NFT-related packages
# 2. Finding all Go files that import logging packages
# 3. Checking the specific versions used

# Check all NFT-related imports (both old and new paths)
echo "=== Checking all NFT imports ==="
rg -A 1 'import \($|[\s{]' --type go | rg -A 1 'nft'

# Check all logging-related imports
echo "=== Checking all logging imports ==="
rg -A 1 'import \($|[\s{]' --type go | rg -A 1 'log"$'

# Check go.mod for relevant dependencies
echo "=== Checking go.mod ==="
cat go.mod | rg -A 1 'cosmossdk.io/|cosmos-sdk|cometbft'

Length of output: 21044

modules/evm/keeper.go (1)

73-73: Verify gas limit calculation with LegacyNewDec

The change from sdk.NewDec to math.LegacyNewDec is part of the SDK's mathematical types reorganization. The 'Legacy' prefix suggests this is a compatibility method.

✅ Verification successful

Based on the search results, I can now generate the final response:

math.LegacyNewDec usage is consistent with codebase patterns

The usage of math.LegacyNewDec for gas limit calculation is consistent with other decimal handling patterns in the codebase. The codebase shows consistent usage of LegacyNewDec and its variants (LegacyNewDecWithPrec, LegacyNewDecFromInt) across different modules, particularly in:

  • Gas price configurations in app/upgrades/v200/config.go
  • EVM minimum gas price in app/upgrades/v300/constants.go
  • Mint module parameters and tests
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for consistent decimal handling in gas calculations

# Search for other gas-related decimal calculations
echo "Checking for other gas-related decimal calculations..."
rg "NewDec.*Gas" --type go

# Search for other LegacyNewDec usage
echo "Checking for other LegacyNewDec usage..."
rg "LegacyNewDec" --type go

Length of output: 1601

modules/guardian/client/cli/cli_test.go (3)

5-5: LGTM: Import changes align with Cosmos SDK v0.50.x

The changes to import paths reflect the SDK's modularization efforts, moving core functionality to dedicated packages:

  • cosmossdk.io/math for mathematical operations
  • cosmos-sdk/codec/address for address encoding/decoding

Also applies to: 8-8


81-81: LGTM: Consistent usage of math.NewInt

The migration from sdk.NewInt to math.NewInt is applied consistently across all coin amount calculations, aligning with the SDK's new mathematical types system.

Also applies to: 91-91, 117-117, 144-144


94-96: LGTM: Proper implementation of new address codec

The addition of Bech32 codec initialization improves address handling by using the SDK's dedicated address encoding functionality.

app/keepers/keys.go (2)

4-7: LGTM: Updated import paths align with SDK v0.50.x and IBC v8

The changes reflect two major upgrades:

  1. Migration to cosmossdk.io namespace for core SDK modules
  2. Upgrade to IBC-go v8 for IBC-related functionality

Also applies to: 20-22


50-50: LGTM: Proper migration to new store types initialization

The store initialization has been updated to use the new storetypes package:

  • KVStore keys using storetypes.NewKVStoreKeys
  • Transient store keys using storetypes.NewTransientStoreKeys
  • Memory store keys using storetypes.NewMemoryStoreKeys

Also applies to: 90-90, 97-97

modules/guardian/module.go (3)

98-101: LGTM: Added required module interface methods

The new methods IsOnePerModuleType() and IsAppModule() are required implementations for the SDK v0.50.x module system.


157-157: LGTM: Updated block hooks to use standard context

The BeginBlock and EndBlock methods have been properly updated to:

  • Use context.Context instead of sdk.Context
  • Return error for better error handling

Also applies to: 161-162


174-174: LGTM: Updated simulation registry type

The RegisterStoreDecoder method now correctly uses simtypes.StoreDecoderRegistry from the SDK's simulation package.

modules/mint/module.go (3)

162-165: LGTM: BeginBlock signature update

The BeginBlock method has been correctly updated to match cosmos-sdk v0.50.10 conventions, properly unwrapping the SDK context.


170-171: LGTM: EndBlock signature update

The EndBlock method has been correctly updated to match cosmos-sdk v0.50.10 conventions.


194-198: LGTM: New interface implementations

Correctly implements the required interfaces for cosmos-sdk v0.50.10 compatibility.

cmd/iris/cmd/genaccounts.go (1)

101-104: LGTM: Improved error handling for vesting account creation

Properly handles potential errors from NewBaseVestingAccount, enhancing security and reliability.

testutil/test_helpers.go (3)

21-22: LGTM: Updated math package imports

Correctly migrated to the new cosmossdk.io/math package.


66-66: LGTM: Updated math type usage

Successfully migrated to the new math types from cosmossdk.io/math:

  • math.NewInt for coin amounts
  • math.LegacyOneDec for shares and commission
  • math.ZeroInt for minimum self delegation

Also applies to: 170-170, 175-177, 179-179, 184-184


117-124: LGTM: Added error handling for InitChain

Properly handles potential errors from InitChain call.

go.mod (3)

3-3: Consider the stability implications of Go 1.22.7.

The upgrade to Go 1.22.7 is quite aggressive as it's a very recent version. Consider using a more established version like 1.21.x for production stability.


269-280: Review replace directives for security and maintenance implications.

Notable replace directives:

  1. Using a custom fork of cosmos-sdk with LSM modifications
  2. Using a custom fork of ethermint
  3. Pinning goleveldb to a specific version

These customizations require careful maintenance and security tracking.

Run this script to verify the specified versions:


6-10: Verify compatibility with major dependency updates.

Significant version updates detected:

  • cosmos-sdk: v0.47.x → v0.50.10
  • cometbft: v0.37.x → v0.38.12
  • ibc-go: v7.x.x → v8.5.0

These updates may introduce breaking changes. Please ensure:

  1. All breaking changes are addressed
  2. Migration guides have been followed
  3. Integration tests cover the changes

Run this script to check for potential breaking changes:

✅ Verification successful

Let me generate additional verification scripts to check for migration-related changes and potential breaking changes.

This will help us verify:

  1. Presence of upgrade handlers and migration files
  2. Code changes related to the new versions
  3. IBC-related changes that might need attention
  4. Any explicit upgrade logic in the codebase

Based on the verification results, I can now provide a final response:

Breaking changes have been properly addressed with upgrade handlers

The codebase shows evidence of proper migration handling:

  • Upgrade handlers exist at app/upgrades/v200, v210, and v300 to manage breaking changes
  • IBC v7 to v8 migration is explicitly handled in v210 upgrade (referencing official migration docs)
  • ICA (Interchain Accounts) integration is properly configured with the new v8 paths
  • All IBC-related imports have been updated to v8 versions
  • Cosmos SDK v0.50.x integration appears complete with updated module imports and configurations
  • CometBFT v0.38.x integration is reflected in the dependencies

The upgrade handlers and migration paths indicate that breaking changes have been properly addressed through a systematic upgrade process.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Search for any TODO, FIXME, or migration-related comments that might indicate incomplete updates

# Check for migration-related comments
rg -i "TODO.*migrat|FIXME.*migrat|TODO.*upgrad|FIXME.*upgrad"

# Check for any v0.47, v7, or v0.37 references that might have been missed
rg "v0\.47|v7\.|v0\.37"

Length of output: 65626


Script:

#!/bin/bash
# Check for migration files and upgrade handlers
fd -e go upgrade
fd -e md migrat

# Check for any v0.50 or v0.38 related code changes
rg -i "v0\.50|v0\.38" -g "*.go" -A 2

# Look for any upgrade-related code
ast-grep --pattern 'func $name() $_ {
  $$$
  upgrade$$$
  $$$
}'

# Check for any IBC-related changes since IBC version changed
rg -i "ibc" -g "*.go" -A 2 app/

Length of output: 24081

app/sim_test.go (4)

372-374: Verify InitChain pointer receiver change.

The change to use a pointer receiver for RequestInitChain aligns with the updated SDK interface.


416-416: LGTM: Logger initialization update.

The change to use NewTestLogger(t) is correct and follows the new logging patterns in the SDK.


48-49: Verify IBC module version update implications.

The update from v7 to v8 of IBC modules requires careful verification of all IBC-related functionality.

Run this script to check for any remaining v7 references:

✅ Verification successful

Let me gather more information about the IBC module version changes.


IBC v8 upgrade appears to be properly implemented

The verification shows that:

  • No v7 references remain in the codebase
  • The go.mod confirms a clean upgrade to IBC-go v8.5.0
  • All IBC-related imports and usages are consistently using v8
  • The existing IBC type usages in the codebase appear to be compatible with v8
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for any remaining v7 IBC references

# Search for any remaining v7 references in imports
rg "github.com/cosmos/ibc-go/v7"

# Search for IBC-related type usage that might need updates
rg "ibctransfertypes\.|ibcexported\."

Length of output: 1895


Script:

#!/bin/bash
# Check go.mod for IBC dependencies and their versions
rg -A 5 "github.com/cosmos/ibc-go" go.mod

# Check for any IBC-related interfaces or structs that might need updates
ast-grep --pattern 'type $_ struct {
  $$$
  ibc$_ $_
  $$$
}'

# Check for IBC-related function signatures
ast-grep --pattern 'func $_($$_) $_ {
  $$$
  ibc$_
  $$$
}'

Length of output: 485


217-218: Verify the impact of NewContextLegacy usage.

The change from NewContext to NewContextLegacy suggests a deprecation. Consider migrating to the new context creation method if available.

Run this script to check for other instances and available alternatives:

✅ Verification successful

Let me gather more information about the context creation patterns to understand if there's a newer alternative available.


Let me try one more search pattern to find context-related code and comments.


Based on the search results, I can now provide a final response:

NewContextLegacy appears to be the current standard method for context creation in tests

The codebase consistently uses NewContextLegacy across multiple test files in different modules (mint, guardian, app). While there's a commented-out reference to a plain NewContext method in a migration test, there's no evidence of a newer alternative being actively used or any deprecation notices. The current usage in the test file aligns with the pattern used throughout the codebase.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for NewContext usage patterns

# Search for other NewContextLegacy usage
rg "NewContextLegacy"

# Search for the new context creation pattern
ast-grep --pattern 'NewContext($$$)'

Length of output: 874


Script:

#!/bin/bash
# Search for any context creation methods in BaseApp
rg -A 3 "func.*NewContext" 

# Look for any deprecation notices or comments about context creation
rg -i "deprecated.*context|context.*deprecated"

# Check if there's any documentation about context creation
fd README.md --exec grep -i -A 3 "context"

Length of output: 121


Script:

#!/bin/bash
# Search for BaseApp context-related code with more context
rg -B 2 -A 2 "BaseApp.*Context"

# Look for any Go files containing BaseApp definition
fd -e go --exec grep -l "type BaseApp"

# If we find the file, let's examine it
fd -e go --exec grep -l "type BaseApp" | xargs cat

Length of output: 1822

cmd/iris/cmd/root.go (2)

14-15: Updated imports for Cosmos SDK v0.50.10 compatibility

The imports have been updated to use "cosmossdk.io/log" and dbm "github.com/cosmos/cosmos-db", aligning with the upgraded Cosmos SDK v0.50.10. This ensures compatibility with the new SDK version.


153-153: Replaced deprecated command with server.StatusCommand()

The addition of server.StatusCommand() likely replaces a deprecated or removed command from the previous SDK version, updating the command structure to match Cosmos SDK v0.50.10.

app/rpc/auth.go Outdated Show resolved Hide resolved
app/upgrades/v300/lsm.go Show resolved Hide resolved
app/export.go Outdated Show resolved Hide resolved
app/app.go Outdated Show resolved Hide resolved
scripts/protoc-swagger-gen-ibc.sh Show resolved Hide resolved
@@ -3,10 +3,11 @@ package ante
import (
"strings"

sdkerrors "cosmossdk.io/errors"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Consolidate error handling imports

The file currently imports both sdkerrors and errortypes which can lead to confusion. In Cosmos SDK v0.50.x, the recommended approach is to use cosmossdk.io/errors exclusively.

-sdkerrors "cosmossdk.io/errors"
-errortypes "github.com/cosmos/cosmos-sdk/types/errors"
+sdkerrors "cosmossdk.io/errors"

Then update all error usages to use sdkerrors.ErrXXX instead of errortypes.ErrXXX.

Also applies to: 8-8

@@ -38,23 +39,23 @@
switch msg := msg.(type) {
case *ibctransfertypes.MsgTransfer:
if containSwapCoin(msg.Token) {
return ctx, sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "can't transfer coinswap liquidity tokens through the IBC module")
return ctx, sdkerrors.Wrap(errortypes.ErrInvalidRequest, "can't transfer coinswap liquidity tokens through the IBC module")
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Update error handling pattern

The current error wrapping pattern uses sdkerrors.Wrap(errortypes.ErrXXX, ...). With the migration to Cosmos SDK v0.50.x, we should use the new error types directly from cosmossdk.io/errors.

-return ctx, sdkerrors.Wrap(errortypes.ErrInvalidRequest, "can't transfer coinswap liquidity tokens through the IBC module")
+return ctx, sdkerrors.ErrInvalidRequest.Wrap("can't transfer coinswap liquidity tokens through the IBC module")

Apply similar changes to all error handling instances in this file.

Also applies to: 46-46, 50-50, 54-54, 58-58, 84-84

@@ -1,8 +1,9 @@
package types

import (
sdkerrors "cosmossdk.io/errors"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Consolidate error handling imports

Similar to the previous file, consolidate error handling to use only cosmossdk.io/errors.

-sdkerrors "cosmossdk.io/errors"
-errortypes "github.com/cosmos/cosmos-sdk/types/errors"
+sdkerrors "cosmossdk.io/errors"

Also applies to: 6-6

@@ -42,13 +43,13 @@
// ValidateBasic implements Msg.
func (msg MsgAddSuper) ValidateBasic() error {
if len(msg.Description) == 0 {
return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "description missing")
return sdkerrors.Wrap(errortypes.ErrInvalidRequest, "description missing")
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Update error handling in ValidateBasic methods

Update the error handling pattern to use the new SDK v0.50.x style.

-return sdkerrors.Wrap(errortypes.ErrInvalidRequest, "description missing")
+return sdkerrors.ErrInvalidRequest.Wrap("description missing")

-return sdkerrors.Wrapf(errortypes.ErrInvalidAddress, "invalid address (%s)", err)
+return sdkerrors.ErrInvalidAddress.Wrapf("invalid address (%s)", err)

Apply similar changes to all error handling instances in this file.

Also applies to: 49-49, 52-52, 97-97, 100-100, 117-117

@@ -10,9 +10,10 @@ import (
tmtypes "github.com/cometbft/cometbft/types"

errorsmod "cosmossdk.io/errors"
"github.com/armon/go-metrics"
"cosmossdk.io/math"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Migration to cosmossdk.io/math is incomplete

The codebase shows inconsistent usage of math packages:

  • One remaining instance of sdk.NewDecCoinsFromCoins in cmd/iris/cmd/util.go
  • Multiple files using math.LegacyNewDec variants
  • Mixed usage of sdkmath and math packages for decimal operations

The migration to cosmossdk.io/math should be completed consistently across the codebase to avoid potential compatibility issues.

🔗 Analysis chain

Updated dependencies align with SDK v0.50.10

The import changes reflect the SDK's evolution:

  1. Using cosmossdk.io/math for mathematical operations
  2. Updated metrics package to hashicorp/go-metrics

Also applies to: 16-16

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify consistent usage of new math and metrics packages

# Check for any remaining old math package usage
echo "Checking for old math package usage..."
rg "sdk\.NewDec" --type go

# Check for old metrics package
echo "Checking for old metrics package..."
rg "github.com/armon/go-metrics" --type go

Length of output: 306


Script:

#!/bin/bash
# Let's verify the changes more thoroughly

# Check for any remaining NewDec usages (including sdk.Dec)
echo "Checking for all Dec related usages..."
rg "sdk\.(NewDec|Dec\()" --type go

# Check current math package imports
echo "Checking math package imports..."
rg "^import.*math" --type go

# Check all metrics package imports
echo "Checking metrics package imports..."
rg "^import.*metrics" --type go

# Check for LegacyNewDec usage
echo "Checking LegacyNewDec usage..."
rg "LegacyNewDec" --type go

Length of output: 1773

app/keepers/keepers.go Outdated Show resolved Hide resolved
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Outside diff range and nitpick comments (5)
app/upgrades/v300/lsm.go (2)

75-77: Remove unused parameter in setUBDToStore

The sdk.Context parameter in setUBDToStore is unused. Removing it can simplify the function signature and improve readability.

Apply this diff to remove the unused parameter:

-func setUBDToStore(_ sdk.Context, store storetypes.KVStore, cdc codec.BinaryCodec, ubd types.UnbondingDelegation) {
+func setUBDToStore(store storetypes.KVStore, cdc codec.BinaryCodec, ubd types.UnbondingDelegation) {

Line range hint 75-106: Consistent use of context.Context instead of sdk.Context

The functions migrateUBDEntries and setUBDToStore still use sdk.Context whereas other functions have been updated to use context.Context. For consistency and to align with the updated context handling, consider updating these functions to use context.Context.

Apply these diffs to update the context usage:

For migrateUBDEntries:

-func migrateUBDEntries(ctx sdk.Context, store storetypes.KVStore, cdc codec.BinaryCodec) error {
+func migrateUBDEntries(ctx context.Context, store storetypes.KVStore, cdc codec.BinaryCodec) error {

For setUBDToStore (after removing the unused parameter):

-func setUBDToStore(store storetypes.KVStore, cdc codec.BinaryCodec, ubd types.UnbondingDelegation) {
+func setUBDToStore(ctx context.Context, store storetypes.KVStore, cdc codec.BinaryCodec, ubd types.UnbondingDelegation) {

Ensure that any calls to these functions are updated accordingly, and adjust the code to accommodate the new context type.

go.mod (1)

Line range hint 546-547: Address TODO comment regarding upgrade proposal handler.

The commented-out upgrade proposal handler needs to be addressed as it's a critical component for chain upgrades.

Would you like me to help implement the upgrade proposal handler or create an issue to track this task?

app/keepers/keepers.go (2)

219-220: Consider using error wrapping instead of direct panic

The error handling for streaming services registration could be more graceful.

Consider wrapping the error before panicking:

-	if err := bApp.RegisterStreamingServices(appOpts, appKeepers.keys); err != nil {
-		panic(err)
+	if err := bApp.RegisterStreamingServices(appOpts, appKeepers.keys); err != nil {
+		panic(fmt.Errorf("failed to register streaming services: %w", err))

546-547: Address TODO comment regarding upgrade proposal handler

The commented-out upgrade proposal handler needs to be addressed as it's crucial for handling software upgrades.

Would you like me to help implement the upgrade proposal handler or create a GitHub issue to track this task?

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 48d939b and 81b8deb.

📒 Files selected for processing (8)
  • app/app.go (6 hunks)
  • app/export.go (8 hunks)
  • app/keepers/keepers.go (19 hunks)
  • app/rpc/auth.go (4 hunks)
  • app/sim_test.go (6 hunks)
  • app/upgrades/v300/lsm.go (3 hunks)
  • go.mod (4 hunks)
  • scripts/protoc-swagger-gen-ibc.sh (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • scripts/protoc-swagger-gen-ibc.sh
  • app/sim_test.go
🔇 Additional comments (16)
app/rpc/auth.go (2)

62-65: Proper error handling in decodeAccount usage

The error returned by decodeAccount is appropriately handled, ensuring robustness in case of unmarshalling failures.


97-106: Improved error handling in decodeAccount method

The decodeAccount method now returns an error instead of panicking, enhancing the application's stability by preventing unexpected crashes.

app/app.go (1)

226-228: Verify return types of BeginBlocker and EndBlocker

The BeginBlocker and EndBlocker methods now return (sdk.BeginBlock, error), but the calls to app.mm.BeginBlock(ctx) and app.mm.EndBlock(ctx) may not match these return types. Ensure that these methods return the expected types to comply with the updated method signatures.

Run the following script to check the return types:

go.mod (6)

219-220: ⚠️ Potential issue

Critical: Error handling changed from return to panic.

The change in error handling for RegisterStreamingServices from returning an error to panicking could affect system stability.

Consider handling the error gracefully instead of panicking:

-if err := bApp.RegisterStreamingServices(appOpts, appKeepers.keys); err != nil {
-  panic(err)
+if err := bApp.RegisterStreamingServices(appOpts, appKeepers.keys); err != nil {
+  logger.Error("failed to register streaming services", "error", err)
+  return AppKeepers{}

Likely invalid or redundant comment.


3-3: Verify Go 1.22.7 compatibility across the codebase.

The upgrade to Go 1.22.7 is significant as it's a very recent version. While it includes important improvements and security fixes, it might introduce compatibility issues.

Run the following script to check for potential compatibility issues:

✅ Verification successful

Go 1.22.7 upgrade appears safe for the codebase

Based on the analysis of the codebase:

  • No usage of new Go 1.22 range-over-range syntax found
  • No usage of deprecated features that changed in Go 1.22
  • The codebase uses standard range patterns and common Go features
  • GitHub workflows are configured for Go version management
  • No incompatible usage of slices package or clear builtin found

The upgrade to Go 1.22.7 should be safe as the codebase follows conventional Go patterns and doesn't use any features that were significantly changed or deprecated in Go 1.22.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for usage of deprecated features or patterns that might be affected by Go 1.22

# Check for usage of features that changed in Go 1.22
rg -g '*.go' 'for\s+range.*=\s*range'  # New range-over-range syntax
rg -g '*.go' 'go:build\s+'  # Build constraint changes

Length of output: 68


Script:

#!/bin/bash
# Let's check for potential compatibility issues with Go 1.22 features

# Check for usage of slices package (introduced in Go 1.21)
rg -g '*.go' 'slices\.' -A 2

# Check for usage of clear builtin (introduced in Go 1.21)
rg -g '*.go' '\bclear\(' -A 2

# Check for range-related patterns that might be affected
rg -g '*.go' 'for\s+.*,.*\s*:=\s*range' -A 2

# Check for any build constraints
find . -type f -name "*.go" -exec grep -l '^//go:build' {} \;

# Check Go-related GitHub workflows for version constraints
find .github/workflows -type f -exec grep -l 'go-version' {} \;

Length of output: 7082


269-271: Verify custom fork compatibility.

The replacement of cosmos-sdk with a custom fork (cosmos-sdk v0.50.10-lsm) and ethermint with a custom version needs careful review to ensure compatibility and security.

Run the following script to verify the custom forks:


Line range hint 592-598: Verify token swap ratio configuration.

The token swap ratio configuration using math.LegacyOneDec() needs verification to ensure correct decimal handling.

Run the following script to check for potential decimal handling issues:


Line range hint 199-209: Verify interface registry configuration.

The new interface registry configuration with custom signing options needs careful review to ensure proper address encoding and validation.

Run the following script to check for potential address encoding issues:

✅ Verification successful

Interface registry and address encoding configuration is properly implemented

The verification shows that the interface registry configuration is correctly implemented with proper address encoding setup:

  • Interface registry is properly configured in both app/params/proto.go and app/keepers/keepers.go with consistent address codec settings
  • Bech32 address prefixes are correctly used for both account and validator addresses
  • Address codec initialization is consistent across the codebase using standard SDK patterns
  • No custom address validation logic that could introduce inconsistencies
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for address encoding patterns

# Check for custom address encoding usage
rg -g '*.go' 'GetBech32AccountAddrPrefix|GetBech32ValidatorAddrPrefix'

# Check for address validation
rg -g '*.go' 'ValidateBasic.*Address'

Length of output: 864


Script:

#!/bin/bash
# Let's check the interface registry configuration and address encoding setup more comprehensively

# Check interface registry configuration
ast-grep --pattern 'interfaceRegistry := $$$'

# Check address codec configuration patterns
rg -g '*.go' -B 2 -A 2 'NewBech32Codec|addresscodec'

# Check for any custom address validation logic
rg -g '*.go' -B 2 -A 2 'ValidateAddress|AddressValidation'

Length of output: 4346


6-10: ⚠️ Potential issue

Major dependency upgrades require careful testing.

The upgrade includes significant version jumps:

  • cosmos-sdk: v0.50.10
  • ibc-go: v8.5.0
  • cometbft: v0.38.12

These upgrades introduce breaking changes that affect:

  1. Keeper initialization
  2. Store management
  3. Message handling
  4. State migrations

Run the following script to check for potential breaking changes:

✅ Verification successful

Let me gather more information about potential breaking changes by checking for specific patterns related to the upgraded dependencies.


Based on the verification results, I can now provide a final response:

Dependency upgrades are properly aligned and no immediate issues found

The codebase appears to be well-prepared for the dependency upgrades:

  • All IBC imports are already using v8 (ibc-go/v8)
  • No deprecated cosmos-sdk v1beta1 imports found except for a single gov import that's still supported
  • Store and keeper implementations follow the current patterns
  • Keeper initializations are consistent with the new versions

The changes in go.mod align with the existing codebase structure and no breaking changes are detected that would require immediate attention.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for usage of deprecated APIs and patterns

# Check for old cosmos-sdk imports that need to be updated
rg -g '*.go' 'github.com/cosmos/cosmos-sdk/(x/auth/types|x/bank/types|x/staking/types|x/gov/types)/v1beta1'

# Check for old IBC imports
rg -g '*.go' 'github.com/cosmos/ibc-go/v7'

# Check for old store access patterns
rg -g '*.go' 'GetKVStore|TransientStore|MemStore'

Length of output: 1308


Script:

#!/bin/bash
# Check for potential breaking changes in store and keeper patterns

# Check for IBC-related imports and usage
rg -g '*.go' 'github.com/cosmos/ibc-go/v[0-9]' -A 2

# Check for specific cosmos-sdk patterns that might need updates
rg -g '*.go' 'NewKeeper|NewBaseMsgServer|NewMsgServerImpl|NewQueryServer'

# Check for potential store key changes
ast-grep --pattern 'NewKVStoreKey($$$)'

# Check for potential breaking changes in message handling
rg -g '*.go' 'MsgServer|QueryServer|Keeper struct'

Length of output: 16393

app/keepers/keepers.go (7)

6-13: LGTM: Import updates align with Cosmos SDK v0.50.x requirements

The import changes correctly reflect the migration from cosmos-sdk to cosmossdk.io packages and the upgrade from ibc-go/v7 to ibc-go/v8.

Also applies to: 49-58, 66-70


129-130: LGTM: Addition of interfaceRegistry field

The addition of interfaceRegistry field to AppKeepers struct is necessary for the SDK upgrade to support the new interface registry functionality.


199-209: LGTM: Proper initialization of InterfaceRegistry with signing options

The initialization correctly configures the interface registry with proper address codecs and signing options.


593-593: LGTM: Updated math package usage

The change from sdk.OneDec() to math.LegacyOneDec() aligns with the SDK's new math package.

Also applies to: 597-597


231-233: LGTM: Updated store service usage

The change to use runtime.NewKVStoreService instead of direct store access aligns with the SDK's new store service pattern.


373-374: LGTM: ICAHostKeeper query router configuration

The addition of query router configuration for ICAHostKeeper is correctly placed after keeper initialization.


534-535: Verify adapter implementations

The usage of new adapter types (DistrKeeperAdapter and GovKeeperAdapter) needs verification to ensure they properly implement all required interfaces.

✅ Verification successful

Adapters implement focused interfaces with required functionality

Based on the code analysis, both adapters are well-implemented with specific methods needed for their use cases:

  • DistrKeeperAdapter provides fee pool management with GetFeePool and SetFeePool methods
  • GovKeeperAdapter implements governance functionality with methods for proposal management (SubmitProposal, GetProposal), deposits (AddDeposit), and account access (GetGovernanceAccount)

Each adapter wraps its respective keeper and exposes only the necessary methods, following good interface segregation principles. The implementations are straightforward delegations to the underlying keepers.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check adapter implementations

# Search for adapter interface definitions and implementations
ast-grep --pattern 'type $adapter interface {
  $$$
}'

# Search for adapter implementations
ast-grep --pattern 'type $adapter struct {
  $$$
}'

Length of output: 110


Script:

#!/bin/bash
# Let's search for the adapter types and their implementations
rg -A 10 "type (Distr|Gov)KeeperAdapter" 

# Search for any interface these adapters might implement
rg "interface.*Keeper"

# Search for the actual adapter constructors to see their usage
rg "New(Distr|Gov)KeeperAdapter"

Length of output: 1932


Script:

#!/bin/bash
# Let's check what interfaces these adapters are expected to implement by looking at their usage context
rg -B 5 -A 5 "NewDistrKeeperAdapter.*NewGovKeeperAdapter" 

# Let's also check for all methods implemented by these adapters
rg "func \(a (Distr|Gov)KeeperAdapter\)"

Length of output: 931

app/export.go Outdated Show resolved Hide resolved
app/export.go Outdated Show resolved Hide resolved
app/app.go Outdated Show resolved Hide resolved
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (1)
app/keepers/keepers.go (1)

Several keeper initializations and store accesses need migration to SDK v0.50.10 patterns

The verification reveals incomplete upgrade implementation:

  1. Several keepers still use direct store keys instead of runtime.NewKVStoreService:

    • MintKeeper
    • CapabilityKeeper
    • IBCKeeper and related IBC keepers
    • GuardianKeeper
    • RecordKeeper
    • HTLCKeeper
    • CoinswapKeeper
    • ServiceKeeper
    • OracleKeeper
    • RandomKeeper
    • FarmKeeper
    • TokenKeeper
    • FeeMarketKeeper
    • EvmKeeper
  2. Direct KVStore access patterns found in multiple modules need to be migrated to use runtime.KVStoreService:

    • mint module
    • guardian module
    • app/sim_test.go
    • app/upgrades/v300/lsm.go
    • app/export.go
    • app/rpc/auth.go

These need to be updated to follow the SDK v0.50.10 patterns for store access.

🔗 Analysis chain

Line range hint 1-644: Verify upgrade completeness

The changes for upgrading to SDK v0.50.10 look correct, but we should verify:

  1. All required keeper initializations have been updated to use runtime.NewKVStoreService
  2. All math package migrations are complete
  3. All IBC v8 changes are properly implemented

Let me verify the remaining aspects by checking for any direct store key usage that needs migration to runtime.NewKVStoreService:


Let me check one final aspect - the keeper initializations that might still be using direct store keys:

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for any remaining direct store key usage that should use runtime.NewKVStoreService
rg "keeper\.New.*\(.*StoreKey\)" --type go

# Check for IBC version consistency
rg "github.com/cosmos/ibc-go/v[0-9]+" --type go

Length of output: 3621


Script:

#!/bin/bash
# Check for direct store key usage in keeper initializations
rg "NewKeeper.*\([^)]*\bkeys\[.*\]" --type go -A 2

# Check for any remaining legacy math package usage
rg "github.com/cosmos/cosmos-sdk/types/math" --type go
rg "sdk\.Int|sdk\.Dec|sdk\.NewDec|sdk\.NewInt" --type go

Length of output: 587


Script:

#!/bin/bash
# Check keeper initializations in the specific keepers.go file
rg "NewKeeper.*\(" app/keepers/keepers.go -A 3

# Also check for any remaining store.KVStore usage that should be migrated
rg "KVStore\(" --type go

Length of output: 6112

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 81b8deb and 54b724b.

📒 Files selected for processing (2)
  • app/keepers/keepers.go (18 hunks)
  • app/params/proto.go (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • app/params/proto.go
🔇 Additional comments (4)
app/keepers/keepers.go (4)

130-131: LGTM: Interface registry addition aligns with SDK v0.50.x requirements

The addition of the interfaceRegistry field is a necessary change for the SDK upgrade and follows the standard pattern.


237-239: LGTM: Keeper initialization follows SDK v0.50.x patterns

The ConsensusParamsKeeper initialization correctly uses the new runtime.NewKVStoreService pattern.


597-601: Verify math package migration completeness

The change from sdk.OneDec() to math.LegacyOneDec() is correct, but we should verify all similar occurrences have been updated.

✅ Verification successful

All sdk.OneDec() occurrences have been migrated to math.LegacyOneDec()

The verification shows that there are no remaining instances of sdk.OneDec() in the codebase, while math.LegacyOneDec() is consistently used across all relevant files:

  • testutil/test_helpers.go
  • cmd/iris/cmd/testnet.go
  • app/keepers/keepers.go
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any remaining sdk.OneDec() usage that might need updating
rg "sdk\.OneDec\(\)" --type go

# Search for current math.LegacyOneDec() usage
rg "math\.LegacyOneDec\(\)" --type go

Length of output: 530


200-214: Verify completeness of signing options configuration

The signing options configuration looks correct but should be verified for completeness, especially for any custom message types that might require special signing handling.

✅ Verification successful

The previous regex had syntax issues. Let's try a simpler search pattern to find GetSigners implementations and use ast-grep to find the specific function signature we're interested in.


Let's examine the actual implementations of GetSigners and check for any ethereum specific message types to ensure we haven't missed any custom signing requirements.


Signing options configuration is complete and correctly implemented

The signing options configuration is complete and properly handles all necessary message types:

  • Standard Cosmos SDK messages (MsgUpdateParams, MsgAddSuper, MsgDeleteSuper) use the default signing behavior
  • Ethereum transactions (MsgEthereumTx) are correctly configured with a custom signer through evmtypes.MsgEthereumTxCustomGetSigner
  • The address codecs are properly set up for both account and validator addresses
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any custom message types that might need signing configuration
rg -l "func GetSigners.*interface{}" --type go

Length of output: 186


Script:

#!/bin/bash
# Search for GetSigners function implementations
rg -l "GetSigners" --type go

# Search for custom message types with signing behavior
ast-grep --pattern 'func GetSigners() []sdk.AccAddress'

Length of output: 222


Script:

#!/bin/bash
# Let's examine the GetSigners implementations in the found files
rg "GetSigners" -A 5 --type go modules/mint/types/msg.go modules/guardian/types/msgs.go app/params/proto.go

# Also check for any ethereum specific message types that might need signing
rg "MsgEthereumTx" -A 5 --type go

Length of output: 5271

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Outside diff range and nitpick comments (1)
app/export.go (1)

131-142: Consistent error handling in distribution keeper

Errors are now checked after retrieving validator rewards and the fee pool. Verify that panicking is the appropriate response in these cases, or consider implementing more graceful error handling if necessary.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between bf3dda8 and 4fa6679.

📒 Files selected for processing (5)
  • app/app.go (6 hunks)
  • app/export.go (8 hunks)
  • modules/internft/interface.go (1 hunks)
  • modules/mint/keeper/keeper.go (1 hunks)
  • wrapper/farm.go (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • modules/mint/keeper/keeper.go
  • wrapper/farm.go
🔇 Additional comments (14)
modules/internft/interface.go (2)

4-6: LGTM! Import changes align with cosmos-sdk v0.50.x

The changes correctly update the import paths to use:

  • Standard Go context package
  • New cosmossdk.io namespace for the nft keeper

16-18: Migration to context.Context is incomplete in the internft module

While the interface correctly updates to context.Context, the implementation in keeper.go still uses sdk.Context in multiple methods, which needs to be updated for consistency.

Let's verify if there are any other modules that need similar context updates:

#!/bin/bash
# Search for any remaining sdk.Context usages in related modules
rg -t go "sdk\.Context" modules/internft/ modules/nft/
app/app.go (7)

226-227: Verify the updated return type of BeginBlocker

The BeginBlocker method now returns (sdk.BeginBlock, error). Please ensure that this change aligns with the expected signature in the latest version of the Cosmos SDK. Confirm that any interfaces or modules interacting with this method are updated accordingly.


231-232: Verify the updated return type of EndBlocker

The EndBlocker method now returns (sdk.EndBlock, error). Ensure that this change is consistent with the updated Cosmos SDK specifications. Verify that dependent code correctly handles the new return types.


305-305: Update import paths for cmtservice

Ensure that the import path and usage of cmtservice correspond to the updated module structure in the latest Cosmos SDK. If tmservice was replaced with cmtservice, confirm that all references are correctly updated.


324-324: Verify parameters in RegisterService

The call to rpc.RegisterService now includes app.appCodec, m, app.configurator, and app.AppKeepers. Confirm that this matches the updated function signature and that these parameters are correctly passed according to the latest SDK changes.


340-340: Check parameters in RegisterTendermintService

Verify that the arguments provided to cmtservice.RegisterTendermintService are accurate. Ensure that app.Query is a valid parameter and aligns with the updated method signature in the SDK.


351-352: Update RegisterNodeService to accommodate new parameter

The RegisterNodeService method now accepts a config.Config parameter. Ensure that this change is reflected wherever the method is called and that it aligns with the latest SDK updates.


236-242: ⚠️ Potential issue

Ensure InitChainer returns the expected response

The InitChainer method should return (*abci.ResponseInitChain, error), but it's unclear if app.mm.InitGenesis returns the correct types. Verify that app.mm.InitGenesis returns (*abci.ResponseInitChain, error) to match the method's signature. If it doesn't, adjust the return statement accordingly.

Apply this diff to ensure correct return values:

 func (app *IrisApp) InitChainer(ctx sdk.Context, req *abci.RequestInitChain) (*abci.ResponseInitChain, error) {
     var genesisState iristypes.GenesisState
     if err := tmjson.Unmarshal(req.AppStateBytes, &genesisState); err != nil {
-        return nil, err
+        return &abci.ResponseInitChain{}, err
     }
     if err := app.UpgradeKeeper.SetModuleVersionMap(ctx, app.mm.GetVersionMap()); err != nil {
-        return nil, err
+        return &abci.ResponseInitChain{}, err
     }
     return app.mm.InitGenesis(ctx, app.appCodec, genesisState)
 }
app/export.go (5)

29-29: Confirm use of NewContextLegacy

The use of app.NewContextLegacy may indicate reliance on legacy methods. Verify if this is necessary or if it can be updated to app.NewContext to align with the current SDK practices.


91-93: Proper error handling for WithdrawValidatorCommission

Error handling has been added for WithdrawValidatorCommission. This enhances robustness by ensuring any errors during commission withdrawal are appropriately managed.


99-102: Error handling for GetAllDelegations

Adding error checks after GetAllDelegations improves error detection. Ensure that this pattern is consistently applied throughout the codebase.


218-220: Error handling for SetValidator

Including error checks after SetValidator ensures that any issues during validator updates are caught promptly.


229-231: Consistent error handling for ApplyAndReturnValidatorSetUpdates

The error from ApplyAndReturnValidatorSetUpdates is now correctly handled. Ensure this consistency is maintained across all similar functions.

@@ -232,6 +252,6 @@ func (app *IrisApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs [
// ExportGenesis returns the KVStoreKey for the provided store key.
//
// NOTE: This is solely to be used for testing purposes.
func (app *IrisApp) ExportGenesis(ctx sdk.Context) map[string]json.RawMessage {
func (app *IrisApp) ExportGenesis(ctx sdk.Context) (map[string]json.RawMessage, error) {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Handle error returned by ExportGenesis

The ExportGenesis method now returns an error. Ensure that all calls to this method handle the error appropriately to prevent unintended behavior.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (1)
proto/irishub/guardian/tx.proto (1)

20-23: LGTM! Well-structured message definitions

The message definitions are well-structured with appropriate use of:

  • cosmos.msg.v1.signer options
  • cosmos.AddressString scalar type for address fields

Consider adding field-level documentation comments to describe the purpose of each field, especially for description, address, added_by, and deleted_by.

 message MsgAddSuper {
   option (cosmos.msg.v1.signer) = "added_by";
+  // description provides context about the super account
   string description = 1;
+  // address is the account address to be added as super
   string address = 2;
+  // added_by is the address of the account adding the super account
   string added_by = 3 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
 }

Also applies to: 31-33

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 4fa6679 and f0566f0.

📒 Files selected for processing (13)
  • cmd/iris/cmd/root.go (3 hunks)
  • modules/guardian/client/cli/cli_test.go (5 hunks)
  • network/hermes/create-conn.sh (1 hunks)
  • network/hermes/restore-keys.sh (1 hunks)
  • network/hermes/variables.sh (1 hunks)
  • network/start.sh (1 hunks)
  • proto/irishub/guardian/genesis.proto (1 hunks)
  • proto/irishub/guardian/guardian.proto (1 hunks)
  • proto/irishub/guardian/query.proto (1 hunks)
  • proto/irishub/guardian/tx.proto (1 hunks)
  • proto/irishub/mint/genesis.proto (1 hunks)
  • proto/irishub/mint/mint.proto (1 hunks)
  • proto/irishub/mint/query.proto (1 hunks)
✅ Files skipped from review due to trivial changes (8)
  • network/hermes/variables.sh
  • network/hermes/create-conn.sh
  • network/hermes/restore-keys.sh
  • proto/irishub/guardian/query.proto
  • proto/irishub/mint/genesis.proto
  • proto/irishub/guardian/genesis.proto
  • proto/irishub/guardian/guardian.proto
  • proto/irishub/mint/query.proto
🚧 Files skipped from review as they are similar to previous changes (2)
  • modules/guardian/client/cli/cli_test.go
  • proto/irishub/mint/mint.proto
🧰 Additional context used
🪛 buf (1.47.2)
proto/irishub/guardian/tx.proto

3-3: import "cosmos/msg/v1/msg.proto": file does not exist

(COMPILE)

🔇 Additional comments (8)
network/start.sh (2)

18-18: 🛠️ Refactor suggestion

Fix formatting inconsistency and verify configuration change.

  1. There's an extra space in line 22 before --grpc-web.enable
  2. The change from --grpc-web.address to --grpc-web.enable represents a significant configuration change.

Apply this diff to maintain consistency:

-$BINARY start --log_format json --home $CHAIN_DIR/$CHAINID_2 --pruning=nothing --grpc.address="0.0.0.0:$GRPCPORT_2"  --grpc-web.enable=$GRPC_WEB_2_ENABLE > $CHAIN_DIR/$CHAINID_2.log 2>&1 &
+$BINARY start --log_format json --home $CHAIN_DIR/$CHAINID_2 --pruning=nothing --grpc.address="0.0.0.0:$GRPCPORT_2" --grpc-web.enable=$GRPC_WEB_2_ENABLE > $CHAIN_DIR/$CHAINID_2.log 2>&1 &

Let's verify this configuration change is compatible with cosmos-sdk v0.50.10:

Also applies to: 22-22


11-12: LGTM! Verify these changes with deployment documentation.

The new variables follow consistent naming conventions with existing configuration.

Let's verify if these changes are documented:

proto/irishub/guardian/tx.proto (2)

9-15: LGTM! Service option added as suggested

The cosmos.msg.v1.service option has been correctly added as per the previous review comment, and the RPC methods are well documented.


3-4: Verify the import paths and dependencies

The static analysis tool indicates that cosmos/msg/v1/msg.proto might not exist. Please ensure that all required dependencies are properly configured in your build system.

✅ Verification successful

Let me gather more information about the dependency configuration and imports.


Based on the buf.yaml configuration found in the proto directory, I can now make a definitive assessment. The import paths are correctly configured as the project has explicit dependencies on the Cosmos SDK and Cosmos Proto packages:

deps:
  - buf.build/cosmos/cosmos-sdk:7ea623782a4d4f11b35627913a7bc481
  - buf.build/cosmos/cosmos-proto:1935555c206d4afb9e94615dfd0fad31

The import paths are correctly configured

The imports cosmos/msg/v1/msg.proto and cosmos_proto/cosmos.proto are valid as they are provided by the declared buf.build dependencies. The static analysis warning can be safely ignored as these proto files are resolved through the buf dependency system rather than local files.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if the proto files exist in the project or its dependencies

# Search for the proto files in the project
fd -e proto -x echo "Project proto file: {}"

# Check if buf.yaml exists and its content
if [ -f "buf.yaml" ]; then
    echo "buf.yaml content:"
    cat buf.yaml
fi

Length of output: 508


Script:

#!/bin/bash
# Check for buf configuration files in different locations and dependency declarations
echo "=== Checking for buf.work.yaml ==="
if [ -f "buf.work.yaml" ]; then
    cat buf.work.yaml
fi

echo -e "\n=== Checking for buf.yaml in proto directory ==="
if [ -f "proto/buf.yaml" ]; then
    cat proto/buf.yaml
fi

echo -e "\n=== Checking for dependencies in go.mod ==="
if [ -f "go.mod" ]; then
    cat go.mod
fi

echo -e "\n=== Checking other proto files for similar imports ==="
rg "import.*cosmos/msg/v1/msg.proto" -A 2 -B 2 --type proto

Length of output: 15232

🧰 Tools
🪛 buf (1.47.2)

3-3: import "cosmos/msg/v1/msg.proto": file does not exist

(COMPILE)

cmd/iris/cmd/root.go (4)

14-15: LGTM: Import updates align with SDK v0.50.10

The updates to logging and database imports are consistent with the Cosmos SDK v0.50.10 upgrade.


152-152: LGTM: Status command addition

The addition of server.StatusCommand() provides standard node status functionality.


220-220: ⚠️ Potential issue

Critical: Verify the removal of module transaction commands

The commented-out app.ModuleBasics.AddTxCommands(cmd) removes the ability for modules to register their transaction commands. This could break module-specific transaction functionality.

Let's verify if this is intentional and if there's an alternative mechanism:

Please confirm if this change is intentional and provide details on how module-specific transaction commands should be registered in the new architecture.


136-146: Verify the impact of removing ethermint server commands

The switch from ethermintserver.AddCommands to server.AddCommands represents a significant change in command handling. While this aligns with the SDK upgrade, we should verify that no critical Ethereum-related functionality is lost.

Let's check for any remaining ethermint dependencies and command references:

✅ Verification successful

Let me gather more specific information about the ethermint server usage and related commands.


Let me check one more aspect to understand if the EVM functionality is still maintained through other means.


Let me try one final check to understand the current EVM module integration.


Based on the gathered information, I can now provide a final response:

Removal of ethermintserver.AddCommands is safe and intentional

The switch from ethermintserver.AddCommands to server.AddCommands is part of a valid architectural change. The evidence shows that:

  • EVM functionality is still maintained through the proper module registration (evm.AppModuleBasic{})
  • The EVM module is properly integrated in the application (irisevm.NewAppModule)
  • The change only affects the command registration mechanism, not the core EVM functionality
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for ethermint command references and dependencies
echo "Checking for ethermint command references..."
rg -l "ethermint.*server" 

echo "Checking for ethermint imports..."
rg -l "github.com/evmos/ethermint"

echo "Checking if any other files still use ethermintserver.AddCommands..."
ast-grep --pattern 'ethermintserver.AddCommands'

Length of output: 1026


Script:

#!/bin/bash
# Check the content of files that reference ethermint server
echo "Checking root.go for context around the change..."
rg -B 5 -A 5 "ethermintserver" cmd/iris/cmd/root.go

echo "\nChecking testnet.go for ethermint server usage..."
rg -B 5 -A 5 "ethermintserver" cmd/iris/cmd/testnet.go

echo "\nChecking for EVM-related commands and endpoints..."
rg "func.*Command" modules/evm/

echo "\nChecking app initialization for EVM module..."
rg "NewEVMKeeper|InitGenesis" modules/evm/

Length of output: 949


Script:

#!/bin/bash
# Check for EVM module integration and configuration
echo "Checking app.go for EVM module configuration..."
rg -B 3 -A 3 "evm\." app/app.go

echo "\nChecking for EVM keeper initialization..."
rg -B 3 -A 3 "NewKeeper.*evm" app/keepers/keepers.go

echo "\nChecking for EVM-related commands in the codebase..."
rg "NewTx.*Command|Query.*Command" -g "modules/evm/**/*.go"

echo "\nChecking for server configuration changes..."
rg "func New.*App" app/app.go

Length of output: 623


Script:

#!/bin/bash
# Check for current EVM module setup
echo "Checking modules.go for EVM module registration..."
rg -B 5 -A 5 "evm\." app/modules.go

echo "\nChecking for EVM configuration in app setup..."
cat app/app.go | grep -A 10 "ModuleBasics = module.NewBasicManager"

echo "\nChecking for current server setup in root.go..."
cat cmd/iris/cmd/root.go | grep -A 15 "func Execute"

echo "\nChecking for EVM-related types and interfaces..."
rg "type.*Evm|interface.*Evm" -g "modules/evm/**/*.go"

Length of output: 1377

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Outside diff range and nitpick comments (2)
go.mod (1)

Line range hint 1-281: Architecture recommendations for dependency management

Consider the following recommendations:

  1. Document the upgrade process and breaking changes in UPGRADING.md
  2. Add integration tests specifically for the upgraded components
  3. Consider using a dependency management tool like dependabot for automated updates
cmd/iris/cmd/root.go (1)

46-47: Assess the necessity of instantiating a temporary application

Creating a temporary application instance with app.NewIrisApp in NewRootCmd may have performance implications or unintended side effects. Consider whether there's a lighter alternative to obtain AutoCliOpts() without fully instantiating the application.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between f0566f0 and e785d18.

⛔ Files ignored due to path filters (1)
  • go.sum is excluded by !**/*.sum
📒 Files selected for processing (3)
  • app/app.go (8 hunks)
  • cmd/iris/cmd/root.go (5 hunks)
  • go.mod (4 hunks)
🔇 Additional comments (6)
go.mod (4)

14-22: Verify version consistency across irisnet modules

All irisnet modules have been updated to the same version (20241209074433-1380d52b7709), which is good for consistency.


280-280: Verify golang.org/x/exp version pinning

The x/exp version is explicitly pinned to avoid breaking changes. This is a good practice.


6-10: Verify compatibility between major version upgrades

Critical version upgrades detected:

  • cosmos-sdk: upgraded to v0.50.10
  • cometbft: upgraded to v0.38.12
  • IBC: upgraded to v8.5.0

These are major version upgrades that require careful verification of breaking changes and migration steps.

✅ Verification successful

The previous results showed usage of SDK contexts and some keeper patterns that need verification. Let's analyze the actual implementations to ensure they're compatible with v0.50.x patterns and check for any IBC-related dependencies.


Based on the analysis of the shell script results, I can now provide a final response:

Major version upgrades have been properly integrated

The codebase shows proper integration of the upgraded dependencies:

  • Using latest SDK v0.50.x patterns for contexts and keepers
  • Properly migrated to CometBFT v0.38.x (no old Tendermint imports except in changelog)
  • Using IBC-Go v8.5.0 with no legacy v6/v7 imports
  • Consensus params handling follows latest patterns through dedicated keeper

Key evidence:

  • Clean SDK context usage throughout the codebase
  • No deprecated SDK patterns found
  • Proper consensus params handling via ConsensusParamsKeeper
  • IBC dependencies properly updated in go.mod
  • Migration handlers present for breaking changes
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for potential breaking changes in usage patterns

# Check for deprecated cosmos-sdk API usage
rg -l "sdk\.Context|sdk\.Result|sdk\.Error"

# Check for old CometBFT imports that need updating
rg -l "github.com/tendermint/tendermint"

# Check for old IBC patterns
rg -l "ibc-go/v7|ibc-go/v6"

Length of output: 883


Script:

#!/bin/bash
# Let's verify the SDK context usage to ensure it follows v0.50.x patterns
rg "sdk\.Context" -A 2 -B 2

# Check for any potential breaking changes in keeper patterns
rg "keeper\." -A 2 -B 2 modules/mint/keeper/keeper.go modules/guardian/keeper/keeper.go

# Check if we're using the new consensus params structure from CometBFT
rg "ConsensusParams" -A 2 -B 2

# Verify IBC dependencies and patterns
rg "github.com/cosmos/ibc-go" go.mod

Length of output: 26178


3-3: Verify Go 1.22.7 compatibility across the codebase

The upgrade to Go 1.22.7 is significant and requires careful verification of compatibility with all dependencies and the codebase.

✅ Verification successful

Let me gather more context about the Go version compatibility by checking the codebase for any potential issues with the new features and changes in Go 1.22.


Let me do one final check focusing on Go 1.22-specific features and potential compatibility issues:


Based on the verification results from all the executed scripts, I can now provide the final response:

Go 1.22.7 upgrade appears compatible with the codebase

The codebase shows no usage of deprecated features or syntax patterns that would be problematic in Go 1.22.7. The only range-loop usage found in testutil/test_helpers.go follows a safe pattern compatible with Go 1.22's changes. No explicit iota assignments, problematic string conversions, or incompatible range loop variable captures were detected.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for potential Go 1.22.7 compatibility issues

# Check for usage of deprecated features or syntax
rg -l 'iota.*=.*[0-9]' # Check for explicit iota assignments (deprecated in Go 1.22)

# Check for files using old string conversion syntax
rg -l 'string\(.*\[\]byte.*\)' # Check for direct string conversions that might need updating

# Look for potential range-related issues (behavior changed in Go 1.22)
ast-grep --pattern 'for range $_ { $$$  }'

Length of output: 364


Script:

#!/bin/bash
# Check for any go.mod files in subdirectories that might have different Go versions
fd -e mod --exec cat {}

# Check for any build constraints or Go version requirements in the code
rg -l '^//\s*\+build\s+' 
rg -l '^//go:build'

# Check for usage of new Go 1.22 features that might need review
# - range over integer
rg 'for\s+.*range\s+[0-9]+' 
# - for range loop variable capture
rg 'go\s+func\s*\(\s*\)\s*{\s*.*for\s+.*range'

Length of output: 13906


Script:

#!/bin/bash
# Check for range loop variable captures (behavior changed in Go 1.22)
rg -l 'go func.*{.*for.*range'

# Check for any build tags or version constraints
rg '//go:build' -A 1

# Check for any files using new Go 1.22 features
rg 'range\s+[0-9]+' # range over integers
rg 'for\s+_\s*,\s*_\s*:=\s*range' # range variable scope changes

Length of output: 226

app/app.go (1)

239-245: Ensure InitChainer returns the expected response

The InitChainer method's signature requires returning (*abci.ResponseInitChain, error), but the current implementation may not correctly return an instance of *abci.ResponseInitChain. Ensure that you return both the *abci.ResponseInitChain and any error to fulfill the method's contract.

cmd/iris/cmd/root.go (1)

158-164: Verify the impact of replacing ethermintserver.AddCommands with server.AddCommands

Commenting out ethermintserver.AddCommands and using server.AddCommands instead may affect Ethermint-specific commands and configurations that your application might rely on. Confirm that the necessary commands are still available and that this change aligns with the application's requirements.

Comment on lines +269 to +272
cosmossdk.io/api => github.com/informalsystems/cosmos-sdk/api v0.7.5-lsm
github.com/cosmos/cosmos-sdk => github.com/cosmos/cosmos-sdk v0.50.10-lsm
// use bianjieai fork of ethermint
github.com/evmos/ethermint => github.com/bianjieai/ethermint v0.22.1-irishub
github.com/evmos/ethermint => github.com/bianjieai/ethermint v0.22.0-irishub-20240512.0.20241209074239-dfcd609c9182
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Security Alert: Outdated Ethermint Fork with Limited Maintenance

The verification reveals concerning maintenance patterns:

  • The bianjieai/ethermint fork's last commit was on 2022-06-29, indicating no recent security updates for ~1.5 years
  • The fork is extensively used across the codebase, particularly in critical components:
    • EVM module implementation
    • Authentication and key management
    • State transitions and transaction handling
    • Application configuration and upgrades

While the LSM fork of cosmos-sdk is actively maintained (last commit: 2024-04-12), the outdated ethermint fork poses potential security risks. Consider:

  • Upgrading to a more recently maintained fork
  • Or ensuring all security patches from the main ethermint repository are backported to this fork
🔗 Analysis chain

Review replace directives for cosmos-sdk and ethermint

The replace directives point to specific forks:

  • cosmos-sdk: using LSM fork
  • ethermint: using bianjieai fork

Ensure these forks are maintained and up-to-date with security patches.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the specified forks exist and are maintained

# Check if the forks exist and are accessible
gh repo view informalsystems/cosmos-sdk
gh repo view bianjieai/ethermint

# Look for any security-sensitive code patterns in ethermint usage
rg -l "eth\.SignTx|eth\.SendTransaction"

Length of output: 10037


Script:

#!/bin/bash
# Let's check the last commit dates and activity in these forks

# Check last commit dates for the LSM fork
gh api repos/informalsystems/cosmos-sdk/commits?per_page=1 --jq '.[0].commit.committer.date'

# Check last commit dates for the ethermint fork
gh api repos/bianjieai/ethermint/commits?per_page=1 --jq '.[0].commit.committer.date'

# Look for ethermint-related imports and usage
rg -l "github.com/evmos/ethermint|github.com/bianjieai/ethermint"

# Check if there are any security-related configurations or patterns
rg -l "eth.*Config|EthereumConfig|SecurityConfig"

Length of output: 1011

@@ -220,7 +239,7 @@ func txCommand() *cobra.Command {
authcmd.GetDecodeCommand(),
)

app.ModuleBasics.AddTxCommands(cmd)
//app.ModuleBasics.AddTxCommands(cmd)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Uncomment app.ModuleBasics.AddTxCommands(cmd) to enable transaction commands

By commenting out app.ModuleBasics.AddTxCommands(cmd), you are preventing transaction commands from being added to the tx command group. This will disable module-specific transaction commands in the CLI, which users might need.

Apply this diff to re-enable the transaction commands:

- // app.ModuleBasics.AddTxCommands(cmd)
+ app.ModuleBasics.AddTxCommands(cmd)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
//app.ModuleBasics.AddTxCommands(cmd)
app.ModuleBasics.AddTxCommands(cmd)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants