A blockchain-based decentralized web application that revolutionizes the KYC verification process using Ethereum smart contracts, providing secure, transparent, and efficient identity verification for banks and their customers.
- Secure Registration: Register on the platform with personal information
- Document Upload: Upload KYC documents (passport, citizenship front/back) with RSA encryption
- Request Verification: Submit KYC verification requests to banks
- Grant Access: Control which banks can access your verified KYC information
- Track Status: Monitor KYC verification status in real-time
- Multi-Bank Management: Manage relationships with multiple banks from one platform
- Bank Registration: Register institutional accounts with license information
- Client Management: View and manage all bank clients
- KYC Verification: Verify or reject customer KYC submissions
- Access Requests: Request access to customers' verified KYC data
- Secure Data Access: Access encrypted customer information with proper permissions
- Dashboard Analytics: Comprehensive dashboard for managing clients and requests
- Bank Verification: Verify and approve bank registrations
- Platform Oversight: Monitor overall platform activity
- User Management: Oversee user and bank registrations
- Contract:
DecentralizedKYC1.sol
- Blockchain: Ethereum (compatible with local Ganache and testnets)
- Features:
- User and bank registration
- KYC status management (NOT_UPLOADED, UPLOADED, REQUESTED, VERIFIED, REJECTED)
- RSA cryptography for secure data handling
- Access control with role-based permissions
- Bank-client relationship management
- Framework: React 17+ with Material-UI components
- Wallet Integration: MetaMask support via ethers.js
- Storage: IPFS integration for document storage
- Features:
- Responsive web design
- Multi-role interfaces (User, Bank, Admin)
- Real-time blockchain interaction
- Document upload and encryption
- Modern UI/UX with Material Design
- Blockchain: Ethereum, Solidity 0.8.19
- Frontend: React, Material-UI, ethers.js
- Storage: IPFS, Web3.Storage
- Development: Hardhat, Ganache
- Cryptography: RSA encryption for sensitive data
- Testing: Hardhat testing framework
- Node.js: Version 16.x (Required)
- MetaMask: Browser extension for wallet connection
- Ganache: Local Ethereum blockchain (for development)
- Git: For version control
git clone [repository-url]
cd decentralized-kyc
cd smart_contract
npm install
# Deploy to local Ganache
npm run deploy ganache
# Alternative Hardhat commands
npx hardhat compile
npx hardhat test
npx hardhat node
cd ../frontend
npm install
# Update contract details in utils/constants.js
# Set the deployed contract address and ensure ABI is updated
npm start
- Start Ganache: Run local Ethereum blockchain
- Deploy Contract: Use the deploy script to deploy the smart contract
- Update Constants: Update
frontend/src/utils/constants.js
with:- Contract address from deployment
- Ensure ABI is current
- Connect MetaMask: Import Ganache accounts to MetaMask
- Access Application: Open
http://localhost:3000
cd smart_contract
# Compile contracts
npx hardhat compile
# Run tests
npx hardhat test
# Deploy to local network
npx hardhat run scripts/deploy.js --network localhost
# Deploy to specific network
npm run deploy [network-name]
cd frontend
# Start development server
npm start
# Build for production
npm run build
# Run tests
npm test
- Connect Wallet β MetaMask integration
- Register Account β Provide personal information
- Upload KYC Documents β Passport, citizenship documents
- Request Verification β Submit to chosen bank
- Track Status β Monitor verification progress
- Grant Access β Allow banks to access verified data
- Connect Wallet β MetaMask integration
- Register Bank β Provide institutional details
- Admin Verification β Wait for admin approval
- Manage Clients β View and verify customer KYC
- Access Requests β Request access to customer data
- Verification Process β Approve or reject KYC submissions
- Connect Wallet β Admin wallet connection
- Bank Approval β Verify and approve bank registrations
- Platform Monitoring β Oversee system activity
- User Management β Monitor user activities
- RSA Encryption: Customer data encrypted with RSA cryptography
- Blockchain Immutability: Tamper-proof record keeping
- Access Control: Role-based permissions (User, Bank, Admin)
- Decentralized Storage: IPFS for secure document storage
- Smart Contract Security: Solidity best practices implemented
- Wallet Integration: Secure MetaMask authentication
decentralized-kyc/
βββ frontend/ # React frontend application
β βββ src/
β β βββ components/ # React components
β β β βββ admin/ # Admin interface
β β β βββ bank/ # Bank interface
β β β βββ user/ # User interface
β β β βββ LandingPage/ # Landing page
β β βββ context/ # React context (blockchain integration)
β β βββ utils/ # Utilities and constants
β β βββ theme/ # UI theme configuration
β βββ public/ # Static assets
βββ smart_contract/ # Ethereum smart contracts
β βββ contracts/ # Solidity contracts
β βββ scripts/ # Deployment scripts
β βββ test/ # Contract tests
β βββ hardhat.config.js # Hardhat configuration
βββ docs/ # Documentation and diagrams
cd smart_contract
npx hardhat test
cd frontend
npm test
- Start Ganache or Hardhat node
- Deploy contracts locally
- Start frontend development server
- Configure network in
hardhat.config.js
- Deploy to testnet:
npm run deploy [network]
- Update frontend constants with new contract address
- Deploy frontend to hosting service
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
MetaMask Connection Issues
- Ensure MetaMask is installed and unlocked
- Check network configuration (should match your deployment)
- Verify account has sufficient ETH for gas fees
Smart Contract Deployment Issues
- Verify Ganache is running on correct port
- Check hardhat.config.js network settings
- Ensure sufficient ETH in deployment account
Frontend Connection Issues
- Verify contract address in constants.js
- Check ABI is current after contract updates
- Ensure IPFS connection is properly configured
For issues and questions:
- Check existing issues in the repository
- Create a new issue with detailed description
- Include error messages and environment details
- Multi-chain Support: Support for other blockchains (Polygon, BSC)
- Mobile Application: React Native mobile app
- Advanced Analytics: Enhanced reporting and analytics
- Document Templates: Standardized KYC document templates
- API Integration: RESTful API for third-party integrations
- Compliance Features: Enhanced regulatory compliance tools
Note: This project is for educational and demonstration purposes. For production use, ensure proper security audits and compliance with local regulations.