Skip to content

Repository files navigation

Walar Wallet

A multi-chain desktop crypto wallet for Bitcoin, Ethereum, and Solana. Built with Tauri v2 + React + TypeScript.

All keys are stored locally. Nothing leaves your device.


Stack

  • Framework: Tauri v2 (Rust backend + React/TS frontend)
  • Package manager: pnpm
  • State: Zustand (persisted, keys never written to disk)
  • Chains: BTC (bitcoinjs-lib), ETH (ethers v6), SOL (@solana/web3.js)
  • Encryption: AES-256 via PBKDF2 (crypto-js)
  • UI: Tailwind CSS + framer-motion

Prerequisites

# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Install Tauri CLI system deps (Linux)
sudo apt install libwebkit2gtk-4.1-dev libssl-dev libgtk-3-dev \
  libayatana-appindicator3-dev librsvg2-dev

# macOS: Xcode Command Line Tools
xcode-select --install

Setup

# Clone and install
git clone <repo>
cd walar-wallet
pnpm install

# Dev mode (hot reload)
pnpm tauri dev

# Production build
pnpm tauri build
# → Outputs: src-tauri/target/release/bundle/

Environment Variables (optional)

Create a .env file in the project root:

# Custom RPC endpoints
VITE_BTC_API_URL=https://blockstream.info/api
VITE_ETH_RPC_URL=https://eth.llamarpc.com
VITE_SOL_RPC_URL=https://api.mainnet-beta.solana.com
VITE_ETHERSCAN_API_URL=https://api.etherscan.io/api
VITE_ETHERSCAN_KEY=your_optional_key
VITE_COINGECKO_API_URL=https://api.coingecko.com/api/v3

Project Structure

src/
├── lib/
│   ├── btc.ts        # Bitcoin: derive, balance, send
│   ├── eth.ts        # Ethereum: derive, balance, send
│   ├── sol.ts        # Solana: derive, balance, send
│   ├── crypto.ts     # AES-256 keystore encryption
│   └── prices.ts     # CoinGecko price fetching
├── store/
│   └── walletStore.ts  # Zustand state (keys never persisted)
├── pages/
│   ├── Onboarding.tsx  # Multi-step wallet creation/import
│   ├── LockScreen.tsx  # Password unlock
│   ├── Dashboard.tsx   # Main wallet UI
│   └── Settings.tsx    # Settings panel
├── components/
│   ├── ui/             # Button, Input, Logo, ProgressSteps
│   ├── wallet/         # SeedPhraseGrid
│   └── modals/         # SendModal, ReceiveModal
└── styles/globals.css

Security Model

  • Mnemonic is encrypted with AES-256 using PBKDF2(password, salt, 100k iterations)
  • Decrypted keys live in-memory only (Zustand, non-persisted)
  • zustand/middleware persist explicitly excludes keys, mnemonic, isUnlocked
  • Auto-lock on inactivity: add useIdleTimer hook (TODO)
  • No network calls with private key data — signing is local

Roadmap

  • Auto-lock after inactivity (configurable)
  • ERC-20 token support
  • SPL token support
  • Hardware wallet (Ledger) integration
  • Windows port
  • Price charts
  • Address book

About

walar crypto wallet

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages