-
Notifications
You must be signed in to change notification settings - Fork 1
Support ICA MsgRequestAction (app_pubkey validation, signature verification, and action_id/status responses) #85
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
Conversation
…cation, and action_id/status responses
Review complete. No issues found. This PR adds ICA (Interchain Account) support for
Mention @roomote in a comment to request specific changes to this pull request or fix all unresolved issues. |
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.
Pull request overview
This pull request adds comprehensive support for Interchain Account (ICA) message handling in the action module, specifically for MsgRequestAction operations. The implementation includes validation logic to ensure ICA accounts provide an application-level public key for signature verification, while preventing non-ICA accounts from supplying this field to avoid ambiguity.
Key Changes
- Added
app_pubkeyfield toMsgRequestActionproto definition with corresponding validation that enforces ICA accounts must provide it and non-ICA accounts must not - Enhanced
MsgApproveActionResponseto includeaction_idandstatusfields for better response tracking - Implemented context-based caching of creator account information to optimize account lookups and enable ICA-aware signature verification
Reviewed changes
Copilot reviewed 21 out of 23 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| proto/lumera/action/v1/tx.proto | Added app_pubkey field to MsgRequestAction and action_id/status to MsgApproveActionResponse |
| x/action/v1/types/tx.pb.go | Auto-generated protobuf code for new fields with marshaling/unmarshaling support |
| x/action/v1/types/errors.go | Added ErrInvalidAppPubKey error for validation failures |
| x/action/v1/keeper/msg_request_action_validation.go | New validation logic for ICA vs non-ICA creator accounts and app_pubkey handling |
| x/action/v1/keeper/msg_request_action_validation_test.go | Unit tests covering ICA and non-ICA validation scenarios |
| x/action/v1/keeper/msg_server_request_action.go | Integrated account info caching and validation at message handler entry point |
| x/action/v1/keeper/msg_server_approve_action.go | Updated response to populate action_id and status fields |
| x/action/v1/keeper/crypto.go | Enhanced signature verification to use cached account info and support ICA app-level signatures |
| x/action/v1/keeper/crypto_cache_test.go | Tests verifying cache-based signature verification for both ICA and non-ICA accounts |
| x/action/v1/keeper/msg_server_test.go | Added test for response field population and updated existing assertions |
| tests/integration/action/action_integration_test.go | Updated integration test to verify response fields |
| x/action/v1/keeper/action_cascade.go | Minor formatting fixes (import reordering and whitespace) |
| x/action/v1/keeper/action.go | Changed error type from ErrInvalidSignature to ErrInvalidAddress for address parsing |
| app/ibc.go | Added helper functions for ICA account type checking |
| app/ibc_test.go | Unit tests for ICA helper functions |
| tests/system/wasm/ica_test.go | Enhanced test documentation with clearer flow comments |
| Makefile | Removed clean-cache dependency from build-proto and added GOPROXY configuration |
| go.mod, go.sum | Updated dependencies including protoc-gen-validate and various minor version bumps |
| .github/workflows/*.yml | Updated to use consistent checkout and setup-go actions |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Added unit coverage for ICA/non-ICA validation and cache-aware signature paths.