Skip to content

donewiththedollar/keyspring-wallet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

KeySpring Wallet πŸ”‘πŸ”’

Version License Platform MPC Sui

A non-custodial Ethereum browser extension wallet powered by Ika's distributed key generation (2PC-MPC) on Sui blockchain.

Your private key never exists in one place - it's split between your browser and the Ika network, eliminating single points of failure.

Features | How It Works | Installation | Tech Stack


🌟 Overview

KeySpring Wallet is a next-generation cryptocurrency wallet that leverages Multi-Party Computation (MPC) technology to provide unparalleled security without sacrificing user experience.

Unlike traditional wallets where your entire private key is stored in one place (creating a single point of failure), KeySpring uses Ika Network's Distributed Key Generation (DKG) protocol to split your key across multiple parties - your browser extension holds one share, and Ika's decentralized network on Sui blockchain holds the other.

No seed phrases. No single point of failure. True non-custodial security.

+------------------------+          +------------------------+
|   Your Browser         |          |   Ika Network (Sui)    |
|   (Secret Share 1)     |   MPC    |   (Secret Share 2)     |
+------------------------+   <-->   +------------------------+
           |                                    |
           +-----------> Combined Signature <---+
                         (Key never combined!)
                                |
                                v
                         ETH Transaction

✨ Features

πŸ” Security Features

  • Non-Custodial MPC - Your private key is cryptographically split. No single entity (including you!) ever holds the complete key
  • 2PC-MPC Signing - Two-party computation ensures secure transaction signing without key reconstruction
  • AES-GCM Encryption - Vault encrypted with 600K PBKDF2 iterations
  • No Seed Phrases - Eliminates the #1 attack vector in crypto

🎨 9 Beautiful Themes

Customize your wallet with professionally designed themes:

  • KeySpring (Default) - Modern clean design with green accents
  • Phantom Dark - Sleek purple with glowing violet accents
  • Phantom Light - Clean light mode with purple accents
  • Midnight Blue - Deep ocean blue with electric accents
  • Forest Green - Nature-inspired emerald with warm wood tones
  • Rose Gold - Elegant pink with golden highlights
  • Ocean Deep - Teal and aqua wave gradients
  • Bloomberg Terminal - Professional trading style with orange accents (PRO)
  • Quantum Void - Cyberpunk neon glow effects (NEON)

πŸ’³ Wallet Management

  • Multi-Wallet Support - Manage up to 10 wallets with intuitive tab interface
  • Multi-Chain Ready - Ethereum, Sepolia, Polygon, Arbitrum, Optimism, Base
  • Portfolio Dashboard - 7-day balance visualization with portfolio chart
  • Token Display - View all your ERC-20 tokens and NFTs

πŸ’Έ Transaction Features

  • ENS Support - Send to .eth names automatically resolved
  • Smart Gas Selection - Choose between Slow/Normal/Fast fee options
  • QR Code Receive - Easy address sharing for receiving funds
  • Activity History - Filterable transaction log with status tracking

🌐 Web3 Integration

  • EIP-1193 Provider - Full dApp connectivity standard
  • EIP-6963 Discovery - Modern wallet detection protocol
  • Connect to dApps - Works with Uniswap, OpenSea, and all Web3 apps
  • Transaction Approvals - Review and approve transactions securely

βš™οΈ Additional Features

  • Auto-Lock Timer - Configurable 1/5/15/30 minute inactivity lock
  • Password Protection - Optional password for transaction signing
  • Connected Sites Manager - View and revoke dApp connections
  • Auto-Updates - Built-in update checker and download

🧠 How It Works

KeySpring uses Ika Network's 2PC-MPC (Two-Party Computation Multi-Party Computation) protocol, a cutting-edge cryptographic approach that eliminates single points of failure in key management.

The DKG Flow

1. WALLET CREATION
   +-----------------+     +-----------------+     +------------------+
   |  User Request   | --> | DKG Ceremony    | --> | Key Shares Gen   |
   |  Create Wallet  |     | Initiated       |     | On Sui Blockchain|
   +-----------------+     +-----------------+     +------------------+
                                                          |
                                                          v
2. KEY DISTRIBUTION
   +-------------------+                    +-------------------+
   | Share 1 (Browser) | <-- Split Key --> | Share 2 (Ika Net) |
   | Encrypted locally |                    | On Sui validators |
   +-------------------+                    +-------------------+

3. TRANSACTION SIGNING (2PC-MPC Protocol)
   +-------------+     +--------------+     +-------------+
   | User Signs  | --> | Presign Gen  | --> | Ika Signs   |
   | Locally     |     | Threshold MPC|     | On Network  |
   +-------------+     +--------------+     +-------------+
          |                                        |
          +-------> Combined Signature <-----------+
                   (Full key NEVER exists!)
                            |
                            v
                   +-------------------+
                   | Broadcast to ETH  |
                   +-------------------+

Why This is More Secure

