viralP2302/blockchain-lms-micro-moodle
GitHub: viralP2302/blockchain-lms-micro-moodle
这是一个基于以太坊智能合约的去中心化学习管理系统原型,旨在通过区块链技术确保作业提交、评分及审计过程的不可篡改性与透明度。
Stars: 0 | Forks: 0
# MicroMoodle:去中心化学习管理系统
一个基于区块链的 LMS 原型,演示了使用 Ethereum 智能合约进行不可篡改的作业提交、评分和争议工作流。
## 前置条件
- Node.js v18+
- npm
## 快速开始
### 1. 安装依赖
```
# 安装 contract 依赖
cd contracts
npm install
# 安装 backend 依赖
cd ../backend
npm install
# 安装 frontend 依赖
cd ../frontend
npm install
```
### 2. 启动本地区块链
```
cd contracts
npx hardhat node
```
保持此终端运行。你将看到 20 个带有 ETH 的测试账户。
### 3. 部署智能合约
打开一个新终端:
```
cd contracts
npx hardhat run scripts/deploy.js --network localhost
```
**预期输出:**
```
MicroMoodle deployed to: 0x5FbDB2315678afecb367f032d93F642f64180aa3
Course Name: CS101 Web3 Security, Duration: 7 days
Students successfully enrolled in the Smart Contract.
```
### 4. 运行安全测试
```
cd contracts
npx hardhat test
```
**预期输出:** 所有测试通过,包括显示未授权操作被拒绝的安全检查。
### 5. 启动后端服务器
```
cd backend
node server.js
```
### 6. 启动前端
```
cd frontend
npm run dev
```
打开 http://localhost:5173
## 演示工作流
1. **学生视图**:选择 Student 1,上传文件 → 交易提交到区块链
2. **教师视图**:查看提交内容,分配分数并给出反馈
3. **验证标签页**:上传相同文件 → 哈希值与区块链记录匹配
4. **争议**:评分后,学生可以发起链上争议
## 测试账户(Hardhat 默认值)
| 角色 | 地址 |
|------|---------|
| Teacher | 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 |
| Student 1 | 0x70997970C51812dc3A010C7d01b50e0d17dc79C8 |
| Student 2 | 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC |
## 项目结构
```
├── contracts/ # Hardhat + Solidity smart contract
│ ├── contracts/MicroMoodle.sol
│ ├── scripts/deploy.js
│ └── test/MicroMoodle.test.js
├── backend/ # Express.js API server
│ └── server.js
└── frontend/ # React + Vite UI
└── src/App.jsx
```
## 演示的安全功能
- **访问控制**:只有教师可以分配分数(`onlyTeacher` 修饰符)
- **完整性**:文件哈希值存储在链上,可检测篡改
- **不可篡改性**:分数一旦分配便无法更改
- **重放攻击防护**:强制执行每个学生只能提交一次
- **审计追踪**:所有操作都会发出事件,以提供可验证的历史记录
标签:DApp开发, GNU通用公共许可证, Hardhat, IPFS, LMS, MITM代理, Node.js, Solidity, Web3, 争议解决, 以太坊, 作业提交, 区块链, 区块链教学, 去中心化应用, 去中心化教育, 存证, 学习管理系统, 成绩管理, 教育科技, 数字身份, 文件哈希, 智能合约, 自定义脚本, 防篡改