📖 Guide

What is Kaspa P2P File Storage?

Kaspa P2P File Storage is a decentralized file storage system built on the Kaspa blockchain. Files are encrypted and stored directly on the blockchain using transaction payloads.

  • Decentralized: No central server - files stored on blockchain
  • Encrypted: AES-256-GCM encryption with password protection
  • Permanent: Once uploaded, files remain on blockchain forever
  • Networks: Supports Mainnet (production) and Testnet-10 (testing)

Quick Start: Download

  1. Check Status tab - Network connection is established automatically on page load
  2. Go to Download tab
  3. Enter download info: TxID:BlockID:Password
  4. Click Verify → Click Download
Download Availability by Connection Type:
  • Full Node: Recent files (~30 hours, before pruning)
  • Archive Node: Files up to displayed retention period
  • api.kaspa.org: All files (Community service - please minimize load)
  • kas.fyi: All files (Recommended - Enterprise-grade service)

💡 Recommended: Use kas.fyi to reduce load on community-run api.kaspa.org service. Requires API key from kas.fyi.

No wallet required for downloading files.

Quick Start: Upload

  1. Check Status tab - Confirm Full Node is connected (required for upload)
  2. Go to Settings tab → Enter your private key → Connect wallet
  3. Go to Upload tab → Select file → Set password
  4. Click Upload → Save the TxID:BlockID:Password

Requires Full Node connection and wallet with KAS balance for transaction fees.

FAQ (Frequently Asked Questions)

💰 How much does upload cost?

Upload cost is miner fees only (approximately 1 KAS per 100MB uncompressed).
• Actual cost: Only transaction fees (~0.0003 KAS per 20KB chunk)
• Transaction amount returns to yourself - only fees are consumed
• With compression (if applicable): Cost can be further reduced
Rewards go to miners only - Kaspa currently has no rewards for archive nodes

📥 Is download free?

Yes, download is completely free.
No wallet or KAS balance required for downloading files.

📊 What is the maximum file size? Can I upload large files?

Yes, large files are supported - basically unlimited with chunked upload system:

How it works:
• Files are split into chunks (~22KB per chunk)
• Progress is automatically saved
• Resume from last checkpoint if interrupted

Size limits:
• When using MetaTxID: Limited to 25,600 transactions
  → Approximately 560MB maximum data size (25,600 × 22KB)
• For larger files: Use multiple MetaTxIDs or alternative methods

Recommended: Consolidate UTXOs before uploading files >1MB

🏗️ Is this an L2 service?

No, this is a Layer 1 (L1) service.
• All communication and data storage are on Kaspa L1 blockchain
• Files are stored directly in transaction payloads on-chain
• API services (api.kaspa.org, kas.fyi) are third-party services for convenience
• Core functionality operates purely on Kaspa blockchain

📄 What is the file format specification?

The complete file format specification is documented in:
KASPA_FILE_FORMAT.md

Includes details on:
• Metadata structure (KENV format)
• Transaction payload format
• Chunk organization and boundaries
• Directory structure format

📊 Status

🌐 Network Connection Status

Full Node: Not Connected
Node: -
Used for file uploads and downloading recent data before pruning
Archive Node: Not Connected
Status: -
Connections: 0/5
Dedicated nodes with extended block history. Required for downloading old files.
Display days and actual storage duration differ - maintains longer history than shown.
api.kaspa.org (REST API) Fallback: Not Checked
Endpoint: -
Response: -
Alternative when Kaspa network is unavailable. Community service.
kas.fyi (Kaspa Developer Platform) Priority Fallback: Not Configured
API Key: Not Set
Alternative when Kaspa network is unavailable.
Enterprise-grade service by kas.fyi. Requires API key from kas.fyi.

💰 Wallet Status

This service writes data to the transaction payload during self-transfer of $KAS, recording data in the blockchain. Wallet connection and $KAS are only required for uploads. Upload cost is miner fees only. For download-only usage, wallet connection is not required.
Status: Disconnected
Address: -
Balance: -
⚙️ Please connect wallet from Settings tab

📁 Workspace

Workspace: Not Set (Browser Storage)

