Add ICA-based signature verification for cascade actions#255
Add ICA-based signature verification for cascade actions#255
Conversation
akobrin1
commented
Jan 7, 2026
- Adds support for verifying signatures on actions submitted via ICA (app_pubkey), with a fallback to on-chain verification.
- Refactors cascade signature verification logging to reuse base log fields via logtrace.WithFields.
- Lowers P2P worker shutdown logs from ERROR to INFO to reduce noise.
- Updates tests and gomock usage to match external lumera mocks; fixes keyring signing call signature.
Review complete. No issues found. The PR implements ICA-based signature verification for cascade actions with proper fallback to on-chain verification. The changes include:
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.
Pull request overview
This PR adds support for verifying signatures on actions submitted via ICA (Interchain Accounts) using an app_pubkey field, with fallback to on-chain verification. The implementation includes comprehensive refactoring of cascade signature verification, test infrastructure improvements, and dependency updates.
Key changes:
- Adds ICA-based signature verification using app_pubkey with fallback to on-chain verification
- Refactors cascade signature verification to use reusable base log fields via logtrace.WithFields
- Updates test infrastructure to disable state sync and improve supernode logging
- Migrates from github.com/golang/mock to go.uber.org/mock
Reviewed changes
Copilot reviewed 56 out of 61 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| tools/tools.go | Adds build tag for gomock tool dependency management |
| tests/system/system.go | Adds state sync disabling in test configs |
| tests/system/supernode-utils.go | Adds supernode log file capture to disk |
| tests/system/go.mod/go.sum | Updates Go version, dependencies, and adds ICA test support |
| tests/system/e2e_cascade_test.go | Adds comprehensive ICA E2E test flow with signature verification |
| tests/integration/securegrpc/secure_connection_test.go | Updates gomock import path |
| supernode/cascade/register.go | Passes app_pubkey to signature validation |
| supernode/cascade/ica_verify.go | New file implementing ICA signature verification logic |
| supernode/cascade/ica_verify_test.go | New tests for ICA signature verification |
| supernode/cascade/helper.go | Refactors to use new signature verifier builder |
| supernode/cascade/download.go | Adds ICA signature verification for downloads with improved logging |
| sdk/task/manager.go | Adds PublishEvent method |
| sdk/task/task.go | Improves supernode rejection logging |
| sdk/task/helpers.go | Adds ICA signature validation with fallback logic |
| sdk/task/cascade.go | Adds logging for zero eligible supernodes |
| sdk/event/types.go | Adds SDKMetadataICASigned event type |
| sn-manager/go.mod | Updates Go version and dependencies |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.