Traditional Wallet KeySpring MPC Wallet
Single private key stored Key split across 2 parties
Seed phrase = single point of failure No seed phrase needed
If compromised, total loss Need BOTH shares to sign
Hardware wallet still has single key True distributed security

πŸ“¦ Architecture

keyspring-wallet-pub/
|
+-- extension/               # Browser extension (Chrome Manifest V3)
|   +-- src/
|   |   +-- popup/           # React UI components
|   |   |   +-- pages/       # Main app pages (Home, Send, Settings, etc.)
|   |   |   +-- components/  # Reusable UI components
|   |   |   +-- hooks/       # React hooks (useTheme, useWallet, etc.)
|   |   |   +-- lib/         # Theme configs, utilities
|   |   +-- background/      # Service worker (keyring, RPC handler)
|   |   +-- content/         # Content script (page injection)
|   |   +-- inpage/          # EIP-1193 provider (window.ethereum)
|   |   +-- lib/             # DKG module, chain configs, storage
|   +-- manifest.json        # Chrome extension manifest
|   +-- package.json         # Extension dependencies
|
+-- backend/                 # Elysia backend for DKG orchestration
|   +-- src/
|   |   +-- index.ts         # Elysia HTTP server
|   |   +-- dkg-executor.ts  # DKG ceremony orchestrator
|   |   +-- config.ts        # Environment configuration
|
+-- frontend/                # Next.js web frontend (optional)
|   +-- src/
|       +-- pages/           # Next.js pages
|       +-- lib/             # Shared utilities

Key Components

Component Purpose
extension/src/lib/dkg.ts Client-side DKG operations using @ika.xyz/sdk
extension/src/inpage/provider.ts EIP-1193 Ethereum provider injected into pages
extension/src/background/keyring.ts Encrypted vault management
backend/src/dkg-executor.ts Server-side DKG ceremony coordinator

πŸš€ Installation

From Source

# Clone the repository
git clone https://github.com/your-username/keyspring-wallet-pub.git
cd keyspring-wallet-pub/extension

# Install dependencies
npm install

# Build the extension
npm run build

# Load in Chrome:
# 1. Go to chrome://extensions
# 2. Enable "Developer mode"
# 3. Click "Load unpacked"
# 4. Select the `extension/dist` folder

Development Mode

cd extension

# Watch for changes and auto-rebuild
npm run dev

πŸ› οΈ Tech Stack

Frontend (Extension)

Technology Purpose
React 18 UI framework
TypeScript Type safety
Vite Build tooling with HMR
Tailwind CSS Utility-first styling
Zustand Lightweight state management
React Router Navigation
ethers.js v6 Ethereum interactions
viem Modern EVM utilities

Cryptography

Technology Purpose
@ika.xyz/sdk Ika Network DKG protocol
@mysten/sui Sui blockchain client
@noble/hashes Keccak256 hashing
Web Crypto API AES-GCM encryption
PBKDF2 Key derivation (600K iterations)

Backend

Technology Purpose
Bun JavaScript runtime
Elysia Fast HTTP framework
TypeScript Type safety

Build & Development

Technology Purpose
Vite Fast builds with HMR
@crxjs/vite-plugin Chrome extension build support
PostCSS CSS processing
Autoprefixer CSS compatibility

🌐 Supported Networks

Network Chain ID Status
Ethereum Mainnet 1 βœ… Supported
Sepolia Testnet 11155111 βœ… Supported
Polygon 137 βœ… Supported
Arbitrum One 42161 βœ… Supported
Optimism 10 βœ… Supported
Base 8453 βœ… Supported

Custom networks can be added through Settings > Networks.


πŸ›‘οΈ Security Model

What KeySpring Protects Against

  • βœ… Seed phrase theft - No seed phrase exists
  • βœ… Single device compromise - Need both shares to sign
  • βœ… Browser extension attacks - Key share is encrypted
  • βœ… Server compromise - Server only has partial share
  • βœ… Man-in-the-middle - Cryptographic verification

What You're Responsible For

  • πŸ”‘ Your wallet password (used to encrypt your local share)
  • πŸ’» Keeping your device malware-free
  • πŸ‘€ Verifying transaction details before signing

❓ FAQ

Q: What if Ika Network goes down? A: Your share is stored locally. Ika is a decentralized network on Sui with high availability. Even if some nodes go offline, the network continues operating.

Q: Can Ika access my funds? A: No. Ika only holds one share. Without your browser's share, funds cannot be moved. This is mathematically guaranteed by the MPC protocol.

Q: Is this audited? A: The Ika SDK and protocol are developed by the Ika team. The wallet extension uses standard encryption practices.

Q: Which browsers are supported? A: Chrome, Brave, Edge, and other Chromium-based browsers (Manifest V3).


🀝 Credits


πŸ”— Links


πŸ“„ License

MIT License - see LICENSE for details.


KeySpring Wallet - Your keys, distributed. Your assets, secured.

πŸ”’ Non-Custodial | ⚑ Fast | 🎨 Beautiful | πŸ›‘οΈ Secure

About

Key-spring Wallet

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages