- A DeFi protocol on Injective can store trade receipts permanently on Cascade.
- An NFT marketplace on Osmosis can use Cascade for immutable media storage.
- A DAO on the Cosmos Hub can archive governance proposals.
How it works
- The controller chain submits
MsgSendTxcontaining a packedMsgRequestAction. - The IBC relayer delivers the packet to Lumera, the host chain.
- Lumera’s ICA host module unpacks and executes the
MsgRequestAction. - An ICA address on Lumera pays the escrow fee. It must be pre-funded.
- The action is registered on-chain with an
action_id. - The application uploads the file directly to the SN-API, the HTTP API served by SuperNodes, using the
action_id.
Application-level keypairs
The ICA address on Lumera has no user-held private key. The controller chain controls it. Cascade solves this with anapp_pubkey field in MsgRequestAction.
- The application generates a keypair on the controller side.
- The public key is included in the action registration.
- The private key signs file uploads to the SN-API.
- This separates the control plane (IBC messages) from the data plane (file transfers).
ICA helpers in the Go SDK
The Go SDK provides helpers for ICA-based Cascade.The ICA client CLI
The Lumera ICA client provides a reference CLI.Security considerations
- Control plane isolation. IBC messages carry only metadata and fee escrow. File data never touches the IBC channel.
- Data plane authentication. File uploads to the SN-API use application-level signatures, independent of the ICA address.
- Fee pre-funding. The ICA address must hold
ulumebefore registering actions. Monitor its balance to prevent failed registrations.
Next steps
Go SDK
Install and configure the Go SDK used for ICA flows.
Upload lifecycle
What happens after the action registers on-chain.
How Cascade works
The end-to-end Cascade storage model in one page.