A decentralized, secure, and transparent solution for conducting online exams using Ethereum, IPFS, and Smart Contracts.
- π Introduction
- π Project Overview
- βοΈ How Does It Work?
- π§ Architecture Flow (Mermaid Diagram)
- π§© Technologies Used
- π§ͺ Example Workflow
- π₯ Roles & Responsibilities
- π Getting Started
- π― Hackathon Goal
- π· Screenshots
- π License
This project aims to eliminate security issues, manipulation, and central authority in online examination systems by leveraging blockchain technology. The system ensures:
- Tamper-proof question & answer storage
- Fair evaluation and transparent results
- Immutable logs of all exam-related actions
In recent times, major examination systems have suffered from issues like paper leaks and manipulated result data. Our blockchain-based exam portal provides:
- β Decentralization β IPFS for question/answer storage
- β Transparency β Immutable records on Ethereum
- β Security β Role-restricted smart contract logic
- β Automation β Streamlined exam lifecycle
- Admin uploads questions as a JSON file to IPFS
- Receives a CID (Content Identifier)
- CID is stored in
ExamContract.solon Ethereum - Students can view, not edit
- Student answers questions offline
- Uploads answer JSON to IPFS
- CID is stored in
SubmissionContract.solon Ethereum
- Teacher fetches answer using CID from IPFS
- Evaluates, uploads result to IPFS
- Stores result CID in
EvaluationContract.sol
- Students fetch result CID from Ethereum
- View results and feedback from IPFS
Use the VS Code
Markdown Preview Mermaid Supportextension or GitHub preview to view this chart.
flowchart TD
A[Admin Uploads Exam JSON to IPFS] --> B[Get CID of Exam JSON]
B --> C[Store CID in ExamContract on Ethereum]
C --> D[Student Views Exam Using CID]
D --> E[Student Submits Answer JSON to IPFS]
E --> F[Get CID of Answer]
F --> G[Store CID in SubmissionContract on Ethereum]
G --> H[Teacher Fetches Answer CID from Blockchain]
H --> I[Retrieve Answer JSON from IPFS]
I --> J[Evaluate, Upload Result to IPFS]
J --> K[Store Result CID in EvaluationContract]
K --> L[Student Fetches Result from Blockchain and IPFS]
subgraph Blockchain
C
G
K
end
subgraph IPFS
A
E
J
end
| Component | Technology |
|---|---|
| Frontend | React.js + Ethers.js |
| Backend | Golang + Geth |
| Blockchain | Ethereum (Sepolia Testnet) |
| Smart Contracts | Solidity |
| Storage | IPFS |
| Authentication | MetaMask Wallet |
- β Admin uploads exam (JSON) β IPFS β stores CID on Ethereum
- π§βπ Student submits answers (JSON) β IPFS β stores CID on Ethereum
- π§βπ« Teacher/Admin fetches answers β evaluates β uploads evaluated JSON to IPFS β stores result CID
- π Student retrieves result CID β fetches score from IPFS β reads feedback
| Team Member | Role & Responsibilities |
|---|---|
| UI/UX Designer | Design clean, intuitive frontend. Collaborate on MetaMask flows and result display UI. |
| Frontend Developer | Build React interface, integrate Ethers.js, handle wallet connection via MetaMask. |
| Smart Contract Dev | Write & deploy Solidity contracts (Exam, Submission, Evaluation). Secure access. |
| Backend Developer | Build Go backend, connect to Geth, manage API calls and IPFS file management. |
| Security Specialist | Audit smart contracts, optimize gas, test vulnerabilities (via Remix/Hardhat). |
- Node.js, npm
- Go installed
- MetaMask browser extension
- IPFS CLI installed
- Sepolia ETH in MetaMask
# Clone the repository
git clone https://github.com/your-repo/blockchain-exam-system.git
cd blockchain-exam-system
# Install frontend dependencies
npm install-
Use Remix or Hardhat to deploy:
ExamContract.solSubmissionContract.solEvaluationContract.sol
-
Add contract addresses to
.envor config files
# Start React frontend
npm start
# Start Go backend (assuming main.go exists)
go run main.goThis project is licensed under the MIT License. Feel free to fork, use, or contribute.
π Built with π at Hack 5.0 π§βπ» Team: Paradox




