About the Project โ€” Credentia: Blockchain-Based Academic Credential Verification System ๐ŸŒŸ Inspiration

The project was inspired by a very real problem: Academic certificates are easy to forge, difficult to verify, and slow to authenticate.

Traditional verification requires:

contacting universities manually,

waiting days for validation,

depending on third-party agencies,

trusting centralized databases that can be manipulated.

This made me ask a simple question:

โ€œWhy do we still trust paper certificates in 2025 when blockchain can offer tamper-proof, real-time verification?โ€

This thought led to the creation of Credentia, a decentralized system where:

universities issue credentials on-chain,

students receive an immutable ID,

employers verify instantly with zero trust required.

๐Ÿ“š What I Learned

While building this project, I gained hands-on knowledge in:

๐Ÿ”น Blockchain Fundamentals

Understanding how distributed ledgers store data immutably and how every node validates transactions.

๐Ÿ”น Smart Contracts (Solidity)

I learned how to write, compile, deploy, and interact with smart contracts securely, especially:

mappings

structs

events

keccak256 hashing

reading & writing on-chain storage

๐Ÿ”น Keccak-256 Hashing

I used cryptographic hashing to generate unique credential IDs:

recordId

keccak256 ( studentName + course + institution + ๐‘ก + issuer ) recordId=keccak256(studentName+course+institution+t+issuer)

This ensures:

uniqueness,

tamper-proof linkage,

collision resistance.

๐Ÿ”น Frontendโ€“Blockchain Integration

Using:

React.js

Ethers.js

MetaMask

Remix IDE

I learned how transactions move from the UI โ†’ wallet โ†’ smart contract โ†’ blockchain.

๐Ÿ”น Real DApp Architecture

I learned how a decentralized app works end-to-end:

React UI โ†’ MetaMask โ†’ Smart Contract โ†’ Ethereum Blockchain

๐Ÿ› ๏ธ How I Built the Project

  1. Designed the Architecture

I split the project into 3 major parts:

Frontend (React) โ€“ User interface for issuing & verifying credentials

Smart Contract (Solidity) โ€“ Core logic & storage

Blockchain Interaction โ€“ Ethers.js + MetaMask

  1. Built the Smart Contract

I wrote a Solidity contract with:

issueCredential()

verifyCredential()

Unique recordId generation using Keccak-256

A CredentialIssued event

Optional duplicate ID protection

  1. Deployed to Ethereum (Sepolia Testnet)

Using Remix IDE + MetaMask, I deployed the contract and obtained the contract address.

  1. Connected Frontend to Blockchain

Using ethers.Contract(CONTRACT_ADDRESS, ABI, signer) I linked the UI to the deployed contract.

  1. Added the Live Blockchain Visualizer

To make the project more presentable, I added a custom blockchain animation showing every block mined as credentials are issued.

  1. Implemented Credential Verification

Employers can enter a credential hash and instantly see the verified details returned from the smart contract.

๐Ÿšง Challenges I Faced

  1. Event Parsing & Record ID Extraction

The biggest issue was retrieving the correct recordId from the transaction logs. I learned how to use:

contract.interface.parseLog(log)

to extract event data.

  1. ABI & Contract Address Mismatches

Whenever I redeployed the smart contract:

old addresses became invalid,

previous record IDs could not be verified,

the frontend had to be updated manually.

This problem taught me how important contract immutability is.

  1. Ethers.js v6 Migration

Some old tutorials used ethers v5, but my project uses v6. There were major changes:

BrowserProvider instead of Web3Provider

promise-based getters

different error handling

It took time to adapt all calls.

  1. Normalizing Student IDs

Duplicates appeared due to:

uppercase vs lowercase

spaces

string formatting differences

I solved this with:

normalizedID

toLowerCase(trim(studentID)) normalizedID=toLowerCase(trim(studentID))

  1. Verification Errors

I often saw:

could not decode result data (value="0x")

This happened because:

wrong recordId was used (tx hash instead of event hash),

contract was redeployed but frontend didnโ€™t update the new address.

I learned how to debug receipt logs and bytes32 values.

๐Ÿš€ Final Outcomes

A fully functional decentralized credential system

End-to-end interaction between frontend, MetaMask, and smart contract

Real blockchain mining & event tracking

100% tamper-proof credential storage

Instant employer-side verification

A professional-grade DApp setup

โœจ Final Reflection

Building this project taught me that blockchain is not about cryptocurrencies โ€” itโ€™s about trust, transparency, and immutability.

By shifting academic credential verification from manual processes to blockchain:

We eliminate fraud

Reduce verification time from days to seconds

Create a trustless, decentralized validation system

This project strengthened my skills in blockchain engineering and gave me confidence in building full-stack Web3 applications.

Built With

Share this project:

Updates