IamHuman is a product that showcases a proof of concept (PoC) for identity verification using the ZKPassport SDK. It combines multiple verification methods, including unique human motion patterns (such as moving your mobile device in a figure-eight), fingerprint recognition, and facial ID. While the process may sound complex, in reality it takes less than 30 seconds—and even faster if you've already generated a unique identifier for the domain in which you're proving your humanness.
This project is currently in MVP/development stage and has several limitations and work-in-progress features:
-
Simulated Verification
- The current implementation uses simulated verification
-
Security Limitations
- Basic session management is implemented
- No production-grade security measures are in place
-
Future Considerations
- Implementation of proper security measures
- Addition of persistent storage
- Enhanced error handling and validation
- Rate limiting and security features
- Correct implementation and e2e tests on moving the mobile device while proving
- QR code generation for verification
- Simulated passport verification system
- RESTful API endpoints for verification
- Session management for verified users
- Real-time verification status updates
- Cross-platform compatibility (We aim to make our solution work on both Android and iOS.)
- Node.js (v14 or higher)
- npm
-
Clone the repository
-
Install dependencies:
npm install- Set up environment variables:
Create a
.envfile in the root directory with the following variables:
PORT=3001
NODE_ENV=development
SESSION_SECRET=your_session_secret
VERIFICATION_TIMEOUT=300000 # 5 minutes in milliseconds- Start the verification server:
node verifyServer.jsThe server will start running at http://localhost:3001
- Access the verification QR code:
Currently the ZKPassport's QR code verification is mocked due to unresolved blocker issue, so one can just click on the link below the QR code to proceed.
- Moving verification process:
- When a user scans the QR code or clicks the verification link, they will be marked as verified
Currently those are still work in progress 🏗️:
- 🚧 The system maintains a session of verified users
- 🚧 Verification status can be checked through the API
- 🚧 Sessions expire after the configured timeout period
TODO
TODO
-
Server won't start
- Check if port 3001 is already in use
- Verify Node.js version is compatible
- Ensure all dependencies are installed
-
QR Code not generating
- Check if the userId parameter is provided
- Verify server is running
- Check browser console for errors
-
Verification not working
- Ensure the server is running
- Check if the session hasn't expired
- Verify the userId is correct
To enable debug mode, set the following environment variable:
DEBUG=true node verifyServer.js| Variable | Description | Default | Required |
|---|---|---|---|
| PORT | Server port number | 3001 | No |
| NODE_ENV | Environment (development/production) | development | No |
| SESSION_SECRET | Secret for session encryption | - | Yes |
| VERIFICATION_TIMEOUT | Session timeout in milliseconds | 300000 | No |
| DEBUG | Enable debug mode | false | No |
Contributions are welcome! Feel free to open issues or submit pull requests for any improvements or bug fixes.
This project is licensed under the MIT License - see the LICENSE file for details.
DM thevasi1 or nikoanon on discord if you have any questions or feedback.

