這是針對午夜網路「隱私第一」挑戰- 保護資料提示的提交。
快速連結:
技術棧:
注意:捐贈者和貢獻者這兩個術語可以互換使用,意思相同,都是「產生 ZKP 的增值方」。
FestFund 解決了籌款中最棘手的悖論之一:在捐贈者隱私和透明認可之間做出選擇。我利用 Midnight Network 的零知識證明 (ZK) 基礎設施,建立了一個平台,其中捐贈金額/交易/錢包地址/姓名等重要參數完全保密,同時維護可驗證的公開排行榜和里程碑追蹤。
提出的創新:以加密方式證明籌款進度,而無需暴露個人捐款金額 - 使隱私和透明度共同發揮作用,並確保數字(未顯示)有效(使用產生的承諾)。
🌐 即時前端: https://festfund.vercel.app/
📋 注意:現場演示展示了完整的 UI/UX,但智能合約功能透過 Hardhat 在本地執行,以保證專案免費。完整的區塊鏈功能可在本地開發設定中使用。請使用 Hardhat 區塊鏈建立錢包。因此,已部署的服務 [vercel 前端和 koyeb 後端] 應該無法執行,因為合約並未部署在真實的區塊鏈上。目前,它只是一個高級框架 - 您必須在本地執行才能獲得完整體驗。
🎥 示範影片(兩個影片相同,請忽略我的語速,中途的錯誤在幾分鐘內得到解決,但為了節省時間,該部分被剪掉了):
📂 GitHub 倉庫: ARYPROGRAMMER/FestFund
效能: Midnight Network 將 ZK 證明生成時間從 418 毫秒縮短至 1 毫秒,提高了 418 倍。
核心整合:
Midnight Testnet-02 RPC:透過https://rpc.testnet-02.midnight.network
進行即時 ZK 操作
官方 SDK: @midnight-ntwrk/zswap
加密原語包
雙重架構:午夜網路和自架模式之間的自動回退
實施片段:
// Real Midnight Network integration
const zkProof = new ZKProofIntegration();
await zkProof.initialize("midnight-network");
// Generate private commitment (1ms with Midnight vs 418ms self-hosted)
const commitment = await zkProof.generateDonationCommitment(
amount,
donorSecret,
eventId,
minimumAmount
);
Midnight 的預優化電路和生產基礎架構消除了複雜的設置,同時提供了企業級可靠性和全面的文件。我之前使用的是 powersoftau (8),對於相同的零知識證明 (zkp),它的延遲為 430 毫秒(最大值)。 Midnight 的延遲為 3 毫秒(最大值,罕見),根據我的測試,它更安全。
平台及製作/除錯截圖:
隱私透過最強的加密演算法構成了 FestFund 的基礎架構,保證:
🔒 零知識隱私:
使用 ZK 承諾加密隱藏個人捐款金額。
平台管理員無法存取原始捐贈資料。
無效保護可防止雙重支付而不洩露金額(有爭議,在這種情況下每個錢包地址只允許一次)。
🏆 透明問責:
公共排行榜顯示捐贈者排名但不公開金額(捐贈者在捐贈時可以選擇此參數)。
里程碑進展可透過加密證明進行驗證。
活動組織者在保護個人隱私的同時接收匯總資料。
現實世界的影響:
支持對敏感事業(政治、醫療、爭議)進行私人捐贈。
透過透明的排名保持捐贈者的認可。
透過數學可證明的隱私確保遵守法規。
先決條件:
快速入門:
# Clone repository
git clone https://github.com/ARYPROGRAMMER/FestFund.git
cd FestFund
# Hardhat (new terminal, root dir, precompiled in github)
npx hardhat node
npm run deploy
# Backend setup
cd backend && npm install && npm start
# ✅ Backend: http://localhost:3001
# Frontend setup (new terminal)
cd ../frontend && npm install && npm run dev
# ✅ Frontend: http://localhost:3000
環境配置[DEV]:
# Backend .env can be ignored , backend can take from root
root .env:
NODE_ENV=development
APP_URL=http://localhost:3000
USE_MOCK_MODE=true
PORT=3001
BACKEND_URL=http://localhost:3001
CORS_ORIGIN=http://localhost:3000,http://localhost:3001
NEXT_PUBLIC_BACKEND_URL=http://localhost:3001
NEXT_PUBLIC_APP_NAME=FestFund
NEXT_PUBLIC_APP_DESCRIPTION=Privacy-First Donation Platform
NEXT_PUBLIC_USE_MOCK_WALLET=true
NEXT_PUBLIC_ENABLE_ANALYTICS=false
NEXT_PUBLIC_ENABLE_NOTIFICATIONS=true
NEXT_PUBLIC_DEFAULT_THEME=light
MONGODB_URI=&appName=
JWT_SECRET=your-super-secret-jwt-key-change-for-production
BCRYPT_SALT_ROUNDS=12
GEMINI_API_KEY=
NEXT_PUBLIC_BLOCKCHAIN_RPC=http://localhost:8545
NEXT_PUBLIC_CHAIN_ID=31337
PRIVATE_KEY=7c60d2cd7f18a7891ae8b169f2fdf082d44206acf9c331e81113343537b81fd0
NEXT_PUBLIC_FUND_MANAGER_ADDRESS=0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0
NEXT_PUBLIC_VERIFIER_ADDRESS=0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512
NEXT_PUBLIC_MOCK_ERC20_ADDRESS=0x5FbDB2315678afecb367f032d93F642f64180aa3
ZK_MODE=midnight-network
NEXT_PUBLIC_ZK_MODE=midnight-network
ZK_CIRCUIT_PATH=./zk/circuits
ZK_PROVING_KEY_PATH=./zk/build/proving_key.zkey
ZK_VERIFICATION_KEY_PATH=./zk/build/verification_key.json
ZK_CIRCUIT_WASM_PATH=./zk/build/donation_commitment_v1.wasm
VERIFIER_CONTRACT_PATH=./contracts/Verifier.sol
MIDNIGHT_RPC_URL=https://rpc.testnet-02.midnight.network
MIDNIGHT_INDEXER_URL=https://indexer.testnet-02.midnight.network/api/v1/graphql
MIDNIGHT_INDEXER_WS_URL=wss://indexer.testnet-02.midnight.network/api/v1/graphql/ws
MIDNIGHT_NETWORK_ID=TestNet
MIDNIGHT_WALLET_SEED=your_64_character_hex_seed_here_or_mnemonic_phrase
NEXT_PUBLIC_MIDNIGHT_RPC_URL=https://rpc.testnet-02.midnight.network
NEXT_PUBLIC_MIDNIGHT_NETWORK_ID=TestNet
NEXT_PUBLIC_MIDNIGHT_EXPLORER_URL=https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.testnet-02.midnight.network
ENABLE_LOGGING=true
# My Frontend .env.local
NEXT_PUBLIC_BACKEND_URL=http://localhost:3001
NEXT_PUBLIC_APP_NAME=FestFund
NEXT_PUBLIC_APP_DESCRIPTION=Privacy-First Donation Platform with Zero-Knowledge Proofs
NEXT_PUBLIC_CHAIN_ID=31337
NEXT_PUBLIC_ENABLE_ANALYTICS=false
NEXT_PUBLIC_ENABLE_NOTIFICATIONS=true
NEXT_PUBLIC_BLOCKCHAIN_RPC=http://localhost:8545
NEXT_PUBLIC_FUND_MANAGER_ADDRESS=0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0
NEXT_PUBLIC_VERIFIER_ADDRESS=0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512
NEXT_PUBLIC_MOCK_TOKEN_ADDRESS=0x5FbDB2315678afecb367f032d93F642f64180aa3
NODE_ENV=development
測試 ZK 整合:
建立活動 → 進行私人捐贈 → 觀察 1ms ZK 證明生成
查看排行榜 → 無需曝光即可查看排名
驗證里程碑成就是否經過加密證明
架構: Next.js 前端、Express.js API、MongoDB 持久性、與 Midnight Network 整合的 Circom 電路、Hardhat 智慧合約。
專為 Midnight Network 社群打造 - Arya Singh
更多詳細資訊/疑問,請發送電子郵件至 - [email protected]