-
Notifications
You must be signed in to change notification settings - Fork 14
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
refactor: avoid converting origin coin to ERC20 during crosschain refund #762
Conversation
WalkthroughThe pull request introduces several modifications across multiple files in the Changes
Possibly related PRs
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? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
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)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🧹 Outside diff range and nitpick comments (2)
x/crosschain/types/expected_keepers.go (1)
52-52
: LGTM! Consider adding a comment for consistency.The addition of the
GetCache
method completes the set of CRUD operations for the cache, which is a good improvement. The method signature is appropriate and follows Go conventions.Consider adding a brief comment describing the method's purpose, similar to the other methods in this interface, for consistency and improved readability. For example:
// GetCache retrieves a cached value associated with the given key GetCache(ctx context.Context, key string) (sdkmath.Int, error)x/crosschain/keeper/bridge_call_out.go (1)
144-157
: Add unit tests for the new refund logicThe new logic introduced in lines 144-157 adds important validation steps in the
RefundOutgoingBridgeCall
method. To ensure reliability, unit tests should be added to cover these new cases.Please add unit tests for the following scenarios:
- When
originAmount
is retrieved successfully from the cache.- When
originAmount
is not found and defaults to zero.- When
baseCoins
are less thanoriginAmount
, and the method returns the expected error.- When
baseCoins
correctly subtractoriginCoin
, and the subsequent refund process works as intended.This will help prevent future regressions and maintain code quality.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (6)
- x/crosschain/keeper/bridge_call_out.go (3 hunks)
- x/crosschain/keeper/many_to_one.go (1 hunks)
- x/crosschain/mock/expected_keepers_mocks.go (1 hunks)
- x/crosschain/types/expected_keepers.go (1 hunks)
- x/erc20/keeper/cache.go (1 hunks)
- x/ibc/middleware/keeper/relay_test.go (2 hunks)
🧰 Additional context used
🔇 Additional comments (5)
x/erc20/keeper/cache.go (1)
21-23
: LGTM! Well-integrated cache retrieval method.The new
GetCache
method is a valuable addition to theKeeper
struct. It complements the existing cache-related methods (HasCache
,SetCache
,DeleteCache
) and provides a consistent way to retrieve cached values. The method signature and implementation align well with the established patterns in this file.x/ibc/middleware/keeper/relay_test.go (3)
15-15
: LGTM: New import added correctly.The new import for
crosschaintypes
is properly formatted and follows Go conventions. The alias is clear and descriptive, which enhances code readability.
84-84
: Approve with clarification: New cache setting for IBC transfers.The addition of caching for IBC transfers aligns with the PR objective of refactoring the crosschain refund process. This change appears to be correct and consistent with the modifications mentioned in other files.
However, could you please clarify the purpose of the hardcoded value
1
inNewIBCTransferKey(packet.SourceChannel, 1)
? If this represents a dynamic value (e.g., a sequence number), it might be better to derive it from the packet or other context.
Line range hint
1-184
: Summary: Minimal changes enhance IBC transfer testing.The changes in this file are minimal but significant. They introduce caching for IBC transfers, which aligns with the PR objective of refactoring the crosschain refund process. The new import and the additional cache setting in the test case for error acknowledgments are well-integrated into the existing test structure. These modifications enhance the test coverage by ensuring that the new caching mechanism is verified in error scenarios.
Overall, the changes appear to be correct and do not introduce any obvious issues. They contribute to a more robust testing framework for the IBC middleware keeper.
x/crosschain/mock/expected_keepers_mocks.go (1)
421-434
: LGTM: GetCache method implementation looks good.The
GetCache
method is correctly implemented using the gomock framework. It properly mocks the cache retrieval operation with appropriate parameters and return types.
Summary by CodeRabbit
Release Notes
New Features
Erc20Keeper
interface, allowing retrieval and setting of cached values.Bug Fixes
IBCCoinRefund
method for better clarity and efficiency.Tests
These updates improve the overall functionality and reliability of the cross-chain interactions within the application.