BlockWallet is a decentralized wallet application built with Flutter for the frontend and Node.js (Express) for the backend. It supports secure Ethereum transactions, QR code payments, username-based transfers, and privacy-preserving zero-knowledge proof (ZKP) features.
- 🦄 Modern Flutter UI: Cross-platform, responsive, and beautiful.
- 🔒 Ethereum Wallet: Send/receive ETH, view balances, and transaction history.
- 🧑💻 Username-based Transfers: Send ETH using usernames instead of addresses.
- 📱 QR Code Support: Scan and generate QR codes for wallet addresses.
- 🕵️ Zero-Knowledge Proofs: Privacy-preserving transactions using ZKP.
- 🗄️ Local Storage: Transaction history stored securely with Hive.
- 🌐 Backend API: Node.js server for user management and ZKP proof generation.
Flutter (Frontend) <----> Node.js/Express (Backend) <----> Ethereum Blockchain
- Flutter: Handles wallet UI, QR, and user interactions.
- Node.js/Express: Provides REST APIs for user lookup, ZKP proof generation, and interacts with Ethereum via Web3.
- PostgreSQL: (Optional) Used for storing user <-> address mappings.
- Install Flutter: Flutter Install Guide
- Clone the repository:
git clone https://github.com/yourusername/blockwallet.git cd blockwallet - Install dependencies:
flutter pub get
- Run the app:
flutter run
- Install Node.js: Node.js Download
- Install dependencies:
cd backend npm install - Configure environment variables (see
.env.exampleor set directly in code). - Start the server:
For username/address API:
node zkpBackend.js
node ganache/fetchUsername.js
- Flutter: Edit
lib/services/ethereum_service.dartto set your Ethereum RPC URL, private key, and contract address. - Backend: Set your Ganache/Infura RPC URL, contract ABI/address, and PostgreSQL credentials in the backend files or via environment variables.
- Send ETH: Enter a username or address, specify amount, and send.
- Receive ETH: Share your QR code or address.
- Transaction History: View all past transactions in the app.
- Privacy: ZKP is used for privacy-preserving transactions (backend must be running).
By using BlockWallet, you agree to the following terms:
- No Warranty: BlockWallet is provided "as is" without warranty of any kind. Use at your own risk.
- Security: You are responsible for safeguarding your private keys and credentials. The developers are not liable for any loss of funds.
- Open Source: This project is open source and intended for educational and experimental purposes. Do not use with mainnet funds.
- Privacy: No personal data is collected by the app. All sensitive operations are performed locally or on your chosen backend.
- Compliance: You are responsible for complying with local laws and regulations regarding cryptocurrency usage.
This project is licensed under the MIT License.
Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.
For support or questions, open an issue or contact thangarajk176@example.com.