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

V0.19.0 patch #244

Merged
merged 46 commits into from
Dec 16, 2024
Merged

V0.19.0 patch #244

merged 46 commits into from
Dec 16, 2024

Conversation

hard-nett
Copy link
Collaborator

@hard-nett hard-nett commented Dec 13, 2024

  • registers gov keepers MsgServiceRouter correctly
  • removes authsims.RandomGenesisAccounts from auth module
  • registers app ctx to staking keeper
  • removes versioning on app package module

Summary by CodeRabbit

  • New Features

    • Introduced a Makefile for managing Docker-related tasks, including commands for building various Docker images.
    • Added functionality for validating CosmWasm contracts in a new testing framework.
    • Enhanced configuration capabilities for the Bitsong application with additional parameters.
    • Introduced commands for verifying slashed delegators and calculating discrepancies in delegator rewards.
    • Added a new Makefile for managing a local testnet environment for the Bitsong blockchain.
    • Introduced a new script for automating the downloading of WebAssembly (WASM) files.
  • Bug Fixes

    • Updated import paths across multiple files to remove version-specific prefixes, ensuring a more stable reference to packages.
  • Documentation

    • Updated instructions for building Protobuf in the README file to simplify the process by removing version specifications.
    • Added a new section in the scripts README for command-line interface commands and their functionalities.
    • Enhanced README documentation for the new Cw-Orchestrator project, outlining requirements and testing procedures.
  • Tests

    • Renamed and modified test functions to enhance clarity and adapt to changes in the testing framework.
    • Introduced end-to-end tests for slashing functionality and the Packet Forwarding Middleware.
    • Added comprehensive end-to-end testing suite for the Polytone application, ensuring expected behaviors are validated.
  • Chores

    • Updated Go version and dependencies in go.mod for improved stability and compatibility across the codebase.
    • Added new scripts for managing WASM file downloads and Swagger file generation.
    • Removed obsolete GitHub Actions workflows to streamline CI/CD processes.

hard-nett and others added 30 commits December 3, 2024 09:57
…nt from auth.NewAppModule, add wasm tests to e2e-basic,
remove RandomGenAccounts from auth.Module, prep genesis codec customization format
Copy link

coderabbitai bot commented Dec 13, 2024

Caution

Review failed

The pull request is closed.

📝 Walkthrough
📝 Walkthrough

Walkthrough

The changes in this pull request primarily involve updating import paths across various files in the codebase, transitioning from versioned paths (e.g., v018) to a non-versioned format. This shift enhances the modularity of the code. Additionally, a new Makefile is introduced to manage Docker-related tasks, and several functions are modified to reflect these changes without altering their core logic or functionality. The updates also include renaming some test functions and variables for clarity and consistency.

Changes

File Change Summary
Makefile Added line include scripts/makefiles/docker.mk to integrate Docker commands.
app/app.go Updated import paths by removing v018 prefix. Added legacy and gRPC gateway route registration.
app/config.go Updated import path for params package. Modified NewAppConstructor function signature.
app/encoding.go Updated import path for params package.
app/keepers/keepers.go Updated import paths for fantoken. Changed instantiation of GovKeeper.
app/keepers/keys.go Updated import path for fantokentypes.
app/modules.go Updated import paths for several modules. Modified instantiation parameters for auth.NewAppModule and mint.NewAppModule.
app/test_helper.go Updated import paths for helpers and params.
app/testing/test_suite.go Updated import path for app package.
app/upgrades/types.go Updated import path for keepers.
app/upgrades/v010/constants.go Updated import path for upgrades.
app/upgrades/v010/upgrades.go Updated import paths for keepers and appparams.
app/upgrades/v011/constants.go Updated import paths for upgrades, fantokentypes, and merkledroptypes.
app/upgrades/v011/upgrades.go Updated import paths for keepers and appparams.
app/upgrades/v013/constants.go Updated import path for upgrades.
app/upgrades/v013/upgrades.go Updated import path for keepers.
app/upgrades/v014/constants.go Updated import path for upgrades.
app/upgrades/v014/upgrades.go Updated import path for keepers.
app/upgrades/v015/constants.go Updated import path for upgrades.
app/upgrades/v015/upgrades.go Updated import path for keepers.
app/upgrades/v016/constants.go Updated import path for upgrades.
app/upgrades/v016/upgrades.go Updated import path for keepers.
app/upgrades/v018/constants.go Updated import paths for upgrades and merkledroptypes. Modified StoreUpgrades structure.
app/upgrades/v018/upgrades.go Updated import paths for keepers, params, and fantoken/types.
cmd/bitsongd/cmd/genesis.go Updated import paths for appparams and fantokentypes.
cmd/bitsongd/cmd/root.go Updated import paths for params and bitsong.
cmd/bitsongd/main.go Updated import paths for params, app, and cmd.
e2e/basic_start_test.go Updated imports and modified test function logic and naming.
e2e/basic_upgrade_test.go Updated upgrade test logic and naming conventions.
e2e/ci.go Updated comments and variable naming for repository.
e2e/conformance/cosmwasm.go Introduced new functionality for testing CosmWasm contracts.
e2e/go.mod Updated Go version and dependencies.
e2e/setup.go Modified variable declarations and function signatures for clarity.
go.mod Updated module path and Go version.
proto/README.md Updated instructions for building Protobuf files.
proto/bitsong/fantoken/v1beta1/*.proto Updated go_package options to remove version suffix.
scripts/makefiles/docker.mk Introduced a new Makefile for Docker tasks with various targets.
x/fantoken/client/cli/*.go Updated import paths for simapp and tokentypes.
x/fantoken/keeper/*.go Updated import paths for types and keeper packages.

Poem

In the code where bunnies play,
Paths have changed in a bright new way.
Docker's here, and imports too,
A hop, a skip, a leap, it's true!
With every change, we grow and thrive,
In bits and bytes, we come alive! 🐰✨

Tip

CodeRabbit's docstrings feature is now available as part of our Early Access Program! Simply use the command @coderabbitai generate docstrings to have CodeRabbit automatically generate docstrings for your pull request.


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. (Beta)
  • @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: 4

🧹 Outside diff range and nitpick comments (7)
app/upgrades/v011/upgrades.go (1)

Line range hint 26-28: Consider removing commented merkledrop code

The commented merkledrop fee update code appears to be obsolete. If this functionality is no longer needed, consider removing it entirely rather than leaving it commented out.

e2e/basic_start_test.go (1)

35-51: Clean up or implement commented gRPC query code

There's a substantial block of commented gRPC query code. If this functionality is needed, it should be implemented. If not, consider removing it to maintain code cleanliness.

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

Line range hint 39-61: Consider adding validation for commission rate updates

While the validator commission update logic is functional, it would be beneficial to add logging or events to track which validators were updated.

 for _, v := range validators {
     if v.Commission.Rate.LT(minCommissionRate) {
+        // Log validator updates for tracking
+        ctx.EventManager().EmitEvent(
+            sdk.NewEvent(
+                "validator_commission_update",
+                sdk.NewAttribute("validator", v.GetOperator().String()),
+                sdk.NewAttribute("old_rate", v.Commission.Rate.String()),
+                sdk.NewAttribute("new_rate", minCommissionRate.String()),
+            ),
+        )
         if v.Commission.MaxRate.LT(minCommissionRate) {

Line range hint 62-90: Add error handling for mint operation

The minting operation for Cassini-Bridge should include additional error checks and logging.

 // mint coins
+if !mintCoins.IsValid() {
+    return nil, fmt.Errorf("invalid mint coins: %s", mintCoins)
+}
 if err := keepers.BankKeeper.MintCoins(ctx, minttypes.ModuleName, mintCoins); err != nil {
     return nil, err
 }
+
+// Emit event for tracking
+ctx.EventManager().EmitEvent(
+    sdk.NewEvent(
+        "cassini_bridge_mint",
+        sdk.NewAttribute("recipient", multisigWallet.String()),
+        sdk.NewAttribute("amount", mintCoins.String()),
+    ),
+)
e2e/setup.go (1)

97-98: Consider adding more module interface registrations

The encoding configuration should include all relevant module interfaces. Consider adding the commented-out fantokentypes registration.

 ibclocalhost.RegisterInterfaces(cfg.InterfaceRegistry)
 wasmtypes.RegisterInterfaces(cfg.InterfaceRegistry)
-// fantokentypes.RegisterInterfaces(cfg.InterfaceRegistry)
+fantokentypes.RegisterInterfaces(cfg.InterfaceRegistry)
app/upgrades/v018/upgrades.go (1)

Line range hint 93-97: Consider adding validation for bank parameters

While setting bank parameters, consider adding validation for the SendEnabled array to ensure no critical denoms are accidentally restricted.

 bankParams := keepers.BankKeeper.GetParams(ctx)
 bankParams.DefaultSendEnabled = true
 bankParams.SendEnabled = []*banktypes.SendEnabled{}
+// Add validation
+for _, sendEnabled := range bankParams.SendEnabled {
+    if sendEnabled.Denom == appparams.MicroCoinUnit {
+        return nil, fmt.Errorf("cannot restrict base denom %s", appparams.MicroCoinUnit)
+    }
+}
 logger.Info(fmt.Sprintf("bankParamaters: %v ", bankParams))
e2e/basic_upgrade_test.go (1)

74-75: Uncomment and implement the contract execution tests

The commented-out contract execution tests should be implemented to ensure CosmWasm functionality is not affected by the upgrade.

Would you like me to help implement these contract execution tests?

Also applies to: 93-94

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0793601 and 3c9913f.

⛔ Files ignored due to path filters (1)
  • e2e/go.sum is excluded by !**/*.sum
📒 Files selected for processing (58)
  • Makefile (1 hunks)
  • app/app.go (4 hunks)
  • app/config.go (1 hunks)
  • app/encoding.go (1 hunks)
  • app/keepers/keepers.go (3 hunks)
  • app/keepers/keys.go (1 hunks)
  • app/modules.go (2 hunks)
  • app/test_helper.go (1 hunks)
  • app/testing/test_suite.go (1 hunks)
  • app/upgrades/types.go (1 hunks)
  • app/upgrades/v010/constants.go (1 hunks)
  • app/upgrades/v010/upgrades.go (1 hunks)
  • app/upgrades/v011/constants.go (1 hunks)
  • app/upgrades/v011/upgrades.go (1 hunks)
  • app/upgrades/v013/constants.go (1 hunks)
  • app/upgrades/v013/upgrades.go (1 hunks)
  • app/upgrades/v014/constants.go (1 hunks)
  • app/upgrades/v014/upgrades.go (1 hunks)
  • app/upgrades/v015/constants.go (1 hunks)
  • app/upgrades/v015/upgrades.go (1 hunks)
  • app/upgrades/v016/constants.go (1 hunks)
  • app/upgrades/v016/upgrades.go (1 hunks)
  • app/upgrades/v018/constants.go (1 hunks)
  • app/upgrades/v018/upgrades.go (1 hunks)
  • cmd/bitsongd/cmd/genesis.go (1 hunks)
  • cmd/bitsongd/cmd/root.go (2 hunks)
  • cmd/bitsongd/main.go (1 hunks)
  • e2e/basic_start_test.go (1 hunks)
  • e2e/basic_upgrade_test.go (4 hunks)
  • e2e/ci.go (1 hunks)
  • e2e/conformance/cosmwasm.go (1 hunks)
  • e2e/go.mod (4 hunks)
  • e2e/setup.go (1 hunks)
  • go.mod (1 hunks)
  • proto/README.md (1 hunks)
  • proto/bitsong/fantoken/v1beta1/events.proto (1 hunks)
  • proto/bitsong/fantoken/v1beta1/fantoken.proto (1 hunks)
  • proto/bitsong/fantoken/v1beta1/genesis.proto (1 hunks)
  • proto/bitsong/fantoken/v1beta1/gov.proto (1 hunks)
  • proto/bitsong/fantoken/v1beta1/params.proto (1 hunks)
  • proto/bitsong/fantoken/v1beta1/query.proto (1 hunks)
  • proto/bitsong/fantoken/v1beta1/tx.proto (1 hunks)
  • scripts/makefiles/docker.mk (1 hunks)
  • x/fantoken/client/cli/cli_test.go (2 hunks)
  • x/fantoken/client/cli/query.go (1 hunks)
  • x/fantoken/client/cli/tx.go (1 hunks)
  • x/fantoken/client/proposal_handler.go (1 hunks)
  • x/fantoken/genesis.go (1 hunks)
  • x/fantoken/handler.go (1 hunks)
  • x/fantoken/handler_test.go (1 hunks)
  • x/fantoken/keeper/fantoken.go (1 hunks)
  • x/fantoken/keeper/grpc_query.go (1 hunks)
  • x/fantoken/keeper/keeper.go (1 hunks)
  • x/fantoken/keeper/keeper_test.go (1 hunks)
  • x/fantoken/keeper/msg_server.go (1 hunks)
  • x/fantoken/keeper/params.go (1 hunks)
  • x/fantoken/keeper/store.go (1 hunks)
  • x/fantoken/module.go (1 hunks)
✅ Files skipped from review due to trivial changes (32)
  • x/fantoken/client/proposal_handler.go
  • app/upgrades/types.go
  • app/upgrades/v014/constants.go
  • app/upgrades/v015/constants.go
  • app/testing/test_suite.go
  • app/keepers/keys.go
  • proto/bitsong/fantoken/v1beta1/events.proto
  • app/upgrades/v013/upgrades.go
  • proto/bitsong/fantoken/v1beta1/params.proto
  • x/fantoken/keeper/params.go
  • proto/bitsong/fantoken/v1beta1/query.proto
  • x/fantoken/keeper/grpc_query.go
  • app/test_helper.go
  • app/upgrades/v010/constants.go
  • proto/bitsong/fantoken/v1beta1/fantoken.proto
  • x/fantoken/client/cli/query.go
  • x/fantoken/client/cli/tx.go
  • cmd/bitsongd/cmd/root.go
  • x/fantoken/keeper/msg_server.go
  • app/upgrades/v016/constants.go
  • x/fantoken/keeper/keeper.go
  • x/fantoken/module.go
  • x/fantoken/keeper/fantoken.go
  • x/fantoken/keeper/keeper_test.go
  • x/fantoken/client/cli/cli_test.go
  • proto/bitsong/fantoken/v1beta1/tx.proto
  • cmd/bitsongd/cmd/genesis.go
  • x/fantoken/keeper/store.go
  • proto/bitsong/fantoken/v1beta1/gov.proto
  • proto/bitsong/fantoken/v1beta1/genesis.proto
  • app/upgrades/v011/constants.go
  • app/encoding.go
🔇 Additional comments (37)
app/upgrades/v013/constants.go (1)

4-4: Verify the import path change impact

The import path change from versioned to non-versioned format looks correct. However, let's verify there are no breaking changes or missed updates.

✅ Verification successful

Based on the search results, I can now generate the final response since I have enough information to verify the import path change:

Import path change is consistent with codebase structure

The import path change from versioned to non-versioned format is correct and safe. The search results confirm:

  • No remaining versioned imports (github.com/bitsongofficial/go-bitsong/v\d+) exist in the codebase
  • The upgrades package is consistently imported as github.com/bitsongofficial/go-bitsong/app/upgrades across all upgrade handlers
  • The change aligns with the overall module structure where other internal packages also use non-versioned imports
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for any remaining versioned imports of go-bitsong
rg "github\.com/bitsongofficial/go-bitsong/v\d+" -g '!{vendor,go.mod,go.sum}'

# Check for any potential import cycles
ast-grep --pattern 'import "github.com/bitsongofficial/go-bitsong/app/upgrades"'

Length of output: 162


Script:

#!/bin/bash
# Let's try a broader search to verify import consistency
# 1. Find all go files that import from go-bitsong
rg -l "github\.com/bitsongofficial/go-bitsong" --type go

# 2. Check all import statements in go files to see the pattern
rg "^import \([\s\S]+?\)" --type go -U

# 3. Look specifically for the upgrades package usage
rg "upgrades\." --type go -A 2

Length of output: 65129

cmd/bitsongd/main.go (1)

7-7: Verify consistency of import path updates

The import path changes from versioned to non-versioned format look correct. Let's verify all related imports are consistently updated.

Also applies to: 9-10

✅ Verification successful

Let me gather more information to verify the import paths thoroughly.


Import paths are consistently updated

Based on the verification results:

  • No versioned imports (v\d+) were found in the codebase
  • The imports in main.go follow the non-versioned format consistently
  • All required packages are properly imported and accessible
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for any remaining versioned imports in main package
rg "github\.com/bitsongofficial/go-bitsong/v\d+" cmd/bitsongd/

# Verify all required packages are still accessible
ast-grep --pattern 'import (
  $$$
  "github.com/bitsongofficial/go-bitsong/app"
  $$$
)'

Length of output: 1143


Script:

#!/bin/bash
# Check all imports in the main.go file
rg --type go -A 20 "^import \(" cmd/bitsongd/main.go

# Check for any versioned imports across the entire codebase
rg "github\.com/bitsongofficial/go-bitsong/v\d+" --type go

Length of output: 621

app/upgrades/v016/upgrades.go (1)

4-4: Verify keepers package accessibility

The import path change for the keepers package looks correct. Let's verify the package is properly accessible and used consistently.

✅ Verification successful

Import path change is consistent with codebase

The verification shows that:

  • No versioned imports of the keepers package remain in the codebase
  • The keepers package is consistently used across all upgrade handlers with the same signature pattern
  • The import change aligns with the project-wide versioning removal
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for any remaining versioned keepers imports
rg "github\.com/bitsongofficial/go-bitsong/v\d+/app/keepers"

# Verify keepers package usage
ast-grep --pattern 'func $_(mm *module.Manager, configurator module.Configurator, keepers *keepers.AppKeepers)'

Length of output: 17676

app/upgrades/v014/upgrades.go (1)

4-4: Verify upgrade handler compatibility with new keeper import path

While the import path change aligns with removing versioning, we should ensure this doesn't affect existing upgrade handlers.

✅ Verification successful

Import path change is safe and compatible

The upgrade handler in v014 uses the keepers package correctly and doesn't rely on any versioned imports. The implementation is simple and only uses the AppKeepers type for parameter passing, with no direct keeper operations. Other upgrade handlers also use the same keepers package, showing consistent usage across versions.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for any remaining v018 references in upgrade handlers
rg -l "go-bitsong/v018" app/upgrades/

# Check for any potential circular dependencies
ast-grep --pattern 'import ($_) "github.com/bitsongofficial/go-bitsong/app/keepers"'

Length of output: 124


Script:

#!/bin/bash
# Check the content of v014/upgrades.go to understand the upgrade handler implementation
cat app/upgrades/v014/upgrades.go

# Check for any references to the keeper package in upgrade handlers
rg -A 3 "keepers\." app/upgrades/v014/

# Check if there are any other files importing the keepers package
rg -l "github.com/bitsongofficial/go-bitsong/app/keepers" --type go

Length of output: 1336

app/upgrades/v015/upgrades.go (1)

4-4: LGTM - Consistent with v014 changes

The import path update follows the same pattern as v014, maintaining consistency across upgrade handlers.

app/upgrades/v018/constants.go (2)

4-5: LGTM - Import paths updated consistently

The import path updates align with the overall versioning removal strategy.


Line range hint 17-23: Verify merkledrop module deletion impact

The StoreUpgrades configuration marks the merkledrop module for deletion. This is a critical change that requires careful verification.

Please ensure:

  1. All merkledrop module state is properly migrated or intentionally dropped
  2. No remaining code depends on the merkledrop module
  3. This deletion is documented in upgrade specs
✅ Verification successful

Let me gather more information about the upgrade handling and migration.


Merkledrop module deletion appears to be properly handled

The verification shows that:

  1. The merkledrop module deletion is documented in CHANGELOG.md
  2. The upgrade handler (CreateV18UpgradeHandler) is properly configured to remove the module
  3. The module was previously added in v0.11 and is now being removed in v0.18
  4. No remaining dependencies on the merkledrop module exist in the codebase except for:
    • Legacy upgrade handlers (v0.11)
    • Swagger documentation that will be regenerated
    • Module's own code that will be removed

The store upgrade configuration correctly marks the merkledrop module for deletion and there are no signs of remaining dependencies that would break after removal.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for any remaining merkledrop module usage
rg -A 5 "merkledrop" 

# Check for any migration handlers or cleanup logic for merkledrop
ast-grep --pattern 'func $_($_, $_, $_) {
  $$$
  merkledrop
  $$$
}'

Length of output: 18460


Script:

#!/bin/bash
# Check for upgrade handlers and migration logic
rg -A 10 "CreateV18UpgradeHandler"

# Check for any documentation about the merkledrop removal
fd README.md | xargs rg -A 5 "v0.18|merkledrop"

# Check for any remaining merkledrop imports in go files
rg -t go "merkledrop"

Length of output: 2231

e2e/ci.go (2)

10-10: LGTM: Documentation update reflects new make commands

The updated comment correctly reflects the new make commands for local testing.


13-13: Verify the impact of repository name change

The repository name change from BitsongE2ERepo to BitsongE2eRepo follows Go naming conventions. However, we should verify this doesn't break any existing CI/CD pipelines.

✅ Verification successful

Repository name change is consistent and safe

The change from BitsongE2ERepo to BitsongE2eRepo is already consistently defined and used throughout the codebase. The constant is defined in e2e/setup.go as BitsongE2eRepo and correctly referenced in e2e/ci.go. This naming change follows Go conventions and doesn't impact any CI/CD pipelines as:

  • The actual Docker repository URL remains unchanged (ghcr.io/bitsongofficial/go-bitsong-e2e)
  • The constant is only used internally within the e2e package
  • All references to this constant are consistent with the new naming
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for any remaining references to the old repo name
rg "BitsongE2ERepo" --type go

Length of output: 29


Script:

#!/bin/bash
# Let's check for any references to either BitsongE2eRepo or similar variations
rg -i "bitsong.*repo" --type go

# Also check the current file content to understand the context better
cat e2e/ci.go

Length of output: 1342

x/fantoken/genesis.go (1)

6-7: LGTM: Import path updates align with versioning removal

The removal of version suffixes from import paths is consistent with the broader changes across the codebase.

✅ Verification successful

Import paths are consistently updated across the fantoken module

The verification confirms that all imports in the fantoken module are using the non-versioned path format github.com/bitsongofficial/go-bitsong, with no remaining references to the versioned path go-bitsong/v018. The changes in genesis.go align with the consistent pattern across the entire module.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Verify no remaining versioned imports in fantoken module
rg "go-bitsong/v018" "x/fantoken"

Length of output: 31


Script:

#!/bin/bash
# Let's verify all imports in the fantoken module to ensure consistency
rg "^import|\"github.com/bitsongofficial/go-bitsong" "x/fantoken"

Length of output: 3639

proto/README.md (1)

34-34: LGTM: Proto file path update aligns with versioning changes

The updated copy command correctly reflects the new unversioned path structure.

✅ Verification successful

LGTM: Proto path update is correct and consistent

The verification confirms that:

  • The updated unversioned path in the copy command is correct
  • No legacy versioned paths (go-bitsong/v*) remain in the proto directory
  • The only version references are for external dependencies (cosmos-sdk, protobuf, grpc-gateway) which are correct to maintain
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Verify no remaining versioned paths in proto files
rg "go-bitsong/v018" "proto/"

Length of output: 27


Script:

#!/bin/bash
# Let's check for any versioned paths in proto directory more broadly
rg -i "go-bitsong/v\d+" proto/

# Also check the actual content of the README.md to verify the context
cat proto/README.md

# Let's also check if there are any other version-related patterns
rg -i "v\d+\.\d+\.\d+" proto/

Length of output: 1155

app/upgrades/v011/upgrades.go (1)

4-5: LGTM: Import path changes align with versioning removal objective

The updated import paths correctly reflect the removal of versioning from the app package module, which aligns with the PR objectives.

scripts/makefiles/docker.mk (1)

22-30: Verify build arguments are properly defined

The Docker build uses several variables (GO_VERSION, VERSION, COMMIT) that need to be defined in the parent Makefile. Let's verify their existence:

✅ Verification successful

All required build arguments are properly defined

The verification confirms that all necessary variables used in the docker build are properly defined in the parent Makefile:

  • GO_VERSION is defined by extracting from go.mod
  • VERSION is defined from git tags or branch-commit
  • COMMIT is defined from git log hash
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if required variables are defined in parent Makefile
rg -g 'Makefile' '(GO_VERSION|VERSION|COMMIT)\s*:?='

Length of output: 1291

app/config.go (1)

7-7: Verify version removal impact on params package

The import path change from versioned to non-versioned format could affect downstream dependencies.

✅ Verification successful

Let me verify the usage of the params package further by checking its interface and implementation.


Import path change is safe and consistent

The verification shows:

  • No remaining versioned imports of the params package exist in the codebase
  • The params package interface (EncodingConfig) is consistently used across the codebase
  • All usages of the params package are standard and don't rely on version-specific implementations
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for any remaining versioned imports of the params package
rg -l "go-bitsong/v\d+/app/params" 

# Check for potential breaking changes in params package usage
ast-grep --pattern 'params.$_' 

Length of output: 693


Script:

#!/bin/bash
# Check the params package interface
rg -A 5 "type EncodingConfig" app/params/

# Check if there are any version-specific implementations
rg -l "v\d+.*EncodingConfig"

# Look for any potential breaking changes in the params package
ast-grep --pattern 'type $_ struct {
  $$$
  params.$$$
  $$$
}'

Length of output: 457

x/fantoken/handler.go (3)

Line range hint 14-63: LGTM: Message handler implementation

The message handler implementation correctly processes various fantoken operations while maintaining proper error handling.


Line range hint 65-89: Governance handler aligns with PR objectives

The proposal handler correctly implements governance functionality for fee updates, which aligns with the PR objective of registering governance keepers.


9-10: Verify fantoken module dependencies

The removal of versioned imports should be consistent across all fantoken module dependencies.

✅ Verification successful

Let me gather more information to verify if there are any remaining versioned imports in the fantoken module and its dependencies.


Import paths are consistently unversioned across fantoken module

The verification shows that all imports within the fantoken module are using the unversioned path github.com/bitsongofficial/go-bitsong/x/fantoken. No instances of versioned imports (v1, v2, etc.) were found in any of the module's files. The keeper usage patterns are also consistent with the unversioned structure.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for any remaining versioned imports in fantoken module
rg -l "go-bitsong/v\d+/x/fantoken" 

# Check for potential breaking changes in keeper usage
ast-grep --pattern 'keeper.$_'

Length of output: 784


Script:

#!/bin/bash
# Check all imports in fantoken module files
rg -l "github.com/bitsongofficial/go-bitsong" x/fantoken/

# Check specific import patterns in these files
rg "github.com/bitsongofficial/go-bitsong.*?/x/fantoken" x/fantoken/

Length of output: 2525

x/fantoken/handler_test.go (2)

Line range hint 19-89: LGTM: Comprehensive test coverage

The test suite thoroughly covers:

  • Parameter change proposals
  • Successful and failed proposal scenarios
  • Default parameter validation

7-9: Verify test dependencies

The import path changes should be consistent with the main implementation.

✅ Verification successful

Import paths are consistent across test and implementation files

The import paths in handler_test.go are correctly aligned with the main implementation in handler.go. Both files use non-versioned imports from the github.com/bitsongofficial/go-bitsong repository, maintaining consistency across the codebase.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for any remaining versioned imports in test files
rg -l "go-bitsong/v\d+/" --glob "*_test.go"

Length of output: 45


Script:

#!/bin/bash
# Check the current imports in the test file
cat x/fantoken/handler_test.go

# Check imports in the main implementation files
rg "github.com/bitsongofficial/go-bitsong" x/fantoken/handler.go

Length of output: 3291

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

4-5: LGTM: Import path updates align with versioning changes

The import paths have been correctly updated to use non-versioned paths, which aligns with the PR objectives.


Line range hint 20-38: Verify module migration sequence

The code uses a two-phase migration approach for the auth module. While the logic appears sound, we should verify that this doesn't cause any unintended side effects.

✅ Verification successful

Migration sequence is correctly implemented for auth and staking modules

The two-phase migration approach is intentionally designed to ensure the auth module migrates after the staking module. This is supported by:

  1. The explicit comment in the code stating "RunMigrations twice is just a way to make auth module's migrates after staking"
  2. Evidence of dependencies between auth and staking modules in the codebase, particularly around bonded pools and module accounts
  3. The implementation correctly:
    • First skips auth module migration by setting version to 2
    • Runs migrations for all other modules including staking
    • Resets auth version to 1
    • Runs a second migration specifically for auth
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for any migration-related issues or discussions in the codebase

# Search for migration-related patterns
rg -A 3 "RunMigrations.*auth" 

# Look for any migration-related TODOs or issues
rg -i "migration.*(todo|issue|bug|fix)"

Length of output: 1184


Script:

#!/bin/bash
# Let's verify the dependencies and migration order requirements

# Check for any dependencies between auth and staking modules
rg -A 5 "auth.*staking|staking.*auth"

# Look for any explicit migration order requirements or dependencies
ast-grep --pattern 'func $FUNC($ARGS) $RET {
  $$$
  RunMigrations($$$)
  $$$
}'

# Check for any comments or documentation about migration order
rg -i "migration.*order|order.*migration"

Length of output: 2480

e2e/conformance/cosmwasm.go (1)

13-18: Consider enabling submsg tests

The subMsg test is currently commented out. Consider enabling it to ensure comprehensive contract testing.

e2e/setup.go (2)

111-115: LGTM: Chain creation functions are well-structured

The chain creation functions are well-organized and provide good flexibility for different test scenarios.


23-81: Verify governance parameters

The governance parameters (voting period, deposit period) are set to very short durations for testing. Ensure these values are appropriate for the test scenarios.

✅ Verification successful

Short governance periods are appropriate for e2e tests

The short governance periods (VotingPeriod="15s", MaxDepositPeriod="10s") are intentionally set for e2e testing purposes, which is consistent with the codebase:

  • These parameters are only used in e2e test files (setup.go and basic_upgrade_test.go)
  • The main chain configuration in cmd/bitsongd/cmd/genesis.go uses appropriate production values:
    • MaxDepositPeriod: 15 days
    • VotingPeriod: 7 days
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for governance parameter usage in tests
rg "VotingPeriod|MaxDepositPeriod" --type go

Length of output: 1457

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

7-9: LGTM: Import path updates are correct

The import paths have been correctly updated to remove version-specific paths, which aligns with the module path changes.


Line range hint 86-91: Verify the mint parameters update

The mint parameters update needs verification to ensure it doesn't affect existing token economics.

✅ Verification successful

Let me check the actual implementation and usage of these parameters to better understand the changes.


Let me check the mint parameters configuration to understand if there are any economic parameter changes beyond just the denom.


Mint parameter update is safe and maintains token economics

The verification shows that the mint parameter update in v018 upgrade only changes the MintDenom to use the constant MicroCoinUnit ("ubtsg"), which is already the established denomination throughout the codebase. This is a safe change that:

  • Only updates the denomination string to use a centrally defined constant
  • Doesn't modify any economic parameters like inflation rate, distribution, or monetary policy
  • Maintains consistency with the genesis configuration and global parameters
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check current mint denom usage across the codebase

# Check mint denom references
rg -l "MintDenom|mint_denom" 

# Check specific denom usage
rg -l "MicroCoinUnit"

Length of output: 288


Script:

#!/bin/bash
# Check the mint parameters implementation and changes
rg -A 5 "MintDenom|mint_denom" app/upgrades/v018/upgrades.go

# Check genesis configuration
rg -A 5 "MintDenom|mint_denom" cmd/bitsongd/cmd/genesis.go

# Check params configuration
cat app/params/config.go

Length of output: 3375


Script:

#!/bin/bash
# Check mint parameters in the upgrade
rg -B 5 -A 5 "mintParams" app/upgrades/v018/upgrades.go

# Check if there are any other mint-related changes
ast-grep --pattern 'mintParams.$_ = $_'

Length of output: 891

e2e/basic_upgrade_test.go (1)

156-157: Verify the governance authority address

The hardcoded governance authority address should be verified to ensure it matches the expected module account.

go.mod (1)

1-1: Verify Go version compatibility with CI/CD

The Go version has been updated to 1.22.4. Ensure this version is supported in your CI/CD pipeline and deployment environments.

Also applies to: 3-3

✅ Verification successful

Let me check the Dockerfile content to verify the Go version compatibility.


Go version 1.22.4 is compatible with CI/CD environment

The Dockerfile is already configured to use Go 1.22 (using golang:1.22-alpine), which is compatible with the Go 1.22.4 version specified in go.mod. The CI/CD pipeline will use this version for building the project.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for Go version references in CI configs

# Search for Go version specifications in CI configs
fd -t f "^\.github.*\.ya?ml$|^\.gitlab.*\.ya?ml$|Dockerfile" -x rg -l "go1\.|golang:"

Length of output: 100


Script:

#!/bin/bash
# Check Go version in Dockerfile
cat Dockerfile | grep -A 2 "FROM golang:"

Length of output: 129

app/modules.go (2)

6-8: LGTM: Import path updates align with versioning removal.

The transition from versioned to non-versioned import paths is consistent with the PR objectives.


94-94: Verify the impact of removing RandomGenesisAccounts.

The change from authsims.RandomGenesisAccounts to nil aligns with PR objectives but requires verification of genesis account handling.

✅ Verification successful

Let me gather more information about the genesis account handling in tests to ensure the change doesn't break existing functionality.


Let me check one final aspect regarding simulation and genesis handling to make a conclusive decision.


Removing RandomGenesisAccounts is safe in this context

The change from authsims.RandomGenesisAccounts to nil is safe because:

  1. The RandomGenesisAccounts is only used in simulation modules, specifically for testing scenarios
  2. Regular genesis account handling remains intact through SetupWithGenesisAccounts in test helpers
  3. The removal aligns with the module's simulation setup where random genesis accounts are no longer needed
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for any remaining references to RandomGenesisAccounts
# and verify genesis account handling

# Search for RandomGenesisAccounts usage
rg "RandomGenesisAccounts" -A 5

# Check genesis account handling in tests
rg "GenesisAccount" -t go

Length of output: 1507


Script:

#!/bin/bash
# Check test files that might be affected by this change
rg "NewAppModule.*AccountKeeper.*RandomGenesisAccounts" -A 5

# Check test setup and initialization
ast-grep --pattern 'func Setup$$$($$$) {
  $$$
}'

# Look for any simulation tests that might be affected
rg "simulation" -t go --no-filename | grep -i "genesis"

Length of output: 1112


Script:

#!/bin/bash
# Check simulation module setup and genesis handling
rg "simulationModules" -A 10

# Check if there are any other auth simulation references
rg "auth.*simulation" -t go

# Look for genesis-related simulation tests
rg "SimulateGenesis" -t go

Length of output: 1304

Makefile (1)

6-6: LGTM: Docker make targets properly modularized.

The inclusion of docker.mk improves build system organization by separating Docker-related targets.

e2e/go.mod (2)

3-3: LGTM: Go version update is a minor patch.

The update to Go 1.22.4 is a patch release and should not introduce breaking changes.


7-7: Verify WASM module integration.

The addition of WASM-related dependencies (wasmd and wasmvm) suggests significant architectural changes. Please ensure:

  1. WASM module is properly initialized in the application
  2. Security implications of WASM execution are considered
  3. Proper error handling for WASM operations is in place

Also applies to: 17-17, 67-67

✅ Verification successful

Based on the results from both script executions, I can now generate the final response:

WASM module appears to be properly integrated with appropriate security measures

The codebase shows evidence of proper WASM integration:

  • WASM keeper is correctly initialized with necessary dependencies (staking, account, bank keepers)
  • Configuration is properly handled through WasmConfig in root command and app initialization
  • IBC routing is set up for WASM module
  • Gas limiting is implemented via LimitSimulationGasDecorator
  • Error handling is in place with proper error types

The integration follows the standard Cosmos SDK WASM module patterns and includes necessary security considerations through configuration and gas limiting.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify WASM module integration

# Check WASM keeper initialization
rg "WasmKeeper" -t go

# Check WASM configuration
rg "EnableWasm|WasmConfig" -t go

# Check WASM error handling
rg "wasm.Err|wasmtypes.Err" -t go

Length of output: 2161


Script:

#!/bin/bash
# Let's verify the WASM module integration more thoroughly

# Check WASM module registration and setup
rg "RegisterServices.*wasm" -A 5 -t go

# Check WASM security configurations
rg "wasmVM.*security|wasmVM.*gas" -t go

# Check if there are any WASM-related tests
fd "wasm.*test" -t f -e go

# Check for WASM message handlers and routing
rg "HandleMsg.*wasm|Route.*wasm" -t go

# Check for WASM store configurations
rg "wasmVM.*cache|wasmVM.*store" -t go

Length of output: 816

app/keepers/keepers.go (2)

291-291: Improved message routing with app-level router.

The change from baseapp.NewMsgServiceRouter() to bApp.MsgServiceRouter() is a good improvement as it:

  1. Uses the application's existing router instead of creating a new one
  2. Ensures consistent message routing throughout the application
  3. Aligns with the PR objective of correctly registering governance keepers

195-195: Verify the codec change impact on existing data.

The SlashingKeeper initialization has been modified to use cdc instead of creating a new LegacyAmino codec instance. While this change looks correct, we need to ensure it doesn't affect existing slashing-related data.

✅ Verification successful

Let's analyze the keeper initialization to understand the codec usage better and verify if this change aligns with the standard implementation.


The codec change in SlashingKeeper is correct and safe

