This repository contains the Ethereum Mist wallet code from 2016, modified to work with external RPC providers instead of requiring a local Ethereum node. The primary purpose is to help users who created wallets in the original Mist 0.6.0 and need to recover them using their keystore file and password.
- Web3 Provider: Changed from IPC (Inter-Process Communication) to HTTP RPC
- Node Startup: Bypassed the local node startup process
- RPC Configuration: All web3 connections now use external RPC providers
- Recovery Tools: Added dedicated wallet recovery scripts and interfaces
If you just want to recover your wallet quickly:
- Install Node.js 8.17.0 using nvm (see Prerequisites below)
- Get an Infura API key (free at infura.io)
- Run:
node wallet-recovery.js https://mainnet.infura.io/v3/YOUR_PROJECT_ID - Enter your keystore file path and password
That's it! The script will recover your wallet and show you the private key.
IMPORTANT: Before attempting wallet recovery, you must set up the environment properly.
- Node.js Version 8.17.0 (exact version required for compatibility)
- npm (comes with Node.js)
- An Ethereum RPC provider (Infura, Alchemy, or local node)
# Install nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# Reload your shell
source ~/.bashrc # or ~/.zshrc depending on your shell# Install Node.js 8.17.0
nvm install 8.17.0
nvm use 8.17.0
# Verify the version
node --version # Should show v8.17.0
npm --version # Should show 5.x.x# Navigate to the project directory
cd mist-0.6.0
# Install dependencies
npm install --productionOption A: Use a Public RPC Service (Easiest)
- Sign up for Infura (free tier available)
- Get your project ID
- Use URL:
https://mainnet.infura.io/v3/YOUR_PROJECT_ID
Option B: Use a Local Ethereum Node
# Install geth (if not already installed)
# On macOS:
brew install ethereum/ethereum/geth
# Start geth with HTTP RPC
geth --http --http.addr "0.0.0.0" --http.port 8545This is the easiest and most reliable method.
-
Ensure you have an Ethereum RPC provider (see Step 4 in Prerequisites)
-
Run the recovery script:
node wallet-recovery.js [RPC_URL]
Examples:
# Using Infura (recommended) node wallet-recovery.js https://mainnet.infura.io/v3/YOUR_PROJECT_ID # Using local geth node node wallet-recovery.js http://localhost:8545 # Using Alchemy node wallet-recovery.js https://eth-mainnet.alchemyapi.io/v2/YOUR_API_KEY
-
Follow the prompts to enter your keystore file path and password
-
Ensure you have an Ethereum RPC provider (see Step 4 in Prerequisites)
-
Start a simple HTTP server (required for CORS):
# Python 3 python3 -m http.server 8000 # Or Python 2 python -m SimpleHTTPServer 8000 # Or using Node.js npx http-server
-
Open the test file in a web browser:
http://localhost:8000/test-wallet.html -
Upload your keystore file and enter your password
Note: This method is more complex and may require additional setup.
-
Complete all prerequisites (Node.js 8.17.0, dependencies, etc.)
-
Start an Ethereum RPC provider (see Step 4 in Prerequisites)
-
Run the application:
node main.js
Troubleshooting for Method 3:
- If you get "Cannot find module 'electron'", this method won't work
- Use Method 1 (recovery script) instead
The original Mist wallet stored keystore files in:
- Mac:
~/Library/Application Support/Mist/keystore/ - Windows:
C:\Users\[username]\AppData\Roaming\Mist\keystore\ - Linux:
~/.config/Mist/keystore/
-
"Cannot find module 'electron'"
- The application requires Electron to run. Try using the recovery script instead.
-
"Error connecting to Ethereum node"
- Make sure your Ethereum node is running and accessible
- Check the RPC URL is correct
- Verify the node supports JSON-RPC
-
"Error recovering wallet"
- Double-check your password
- Verify the keystore file is not corrupted
- Make sure you're using the correct keystore file
-
"Incompatible keystore format"
- This version of Mist uses an older keystore format
- The recovery script should handle the decryption correctly
This version uses Web3.js 0.15.1, which is compatible with the keystore format used by Mist 0.6.0.
The keystore files use the standard Ethereum keystore format with:
- AES-128-CTR encryption
- PBKDF2 key derivation
- Scrypt key derivation (for newer versions)
This setup works with:
- Ethereum Mainnet
- Ethereum Testnets (Ropsten, Rinkeby, etc.)
- Any Ethereum-compatible network with JSON-RPC support
Before attempting to recover a real wallet, you can test the system to ensure everything is working correctly:
# Run the basic functionality test
node test-wallet-recovery.js
# Run the keystore decryption test
node test-keystore-decryption.js
# Run the recovery process demo
node test-recovery-demo.js- ✅ Web3.js compatibility and initialization
- ✅ Keystore file structure validation
- ✅ RPC provider functionality
- ✅ Recovery script availability
- ✅ Web interface availability
- ✅ Dependencies installation
If all tests pass, the wallet recovery system is ready to use. If any tests fail, check the setup instructions above.
Once you've successfully recovered your wallet, you should see:
- Your wallet address
- Your private key (keep this secure!)
- Your wallet balance (if connected to mainnet)
You can then import this wallet into any modern Ethereum wallet like MetaMask, MyEtherWallet, or any other compatible wallet.
This is a fork of the original Ethereum Mist 0.6.0 browser. The original Mist browser was the tool of choice to browse and use Ðapps in 2016.
For reference, the original development setup required:
- Electron version 0.37.2
- Node.js and npm
- Meteor for the frontend
- Local geth node for blockchain interaction
The original Mist is no longer maintained and this fork is specifically for wallet recovery purposes only.
This project maintains the same GPL-3.0 license as the original Mist project.