📂 File Management

Icon File Name Size MetaTxID Date
📄 sample.txt 1.2 KB Qm... a1b2c3... kaspa:... 12/25 12/25
📁 docs 5.3 MB Qm... - kaspa:... 12/24 12/24

📁 File Upload

📋 Upload Requirements
Wallet connected
File selected
Password (8+ characters)

📥 Download

📋 Supported formats (File/Directory):
• Recommended: TxID:BlockID:Password (fastest, no API needed)
• Alternative: TxID:BlockID (fast, password entered separately)
• Fallback: TxID only (slower, uses REST API)
─ or ─

📁 Drop or click to load .kaspa file

🛠️ Directory Builder

📥 Import

⚙️ Settings

🚀 Session Setup

💰 Wallet & UTXO Management

Status: Disconnected
Address:
-
Balance: -

📁 Workspace Settings

Workspace: Not Set (Browser Storage)

Setting a workspace allows automatic saving of progress files and continuation of work even after closing the browser.

🗄️ Archive Node Discovery

Archive Monitor | - | -
Network: -
M blocks
(0.864M = 1 day)
times
(Stops on consecutive non-archive node detection)
Search: Not Started
Connect: [-----] 0/5 | Avg: -
Checking: Waiting
Waiting for connection...
Recent events:
No events

⚙️ Preferences

🎨 Theme Settings

Switch application appearance

Network Settings

REST API Settings

⚠️ REST API is third-party. Disabling will use only Kaspa L1.
Privacy-conscious users should disable it.

Status: Enabled

🔐 Privacy Settings

When disabled, you'll need to enter the password each time you download a file. This provides better security but less convenience.

⚠️ This will permanently remove all saved passwords from all entries. This action cannot be undone.

🔧 Kaspa Developer Platform (kas.fyi)

Enterprise-grade API for fast transaction data retrieval. No need to run your own node. When configured, serves as priority fallback for downloading files. Get your API key at docs.kas.fyi

💸 Transaction Amount Settings

KAS

⚠️ Amount for recording data on blockchain.
Recommended: 0.2-1 KAS (Too small will cause errors)
Actual cost: Only fees (about 0.0003 KAS per 20KB)
※ Amount returns to yourself, only fees are consumed

Current setting: 1 KAS

📊 WebSocket Configuration

📊 WebSocket Statistics
Maximum wait time for transaction confirmation (Default: 300 seconds)

Download Settings

Parallel Download (Experimental)
Use 8 parallel connections for files with 10+ chunks
REST API Test Mode
Skip RPC and download via REST API
Force Archive Node
Searching for archive nodes...

🔄 Kaspa System Restart

Restart WASM SDK and Kaspa core.js for a clean state.
Try this when you have connection errors or malfunctions.

📤 Upload Settings

🐛 Debug Log

🔐 WASM SDK Security Features Investigation

Investigate available security methods in Kaspa WASM SDK for protecting Private Keys

Click buttons above to investigate WASM SDK capabilities...

🛡️ CSP Violation Monitor

Monitors Content Security Policy violations (Report-Only mode)

Violations: 0
No CSP violations detected yet...

🔌 Multiple WebSocket Test (Experimental)

Test feature to listen for Block-added events on multiple nodes to improve BlockID detection speed

Status: Disconnected

🚫 Block Event Filter

⚠️ Maintains WebSocket connection while ignoring only BlockID events

Filtered: 0 items
Last filter: -

🔪 REST API Kill Switch

⚠️ Temporarily disable REST API (for debugging)

Status: ● Enabled
Skip count: 0
Last skip: -

🧪 MetaTxID Chunk Limit (Test Feature)

Adjust the number of chunks per MetaTxID for testing purposes (Production: 160)

Effect Examples:

  • 160 (Production): 16MB file = Regular meta only
  • 10 (Test): 16MB file = 16 intermediate metas + 1 super meta
  • 2 (Minimum): 4MB file = 2 intermediate metas + 1 super meta
⚠️ Warning: This is for testing only. Smaller values create more MetaTxIDs, which increases upload time and blockchain costs. Always use 160 for production.