Looking at the code, the change from &codec.LegacyAmino{} to cdc in SlashingKeeper initialization is correct because:

  1. The cdc parameter is properly passed down from the NewAppKeepers function, which receives it as cdc *codec.LegacyAmino
  2. The SlashingKeeper initialization follows the standard Cosmos SDK pattern where both appCodec and cdc are passed to maintain compatibility
  3. Using the shared cdc instance is preferred over creating a new one to ensure consistent encoding/decoding across the application
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for any slashing-related codec usage in the codebase.

# Search for slashing codec usage patterns
rg -A 5 'SlashingKeeper.*codec|codec.*Slashing'

# Search for any LegacyAmino usage with slashing
rg -A 5 'LegacyAmino.*[Ss]lashing|[Ss]lashing.*LegacyAmino'

Length of output: 111


Script:

#!/bin/bash
# Let's try a different approach to verify the codec changes

# Check the SlashingKeeper initialization in the current and previous versions
git log -p app/keepers/keepers.go | grep -A 10 "SlashingKeeper"

# Look for any direct references to slashing keeper initialization
ast-grep --pattern 'NewKeeper($$$)'

# Check for any codec-related patterns in slashing
rg -l "slashing.*codec|codec.*slashing" --type go

# Check the current implementation of the keeper initialization
cat app/keepers/keepers.go

Length of output: 15668

app/app.go (2)

6-14: LGTM: Consistent import path updates.

The removal of versioning from import paths is consistent across the codebase and aligns with the PR objectives.

Also applies to: 50-50, 74-74


505-507: Verify the completeness of gRPC-gateway route registration.

The addition of ModuleBasics.RegisterGRPCGatewayRoutes ensures all modules' gRPC-gateway routes are properly registered. However, we should verify that all required modules are included in ModuleBasics.

✅ Verification successful

Let me gather more information about the modules to ensure completeness.


Let me check the directory structure and any additional modules that might need gRPC gateway registration.


gRPC-gateway routes registration is complete and properly configured

The verification shows that:

  • All modules are properly registered in ModuleBasics, including both core modules (auth, bank, staking, etc.) and custom modules (fantoken, merkledrop)
  • The fantoken module correctly implements RegisterGRPCGatewayRoutes
  • The ModuleBasics.RegisterGRPCGatewayRoutes call will handle registration for all included modules
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check if all modules are properly registered for gRPC-gateway.

# Search for module registration patterns
rg -A 5 'ModuleBasics.*=.*module\.NewBasicManager'

# Search for any gRPC-gateway route registration in modules
rg -A 5 'RegisterGRPCGatewayRoutes'

Length of output: 1798


Script:

#!/bin/bash
# Check all module registrations in ModuleBasics
rg -A 15 'ModuleBasics.*=.*module\.NewBasicManager'

# Find all module directories that might contain gRPC gateway routes
fd -t d "x/"

# Check for any AppModuleBasic implementations
rg "type.*AppModuleBasic.*struct"

Length of output: 1216


Script:

#!/bin/bash
# List all directories under x/ correctly
fd . 'x/' --type d --max-depth 1

# Check for any RegisterGRPCGatewayRoutes implementations in all modules
rg -p "func.*RegisterGRPCGatewayRoutes.*Context.*ServeMux"

# Check if fantoken module is included in ModuleBasics
rg -B 5 -A 15 "fantoken\.AppModuleBasic" app/modules.go

Length of output: 837

e2e/basic_start_test.go Show resolved Hide resolved
scripts/makefiles/docker.mk Show resolved Hide resolved
scripts/makefiles/docker.mk Show resolved Hide resolved
e2e/conformance/cosmwasm.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: 2

🧹 Outside diff range and nitpick comments (2)
.github/workflows/interchaintest-e2e.yml (1)

Line range hint 89-100: LGTM! Consider adding delay between retries.

The retry mechanism is a good addition for handling flaky tests. Consider adding a short delay between retries to handle timing-related issues.

 for i in 1 2; do
   echo "Retry attempt $i"
+  sleep 30  # Add delay between retries
   if make ${{ matrix.test }}; then
     echo "Test passed on retry"
     exit 0
   fi
 done
e2e/setup.go (1)

33-44: Consider environment-specific image configuration

The Docker image configuration mixes local and remote sources. Consider implementing environment-specific configuration to separate local development from production deployments.

-bitsongRepo, bitsongVersion = GetDockerImageInfo()
+bitsongRepo, bitsongVersion = GetDockerImageInfo(environment)
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3c9913f and 0028cf7.

