A privacy-focused wallet application for the Telos ecosystem, forked from zkBob UI. zkTelos Wallet enables private transactions using zero-knowledge proofs and is available as both a web application and cross-platform desktop application.
- 🔒 Privacy-First: Zero-knowledge proof technology for private transactions
- 🌐 Multi-Platform: Web application and Electron desktop apps (macOS, Windows, Linux)
- 🔗 WalletConnect Support: Connect with mobile wallets via QR code
- 💰 Multi-Token Support: Support for ERC20 tokens and native tokens
This project is a monorepo managed with Yarn Workspaces, containing:
telos-privacy-wallet/
├── apps/
│ └── zktelos-wallet/ # Main zkTelos Wallet application
│ ├── src/ # React application source code
│ ├── public/ # Static assets
│ ├── electron/ # Electron desktop app configuration
│ └── package.json
├── packages/
│ ├── zkbob-client-js/ # Forked zkBob client library (local)
│ │ ├── src/ # TypeScript source code
│ │ ├── lib/ # Compiled JavaScript output
│ │ └── package.json
│ └── libzkbob-rs-node/ # Rust bindings for zkBob (Neon)
│ ├── src/ # Rust source code
│ └── package.json
├── package.json # Root workspace configuration
└── yarn.lock
apps/zktelos-wallet: The main React application (web and Electron)packages/zkbob-client-js: A local fork of the zkBob client library with custom modifications for Telospackages/libzkbob-rs-node: Node.js bindings for the zkBob Rust library
Download the latest release from the Releases page to get the desktop applications.
- macOS
- Windows
- Linux
- Download the
.dmgfile - Open the disk image
- Drag zkTelos Wallet to Applications folder
- Download the
.exeinstaller - Run the installer and follow the prompts
AppImage:
chmod +x "zkTelos Wallet-0.0.1-arm64.AppImage"
./zkTelos\ Wallet-0.0.1-arm64.AppImageDebian/Ubuntu:
sudo dpkg -i zkTelos-wallet_0.0.1_arm64.deb- Node.js 18+ (recommended: Node.js 18.x or higher)
- Yarn 1.x (Classic Yarn)
- Git
-
Clone the repository:
git clone https://github.com/protofire/telos-privacy-wallet.git cd telos-privacy-wallet -
Install dependencies (from the root directory):
yarn
This will install dependencies for all workspaces.
All commands should be run from the root directory unless otherwise specified.
Start the web application in development mode:
yarn startThe application will open at http://localhost:3000
To develop with automatic recompilation of the zkbob-client-js package:
yarn devThis runs both:
yarn watch:zkbob- Watches and rebuildszkbob-client-json changesyarn start- Starts the React development server
Build the web application:
yarn buildThis builds the production-ready web application to apps/zktelos-wallet/build/
Build the zkbob-client-js package:
yarn build:zkbobWatch zkbob-client-js for changes:
yarn watch:zkbobBuild for all platforms:
yarn electron:build:prodPlatform-specific builds:
# macOS
yarn electron:build:mac
# Windows
yarn electron:build:win
# Linux
yarn electron:build:linuxBuilt applications will be available in the apps/zktelos-wallet/dist/ directory.
E2E Tests: See e2e-ci-cd/README.md for instructions on running end-to-end tests with Playwright.
The zkbob-client-js package is a local fork of the zkBob client library, located in packages/zkbob-client-js/.
-
Edit the source code in
packages/zkbob-client-js/src/ -
Build the package (from root):
yarn build:zkbob
Or watch for changes:
yarn watch:zkbob
-
Changes are immediately available in
zktelos-walletthanks to Yarn Workspaces
To add dependencies to the main app:
yarn workspace zktelos-wallet add <package-name>To add dependencies to zkbob-client-js:
yarn workspace zkbob-client-js add <package-name>To add dev dependencies:
yarn workspace zktelos-wallet add -D <package-name>
yarn workspace zkbob-client-js add -D <package-name>You can also run commands directly in a workspace:
# From root, run a command in a specific workspace
yarn workspace zktelos-wallet <command>
yarn workspace zkbob-client-js <command>
# Example: Run tests only for the app
yarn workspace zktelos-wallet test-
REACT_APP_CONFIG: Set to"dev"for development or"prod"for production -
REACT_APP_BUILD_TARGET: Set to"electron"when building desktop applicationsREACT_APP_WALLETCONNECT_PROJECT_ID: Your WalletConnect Cloud project IDREACT_APP_LOCK_TIMEOUT: Auto-lock timeout in milliseconds (default: 900000)
Sentry Configuration (Optional):
REACT_APP_SENTRY_PUBLIC_KEY: Sentry Public KeyREACT_APP_SENTRY_PRIVATE_KEY: Sentry Private KeyREACT_APP_SENTRY_PROJECT_ID: Sentry Project ID
Sentry integration includes tracking of a unique
support_id(generated inSupportIdContext) and user IP address (via ipapi.co) for troubleshooting. -
Telos Testnet (chainId: 41) - Development environment
-
Telos Mainnet (chainId: 40) - Production
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License and Apache-2.0 License.
- Built on zkBob UI
- Powered by zkbob-client-js
- Developed by Protofire