Case study · Web systems
Blockchain Credential
A platform for issuing and verifying digital credentials. The credential never goes on the blockchain — only its fingerprint and status do.
- Role
- Research project
- Period
- 2026 · v1.0.0 released 2 Oct 2026
- Company
- Personal
- Status
- Released
Context
Paper certificates are easy to forge, while putting a whole credential on a blockchain exposes personal data that can never be deleted. The approach here: put on-chain only what's needed to prove a credential hasn't been altered and is still valid.
Problems & solutions
- 01
Only the fingerprint goes on-chain
Credential content is canonicalised, hashed with SHA-256 and signed with Ed25519. Only the hash (contentHash) and the status are written to the CredentialRegistry smart contract. Personal data stays off-chain.
- 02
Verification without logging in
Each credential comes as a PDF with a QR code containing only a /verify/{public_id} link. A verifier scans the QR code or uploads the JSON file and gets one of nine results, from VALID, REVOKED and EXPIRED to TAMPERED or INVALID_SIGNATURE. When a credential is revoked, the old QR code still works and now returns REVOKED.
- 03
Keeping the wallet out of the main application
Laravel handles the business logic; a separate gateway written in Node, Fastify and ethers v6 holds the issuer's EVM wallet and is the only thing that talks to the chain. The payload follows the W3C VC 2.0 data model.
- 04
Testing and measurement
CI runs Pint, Larastan and Pest for the backend, Hardhat tests for the contract, Vitest for the gateway, and gitleaks to stop secrets leaking. A quantitative experiment suite, E1–E5, runs on a synthetic dataset with a fixed seed so results are reproducible.
Outcomes
- v1.0.0 released on 2 Oct 2026, with source, dataset, experiment results and report.
The system proves a credential hasn't been altered and verifies its issuer and status. It does not prove that the content of the credential is true. The payload follows the W3C VC 2.0 data model without claiming conformance. The source code is private.
Next project