📒 Files selected for processing (4)
  • .github/workflows/interchaintest-e2e.yml (2 hunks)
  • e2e/basic_start_test.go (2 hunks)
  • e2e/ci.go (1 hunks)
  • e2e/setup.go (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • e2e/ci.go
  • e2e/basic_start_test.go
🧰 Additional context used
🪛 actionlint (1.7.4)
.github/workflows/interchaintest-e2e.yml

69-69: the runner of "actions/setup-go@v4" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

🔇 Additional comments (6)
.github/workflows/interchaintest-e2e.yml (2)

17-17: LGTM! Good practice to use the latest patch version.

The update to Go 1.22.4 ensures you have the latest security patches and bug fixes.


58-63: Verify the status of commented test commands

The commented test commands e2e-pfm and e2e-polytone might be relevant for testing the governance and staking changes mentioned in the PR objectives.

e2e/setup.go (4)

83-88: LGTM: Proper SDK configuration initialization

The SDK configuration is properly initialized with correct Bech32 prefixes and coin type for Bitsong.


103-108: LGTM: Improved chain creation architecture

The refactored chain creation functions provide better modularity and reusability through proper configuration inheritance and customization options.

Also applies to: 110-112


23-26: Review governance parameter values

The voting period (15s) and max deposit period (10s) are extremely short. While this might be suitable for testing, ensure these values are not used in production environments.

✅ Verification successful

The search results show that these timing values (15s and 10s) only appear in the e2e/setup.go file and nowhere else in the Go codebase (other matches are in binary/encoded files).

Since this is in an e2e (end-to-end) test setup file, and these values are only used in this test context, I can now generate the final response:

Short voting periods are appropriate for e2e tests

The 15s voting period and 10s max deposit period are intentionally short for e2e testing purposes. Since these values are only used in e2e/setup.go and not in any production configuration files, there is no risk of them affecting production environments.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for any other instances of these timing values
rg "15s|10s" --type go

Length of output: 65639


7-19: Verify interchaintest v7 compatibility

The upgrade to interchaintest v7 and addition of new dependencies (wasmtypes, ibclocalhost) might introduce breaking changes.

✅ Verification successful

Let me gather more information about the interchaintest v7 usage to ensure there are no compatibility issues.


Based on the search results, I can now generate the final response as we have sufficient information about the interchaintest v7 usage and integration:

Interchaintest v7 integration is properly implemented

The codebase shows correct usage of interchaintest v7 APIs with proper chain factory setup, interchain initialization, and test user management. The new dependencies (wasmtypes, ibclocalhost) are properly integrated in the encoding configuration and genesis setup.

  • Correct usage of interchaintest.NewBuiltinChainFactory for chain creation
  • Proper implementation of BuildInitialChain using v7 APIs
  • Appropriate integration of WASM types in app configuration
  • No remnants of older interchaintest versions found
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for any compatibility issues with interchaintest v7
rg -A 3 "github.com/strangelove-ventures/interchaintest/v[0-6]" || echo "No older versions found"

# Verify WASM and IBC localhost usage
ast-grep --pattern 'wasmtypes.$$$' 
ast-grep --pattern 'ibclocalhost.$$$'

Length of output: 378


Script:

#!/bin/bash
# Check how interchaintest v7 is being used
rg -A 5 "interchaintest\." e2e/
rg -A 5 "cosmos\." e2e/

# Check go.mod for version constraints
cat go.mod | grep -A 2 "strangelove-ventures/interchaintest"

Length of output: 12758

.github/workflows/interchaintest-e2e.yml Show resolved Hide resolved
e2e/setup.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: 2

🧹 Outside diff range and nitpick comments (1)
e2e/setup.go (1)

111-115: Add documentation for chain creation parameters

While the function names are descriptive, it would be helpful to add documentation explaining:

  • The purpose of numVals and numFull parameters
  • Expected values and their impact
  • Use cases for different configurations

Example documentation:

+// CreateThisBranchWithValsAndFullNodes generates a test chain with the specified number of validators
+// and full nodes using the current branch's image.
+// Parameters:
+//   - numVals: Number of validator nodes to create (recommended: 1-4)
+//   - numFull: Number of full nodes to create (recommended: 0-2)
 func CreateThisBranchWithValsAndFullNodes(t *testing.T, numVals, numFull int) []ibc.Chain {
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0028cf7 and 1d9a549.

⛔ Files ignored due to path filters (1)
  • e2e/go.sum is excluded by !**/*.sum
📒 Files selected for processing (5)
  • .github/workflows/interchaintest-e2e.yml (2 hunks)
  • app/keepers/keepers.go (2 hunks)
  • e2e/conformance/cosmwasm.go (1 hunks)
  • e2e/go.mod (4 hunks)
  • e2e/setup.go (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • e2e/conformance/cosmwasm.go
  • e2e/go.mod
🔇 Additional comments (7)
.github/workflows/interchaintest-e2e.yml (1)

17-17: LGTM! Go version updated to latest patch.

The update to Go 1.22.4 is a good practice as it includes the latest security fixes and improvements.

app/keepers/keepers.go (2)

10-12: LGTM! Import paths standardized.

The removal of version suffixes from import paths aligns with the PR objective of removing versioning on the application package module.


291-293: LGTM! Improved message router initialization.

Using bApp.MsgServiceRouter() instead of creating a new router is more efficient and ensures all message handlers are properly registered with the same router instance. This change aligns with the PR objective of correctly registering governance keepers.

e2e/setup.go (4)

84-89: LGTM! SDK configuration is properly initialized

The SDK configuration correctly sets up Bitsong-specific address prefixes and coin type.


91-102: Properly implemented fantokentypes registration

The fantokentypes interface registration has been properly implemented as suggested in the previous review.


10-10: Verify compatibility with interchaintest v7

The upgrade to interchaintest v7 is significant. Ensure all chain configurations and test utilities are compatible with this version.

✅ Verification successful

Let me gather more information about the usage of interchaintest v7 APIs to ensure compatibility.


Let me check one more aspect to verify the chain configuration compatibility with v7.


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

The upgrade to interchaintest v7 is properly implemented

The codebase shows consistent usage of v7 APIs with proper chain configurations and no remnants of v6. All interchaintest imports and API usages (ChainSpec, ChainConfig, GetAndFundTestUsers, etc.) are compatible with v7.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for any v7-specific API changes that might need updates
rg "github.com/strangelove-ventures/interchaintest/v[0-9]+" --type go -A 2

Length of output: 2030


Script:

#!/bin/bash
# Check for interchaintest API usage patterns
rg "interchaintest\." --type go -A 2

# Also check for cosmos chain specific usage
rg "cosmos\.(Chain|ChainConfig|NodeConfig)" --type go -A 2

Length of output: 1421


Script:

#!/bin/bash
# Check chain configuration and initialization
rg "ChainSpec|ChainConfig|NodeConfig" --type go -A 5

# Also check for any v6 to v7 migration remnants
rg "interchaintest/v6" --type go

Length of output: 869


36-41: Verify local image handling in CI environment

The baseChain configuration uses a "local" version tag which might cause issues in CI environments where the local image might not be available.

✅ Verification successful

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

Local image handling is properly configured for both local and CI environments

The codebase has a well-structured setup for handling Docker images in both local and CI environments:

  • The GetDockerImageInfo() function in e2e/ci.go intelligently switches between local and CI image sources:

    • For CI: Uses the remote image from BitsongMainRepo when BRANCH_CI env var is set
    • For local: Uses the local image when testing locally (requires running make hl or make docker)
  • The "local" version tag in baseChain configuration is intentional and works in conjunction with this setup, not causing any issues in CI.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for other occurrences of local image references
rg '"local".*Version' --type go

# Check for CI-specific configurations
fd -t f "ci" --exec rg "baseChain|BitsongImage"

Length of output: 81


Script:

#!/bin/bash
# Let's check for Docker image configurations and version references in the e2e tests
rg -A 5 'DockerImage.*{' --type go

# Check for any CI configuration files with different extensions
fd -e yml -e yaml -e json "ci" -X rg "docker|image|version"

# Check the e2e test setup and configuration files
fd "setup|config" -e go -X cat {}

Length of output: 16169


Script:

#!/bin/bash
# Let's check for Docker image configuration in the repository
rg -A 2 'GetDockerImageInfo' --type go

# Check for any Dockerfile or docker-compose files that might show how local images are handled
fd -e Dockerfile -e yml -e yaml . -X rg "FROM|image:"

# Check for any make targets or scripts that handle local image building
fd Makefile -X cat {}

Length of output: 16370

.github/workflows/interchaintest-e2e.yml Outdated Show resolved Hide resolved
e2e/setup.go Show resolved Hide resolved
@hard-nett hard-nett changed the title V0.18.2 patch V0.19.0 patch Dec 13, 2024
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: 24

🔭 Outside diff range comments (2)
cmd/bitsongd/cmd/config.go (2)

Line range hint 42-58: Enhance environment variable handling

The environment variables are used without validation and could benefit from default values and validation logic.

+func getEnvWithDefault(key, defaultValue string) string {
+    if value := os.Getenv(key); value != "" {
+        return value
+    }
+    return defaultValue
+}

 tcc := BitsongCustomClient{
     *conf,
-    os.Getenv("BITSONGD_GAS"),
-    os.Getenv("BITSONGD_GAS_PRICES"),
+    getEnvWithDefault("BITSONGD_GAS", "200000"),
+    getEnvWithDefault("BITSONGD_GAS_PRICES", "0.1ubitsong"),

Line range hint 95-142: Add validation for mutually exclusive settings

The code allows setting both gas-prices and fees, which are mutually exclusive. Consider adding validation logic.

 case flags.FlagGasPrices:
     tcc.GasPrices = value
-    tcc.Fees = "" // resets since we can only use 1 at a time
+    if tcc.Fees != "" {
+        return fmt.Errorf("cannot set both gas-prices and fees: please use only one")
+    }
 case flags.FlagFees:
     tcc.Fees = value
-    tcc.GasPrices = "" // resets since we can only use 1 at a time
+    if tcc.GasPrices != "" {
+        return fmt.Errorf("cannot set both fees and gas-prices: please use only one")
+    }
♻️ Duplicate comments (1)
.github/workflows/interchaintest-e2e.yml (1)

69-69: ⚠️ Potential issue

Critical: Upgrade actions/setup-go to v5

The downgrade from v5 to v4 of actions/setup-go is not recommended.

-        uses: actions/setup-go@v4
+        uses: actions/setup-go@v5
🧰 Tools
🪛 actionlint (1.7.4)

69-69: the runner of "actions/setup-go@v4" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

🧹 Nitpick comments (51)
scripts/README.md (3)

3-4: Improve clarity by removing word repetition.

The sentence contains a repeated word "Make" which could be rephrased for better readability.

-## Make 
-Make files allow us to organize make functions into files specific to their purpose. 
+## Build System
+Makefiles allow us to organize build functions into files specific to their purpose.
🧰 Tools
🪛 LanguageTool

[duplication] ~3-~3: Possible typo: you repeated a word
Context: # Bitsong Scripting Library ## Make Make files allow us to organize make functio...

(ENGLISH_WORD_REPEAT_RULE)


5-12: Enhance table structure and content.

The table structure can be improved by:

  1. Removing empty columns
  2. Adding more descriptive headers
  3. Fixing the typo in "heighliner"
  4. Adding more detailed descriptions
-|  CLI  | Description |   |   |   |
-|---|---|---|---|---|
-| `build`  | builds `bitsongd` binary  |   |   |   |
-| `docker`  |  current docker options |   |   |   |
-| `e2e`  | current e2e & integration tests  |   |   |   |
-| `hl`  |  current heighliner options |   |   |   |
-| `localnet`  | localBitsong commands   |   |   |   |
-| `proto`  |  generate protobuf documentation and files |   |   |   |

+| Command | Description |
+|---------|-------------|
+| `build` | Builds and compiles the `bitsongd` binary |
+| `docker` | Manages Docker container operations and configurations |
+| `e2e` | Executes end-to-end and integration test suites |
+| `hl` | Manages highliner deployment and configuration options |
+| `localnet` | Executes local Bitsong network commands and operations |
+| `proto` | Generates and maintains protobuf documentation and source files |
🧰 Tools
🪛 Markdownlint (0.37.0)

5-5: null
Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


1-13: Add blank lines around the table for better markdown formatting.

According to markdown best practices, tables should be surrounded by blank lines.

 # Bitsong Scripting Library

 ## Build System
 Makefiles allow us to organize build functions into files specific to their purpose.
+
 | Command | Description |
 |---------|-------------|
 | `build` | Builds and compiles the `bitsongd` binary |
 | `docker` | Manages Docker container operations and configurations |
 | `e2e` | Executes end-to-end and integration test suites |
 | `hl` | Manages highliner deployment and configuration options |
 | `localnet` | Executes local Bitsong network commands and operations |
 | `proto` | Generates and maintains protobuf documentation and source files |
+
🧰 Tools
🪛 LanguageTool

[duplication] ~3-~3: Possible typo: you repeated a word
Context: # Bitsong Scripting Library ## Make Make files allow us to organize make functio...

(ENGLISH_WORD_REPEAT_RULE)

🪛 Markdownlint (0.37.0)

5-5: null
Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

swagger/swagger-ui/swagger.yaml (1)

141-144: Consolidate next_key documentation

The pagination description is duplicated across multiple locations and in hunk 9 appears as both a title and description.

Consider:

  1. Using a consistent format across all locations
  2. Making the description more concise while maintaining clarity
  3. Removing the duplicate title in the last occurrence
description: |-
-  next_key is the key to be passed to PageRequest.key to
-  query the next page most efficiently. It will be empty if
-  there are no more results.
+  Pagination key for fetching the next page. Empty when no more results exist.

Also applies to: 33370-33373, 33507-33510

e2e/cw-orchestrator/src/bin/grpc.rs (2)

11-11: LGTM! Consider future import organization

The Result type alias is well-defined. As the implementation grows, consider organizing imports into logical groups (std, external, internal) for better maintainability.


20-25: Consider enhancing error reporting

While the basic error handling is in place, consider these improvements for better debugging and maintenance:

+use tracing::{error, info};

 pub fn main() {
+    // Initialize logging
+    tracing_subscriber::fmt::init();
+    info!("Starting gRPC sanity test...");
     if let Err(e) = test_single_node_grpc_sanity() {
-        eprintln!("Error running gRPC sanity test: {}", e);
+        error!("Error running gRPC sanity test: {:#}", e);
+        error!("Detailed error chain: {:#?}", e);
         std::process::exit(1);
     }
+    info!("gRPC sanity test completed successfully");
 }
scripts/polytone.sh (1)

1-41: Consider improving build system integration

The script's role in downloading test contracts could be better integrated with the build system:

  1. Consider caching downloads to speed up repeated builds
  2. Add integration with CI/CD pipeline (e.g., GitHub Actions)
  3. Consider vendoring these contracts or hosting them internally for better control
  4. Add a clean-up command to remove downloaded contracts

Example integration with Makefile:

.PHONY: download-contracts clean-contracts

download-contracts:
	./scripts/polytone.sh

clean-contracts:
	rm -rf e2e/contracts/*.wasm

test-e2e: download-contracts
	# your e2e test command here
e2e/cw-orchestrator/src/bin/iba.rs (3)

58-58: Remove unnecessary clone on bitsong_sender

Cloning bitsong_sender is unnecessary since it's already a String and is not modified.

Apply this diff to remove the unnecessary clone:

 let origin_account = AccountI::create_default_account(
     &abstr_bitsong,
     abstract_client::GovernanceDetails::Monarchy {
-        monarch: bitsong_sender.clone(),
+        monarch: bitsong_sender,
     },
 )?;

112-117: Simplify message creation using into()

You can simplify the conversion of BankMsg::Send into CosmosMsg by using .into() directly on the vector.

Apply this diff to simplify the code:

 ibc_client::ExecuteMsg::RemoteAction {
     host_chain: TruncatedChainId::from_chain_id(BITSONG2),
     action: HostAction::Dispatch {
         account_msgs: vec![account::ExecuteMsg::<Empty>::Execute {
-            msgs: vec![BankMsg::Send {
+            msgs: vec![BankMsg::Send {
                 to_address: bitsong_sender,
                 amount: vec![Coin::new(5_000_000_u128, denom.clone())],
-            }
-            .into()],
+            }.into()],
         }],
     },
 },

124-125: Add custom error message to assertion

Providing a custom error message in the assertion helps with debugging if the assertion fails.

Apply this diff to include a custom error message:

 let balance = bitsong.balance(&bitsong.sender_addr(), Some(denom.clone()))?;
-assert_eq!(balance, vec![Coin::new(5_000_000_u128, denom)]);
+assert_eq!(
+    balance,
+    vec![Coin::new(5_000_000_u128, denom)],
+    "Balance does not match expected amount after IBC transfer"
+);
e2e/cw-orchestrator/src/lib.rs (3)

59-62: Use consistent environment variable paths

The ARTIFACTS_DIR is set to "../artifacts", which may not be consistent if the working directory changes. Consider using an absolute path or ensuring the relative path is correct in all contexts.

Apply this diff to set ARTIFACTS_DIR based on the executable's path:

 pub fn set_starship_env() {
     std::env::set_var("STATE_FILE", "starship-state.json");
-    std::env::set_var("ARTIFACTS_DIR", "../artifacts");
+    let artifacts_dir = std::env::current_exe()
+        .unwrap()
+        .parent()
+        .unwrap()
+        .join("../artifacts");
+    std::env::set_var("ARTIFACTS_DIR", artifacts_dir);
 }

74-87: Avoid unnecessary cloning and improve variable naming

In create_test_remote_account, cloning and shadowing variables can be avoided for clarity.

Apply this diff to remove unnecessary clones and improve variable names:

 let origin_chain_id = TruncatedChainId::from_chain_id(origin_id);
 let remote_chain_id = TruncatedChainId::from_chain_id(remote_id);

 // Create a local account for testing
-let account_name = TEST_ACCOUNT_NAME.to_string();
-let description = Some(TEST_ACCOUNT_DESCRIPTION.to_string());
-let link = Some(TEST_ACCOUNT_LINK.to_string());
+let account_details = AccountDetails {
+    name: TEST_ACCOUNT_NAME.to_string(),
+    description: Some(TEST_ACCOUNT_DESCRIPTION.to_string()),
+    link: Some(TEST_ACCOUNT_LINK.to_string()),
+    install_modules: vec![],
+    namespace: None,
+    account_id: None,
+};

 let origin_account = AccountI::create(
     abstr_origin,
-    AccountDetails {
-        name: account_name.clone(),
-        description: description.clone(),
-        link: link.clone(),
-        install_modules: vec![],
-        namespace: None,
-        account_id: None,
-    },
+    account_details,
     abstract_std::objects::gov_type::GovernanceDetails::Monarchy {
         monarch: abstr_origin
             .registry

123-125: Simplify conditional logic when loading deployments

The condition if let Ok(bitsong_deployment) = Abstract::load_from(bitsong.clone()) can be simplified for better readability.

Apply this diff to simplify the condition:

 if let Ok(bitsong_deployment) = Abstract::load_from(bitsong.clone()) {
     return Ok((bitsong_deployment, Abstract::load_from(bitsong2)?));
 }
+// If deployment does not exist, proceed to deploy and connect
e2e/slashing_test.go (1)

169-173: Fix incorrect function comment

The function QueryAllValidators has an incorrect comment that mentions querying rewards for a delegator.

Apply this diff to correct the comment:

-// QueryAllValidators queries the rewards for a delegator
+// QueryAllValidators retrieves all validators
 func QueryAllValidators(t *testing.T, c *cosmos.CosmosChain, ctx context.Context) (*stakingtypes.QueryValidatorsResponse, error) {
     res, err := stakingtypes.NewQueryClient(c.GetNode().GrpcConn).
         Validators(ctx, &stakingtypes.QueryValidatorsRequest{})
     return res, err
 }
cmd/bitsongd/cmd/v19.go (2)

74-85: Handle errors more informatively in v019Logic function

The error message "failed, dang" is not informative. Provide a clearer error message for better debugging.

Apply this diff to improve the error message:

 func v019Logic(_ *tmcfg.Config, cliCtx client.Context, genParams v019LogicParams) error {
     differingDelegations, err := V019ImplLogic(cliCtx, genParams)
     if err != nil {
-        return fmt.Errorf("failed, dang: %w", err)
+        return fmt.Errorf("failed to execute V019 logic: %w", err)
     }

     if err := printDifferingDelegations(differingDelegations); err != nil {
         log.Fatal(err)
     }
     fmt.Println("Verification Complete")
     return nil
 }

215-218: Ensure file is properly closed using defer in case of errors

In printDifferingDelegations, if an error occurs during Encode, the function may exit without closing the file. Deferring after error checking ensures the file is properly closed.

Apply this diff to defer closing after checking for errors:

 f, err := os.Create(filename)
 if err != nil {
     return err
 }
-defer f.Close()
+defer func() {
+    if cerr := f.Close(); cerr != nil {
+        fmt.Printf("Error closing file: %v\n", cerr)
+    }
+}()

 json.NewEncoder(f).Encode(differingDelegations)
 return nil
cmd/bitsongd/cmd/v18-slash.go (3)

152-160: Rename VALS to follow naming conventions

The variable VALS is defined in all capital letters, which is typically reserved for constants. Since it is a variable, consider renaming it to vals or slashedVals for clarity and to adhere to Go naming conventions.


243-250: Optimize the contains function for better performance

The contains function has O(n) complexity, which may affect performance with large datasets. Consider using a map[string]struct{} for constant-time lookups:

// Create a set for delegator addresses
delegatorSet := make(map[string]struct{})
// Add to set
delegatorSet[delegatorAddress] = struct{}{}
// Check if exists
if _, exists := delegatorSet[delegatorAddress]; !exists {
	// Add to slice if not exists
}

38-39: Provide a detailed usage example for the command

The Long description contains a placeholder <add-example-cli>. Replace it with an appropriate usage example to enhance user understanding.

e2e/polytone_suite.go (2)

285-287: Enhance error handling in RoundtripMessage

When checking for errors after executing the contract, provide additional context to the error message for better debugging:

	if err != nil {
-		return Callback{}, err
+		return Callback{}, fmt.Errorf("failed to execute contract: %w", err)
	}

294-296: Handle the case where no new callbacks are recorded

If no new callback is detected, return a more informative error message to aid in troubleshooting:

	if len(callbacksEnd) == len(callbacksStart) {
-		return Callback{}, errors.New("no new callback")
+		return Callback{}, errors.New("no new callback recorded after contract execution")
	}
e2e/module_pfm_test.go (1)

278-280: Remove unnecessary balance assertions

The balances for chainBBalance and chainCBalance are expected to be zero and are being explicitly checked. If these checks are not critical, consider removing them to streamline the test:

-	require.Equal(t, sdkmath.NewInt(0), chainBBalance)
-	require.Equal(t, sdkmath.NewInt(0), chainCBalance)
scripts/makefiles/e2e.mk (2)

14-16: Enhance help text descriptions

The help text for new commands could be more descriptive about their purpose and requirements.

-  e2e-pfm        Run packet-forward-middleware test "
-  e2e-polytone   Run polytone test contracts: Run ./scripts/polytone.sh to install wasm blobs."
-  e2e-slashing   Test slashing actions"
+  e2e-pfm        Run packet-forward-middleware integration test
+  e2e-polytone   Run polytone contract tests (Requires: ./scripts/polytone.sh for wasm blob installation)
+  e2e-slashing   Test validator slashing and reward distribution

Line range hint 38-38: Update .PHONY targets

Add the new targets to the .PHONY declaration to ensure proper Make behavior.

-.PHONY: test-mutation ie2e-upgrade
+.PHONY: test-mutation e2e-upgrade e2e-basic e2e-pfm e2e-polytone e2e-slashing e2e-help e2e rm-testcache
e2e/README.md (3)

4-9: Fix table formatting and grammar

The table requires proper spacing and grammar corrections:

-| CLI | Description   |  |   |   |
-|---|---|---|---|---|
-| `basic`  | Basic network setup and cosmwasm upload & execute  |   |   |   |
-| `pfm`  | Test the functionality of packet-forward-middleware   |   |   |   |
-| `polytone`  | Test IBC-Callbacks via Polytone deployment  |   |   |   |
-| `upgrade`  | Simulate an planned upgrade workflow   |   |   |   |
+
+| CLI | Description |
+|-----|-------------|
+| `basic` | Basic network setup and CosmWasm upload & execute |
+| `pfm` | Test the functionality of packet-forward-middleware |
+| `polytone` | Test IBC-Callbacks via Polytone deployment |
+| `upgrade` | Simulate a planned upgrade workflow |
+
🧰 Tools
🪛 LanguageTool

[misspelling] ~9-~9: Use “a” instead of ‘an’ if the following word doesn’t start with a vowel sound, e.g. ‘a sentence’, ‘a university’.
Context: ... | | | | | upgrade | Simulate an planned upgrade workflow | | | ...

(EN_A_VS_AN)

🪛 Markdownlint (0.37.0)

4-4: null
Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


12-13: Fix heading formatting

Remove extra spaces after hash symbols in headings.

-## Requirements 
-##  How to add more tests
+## Requirements
+## How to add more tests
🧰 Tools
🪛 Markdownlint (0.37.0)

12-12: null
Multiple spaces after hash on atx style heading

(MD019, no-multiple-space-atx)


24-26: Replace hard tabs with spaces in code blocks

Convert hard tabs to spaces in the code block for consistent formatting.

-e2e-grpc: rm-testcache
-	cd e2e && go test -race -v -run TestBasicGrpcQuery .
+e2e-grpc: rm-testcache
+    cd e2e && go test -race -v -run TestBasicGrpcQuery .
🧰 Tools
🪛 Markdownlint (0.37.0)

25-25: Column: 1
Hard tabs

(MD010, no-hard-tabs)

e2e/cw-orchestrator/Cargo.toml (1)

36-37: Clarify status of commented dependencies

The commented dependencies cw-orch-polytone and polytone might be needed for future functionality. Consider:

  1. Adding a TODO comment explaining why they're commented out
  2. Document if/when they'll be needed
e2e/basic_start_test.go (1)

35-51: Remove or implement commented gRPC query code

The commented gRPC query code should either be:

  1. Implemented if it's required functionality
  2. Removed if it's no longer needed
  3. Tagged with a TODO comment explaining future plans

This will improve code maintainability and clarity.

scripts/makefiles/localnet.mk (3)

19-23: Improve error handling in localnet-start target

The localnet-start target could be enhanced:

  1. Add error checking for build-linux and build-docker-bitsongdnode
  2. Verify docker-compose file existence
  3. Add error handling for docker run command
 localnet-start: build-linux build-docker-bitsongdnode
-	@if ! [ -f build/node0/bitsongd/config/genesis.json ]; \
+	@if ! [ -f docker-compose.yml ]; then \
+		echo "Error: docker-compose.yml not found"; \
+		exit 1; \
+	fi
+	@if ! [ -f build/node0/bitsongd/config/genesis.json ]; \
 		then docker run --rm -v $(CURDIR)/build:/bitsongd:Z bitsongofficial/bitsongdnode testnet --v 4 -o . --starting-ip-address 192.168.10.2 --keyring-backend=test ; \
+		if [ $$? -ne 0 ]; then \
+			echo "Error: Failed to create testnet"; \
+			exit 1; \
+		fi; \
 	fi
 	docker-compose up -d

29-32: Add version tagging validation in test-docker target

The test-docker target should validate git commands and tag format:

  1. Check if git commands succeed
  2. Validate tag format
  3. Add error handling for docker build
 test-docker:
+	@if ! git rev-parse --short HEAD > /dev/null 2>&1; then \
+		echo "Error: Not a git repository"; \
+		exit 1; \
+	fi
 	@docker build -f contrib/Dockerfile.test -t ${TEST_DOCKER_REPO}:$(shell git rev-parse --short HEAD) .
 	@docker tag ${TEST_DOCKER_REPO}:$(shell git rev-parse --short HEAD) ${TEST_DOCKER_REPO}:$(shell git rev-parse --abbrev-ref HEAD | sed 's#/#_#g')
 	@docker tag ${TEST_DOCKER_REPO}:$(shell git rev-parse --short HEAD) ${TEST_DOCKER_REPO}:latest

1-15: Enhance documentation in help target

The help target could be improved:

  1. Add examples for each command
  2. Document required environment variables
  3. Add prerequisites section
 localnet-help:
 	@echo "build subcommands"
 	@echo ""
 	@echo "Usage:"
 	@echo "  make [command]"
 	@echo ""
+	@echo "Prerequisites:"
+	@echo "  - Docker"
+	@echo "  - docker-compose"
+	@echo ""
+	@echo "Environment Variables:"
+	@echo "  TEST_DOCKER_REPO    Docker repository for test images"
 	@echo ""
 	@echo "Available Commands:"
 	@echo "localnet-start  		 Start a 4-node testnet locally"
 	@echo "localnet-stop  		 Stop  a local testnet"
 	@echo "test-docker-push  	Push testnet docker image"
+	@echo ""
+	@echo "Examples:"
+	@echo "  make localnet-start"
+	@echo "  make test-docker TEST_DOCKER_REPO=myrepo/bitsong"
Dockerfile (1)

32-37: Enhance binary verification process

The binary verification could be more comprehensive.

 RUN LEDGER_ENABLED=false BUILD_TAGS=muslc LINK_STATICALLY=true make build \
   && file /code/build/bitsongd \
   && echo "Ensuring binary is statically linked ..." \
-  && (file /code/build/bitsongd | grep "statically linked")
+  && (file /code/build/bitsongd | grep "statically linked") \
+  && echo "Verifying binary..." \
+  && /code/build/bitsongd version \
+  && sha256sum /code/build/bitsongd > /code/build/bitsongd.sha256
.github/workflows/interchaintest-e2e.yml (1)

Line range hint 89-102: Enhance test retry mechanism

The current retry mechanism could be improved with better logging and failure analysis.

       if: steps.run_test.outcome == 'failure'
       run: |
+        echo "::group::Test Retry Details"
         for i in 1 2; do
-          echo "Retry attempt $i"
+          echo "::warning::Retry attempt $i for ${{ matrix.test }}"
+          echo "Waiting 30 seconds before retry..."
+          sleep 30
           if make ${{ matrix.test }}; then
-            echo "Test passed on retry"
+            echo "::notice::Test passed on retry attempt $i"
             exit 0
           fi
         done
-        echo "Test failed after retries"
+        echo "::error::Test ${{ matrix.test }} failed after all retry attempts"
+        echo "::endgroup::"
         exit 1
e2e/utils.go (2)

33-33: Hardcoded fee value may need configuration

The fee value "2000ustars" is hardcoded, which could be problematic if the fee requirements change or if this utility is used with different chains.

Consider making the fee amount configurable:

-		"--fees", "2000ustars",
+		"--fees", chain.Config().Fees,

40-45: Error handling could be more descriptive

The error returned from the chain execution doesn't provide context about what failed during contract instantiation.

-	if _, _, err := chain.Exec(ctx, cmd, nil); err != nil {
-		return "", err
+	if _, stderr, err := chain.Exec(ctx, cmd, nil); err != nil {
+		return "", fmt.Errorf("failed to instantiate contract: %v (stderr: %s)", err, stderr)
e2e/polytone_types.go (2)

33-37: Potential type safety improvement for message arrays

Both NoteQuery and NoteExecuteMsg contain message arrays without size limits, which could lead to memory issues with large arrays.

Consider adding validation or size limits:

 type NoteQuery struct {
+	// Maximum number of messages that can be processed in a single query
+	MaxMsgs = 50
+
 	Msgs           []w.CosmosMsg   `json:"msgs"`
 	TimeoutSeconds uint64          `json:"timeout_seconds,string"`
 	Callback       CallbackRequest `json:"callback"`
 }

Also applies to: 39-43


74-74: Empty struct could benefit from documentation

The Empty struct's purpose and usage context should be documented.

+// Empty represents an empty request/response body used as a placeholder
+// in various query and execution messages
 type Empty struct{}
app/genesis.go (2)

34-42: Clean up commented code sections

There are several commented-out genesis configurations for mint, staking, and gov modules. If these are no longer needed, consider removing them entirely rather than keeping them commented out.

-	// other default genesis
-	// mintGenesis := mintGenesisState()
-	// stakingGenesis := stakingGenesisState()
-	// govGenesis := govGenesisState()

	gen[wasmtypes.ModuleName] = cdc.MustMarshalJSON(&wasmGen)
-	// gen["mint"] = cdc.MustMarshalJSON(mintGenesis)
-	// gen["staking"] = cdc.MustMarshalJSON(stakingGenesis)
-	// gen["gov"] = cdc.MustMarshalJSON(govGenesis)

49-86: Remove unused helper functions

These commented-out helper functions (stakingGenesisState, govGenesisState, mintGenesisState) should be removed if they're no longer used. If they might be needed in the future, consider documenting why they're preserved.

e2e/polytone_test.go (2)

14-17: Consider using test constants package

Test data constants could be moved to a separate test constants package for reusability across tests.

-const (
-	testBinary string = "aGVsbG8=" // "hello" in base64
-	testText   string = "hello"
-)
+import "github.com/bitsongofficial/go-bitsong/testutil/constants"
// Use constants.TestBinary and constants.TestText

67-72: Address FIXME comment

The FIXME comment indicates an unresolved issue with channel creation that needs attention. Consider creating an issue to track this.

Would you like me to create a GitHub issue to track this channel creation problem?

e2e/conformance/cosmwasm.go (2)

13-18: Consider removing or implementing the commented-out code

The subMsg function call is commented out but left in the codebase. Either implement the functionality or remove it to maintain clean code.


35-62: Address the commented-out test implementation

The commented-out subMsg function contains important test cases for contract sub-messages, referenced by issue CosmWasm/wasmd#1735. Consider implementing these tests or creating a tracking issue.

Would you like me to help create a GitHub issue to track the implementation of these sub-message tests?

scripts/makefiles/proto.mk (1)

88-96: Enhance proto-docs target documentation

The proto-docs target could benefit from more detailed documentation about the expected output and any prerequisites.

 proto-docs:
-    @echo
-    @echo "=========== Generate Message ============"
+    @echo "Generating Swagger API documentation..."
+    @echo "Prerequisites:"
+    @echo "  - protoc-gen-swagger must be installed"
+    @echo "  - Output will be in ./docs/swagger"
cmd/bitsongd/cmd/config.go (1)

179-179: Fix comment alignment

The comment section header is misaligned with other similar sections.

-###                          Bitsong Tx Configuration                          ###
+###                           Bitsong Tx Configuration                            ###
e2e/basic_upgrade_test.go (3)

30-30: Maintain consistent version naming convention

The upgrade name "v019" doesn't follow the semantic versioning format used elsewhere in the codebase (v0.19.0). Consider using consistent version naming.

-upgradeName = "v019"
+upgradeName = "v0.19.0"

114-114: Consider implementing IBC conformance test

The TODO comment indicates missing IBC conformance testing, which could be crucial for validating cross-chain functionality post-upgrade.

Would you like me to help implement the IBC conformance test or create a GitHub issue to track this task?


172-173: Avoid hardcoding governance authority address

Consider parameterizing the governance authority address to make the tests more maintainable across different environments.

+const govAuthority = "bitsong10d07y265gmmuvt4z0w9aw880jnsr700jktpd5u"

 upgradeMsg := []cosmosproto.Message{
 	&upgradetypes.MsgSoftwareUpgrade{
-		Authority: "bitsong10d07y265gmmuvt4z0w9aw880jnsr700jktpd5u",
+		Authority: govAuthority,
e2e/cw-orchestrator/README.md (2)

5-6: Improve URL formatting in requirements section

Use proper Markdown link syntax for better readability and maintainability.

-Cargo: https://doc.rust-lang.org/cargo/ 
-Starship: https://docs.cosmology.zone/starship#quick-start-guide
+Cargo: [Documentation](https://doc.rust-lang.org/cargo/)
+Starship: [Quick Start Guide](https://docs.cosmology.zone/starship#quick-start-guide)
🧰 Tools
🪛 Markdownlint (0.37.0)

5-5: null
Bare URL used

(MD034, no-bare-urls)


6-6: null
Bare URL used

(MD034, no-bare-urls)


10-23: Clean up table formatting

The tables contain empty rows and inconsistent column counts. Consider removing empty rows and aligning columns properly.

 ## Tests 
-| Name  | CLI   | description  |  |   |
-|---|---|---|---|---|
-|  iba | `cargo run -- --bin iba`  |  e2e for CosmWasm ICA callbacks, by creating an interchain bitsong account. |    
-|   |   |   |   |   |
-|   |   |   |   |   |
+| Name | CLI | Description |
+|------|-----|-------------|
+| iba | `cargo run -- --bin iba` | e2e for CosmWasm ICA callbacks, by creating an interchain bitsong account. |

 ## Scripts 
-| Name  | CLI   | description  |   |   |
-|---|---|---|---|---|
-|   |   |   |   |   |
-|   |   |   |   |   |
+| Name | CLI | Description |
+|------|-----|-------------|
🧰 Tools
🪛 Markdownlint (0.37.0)

12-12: Expected: 5; Actual: 3; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)


10-10: null
Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


19-19: null
Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1d9a549 and be5ffe8.

⛔ Files ignored due to path filters (7)
  • e2e/contracts/polytone_listener.wasm is excluded by !**/*.wasm
  • e2e/contracts/polytone_note.wasm is excluded by !**/*.wasm
  • e2e/contracts/polytone_proxy.wasm is excluded by !**/*.wasm
  • e2e/contracts/polytone_tester.wasm is excluded by !**/*.wasm
  • e2e/contracts/polytone_voice.wasm is excluded by !**/*.wasm
  • e2e/cw-orchestrator/Cargo.lock is excluded by !**/*.lock
  • e2e/go.sum is excluded by !**/*.sum
📒 Files selected for processing (46)
  • .github/workflows/build_docker.yml (0 hunks)
  • .github/workflows/interchaintest-e2e.yml (2 hunks)
  • .github/workflows/push-docker-image.yml (2 hunks)
  • .github/workflows/release.yml (1 hunks)
  • .gitignore (2 hunks)
  • Dockerfile (2 hunks)
  • Makefile (3 hunks)
  • app/app.go (7 hunks)
  • app/genesis.go (3 hunks)
  • app/keepers/keepers.go (3 hunks)
  • app/modules.go (3 hunks)
  • app/params/config.go (3 hunks)
  • cmd/bitsongd/cmd/config.go (1 hunks)
  • cmd/bitsongd/cmd/init_from_state.go (0 hunks)
  • cmd/bitsongd/cmd/root.go (7 hunks)
  • cmd/bitsongd/cmd/v18-slash.go (1 hunks)
  • cmd/bitsongd/cmd/v19.go (1 hunks)
  • e2e/README.md (1 hunks)
  • e2e/basic_start_test.go (1 hunks)
  • e2e/basic_upgrade_test.go (4 hunks)
  • e2e/ci.go (1 hunks)
  • e2e/conformance/cosmwasm.go (1 hunks)
  • e2e/cw-orchestrator/Cargo.toml (1 hunks)
  • e2e/cw-orchestrator/README.md (1 hunks)
  • e2e/cw-orchestrator/src/bin/grpc.rs (1 hunks)
  • e2e/cw-orchestrator/src/bin/iba.rs (1 hunks)
  • e2e/cw-orchestrator/src/bin/slashing.rs (1 hunks)
  • e2e/cw-orchestrator/src/lib.rs (1 hunks)
  • e2e/go.mod (3 hunks)
  • e2e/localbitsong/README.md (1 hunks)
  • e2e/module_pfm_test.go (1 hunks)
  • e2e/polytone_suite.go (1 hunks)
  • e2e/polytone_test.go (1 hunks)
  • e2e/polytone_types.go (1 hunks)
  • e2e/setup.go (1 hunks)
  • e2e/slashing_test.go (1 hunks)
  • e2e/utils.go (1 hunks)
  • scripts/README.md (1 hunks)
  • scripts/makefiles/e2e.mk (1 hunks)
  • scripts/makefiles/hl.mk (1 hunks)
  • scripts/makefiles/localnet.mk (1 hunks)
  • scripts/makefiles/proto.mk (1 hunks)
  • scripts/polytone.sh (1 hunks)
  • scripts/protoc-swagger-gen.sh (1 hunks)
  • swagger/config.json (0 hunks)
  • swagger/swagger-ui/swagger.yaml (9 hunks)
💤 Files with no reviewable changes (3)
  • swagger/config.json
  • .github/workflows/build_docker.yml
  • cmd/bitsongd/cmd/init_from_state.go
✅ Files skipped from review due to trivial changes (3)
  • e2e/localbitsong/README.md
  • .gitignore
  • scripts/makefiles/hl.mk
🚧 Files skipped from review as they are similar to previous changes (7)
  • Makefile
  • e2e/ci.go
  • app/modules.go
  • cmd/bitsongd/cmd/root.go
  • e2e/go.mod
  • app/app.go
  • e2e/setup.go
🧰 Additional context used
🪛 LanguageTool
e2e/README.md

[misspelling] ~9-~9: Use “a” instead of ‘an’ if the following word doesn’t start with a vowel sound, e.g. ‘a sentence’, ‘a university’.
Context: ... | | | | | upgrade | Simulate an planned upgrade workflow | | | ...

(EN_A_VS_AN)

scripts/README.md

[duplication] ~3-~3: Possible typo: you repeated a word
Context: # Bitsong Scripting Library ## Make Make files allow us to organize make functio...

(ENGLISH_WORD_REPEAT_RULE)

🪛 Markdownlint (0.37.0)
e2e/README.md

25-25: Column: 1
Hard tabs

(MD010, no-hard-tabs)


12-12: null
Multiple spaces after hash on atx style heading

(MD019, no-multiple-space-atx)


4-4: null
Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

e2e/cw-orchestrator/README.md

5-5: null
Bare URL used

(MD034, no-bare-urls)


6-6: null
Bare URL used

(MD034, no-bare-urls)


12-12: Expected: 5; Actual: 3; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)


10-10: null
Tables should be surrounded by blank lines

(MD058, blanks-around-tables)


19-19: null
Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

scripts/README.md

5-5: null
Tables should be surrounded by blank lines

(MD058, blanks-around-tables)

🪛 actionlint (1.7.4)
.github/workflows/interchaintest-e2e.yml

69-69: the runner of "actions/setup-go@v4" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

🔇 Additional comments (24)
swagger/swagger-ui/swagger.yaml (1)

Line range hint 31-33510: Verify removed merkledrop endpoints

The AI summary indicates removal of merkledrop-related endpoints, but these changes aren't visible in the provided hunks. Let's verify the impact of these removals.

✅ Verification successful

Merkledrop endpoints have been correctly removed from the API

The verification confirms that merkledrop endpoints have been properly removed from the API as part of the module removal. This is consistent with:

  • The CHANGELOG.md entry explicitly states "remove x/merkledrop module"
  • The upgrade constants in app/upgrades/v018/constants.go mark the merkledrop module as "Deleted"
  • While there are remaining references to merkledrop in the codebase (mostly in types and keys), these appear to be legacy code that hasn't been cleaned up yet
  • The swagger.yaml file still contains the merkledrop endpoint definitions, but this PR appears to be removing them (as evidenced by the empty snippet in the review)
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any remaining references to merkledrop endpoints
rg -i "merkledrop" .

# Check for any imports or uses of merkledrop in Go files
ast-grep --pattern 'import $_ "github.com/bitsongofficial/go-bitsong/x/merkledrop"'

Length of output: 5102

e2e/cw-orchestrator/src/bin/grpc.rs (1)

1-10: LGTM! Dependencies are well-structured

The external crate declarations are appropriate for gRPC testing functionality, including necessary dependencies for Abstract framework, CosmWasm, and CW Orchestrator.

.github/workflows/release.yml (2)

Line range hint 1-150: LGTM! The workflow structure is well-designed.

The workflow demonstrates good practices:

  • Comprehensive platform coverage (MacOS, Linux, Windows)
  • Consistent Go version across all builds
  • Proper artifact handling and uploading
  • Good use of GitHub Actions features

32-32: ⚠️ Potential issue

Verify the impact of removing --rm-dist flag

The removal of --rm-dist from goreleaser args could lead to potential issues:

  • Previous build artifacts might persist between releases
  • Risk of mixing old and new artifacts in the release
  • Could affect reproducibility of builds

Consider keeping the --rm-dist flag to ensure clean releases.

Run this script to check recent releases for any artifact inconsistencies:

cmd/bitsongd/cmd/v18-slash.go (2)

53-57: Review the keyring backend selection

The keyring is initialized with the "test" backend, which is insecure and intended for testing purposes. For production, consider using a secure backend like "os" or "file":

-	kb, err := keyring.New(sdk.KeyringServiceName(), "test", clientCtx.HomeDir, bufio.NewReader(cmd.InOrStdin()), clientCtx.Codec)
+	kb, err := keyring.New(sdk.KeyringServiceName(), "os", clientCtx.HomeDir, bufio.NewReader(cmd.InOrStdin()), clientCtx.Codec)

97-99: ⚠️ Potential issue

Correct the block height validation condition

In the Validate method of V018StateExportParams, the condition checks if BlockHeight is less than or equal to 19818775, but the error message states that it cannot be less than the v18 upgrade height. To match the error message, adjust the condition to check for less than:

func (s *V018StateExportParams) Validate() error {
-	if s.BlockHeight.LTE(math.NewUint(19818775)) { // v18 upgrade -1
+	if s.BlockHeight.LT(math.NewUint(19818775)) { // v18 upgrade
		return fmt.Errorf("block height cannot be less than v18 upgrade")
	}

Likely invalid or redundant comment.

app/keepers/keepers.go (4)

191-193: Ensure the correct LegacyAmino codec is used

When initializing the SlashingKeeper, confirm that the cdc provided is the appropriate *codec.LegacyAmino instance required by the keeper:


287-296: Confirm the use of bApp.MsgServiceRouter() in GovKeeper

The GovKeeper now uses bApp.MsgServiceRouter() instead of baseapp.NewMsgServiceRouter(). Ensure that bApp.MsgServiceRouter() correctly provides the application's message service router:


293-294: Set legacy router for governance module

Setting the legacy router for the governance module maintains backward compatibility with v1beta1 proposals. This is a good practice to support existing governance proposals.


285-285: Register parameter subspaces for all modules

Ensure that all modules, especially any new modules, have their parameter subspaces registered with the ParamsKeeper to enable parameter management via governance proposals.

e2e/cw-orchestrator/Cargo.toml (2)

42-47: Verify profile configurations

The release profile's optimization level is set to maximum (3). While this provides the best performance, it might significantly increase compilation time. Consider if this trade-off is acceptable for your CI/CD pipeline.


8-14: Verify version compatibility between CosmWasm dependencies

The CosmWasm-related dependencies have different major versions which might cause compatibility issues:

  • cosmwasm-std: 2.1.4
  • cosmwasm-schema: 2.0.0
  • cw-utils, cw2, cw-controllers: 2.0.0

Also applies to: 32-38

✅ Verification successful

Let me gather more information about the cw-orch dependencies since they seem to be the main orchestration tools here.


Let me check the specific version requirements in the e2e test file to understand if there's a specific reason for using cosmwasm-std 2.1.4.


No version compatibility issues found

The different versions are actually compatible and intentional:

  • cosmwasm-std 2.1.4 is required by cw-orch 0.27.0 for e2e testing functionality
  • cw-utils 2.0.0 and cw2 2.0.0 are utility packages that maintain compatibility across 2.x.x versions of cosmwasm
  • The e2e test setup specifically requires these versions to work with the Abstract SDK ecosystem (abstract-* dependencies)
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for version compatibility issues in dependencies
curl -s https://raw.githubusercontent.com/CosmWasm/cw-plus/main/Cargo.toml | grep -A 10 'dependencies'

Length of output: 398


Script:

#!/bin/bash
# Check cw-orch repository for compatibility information
curl -s https://raw.githubusercontent.com/AbstractSDK/cw-orchestrator/main/Cargo.toml | grep -A 15 '\[dependencies\]'

# Also check if there are any specific version requirements in the repository
fd -e rs -e toml . -x rg -l "cosmwasm-std.*2\.1"

Length of output: 203


Script:

#!/bin/bash
# Check the content of the e2e test file
cat e2e/cw-orchestrator/Cargo.toml

# Check if there are any dependency constraints in cw-orch
curl -s https://raw.githubusercontent.com/AbstractSDK/cw-orchestrator/v0.27.0/Cargo.toml | grep -A 20 '\[dependencies\]'

Length of output: 1556

e2e/basic_start_test.go (2)

14-15: Inconsistent test naming pattern detected

The test naming pattern is inconsistent across the codebase:

  • TestBasicBitsongUpgrade in basic_upgrade_test.go uses "Bitsong"
  • TestBasicBtsgStart in basic_start_test.go uses "Btsg"

Please update the test name to maintain consistency with the existing pattern.


23-33: Verify chain creation and user setup

The change from CreateThisBranchChain to CreateICTestBitsongChain needs verification:

  1. Ensure proper chain initialization
  2. Verify user funding amounts
  3. Confirm chain user setup
✅ Verification successful

Let me gather more information about the chain creation and user setup by checking the implementation details.


Let me check one more aspect to verify the chain configuration and image setup.


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

Chain creation and user setup verified successfully

The change from CreateThisBranchChain to CreateICTestBitsongChain is correct and consistent with the codebase:

  • Chain creation is properly implemented using standard configuration with BitsongImage
  • User funding amount (10_000_000_000) is consistent across all test files
  • Chain initialization pattern using BuildInitialChain follows the same pattern used in other tests
  • User setup through GetAndFundTestUsers is consistently implemented
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for other usages of chain creation functions
rg "Create(ThisBranch|ICTest).*Chain" -A 5

Length of output: 1887


Script:

#!/bin/bash
# Check the implementation of CreateChain and related functions
ast-grep --pattern 'func CreateChain($$$) {
  $$$
}'

# Check user funding setup in other test files
rg "GetAndFundTestUsers" -A 3

# Check for any other chain creation patterns
rg "BuildInitialChain" -A 5

Length of output: 2831


Script:

#!/bin/bash
# Check chain configuration and image setup
rg "BitsongImage" -A 3

# Look for chain creation implementation
ast-grep --pattern 'func CreateChain($_, $_, $_, $_) []ibc.Chain {
  $$$
}'

Length of output: 962

scripts/protoc-swagger-gen.sh (1)

9-13: Verify the dependency versions

The script uses specific versions of external dependencies:

  • cosmos-sdk: v0.50.0
  • wasmd: 651abcff89fc2da24c183fb4592021c680a8f156 (commit hash)
  • ibc: 266dbe8e0fc54582bc1b2cb572b4c9b8

Consider using version tags instead of commit hashes for better maintainability.

.github/workflows/interchaintest-e2e.yml (1)

58-64: Review and clean up commented test configurations

The matrix includes commented-out test targets that may be stale.

Consider removing the commented e2e-upgrade test if it's no longer needed, or implement it if it's required for the v0.19.0 patch.

app/params/config.go (1)

Line range hint 38-46: Function rename requires verification of external usage

The function has been renamed from RegisterDenoms to RegisterTokenDenomination. Need to verify all callers are updated.

✅ Verification successful

Function rename is safe - called only in local init function

The renamed function RegisterTokenDenomination is only called from the init() function in the same file (app/params/config.go). Since the old name RegisterDenoms doesn't appear anywhere in the codebase and the new function is properly referenced in its only usage location, the rename is safe and complete.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any remaining references to the old function name
rg "RegisterDenoms" --type go

Length of output: 29


Script:

#!/bin/bash
# Search for any references to the new function name to verify its usage
rg "RegisterTokenDenomination" --type go -A 2

Length of output: 305


Script:

#!/bin/bash
# Find all Go files that might contain initialization or setup code
fd "init\.go$|main\.go$|app\.go$" -e go --exec rg -l "Register.*Denom"

Length of output: 72


Script:

#!/bin/bash
# Search for any function that registers denominations
ast-grep --pattern 'func $_($$) {
  $$$
  sdk.RegisterDenom($$$)
  $$$
}'

