BACIP is a blockchain-based protocol for issuing, managing, and verifying academic credentials in a secure, decentralized, and globally interoperable manner. It combats academic fraud and empowers students and institutions with ownership, control, and privacy of educational data.
- Blockchain: Public Ethereum-compatible chain (Polygon Amoy testnet)
- Smart Contracts: Solidity-based, deployed to Polygon
- Backend: Node.js, Express, TypeScript
- Blockchain Integration: Ethers.js v6
- Database: MongoDB (Mongoose ODM)
- Frontend: React + Vite + TypeScript
- Notifications: Sonner (toast notifications)
- REST API: Express routes for credential lifecycle
- University/institution fills out a form on the frontend.
- Backend receives the request and calls the smart contract to issue the credential.
- Transaction hash and degree ID are returned and stored in MongoDB.
- The recipient receives an email notification (future roadmap).
- Verifier enters a credential ID on the frontend.
- Backend queries the smart contract for credential data.
- Verification result (valid/revoked/not found) is returned.
- Issuer searches for a credential by ID.
- If found and active, issuer provides a revocation reason.
- Backend calls the smart contract to revoke the credential.
- Revocation is recorded on-chain and in MongoDB.
- Interoperability – Open standards for global compatibility.
- Security – Blockchain immutability, cryptographic proofs.
- Privacy – Student-controlled access (future: DIDs, encryption).
- Transparency – Public audit trails.
- Scalability – Efficient, L2-compatible.
- Usability – For institutions, employers, and students.
- Smart Contracts: Credential lifecycle automation
- MongoDB: Off-chain storage for credential metadata
- Express REST API: Credential issuance, verification, revocation
- React Frontend: User-friendly interface for all roles
All endpoints are prefixed with /api/degrees
.
Method | Endpoint | Description |
---|---|---|
POST | /api/degrees/issue |
Issue a new credential |
GET | /api/degrees/verify/:degreeId |
Verify a credential by ID |
POST | /api/degrees/revoke/:degreeId |
Revoke a credential by ID |
GET | /api/degrees/address/:address |
List all credentials for an address |
Example: Issue a Credential
POST /api/degrees/issue
Content-Type: application/json
{
"recipientAddress": "0x...",
"degreeName": "Bachelor of Science",
"university": "Stanford University",
"studentName": "Alice",
"studentId": "S123456",
"studentEmail": "[email protected]"
}
Example: Verify a Credential
GET /api/degrees/verify/0xDEGREE_ID
Example: Revoke a Credential
POST /api/degrees/revoke/0xDEGREE_ID
Example: Get Credentials by Address
GET /api/degrees/address/0xWALLET_ADDRESS
- Universities issuing tamper-proof digital degrees
- Employers verifying credentials instantly
- Students owning and managing their educational identity
- Data stored on-chain is public; off-chain data is in MongoDB
- Future: consent management, DIDs, and encryption for privacy
- Email notifications for issuance/revocation
- DID-based credential wallet
- IPFS integration for document storage
- DAO governance and cross-chain support
BACIP is a practical, production-ready protocol for academic credentialing: decentralized, secure, and globally verifiable. It removes intermediaries and brings trust to education.