A web application to verify the authenticity of OpenCerts documents against the Ethereum blockchain.
Demo: https://opencert-verifier.vercel.app
- Drag-and-drop upload - Upload
.opencertor.jsoncertificate files - Network selection - Support for Ethereum Mainnet and Sepolia testnet
- Three verification checks:
- Document Integrity - Ensures the document has not been tampered with
- Issuance Status - Confirms the document is issued on blockchain and not revoked
- Issuer Identity - Verifies the issuer via DNS-TXT or OpenCerts registry
- Certificate preview - Displays certificate metadata (name, recipient, issuer, date)
- Dark mode support - Automatic theme based on system preferences
- Next.js 14 - React framework with App Router
- TypeScript - Type safety
- Tailwind CSS - Styling
- @govtechsg/opencerts-verify - Official OpenCerts verification library
- @govtechsg/open-attestation - OpenAttestation framework
- Node.js 18+
- npm
# Clone the repository
git clone https://github.com/alfredang/opencert-verifier.git
cd opencert-verifier
# Install dependencies
npm install
# Start development server
npm run devOpen http://localhost:3000 in your browser.
npm run build
npm start- Select the appropriate network (Mainnet for production certificates, Sepolia for test certificates)
- Upload an OpenCerts document (
.opencertor.jsonfile) - View the verification results showing document integrity, issuance status, and issuer identity
OpenCerts verification involves three checks:
- Document Integrity: Recomputes the document hash and verifies it matches the stored hash using Merkle proof verification
- Issuance Status: Queries the Ethereum blockchain to confirm the document was issued to the document store smart contract and has not been revoked
- Issuer Identity: Verifies the issuer's identity through DNS-TXT records or the OpenCerts accreditation registry
MIT