Length of output: 75


Script:

#!/bin/bash
# Search for the file where this function is called
rg -B 2 "RegisterTokenDenomination\(\)" --type go

# Also search for any init functions in the same directory
rg "func init\(\)" app/params/ -A 5

Length of output: 547

e2e/polytone_types.go (1)

1-13: Source attribution needs license verification

The code is copied from an external repository. Need to verify license compatibility and maintain attribution.

Consider:

  1. Including the source repository's license
  2. Adding a mechanism to keep the types in sync with the source
  3. Document the process for updating these types when the source changes
.github/workflows/push-docker-image.yml (2)

21-25: LGTM: Environment variables are well-structured

Good practices observed:

  • Using trusted base images from Google Container Registry
  • Version pinning for Alpine base image
  • Clear naming convention for variables

35-35: Verify job name change impact

The job name has been changed from terp-images to bitsong-images. Ensure this change doesn't break any dependent workflows or CI/CD pipelines.

✅ Verification successful

Job name change is safe to proceed

The job name change from terp-images to bitsong-images appears to be safe as:

  • No other workflow files reference either the old (terp-images) or new (bitsong-images) job name
  • The job is self-contained within the push-docker-image.yml workflow and isn't a dependency for other workflows
  • The change is localized to this single workflow file
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for any workflow dependencies on the old job name
rg -l "terp-images" .github/workflows/

