Coldstar Documentation

The cold signing system for Solana. Transform any USB drive into disposable cold storage.

Introduction

Coldstar is a command-line based cold wallet system that transforms any standard USB drive into a disposable signing medium, with private keys existing in decrypted form only briefly and only in system memory.

Rather than introducing another piece of hardware into an already complex trust landscape, Coldstar proposes a simpler and more verifiable model. It is designed for developers, traders, and security-conscious operators who value transparency, control, and operational flexibility over consumer-oriented convenience.

๐Ÿ’ก Key Concept

Unlike traditional hardware wallets where keys persist on the device forever, Coldstar decrypts keys only in RAM for the brief moment needed to sign a transaction. Once complete, keys are immediately erased from memory.

Why Coldstar?

Installation

Prerequisites

Install from Source

Terminal
# Clone the repository
git clone https://github.com/coldstar-wallet/coldstar
cd coldstar

# Build the project
cargo build --release

# Install globally (optional)
cargo install --path .

Verify Installation

Terminal
coldstar --version
# coldstar 0.1.0

Quick Start

1. Initialize a Cold Wallet

Insert a USB drive and initialize it as a Coldstar wallet:

Terminal
# Initialize wallet on USB drive
coldstar init /media/usb

# You'll be prompted to create a password
# This password encrypts your keys with AES-256

2. Get Your Public Key

Terminal
# Export your public key (safe - no secrets exposed)
coldstar pubkey --wallet /media/usb

# Output: 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU

3. Sign a Transaction

Terminal
# Sign a transaction (keys decrypted in RAM only)
coldstar sign --wallet /media/usb --tx transaction.json

# Enter your password when prompted
# Keys are decrypted, transaction signed, keys erased
โš ๏ธ Important

Never share your password. The password is the only thing protecting your encrypted keys. If someone has your USB drive AND your password, they can access your funds.

Architecture

Coldstar's architecture is intentionally simple. It consists of three components:

  1. Encrypted Storage (USB) - Your USB drive stores encrypted key material using AES-256
  2. Coldstar CLI - The command-line tool that handles encryption, decryption, and signing
  3. System RAM - Where keys are briefly decrypted for signing operations
๐Ÿ’พ
USB Drive
Encrypted keys
โ†’
๐Ÿง 
System RAM
Brief decryption
โ†’
โœ๏ธ
Signed TX
Broadcast ready

RAM-Only Signing

The core security property of Coldstar is ephemeral RAM-only signing. Here's how it works:

  1. User initiates a signing operation via CLI
  2. Coldstar reads encrypted key material from USB
  3. User enters password; keys are decrypted in RAM only
  4. Transaction is signed in memory
  5. Decrypted keys are immediately zeroed from memory
  6. Signed transaction is output (ready to broadcast)

At no point do plaintext private keys exist on disk. The USB drive contains only encrypted material. This dramatically reduces the attack surface compared to hardware wallets where keys persist for the device's lifetime.

Encryption

Coldstar uses industry-standard cryptographic primitives:

Component Algorithm Purpose
Key Encryption AES-256-GCM Encrypts private keys at rest
Key Derivation Argon2id Derives encryption key from password
Signing Ed25519 Solana transaction signatures

CLI: coldstar init

Initialize a new cold wallet on a USB drive.

Usage
coldstar init <path> [options]

Options:
  --import <seed>    Import existing seed phrase
  --force            Overwrite existing wallet
  --help             Show help

CLI: coldstar sign

Sign a transaction with RAM-only key exposure.

Usage
coldstar sign [options]

Options:
  --wallet <path>    Path to wallet on USB
  --tx <file>        Transaction file (JSON)
  --output <file>    Output signed transaction
  --help             Show help

CLI: coldstar stake

Stake SOL with cold signing.

Usage
coldstar stake [options]

Options:
  --wallet <path>       Path to wallet on USB
  --amount <sol>        Amount of SOL to stake
  --validator <pubkey>  Validator pubkey to delegate to
  --help                Show help

CLI: coldstar pubkey

Export your public key (safe, no secrets exposed).

Usage
coldstar pubkey [options]

Options:
  --wallet <path>    Path to wallet on USB
  --help             Show help

Trust Model

Coldstar's trust model is fundamentally different from hardware wallets:

What You Trust Coldstar Hardware Wallets
Proprietary Hardware No Yes
Vendor Firmware No Yes
Open Source Code Yes (auditable) Varies
Your Operating System Yes Partially
Supply Chain Minimal (any USB) Vendor-dependent

Comparison

Feature Coldstar Ledger Unruggable
Key Storage Encrypted on any USB Secure element Dedicated device
Key Lifetime RAM only (seconds) Device lifetime Device lifetime
Automation CLI-first Limited Limited
Open Source Fully No Yes
Hardware Cost ~$5 (any USB) $79+ $150+

Threat Model

What Coldstar Protects Against

What Coldstar Does NOT Protect Against

๐Ÿ” Security Boundary

Coldstar assumes you control your operating system and can verify the Coldstar codebase. For maximum security, use an air-gapped machine and verify builds.

Docker Setup

Coldstar can be run in a Docker container for consistent environments and easy deployment.

Quick Start with Docker

Terminal
# Clone the repository
git clone https://github.com/ChainLabs-Technologies/coldstar
cd coldstar

# Build and run with the quick script
./docker-run.sh

# Or build manually
docker build -t coldstar .
docker run -it --rm \
    -v $(pwd)/wallet:/wallet \
    -v $(pwd)/transactions:/transactions \
    coldstar

Using Docker Compose

Terminal
# Start Coldstar (mainnet)
docker-compose run coldstar

# Start development mode (devnet)
docker-compose run coldstar-dev

# Build fresh image
docker-compose build --no-cache

Docker Architecture

The Docker image uses a multi-stage build:

  1. Builder stage - Compiles the Rust secure signer with full toolchain
  2. Runtime stage - Slim Python image with only runtime dependencies
๐Ÿ’ก Volume Mounts

The container mounts /wallet and /transactions directories. Your wallet data persists on your host machine, not inside the container.

USB Device Access (Linux)

To access USB devices from within Docker on Linux:

Terminal
# Run with USB device passthrough
docker run -it --rm \
    --privileged \
    --device=/dev/sdb:/dev/sdb \
    -v $(pwd)/wallet:/wallet \
    coldstar
โš ๏ธ macOS/Windows Note

Direct USB passthrough is not supported on macOS or Windows Docker Desktop. Mount your USB drive contents to a local directory and use volume mounts instead.

Automation & CI/CD

Coldstar's CLI-first design makes it ideal for automated workflows:

automation.sh
#!/bin/bash
# Example: Automated signing script

# Build transaction
solana transfer recipient.json 10 --sign-only --output tx.json

# Sign with Coldstar (password from env or secure input)
coldstar sign --wallet /media/usb --tx tx.json --output signed.json

# Broadcast
solana send signed.json

Air-Gapped Setup

For maximum security, use Coldstar on an air-gapped machine:

  1. Air-gapped machine - A computer never connected to the internet
  2. Build Coldstar - Transfer source code via USB, build on air-gapped machine
  3. Initialize wallet - Create wallet on air-gapped machine
  4. Sign offline - Transfer unsigned transactions via USB, sign offline
  5. Broadcast online - Transfer signed transactions to online machine for broadcast
๐ŸŒ
Online Machine
Build TX
โ†’
๐Ÿ’พ
USB Transfer
Unsigned TX
โ†’
๐Ÿ”’
Air-Gapped
Sign TX
โ†’
๐Ÿ“ก
Online Machine
Broadcast

View on GitHub ยท Back to Home