A privacy-focused payment and transfer application on Avalanche C-Chain
SnowPay Wallet is a privacy-focused payment and transfer application that operates on the Avalanche C-Chain.
Public blockchain transactions are transparent, allowing anyone to track balances and transaction histories. This presents significant challenges from a privacy perspective. This application provides a solution that enables users to safely and easily move assets while keeping their transaction histories and balances hidden from external observers.
- Private Transfers: Privacy protection through encryption of transfer amounts and balances
- Asset Concealment: Separation of transaction history through deposits, transfers, and withdrawals
- Simple Operation: Intuitive user interface
- Avalanche Integration: Designed specifically for the Avalanche C-Chain network
- Individuals and corporations who value financial privacy
- Users who don't want to publicly expose their asset status or transaction history
- Crypto asset users seeking simple and intuitive operability
- Deposit: Users deposit assets from their wallet into the app's private environment
- Private Transfer: Execute transfers to other users using private balances
- Withdraw: Withdraw as original ERC20 tokens when needed
This breaks the direct connection between sender and recipient addresses on the blockchain.
- Frontend: React 18 + TypeScript + Vite
- Styling: Tailwind CSS + Avalanche Brand Guidelines
- Blockchain: Avalanche Fuji Testnet
- Privacy Technology: eERC SDK (Encrypted ERC-20)
- Wallet Connection: WalletConnect/AppKit
- Zero-Knowledge Proofs: Circom circuits
- Node.js (v16 or higher)
- npm or yarn
- MetaMask or other Web3 wallet
- Clone the repository:
git clone <repository-url>
cd mvp- Install dependencies:
npm install- Start development server:
npm run dev- Open http://localhost:5173 in your browser
npm run build- Connect Wallet: Click "Connect Wallet" to connect your Web3 wallet
- Generate Decryption Key: Create a decryption key for private transactions
- Register: Complete registration with the SnowPay protocol
- Deposit: Add funds to your private balance
- Transfer: Execute private transfers to other users
- Withdraw: Return funds to your public wallet
Balances are encrypted using zero-knowledge proofs, making them invisible to external observers while allowing users to verify and use their funds.
When sending tokens, amounts are encrypted, ensuring transaction privacy while maintaining blockchain transparency and security.
Only users can decrypt and verify their private balances using the generated decryption keys.
The application integrates with the following contracts:
- eERC Converter: Handles conversion between public ERC-20 and encrypted tokens
- Demo Token (DMT): Test token for demonstration purposes
- Privacy Circuits: Zero-knowledge circuits for transaction privacy
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLintnpm run typecheck- Run TypeScript type checking
src/
├── components/ # React components
│ ├── layout/ # Header, logo, etc.
│ ├── wallet/ # Wallet-related components
│ ├── forms/ # Form components
│ └── operations/ # Transaction operations
├── config/ # Configuration files
├── pages/ # Page components
├── pkg/ # Utility packages
└── main.tsx # Application entry point
This application follows Avalanche brand guidelines:
- Primary: Avalanche Blue (
#3055B3) - Secondary: Bright Blue (
#058AFF) - Background: Light Gray (
#F5F5F9) - Text: Dark Gray (
#161617)
- Primary Font: Inter
- Display Font: Poppins (Aeonik alternative)
- Monospace Font: Anonymous Pro
- Never share your private keys or decryption keys
- Always verify transaction details before confirming
- Use testnets for development and testing
- Keep your wallet software up to date
This project is licensed under the MIT License.
Notice: This is experimental software. Use only on testnets for development purposes and at your own risk.