Length of output: 38


Script:

#!/bin/bash
# Search for any references to both job names in all workflow files, including as needs dependencies
rg -A 2 -B 2 "terp-images|bitsong-images" .github/workflows/

# List all workflow files to understand the CI/CD structure
ls -la .github/workflows/

# Check git history for the specific file to see the context of the change
git log -p -- .github/workflows/push-docker-image.yml | head -n 50

Length of output: 669

app/genesis.go (2)

19-22: LGTM: Clear documentation update

The function documentation has been updated to specifically mention "bitsong" instead of a generic application name.


Line range hint 26-34: LGTM: Secure WASM configuration

The WASM module configuration follows security best practices:

  • CodeUploadAccess is restricted to AllowNobody
  • InstantiateDefaultPermission is set to AccessTypeEverybody
e2e/polytone_test.go (2)

1-2: LGTM: Good source attribution

Properly documented source of the test implementation.


83-98: LGTM: Well-structured helper function

The HelloMessage function is well-implemented with proper error handling and clear structure.

@@ -28,6 +28,7 @@ paths:
type: string
title: sdk.AccAddress allowed to mint new fantoken
meta_data:
title: Metadata is metadata of fantoken
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Improve the meta_data title description

The current title "Metadata is metadata of fantoken" is tautological and doesn't provide meaningful information to API consumers.

