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
- 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
- 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
- Deployed to Ethereum (Sepolia Testnet)
Using Remix IDE + MetaMask, I deployed the contract and obtained the contract address.
- Connected Frontend to Blockchain
Using ethers.Contract(CONTRACT_ADDRESS, ABI, signer) I linked the UI to the deployed contract.
- 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.
- Implemented Credential Verification
Employers can enter a credential hash and instantly see the verified details returned from the smart contract.
๐ง Challenges I Faced
- 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.
- 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.
- 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.
- 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))
- 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.
Log in or sign up for Devpost to join the conversation.