Lumera Cascade

Introduction

Lumera Cascade — permanent, decentralized file storage for the Cosmos ecosystem.

What is Cascade?

Cascade is a permanent decentralized storage protocol built into the Lumera Protocol — a Cosmos SDK Layer-1 blockchain. It enables developers to store files on a distributed network of Supernodes with a single on-chain transaction.

Unlike traditional storage solutions that charge recurring fees, Cascade follows a pay-once, store-forever model. Files are chunked, encoded with RaptorQ (RFC 6330) erasure coding, and distributed across the Supernode network, guaranteeing data availability even if individual nodes go offline.

Why Cascade?

FeatureCascadeIPFSArweave
Persistence modelPermanent (enforced by protocol)Pin-dependentPermanent (endowment)
RedundancyReed-Solomon erasure coding across SupernodesNone (depends on pinning services)Blockweave replication
Cosmos nativeYes — IBC-compatible, Interchain AccountsNoNo
Fee modelOne-time on-chain feeFree (pinning costs extra)One-time token fee
Data availabilityProtocol-guaranteed via Supernode consensusBest-effortProtocol-guaranteed

Key Capabilities

  • Permanent storage: Upload files once, retrieve them forever. No subscriptions, no renewals.
  • Erasure coding: Files are encoded with RaptorQ, so any sufficient subset of Supernodes can reconstruct the original data.
  • Cosmos interoperability: Any IBC-connected chain can use Cascade storage via Interchain Accounts (ICS-27).
  • Multi-SDK support: Official SDKs for TypeScript, Go, and Rust.
  • Wallet integration: Browser-based apps can use Keplr and Leap wallets for signing.

Architecture at a Glance

┌─────────────┐     ┌──────────────┐     ┌──────────────────┐
│  Your App   │────▶│  Lumera SDK  │────▶│  Lumera Chain    │
│  (Browser/  │     │  (JS/Go/Rust)│     │  (Cosmos SDK L1) │
│   Node.js)  │     └──────┬───────┘     └────────┬─────────┘
└─────────────┘            │                      │
                           │ File upload          │ MsgRequestAction
                           ▼                      ▼
                    ┌──────────────┐     ┌──────────────────┐
                    │  SN-API      │────▶│  Supernode Mesh  │
                    │  (REST API)  │     │  (RaptorQ chunks)│
                    └──────────────┘     └──────────────────┘
  1. Your application calls the SDK to upload a file.
  2. The SDK registers an action on-chain via MsgRequestAction, which records metadata and fees.
  3. The file is sent to the SN-API (Supernode API), which distributes encoded chunks across the Supernode mesh.
  4. To download, the SDK authenticates via ADR-036 signature and streams the reconstructed file back.

Quick Start

Get up and running in under 5 minutes:

npm install @lumera-protocol/sdk-js @cosmjs/proto-signing @cosmjs/stargate
upload.ts
import { createLumeraClient } from "@lumera-protocol/sdk-js";
import { DirectSecp256k1HdWallet } from "@cosmjs/proto-signing";
 
const wallet = await DirectSecp256k1HdWallet.fromMnemonic(
  "your mnemonic here",
  { prefix: "lumera" }
);
const [account] = await wallet.getAccounts();
 
const client = await createLumeraClient({
  preset: "testnet",
  signer: wallet,
  address: account.address,
  gasPrice: "0.025ulume",
});
 
// Upload a file
const file = new Uint8Array(/* your file bytes */);
const result = await client.Cascade.uploader.uploadFile(file, {
  fileName: "my-document.pdf",
  isPublic: true,
  taskOptions: { pollInterval: 2000, timeout: 300000 },
});
 
console.log("Stored permanently with action ID:", result.action_id);

Next Steps

On this page