Consider replacing with a more descriptive title, for example:

-title: Metadata is metadata of fantoken
+title: Additional descriptive information associated with the fantoken

Also applies to: 111-111, 33211-33211, 33246-33246, 33304-33304, 33344-33344

Comment on lines +13 to +18
// TODO:
pub fn test_single_node_grpc_sanity() -> AnyResult<()> {
// setup single localbitsong instance and query grpc
// perform all grpc requests from modules available, including ibc queries with grpc
Ok(())
}
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

Implementation needed for gRPC sanity test

The function is currently a stub with only TODO comments. For a comprehensive sanity test, we need to implement:

  1. Local Bitsong instance setup
  2. gRPC module queries
  3. IBC query testing
  4. Error handling for failed queries

Would you like me to help create a detailed implementation plan or open a GitHub issue to track this task? I can provide a structured implementation that includes:

  • Instance setup with proper configuration
  • Comprehensive gRPC query test cases
  • IBC query scenarios
  • Proper error handling and test assertions

Comment on lines +1 to +5
#!/bin/bash
BASE_URL="https://github.com/DA0-DA0/polytone/releases/download/v1.1.0/"
# Directory to store WASM files
POLYTONE_WASM_DIR="e2e/contracts/"
mkdir -p "$POLYTONE_WASM_DIR"
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Enhance script configuration and security

Consider the following improvements:

  1. Make the version configurable via environment variable
  2. Add error handling for directory creation
  3. Add checksum verification for downloaded files

Apply this diff to improve the configuration:

 #!/bin/bash
-BASE_URL="https://github.com/DA0-DA0/polytone/releases/download/v1.1.0/"
+
+# Configuration
+POLYTONE_VERSION=${POLYTONE_VERSION:-"v1.1.0"}
+BASE_URL="https://github.com/DA0-DA0/polytone/releases/download/${POLYTONE_VERSION}/"
+
 # Directory to store WASM files
 POLYTONE_WASM_DIR="e2e/contracts/"
-mkdir -p "$POLYTONE_WASM_DIR"
+
+# Create directory with error handling
+if ! mkdir -p "$POLYTONE_WASM_DIR"; then
+    echo "Error: Failed to create directory $POLYTONE_WASM_DIR"
+    exit 1
+fi
📝 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
#!/bin/bash
BASE_URL="https://github.com/DA0-DA0/polytone/releases/download/v1.1.0/"
# Directory to store WASM files
POLYTONE_WASM_DIR="e2e/contracts/"
mkdir -p "$POLYTONE_WASM_DIR"
#!/bin/bash
# Configuration
POLYTONE_VERSION=${POLYTONE_VERSION:-"v1.1.0"}
BASE_URL="https://github.com/DA0-DA0/polytone/releases/download/${POLYTONE_VERSION}/"
# Directory to store WASM files
POLYTONE_WASM_DIR="e2e/contracts/"
# Create directory with error handling
if ! mkdir -p "$POLYTONE_WASM_DIR"; then
echo "Error: Failed to create directory $POLYTONE_WASM_DIR"
exit 1
fi

scripts/polytone.sh Show resolved Hide resolved
scripts/polytone.sh Show resolved Hide resolved
e2e/utils.go Show resolved Hide resolved
app/params/config.go Show resolved Hide resolved
e2e/conformance/cosmwasm.go Show resolved Hide resolved
scripts/makefiles/proto.mk Show resolved Hide resolved
e2e/basic_upgrade_test.go Outdated Show resolved Hide resolved
@angelorc angelorc merged commit 5960e1c into main Dec 16, 2024
3 of 5 checks passed
@hard-nett hard-nett deleted the v0.18.2-patch branch December 18, 2024 18:19
@hard-nett hard-nett restored the v0.18.2-patch branch December 18, 2024 18:19
@hard-nett hard-nett deleted the v0.18.2-patch branch December 19, 2024 16:45
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