Store files on Solana for 1,000x less cost than traditional methods
A revolutionary file storage system that leverages Solana's transaction ledger for permanent, cost-effective file storage. Store data in transaction history instead of expensive on-chain accounts.
Traditional Solana Storage: 0.1007 SOL for 14 KB (~$20)
Inscription Method (Ours): 0.0001 SOL for 14 KB (~$0.02)
YOU SAVE: 1,000x cheaper! ๐
๐ Ultra Cheap - 1,000x cheaper than traditional storage
โก Fast Parallel Uploads - Concurrent transaction submission
๐ Permanent - Stored in immutable Solana ledger
โ
Verifiable - SHA-256 integrity checking
๐ Simple - One PDA address = One file
๐ ๏ธ Production Ready - Complete CLI + documentation
cd solana-inscription-system/cli
npm install && npm run build && npm linksolana config set --url devnet
solana airdrop 2echo "Hello Solana!" > test.txt
sol-inscribe upload -f test.txt -c devnetOutput:
โ
Upload complete!
File PDA: 8Kp2wXxYqF7zM9nC5vR4tB3sA6hD2fE1...
That's it! Your file is now permanently on Solana. ๐
sol-inscribe upload --file myfile.pdf --cluster devnetsol-inscribe read --pda <YOUR_PDA> --output recovered.pdf --cluster devnetsol-inscribe close --pda <YOUR_PDA> --cluster devnetsol-inscribe info --file myfile.pdfYour File (14 KB)
โ
Split into 18 chunks (800 bytes each)
โ
Calculate SHA-256 hash
โ
Create tiny PDA (76 bytes) - Stores metadata only
โ
Send 18 transactions with chunk data
โ
Data stored PERMANENTLY in Solana's transaction history
โ
Close PDA, get rent refund
โ
Net cost: 0.0001 SOL! ๐
Traditional Method:
- Stores data in on-chain accounts
- Must pay rent to keep data alive
- Rent = file_size ร rate ร time
- Expensive! ๐ธ
Our Inscription Method:
- Stores data in transaction instruction data
- Transaction data is permanent (part of ledger)
- Only pay tiny PDA rent (refundable!)
- Only pay transaction fees (tiny!)
- Super cheap! ๐
| Component | Cost | Refundable? |
|---|---|---|
| PDA Creation | 0.00142 SOL | โ Yes |
| 18 Chunk Transactions | 0.00009 SOL | โ No |
| Init + Close TXs | 0.00001 SOL | โ No |
| Net Cost | 0.0001 SOL |
- Traditional: $20.14
- Inscription: $0.02
- You save: $20.12 ๐
| File Size | Traditional | Inscription | Savings |
|---|---|---|---|
| 14 KB | 0.1007 SOL | 0.0001 SOL | 99.9% |
| 100 KB | 0.7144 SOL | 0.0007 SOL | 99.9% |
| 1 MB | 7.2589 SOL | 0.0070 SOL | 99.9% |
| 10 MB | 72.5888 SOL | 0.0700 SOL | 99.9% |
Program ID: BkkGGd4ccFd6ypmrCLsKU64EhT3gKCqgYAYoLECVwFAg
3 Instructions:
initialize_session- Create file sessioninscribe_chunk- Store chunk dataclose_session- Close and refund
Account (76 bytes):
pub struct FileSession {
owner: Pubkey, // Who owns this file
file_hash: [u8; 32], // SHA-256 for verification
total_chunks: u16, // How many chunks
chunks_inscribed: u16, // Progress tracker
}Features:
- File chunking (800 bytes per chunk)
- SHA-256 hashing
- Parallel transaction submission
- Integrity verification
- Progress indicators
- Error handling
- NFT Metadata - Permanent metadata storage
- Documents - Certificates, diplomas, contracts
- Archives - Historical records, logs
- Configuration Files - App configs, parameters
- Code Storage - Smart contract source code
- Small Files - Up to 10 MB efficiently
- Very large files (>100 MB) - too many TXs
- Frequently updated content
- Real-time streaming
- Private/encrypted data (everything is public)
# Upload
sol-inscribe upload -f document.pdf -c devnet
# Download
sol-inscribe read -p <PDA> -o recovered.pdf -c devnet
# Verify
diff document.pdf recovered.pdf # Should be identical!for file in *.txt; do
sol-inscribe upload -f "$file" -c devnet
doneimport { uploadFile } from 'sol-inscribe';
const pda = await uploadFile({
filePath: 'data.json',
cluster: 'mainnet-beta',
batchSize: 20
});
console.log(`File stored at: ${pda}`);solana-inscription-system/
โโโ programs/file-inscription/ # Rust smart contract
โโโ cli/ # TypeScript CLI tool
โโโ target/idl/ # Program interface
โโโ docs/ # Documentation
# Smart contract
cd programs/file-inscription
cargo build-bpf
# CLI
cd cli
npm install
npm run build| File Size | Upload Time | Cost |
|---|---|---|
| 10 KB | ~10s | 0.0001 SOL |
| 100 KB | ~60s | 0.0007 SOL |
| 1 MB | ~10min | 0.0070 SOL |
# Faster uploads
sol-inscribe upload -f large.pdf --batch-size 50
# Use mainnet RPC for better speed
sol-inscribe upload -f data.json --cluster https://your-rpc.com- โ Owner-only operations
- โ Cryptographic verification
- โ Immutable data
โ ๏ธ All data is publicโ ๏ธ No built-in encryption
- Max chunk: 800 bytes
- Many TXs for large files
- Retrieval requires TX history query
- Data is permanent (cannot delete)
- Test on devnet first
- Save all PDA addresses
- Close sessions to reclaim rent
- Verify downloads
- Monitor SOL balance
- Cost Savings: 1,000x cheaper
- Program ID:
BkkGGd4ccFd6ypmrCLsKU64EhT3gKCqgYAYoLECVwFAg - Chunk Size: 800 bytes max
- PDA Size: 76 bytes only
- Max File Size: Unlimited (practically <10 MB)
Contributions welcome! Feel free to:
- ๐ Report bugs
- ๐ก Suggest features
- ๐ Improve docs
- ๐ง Submit PRs
MIT License - see LICENSE file
- โ Core inscription functionality
- โ CLI tool
- โ Documentation
- ๐ Compression support
- ๐ Web interface
- ๐ Resume uploads
- ๐ฎ Encryption layer
- ๐ฎ Access control
- ๐ฎ Search functionality
sol-inscribe upload -f myfile.pdf -c devnetSave 99.9% on storage costs today! ๐
Full Documentation โข Examples โข Cost Analysis
Built with โค๏ธ on Solana
โญ Star us on GitHub!