Gooichand/blockchain-evidence
GitHub: Gooichand/blockchain-evidence
基于区块链与角色访问控制的数字证据管理系统,解决证据完整性、保管链可信与审计难题。
Stars: 26 | Forks: 59
# 🔐 EVID-DGC - 区块链证据管理系统
**具备基于角色的访问控制的证据管理系统。**
## 🚀 项目状态
有关所有开发阶段、里程碑和功能路线图的详细信息,请参阅我们的 **[📊 开发阶段](PHASES.md)** 文档。
**快速状态:**
- ✅ **阶段 1**(核心系统) - 已完成 & 可生产使用
- ✅ **阶段 2**(区块链与 IPFS) - 已完成 & 可生产使用
- 🔄 **阶段 3**(高级取证) - 积极开发中
[](https://opensource.org/licenses/Apache-2.0)
[](https://nodejs.org/)
[](https://supabase.com/)
[](https://render.com/)
[](https://www.bestpractices.dev/projects/11669)
## ❓ 问题与解决方案
### 问题陈述
数字证据管理常常面临数据篡改、无法验证的保管链以及访问控制不一致等挑战。传统系统可能不透明,使得司法和调查机构难以信任数字证据的完整性。
### 解决方案概述
**EVID-DGC** 通过利用区块链启发式原则和强大的基于角色的访问控制来解决这些问题。通过使用安全的 Supabase 后端并提供不可变的审计日志,系统确保从证据上传到法庭审查的每一步都被追踪和验证,维持最高标准的数字取证完整性。
## ✨ 运行中的功能
### 核心系统(可生产使用)
- ✅ **8 角色 RBAC** - 完整的基于角色的访问控制
- ✅ **双重认证** - MetaMask 钱包 + 邮箱/密码
- ✅ **管理员仪表板** - 完整的用户管理界面
- ✅ **证据上传** - 多格式文件支持(PDF、图片、视频、音频)
- ✅ **数据库安全** - 带有行级安全的 Supabase PostgreSQL
- ✅ **实时通知** - Socket.IO WebSocket 集成
- ✅ **审计日志** - 完整的活动追踪
- ✅ **文件处理** - 水印和压缩
- ✅ **案件管理** - 完整的生命周期与状态追踪
- ✅ **导出系统** - 带水印的证据下载
### 阶段 2 功能
- ✅ **真正的区块链集成** - 完整的区块链集成
- 智能合约部署到 Polygon Amoy:`0x39453ED8CF79Fe56150fe1E8348e75894e3dD9e3`
- 链上真实交易与 TX 哈希记录
- Gas 使用量追踪与优化
- 区块号记录
- 浏览器链接(Polygonscan)
- 与区块链的哈希验证
- ✅ **IPFS 去中心化存储** - 完全运行的 IPFS 集成
- Pinata API 集成
- 内容标识符(CID)生成
- 去中心化文件存储与检索
- 文件访问的网关 URL
- Pin 管理机制
- ✅ **高级安全** - 多层安全实现
- 速率限制(区块链:10/分钟,上传:50/小时,验证:30/分钟)
- 交易验证
- CID 验证
- 文件验证
- 增强的 API 保护
- ✅ **系统监控** - 实时监控与告警
- 实时健康检查
- 区块链指标仪表板
- IPFS 统计追踪
- 自动告警系统
- 性能追踪
- ✅ **性能优化** - 可生产使用的优化
- 区块链数据的数据库索引
- 高效的查询模式
- 速率限制操作
- 连接池
## 🛠️ 技术信息
### 技术栈(当前实现)
| 类别 | 技术 | 状态 |
| --------------- | ----------------------------------------- | -------- |
| **前端** | HTML5, CSS3, Vanilla JavaScript, Socket.IO 客户端 | ✅ 运行中 |
| **后端** | Node.js v16+, Express.js, Socket.IO(实时) | ✅ 运行中 |
| **数据库** | Supabase(带有行级安全的 PostgreSQL) | ✅ 运行中 |
| **认证** | MetaMask/Web3, 邮箱/密码 | ✅ 运行中 |
| **文件处理** | Multer, Sharp, PDF-Lib | ✅ 运行中 |
| **图标与 UI** | Lucide 图标, 自定义 CSS | ✅ 运行中 |
| **托管** | Render, Vercel, Netlify 兼容 | ✅ 运行中 |
| **智能合约** | Solidity(部署在 Polygon Amoy) | ✅ 阶段 2 |
| **存储** | 通过 Pinata API 的 IPFS | ✅ 阶段 2 |
| **区块链** | Polygon Amoy 测试网(可生产使用) | ✅ 阶段 2 |
### 用户角色
系统实现了 8 个不同的角色以确保严格的访问控制:
1. **公共查看者**:浏览公共案件信息。
2. **调查员**:处理案件创建和证据上传。
3. **取证分析师**:执行技术分析并生成报告。
4. **法律专业人士**:对案件和证据进行法律审查。
5. **法院官员**:管理司法程序和日程安排。
6. **证据管理员**:维护保管链和存储完整性。
7. **审计员**:监督系统合规性并审查审计日志。
8. **管理员**:完整的系统监督、用户管理和配置。
## 📁 文件夹结构
```
blockchain-evidence/
├── contracts/ # Smart contract files
│ └── EvidenceStorage.sol # Main evidence storage contract
├── docs/ # Complete documentation
│ ├── USER_GUIDE.md # User manual for all roles
│ ├── DEVELOPER_GUIDE.md # Development setup and workflow
│ ├── SECURITY.md # Security practices and policies
│ ├── DEPLOYMENT.md # Production deployment guide
│ ├── MAINTENANCE.md # System maintenance procedures
│ └── swagger.js # API documentation (OpenAPI)
├── public/ # Frontend application (80+ files)
│ │
│ ├── 🏠 Core Landing & Pages
│ │ ├── index.html # Main landing page with login options
│ │ ├── app.js # Core frontend application logic
│ │ ├── config.js # Global configuration settings
│ │ ├── styles.css # Global stylesheet
│ │ ├── quickstart.html # Quick start guide page
│ │ ├── privacy.html # Privacy policy page
│ │ ├── favicon.ico # Site favicon
│ │ └── logo-32x32.png # Application logo
│ │
│ ├── 🔐 Authentication & Security (15 files)
│ │ ├── forgot-password.js # Password reset functionality
│ │ ├── reset-password.html # Password reset page
│ │ ├── password-security.css # Password security styling
│ │ ├── password-security.js # Password policy enforcement
│ │ ├── password-strength.js # Password strength validator
│ │ ├── password-policy-admin.js # Admin password policy config
│ │ ├── two-factor-auth.css # 2FA styling
│ │ ├── two-factor-auth.js # Two-factor authentication logic
│ │ ├── two-factor-integration.js # 2FA system integration
│ │ ├── session-manager.js # User session management
│ │ ├── session-timeout.css # Session timeout styling
│ │ ├── session-timeout.js # Auto-logout functionality
│ │ ├── session-timeout-admin.js # Admin session timeout config
│ │ ├── comprehensive-registration.js # Enhanced registration system
│ │ └── storage.js # Local storage utilities
│ │
│ ├── 👤 Account & User Management (5 files)
│ │ ├── account-settings.html # User account settings page
│ │ ├── account-settings.js # Account settings logic
│ │ ├── account-settings-styles.css # Account settings styling
│ │ ├── profile.html # User profile page
│ │ └── user-roles.html # User role information page
│ │
│ ├── 📊 Dashboards - Role Based (9 files)
│ │ ├── dashboard.html # Main dashboard (role redirect)
│ │ ├── dashboard-navigator.js # Dashboard navigation logic
│ │ ├── dashboard-public.html # Public viewer dashboard
│ │ ├── dashboard-investigator.html # Investigator dashboard
│ │ ├── dashboard-analyst.html # Forensic analyst dashboard
│ │ ├── dashboard-legal.html # Legal professional dashboard
│ │ ├── dashboard-court.html # Court official dashboard
│ │ ├── dashboard-manager.html # Evidence manager dashboard
│ │ ├── dashboard-auditor.html # Auditor dashboard
│ │ └── admin.html # Administrator dashboard
│ │
│ ├── 🗂️ Case Management (7 files)
│ │ ├── case-management.html # Case creation and management
│ │ ├── cases.html # Case listing and search
│ │ ├── case-status-manager.js # Case status workflow
│ │ ├── case-status-styles.css # Case status styling
│ │ ├── case-timeline.html # Case timeline visualization
│ │ ├── case-hash-manifest.js # Case hash tracking
│ │ └── case-summary-exporter.js # Case summary export
│ │
│ ├── 📁 Evidence Management (16 files)
│ │ ├── evidence-manager.html # Main evidence management
│ │ ├── enhanced-evidence-upload.js # Advanced upload features
│ │ ├── enhanced-upload-styles.css # Upload UI styling
│ │ ├── evidence-display.css # Evidence display styling
│ │ ├── evidence-display.js # Evidence display logic
│ │ ├── evidence-preview.css # Preview modal styling
│ │ ├── evidence-preview.js # Evidence preview system
│ │ ├── evidence-preview-styles.css # Additional preview styles
│ │ ├── evidence-preview-system.js # Preview system core
│ │ ├── evidence-viewers.js # Multi-format file viewers
│ │ ├── evidence-comparison.css # Comparison view styling
│ │ ├── evidence-comparison.html # Evidence comparison tool
│ │ ├── evidence-comparison.js # Comparison logic
│ │ ├── evidence-export.html # Evidence export page
│ │ ├── evidence-exporter.js # Export functionality
│ │ ├── evidence-tagging.html # Evidence tagging system
│ │ ├── evidence-tagging.js # Tag management logic
│ │ ├── evidence-verification.html # Evidence verification page
│ │ ├── evidence-verification.js # Blockchain verification
│ │ └── tag-manager.js # Tag CRUD operations
│ │
│ ├── 📜 Policy & Compliance (8 files)
│ │ ├── retention-policy.html # Retention policy management
│ │ ├── retention-policy.js # Retention policy logic
│ │ ├── retention-policy-manager.js # Policy enforcement
│ │ ├── retention-policy-styles.css # Retention policy styling
│ │ ├── legal-hold-management.html # Legal hold system
│ │ ├── data-protection.html # Data protection policies
│ │ ├── audit-trail.html # System audit trail viewer
│ │ └── activity-feed-widget.js # Activity feed component
│ │
│ ├── 👥 Role Management (7 files)
│ │ ├── role-manager.js # Role assignment logic
│ │ ├── role-wizard.js # Role selection wizard
│ │ ├── role-wizard-styles.css # Role wizard styling
│ │ ├── role-selection-wizard.js # Role onboarding wizard
│ │ ├── role-landing-system.js # Role-based landing pages
│ │ ├── role-change-approval.js # Role change workflow
│ │ └── settings.html # Role & system settings
│ │
│ ├── 🎨 UI/UX & Accessibility (6 files)
│ │ ├── responsive-improvements.css # Mobile responsive fixes
│ │ ├── accessibility-fixes.css # WCAG compliance fixes
│ │ ├── accessibility-manager.js # Accessibility features
│ │ ├── loading-screen.css # Loading screen styling
│ │ ├── loading-screen.js # Loading screen component
│ │ ├── fixed-navbar.js # Sticky navigation bar
│ │ ├── navbar.js # Navigation logic
│ │ ├── stability-fixes.css # UI stability patches
│ │ └── empty-states-system.js # Empty state components
│ │
│ ├── ℹ️ Help & Support (3 files)
│ │ ├── help-center.html # Help center main page
│ │ ├── help-center.js # Help center logic
│ │ ├── help-center-styles.css # Help center styling
│ │ ├── troubleshooting.html # Troubleshooting guide
│ │ └── api-reference.html # API documentation page
│ │
│ ├── 📈 System Monitoring (3 files)
│ │ ├── system-health.html # System health dashboard
│ │ ├── timeline-visualization.html # Activity timeline view
│ │ ├── timeline-visualization.js # Timeline rendering
│ │ └── notifications.js # Real-time notifications
│ │
│ └── 🛠️ System Utilities (4 files)
│ ├── enhanced-error-handling.js # Global error handling
│ ├── enhanced-stability.js # Stability improvements
│ ├── blockchain-feedback.js # Blockchain operation feedback
│ └── css/ # Additional stylesheets
│
├── server.js # Express.js backend server
├── complete-database-setup-fixed.sql # Complete database schema
├── package.json # Dependencies and scripts
├── render.yaml # Render.com deployment config
├── .env.example # Environment variables template
├── .gitignore # Git ignore rules
├── LICENSE # Apache 2.0 license
├── SECURITY.md # Security policy
├── CODE_OF_CONDUCT.md # Community guidelines
├── CONTRIBUTING.md # Contribution guidelines
└── README.md # Project documentation
```
### 📝 关键文件描述
#### 核心系统文件
- **server.js** - 带有 Socket.IO 的 Express 后端,处理所有 API 端点、认证、文件上传和数据库操作
- **complete-database-setup-fixed.sql** - 完整的 PostgreSQL 架构,包含 17+ 个表、行级安全策略、触发器和存储函数
- **package.json** - Node.js 依赖项(321 个包)和开发与部署的 npm 脚本
#### 配置与环境
- **.env.example** - 环境变量模板(Supabase URL、API 密钥、JWT 密钥)
- **render.yaml** - Render.com 部署配置,包含构建和启动命令
- **public/config.js** - 前端 API 端点、文件大小限制和支持格式的配置
#### 文档(docs/)
- **USER_GUIDE.md** - 完整的用户手册,包含角色特定说明和工作流程
- **DEVELOPER_GUIDE.md** - 开发设置、架构概述、API 参考和贡献指南
- **SECURITY.md** - 安全实现细节、最佳实践和漏洞报告
- **DEPLOYMENT.md** - Render、Vercel 和 Netlify 的生产部署说明
- **MAINTENANCE.md** - 系统维护程序、备份策略和故障排除
## 📚 文档
### 快速链接
- 🚀 [快速开始](#-how-to-run-locally)
- 📖 [用户指南](docs/USER_GUIDE.md)
- 💻 [开发者指南](docs/DEVELOPER_GUIDE.md)
- 📡 [API 文档](docs/swagger.js)
- 🔒 [安全指南](docs/SECURITY.md)
- 🚀 [部署指南](docs/DEPLOYMENT.md)
- 🔧 [维护指南](docs/MAINTENANCE.md)
### 完整文档
| 主题 | 描述 | 链接 |
| --------------------- | ----------------------------------------- | --------------------------------------------- |
| **用户指南** | 角色特定指南和常见任务 | [👤 用户指南](docs/USER_GUIDE.md) |
| **开发者指南** | 设置、架构和开发工作流程 | [💻 开发者指南](docs/DEVELOPER_GUIDE.md) |
| **API 文档** | 完整的 API 参考和示例 | [📡 API 文档](docs/swagger.js) |
| **安全指南** | 安全实践和漏洞缓解措施 | [🔒 安全指南](LINK_URL_16/>) |
| **部署指南** | 部署到 Render、Vercel 或 Netlify | [🚀 部署](docs/DEPLOYMENT.md) |
| **维护指南** | 常规维护和故障排除 | [🔧 维护](docs/MAINTENANCE.md) |
## 🚀 如何本地运行
### 先决条件
在开始前,请确保已安装以下内容:
- **Node.js**(v16 或更高版本) - [下载](https://nodejs.org/)
- **npm**(随 Node.js 附带)或 **yarn**
- **Git** - [下载](https://git-scm.com/)
- **MetaMask** 浏览器扩展 - [安装](https://metamask.io/)
- **Supabase** 账户 - [注册](https://supabase.com/)
- **代码编辑器**(推荐 VS Code)
### 1. 克隆仓库
```
# 克隆仓库
git clone
# 导航到项目目录
cd blockchain-evidence
```
### 2. 安装依赖并设置
```
# 安装所有必需的包并运行设置
npm install
# 或手动运行设置
npm run setup
```
### 3. 环境配置
设置脚本会自动创建 `.env` 文件。请使用您的 Supabase 凭据更新它:
```
# 在 .env 中更新这些值
SUPABASE_URL=your_supabase_project_url
SUPABASE_KEY=your_supabase_anon_key
```
### 4. 数据库设置
1. 登录您的 [Supabase 仪表板](https://app.supabase.com/)
2. 创建新项目或选择现有项目
3. 导航到 SQL 编辑器
4. 按顺序执行以下 SQL 文件:
```
-- Step 1: Core database structure
-- Copy and run: complete-database-setup.sql
-- Step 2: Evidence tagging system (optional)
-- Copy and run: evidence-tagging-schema.sql
-- Step 3: Evidence export system (optional)
-- Copy and run: evidence-export-schema.sql
```
### 5. 启动开发服务器
```
# 使用自动重载启动后端服务器
npm run dev
# 或用于生产模式
npm start
```
服务器将在 `http://localhost:3000` 启动
### 6. 访问应用程序
打开浏览器并导航至:
- **主应用程序**: http://localhost:3000
- **健康检查**: http://localhost:3000/api/health
### 7. 测试系统
#### 选项 1:MetaMask 钱包登录
1. 导航到登录页面
2. 点击“连接钱包”按钮
3. MetaMask 扩展将自动弹出
4. 连接任意钱包地址
5. 系统将自动创建测试用户
6. 选择角色并完成注册
#### 选项 2:邮箱登录
使用以下预配置测试账户:
| 邮箱 | 密码 | 角色 |
| --------------------------- | --------------------- | ------------------ |
| `investigator@evid-dgc.com` | `hashed_password_123` | 调查员 |
| `analyst@evid-dgc.com` | `hashed_password_456` | 取证分析师 |
| `legal@evid-dgc.com` | `hashed_password_789` | 法律专业人士 |
| `admin@evid-dgc.com` | `admin_password` | 管理员 |
**注意**:这些是用于测试的演示凭据。在生产环境中,请使用安全密码和适当的认证。
### 快速故障排除
**问题:“Config not defined” 错误**
- 解决方案:确保在 `app.js` 之前加载 `config.js`
**问题:导航无法工作**
- 解决方案:检查浏览器控制台是否有 JavaScript 错误
- 确保 Lucide 图标正确加载
**问题:钱包连接失败**
- 解决方案:安装 MetaMask 浏览器扩展
- 检查浏览器控制台获取详细错误信息
**问题:服务器无法启动**
- 解决方案:检查 `.env` 文件是否存在且格式正确
- 确保端口 3000 未被其他应用程序占用
### 开发命令
```
# 启动开发服务器
npm start
# 安装新依赖项
npm install package-name
# 检查服务器运行状况
curl http://localhost:3000/api/health
# 查看日志
# 检查浏览器控制台和服务器终端
```
## 🚀 生产部署
### 部署选项
应用程序可以部署在多个平台:
- **平台**:Render.com、Vercel 或 Netlify
- **数据库**:Supabase(PostgreSQL)
- **文件存储**:通过 Pinata 的 IPFS
### 部署配置
#### 必需的环境变量
确保在生产环境中设置以下环境变量:
```
# Supabase 配置
SUPABASE_URL=your_production_supabase_url
SUPABASE_KEY=your_production_supabase_key
# 服务器配置
PORT=3000
NODE_ENV=production
# IPFS/Pinata 配置(如使用)
PINATA_API_KEY=your_pinata_api_key
PINATA_SECRET_KEY=your_pinata_secret_key
# 区块链网络
BLOCKCHAIN_NETWORK=polygon
BLOCKCHAIN_RPC_URL=your_rpc_url
```
### 部署到 Render
#### 使用 Git 集成(推荐)
1. **连接仓库**:
- 前往 [Render 仪表板](https://dashboard.render.com/)
- 点击“新建 +” → “Web 服务”
- 连接您的 GitHub 仓库
2. **配置服务**:
名称:evid-dgc
环境:Node
构建命令:npm install
启动命令:npm start
3. **设置环境变量**:
- 在 Render 仪表板的“环境”选项卡中添加所有必需的环境变量
4. **部署**:
- 点击“创建 Web 服务”
- Render 将在每次推送到主分支时自动部署
### 部署到 Netlify
```
# 安装 Netlify CLI
npm install -g netlify-cli
# 登录 Netlify
netlify login
# 部署
netlify deploy --prod
```
或将 `public` 文件夹拖放到 [Netlify Drop](https://app.netlify.com/drop)。
### 持续部署
项目配置为自动部署:
- **触发器**:推送到 `main` 分支
- **构建**:通过 `npm install` 自动完成
- **部署**:通过托管提供程序自动完成
- **回滚**:可通过托管仪表板回滚
### 监控与日志
- **应用程序日志**:在 Render/Vercel/Netlify 仪表板中可用
- **数据库日志**:在 Supabase 仪表板中可用
- **正常运行时间监控**:考虑使用 UptimeRobot 等服务
有关详细的部署故障排除,请参阅 [部署文档](docs/DEPLOYMENT.md)。
## 🏗️ 架构
### 系统架构
```
┌─────────────────┐
│ Web Browser │
│ (MetaMask + │
│ Frontend) │
└────────┬────────┘
│
│ HTTPS
▼
┌─────────────────────────────────┐
│ Express.js Backend │
│ ┌──────────────────────────┐ │
│ │ Authentication Layer │ │
│ │ (MetaMask/Email) │ │
│ └──────────────────────────┘ │
│ ┌──────────────────────────┐ │
│ │ Role-Based Access │ │
│ │ Control (RBAC) │ │
│ └──────────────────────────┘ │
│ ┌──────────────────────────┐ │
│ │ Evidence Processing │ │
│ │ (Upload/Watermark) │ │
│ └──────────────────────────┘ │
│ ┌──────────────────────────┐ │
│ │ Real-time Events │ │
│ │ (Socket.IO) │ │
│ └──────────────────────────┘ │
└────┬──────────┬─────────┬───────┘
│ │ │
│ │ │
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌──────────┐
│Supabase │ │ IPFS │ │Blockchain│
│PostgreSQL│ │(Pinata) │ │(Polygon) │
│ +RLS │ │ Storage │ │ Network │
└─────────┘ └─────────┘ └──────────┘
```
### 数据流
**证据上传流程**:
1. 用户通过 MetaMask 或邮箱认证
2. 通过 RBAC 系统进行角色验证
3. 证据文件上传到 Express 后端
4. 文件处理(加水印、压缩)
5. 文件存储在 IPFS(通过 Pinata)
6. 元数据和 IPFS 哈希存储在 Supabase
7. 在 Polygon 区块链上记录交易
8. 在数据库中创建审计日志
9. 通过 Socket.IO 发送实时通知
**访问控制流程**:
1. 用户登录 → 生成 JWT 令牌
2. 每个请求根据用户角色进行验证
3. Supabase RLS 策略强制数据库安全
4. 记录审计跟踪以符合合规要求
### 关键组件
| 组件 | 技术 | 用途 |
| ------------- | ---------------- | ---------------------------- |
| **前端** | HTML/CSS/JS | 用户界面和交互 |
| **API 服务器** | Express.js | REST API 和业务逻辑 |
| **WebSocket** | Socket.IO | 实时通知 |
| **数据库** | Supabase (PostgreSQL) | 结构化数据存储 |
| **文件存储** | IPFS/Pinata | 去中心化证据存储 |
| **区块链** | Polygon | 不可变审计跟踪 |
| **认证** | MetaMask/Supabase 认证 | 用户认证 |
| **授权** | 自定义 RBAC | 基于角色的权限 |
有关详细架构文档,请参阅 [Implementation Summary](docs/IMPLEMENTATION_SUMMARY.md)。
## ⭐ 支持与星标
如果您发现此项目有帮助,请考虑给它一个 **星标**!这有助于他人发现项目并激励维护者。
## 💬 建议与反馈
我们重视您的反馈!如果您有功能建议或发现错误,请在仓库中打开问题或开始讨论。
## 🤝 贡献
我们欢迎开发者、安全研究人员、法律专业人士以及任何对改进数字证据管理充满热情的人士贡献!
### 🚀 快速贡献指南
1. **Fork 仓库** 并在本地克隆
2. **阅读我们的 [贡献指南](CONTRIBUTING.md)** 获取详细说明
3. **查看 [开放问题](https://github.com/Gooichand/blockchain-evidence/issues)** 获取帮助方式
4. **加入讨论** 在 GitHub Discussions 中交流
### 🎯 贡献方式
- 🐛 **错误报告**:发现问题请告知我们!
- 💡 **功能请求**:有改进想法?
- 🔧 **代码贡献**:修复错误或添加新功能
- 📚 **文档**:帮助改进我们的指南和文档
- 🎨 **设计与 UX**增强用户界面
- 🧪 **测试**:帮助我们测试新功能
- 🌐 **本地化**:将应用翻译成其他语言
### 📋 贡献流程
1. **选择问题** 或提出新功能
2. **Fork 并创建分支** 进行修改
3. **提交更改** 遵循我们的编码标准
4. **充分测试** 并添加文档
5. **提交 Pull Request** 并附上清晰说明
有关详细指南,请参阅我们的 **[贡献指南](CONTRIBUTING.md)**。
### 👥 贡献者
感谢所有为 EVID-DGC 做出贡献的开发者!🎉
### 🏆 核心团队
### 🌟 所有贡献者
**想看到您的名字在这里?** 请查看我们的 [贡献指南](CONTRIBUTING.md) 并今天开始贡献!
### 🎖️ 认可方式
我们以多种方式认可贡献者:
- **README 贡献者部分**(上方)
- **发布说明** 对重大贡献的认可
- **GitHub 贡献者页面** 自动识别
- **特别提及** 在项目更新和社交媒体中
### 💝 如何参与
- **星标仓库** ⭐ 以表示支持
- **关注仓库** 👀 以保持更新
- **Fork 并贡献** 🍴 以帮助改进项目
- **分享给他人** 📢 分享感兴趣的内容
- **参与讨论** 💬 在 GitHub Issues 和 Discussions 中交流
## 📄 许可证
本项目根据 Apache License 2.0 许可 - 详见 [LICENSE](LICENSE) 文件。
```
Copyright 2025 EVID-DGC Blockchain Evidence Management System
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
```
## 📜 行为准则
我们致力于提供一个友好、安全和欢迎的环境。请查阅我们的 [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)。
### 技术栈(当前实现)
| 类别 | 技术 | 状态 |
| --------------- | ----------------------------------------- | -------- |
| **前端** | HTML5, CSS3, Vanilla JavaScript, Socket.IO 客户端 | ✅ 运行中 |
| **后端** | Node.js v16+, Express.js, Socket.IO(实时) | ✅ 运行中 |
| **数据库** | Supabase(带有行级安全的 PostgreSQL) | ✅ 运行中 |
| **认证** | MetaMask/Web3, 邮箱/密码 | ✅ 运行中 |
| **文件处理** | Multer, Sharp, PDF-Lib | ✅ 运行中 |
| **图标与 UI** | Lucide 图标, 自定义 CSS | ✅ 运行中 |
| **托管** | Render, Vercel, Netlify 兼容 | ✅ 运行中 |
| **智能合约** | Solidity(部署在 Polygon Amoy) | ✅ 阶段 2 |
| **存储** | 通过 Pinata API 的 IPFS | ✅ 阶段 2 |
| **区块链** | Polygon Amoy 测试网(可生产使用) | ✅ 阶段 2 |
### 用户角色
系统实现了 8 个不同的角色以确保严格的访问控制:
1. **公共查看者**:浏览公共案件信息。
2. **调查员**:处理案件创建和证据上传。
3. **取证分析师**:执行技术分析并生成报告。
4. **法律专业人士**:对案件和证据进行法律审查。
5. **法院官员**:管理司法程序和日程安排。
6. **证据管理员**:维护保管链和存储完整性。
7. **审计员**:监督系统合规性并审查审计日志。
8. **管理员**:完整的系统监督、用户管理和配置。
## 📁 文件夹结构
```
blockchain-evidence/
├── contracts/ # Smart contract files
│ └── EvidenceStorage.sol # Main evidence storage contract
├── docs/ # Complete documentation
│ ├── USER_GUIDE.md # User manual for all roles
│ ├── DEVELOPER_GUIDE.md # Development setup and workflow
│ ├── SECURITY.md # Security practices and policies
│ ├── DEPLOYMENT.md # Production deployment guide
│ ├── MAINTENANCE.md # System maintenance procedures
│ └── swagger.js # API documentation (OpenAPI)
├── public/ # Frontend application (80+ files)
│ │
│ ├── 🏠 Core Landing & Pages
│ │ ├── index.html # Main landing page with login options
│ │ ├── app.js # Core frontend application logic
│ │ ├── config.js # Global configuration settings
│ │ ├── styles.css # Global stylesheet
│ │ ├── quickstart.html # Quick start guide page
│ │ ├── privacy.html # Privacy policy page
│ │ ├── favicon.ico # Site favicon
│ │ └── logo-32x32.png # Application logo
│ │
│ ├── 🔐 Authentication & Security (15 files)
│ │ ├── forgot-password.js # Password reset functionality
│ │ ├── reset-password.html # Password reset page
│ │ ├── password-security.css # Password security styling
│ │ ├── password-security.js # Password policy enforcement
│ │ ├── password-strength.js # Password strength validator
│ │ ├── password-policy-admin.js # Admin password policy config
│ │ ├── two-factor-auth.css # 2FA styling
│ │ ├── two-factor-auth.js # Two-factor authentication logic
│ │ ├── two-factor-integration.js # 2FA system integration
│ │ ├── session-manager.js # User session management
│ │ ├── session-timeout.css # Session timeout styling
│ │ ├── session-timeout.js # Auto-logout functionality
│ │ ├── session-timeout-admin.js # Admin session timeout config
│ │ ├── comprehensive-registration.js # Enhanced registration system
│ │ └── storage.js # Local storage utilities
│ │
│ ├── 👤 Account & User Management (5 files)
│ │ ├── account-settings.html # User account settings page
│ │ ├── account-settings.js # Account settings logic
│ │ ├── account-settings-styles.css # Account settings styling
│ │ ├── profile.html # User profile page
│ │ └── user-roles.html # User role information page
│ │
│ ├── 📊 Dashboards - Role Based (9 files)
│ │ ├── dashboard.html # Main dashboard (role redirect)
│ │ ├── dashboard-navigator.js # Dashboard navigation logic
│ │ ├── dashboard-public.html # Public viewer dashboard
│ │ ├── dashboard-investigator.html # Investigator dashboard
│ │ ├── dashboard-analyst.html # Forensic analyst dashboard
│ │ ├── dashboard-legal.html # Legal professional dashboard
│ │ ├── dashboard-court.html # Court official dashboard
│ │ ├── dashboard-manager.html # Evidence manager dashboard
│ │ ├── dashboard-auditor.html # Auditor dashboard
│ │ └── admin.html # Administrator dashboard
│ │
│ ├── 🗂️ Case Management (7 files)
│ │ ├── case-management.html # Case creation and management
│ │ ├── cases.html # Case listing and search
│ │ ├── case-status-manager.js # Case status workflow
│ │ ├── case-status-styles.css # Case status styling
│ │ ├── case-timeline.html # Case timeline visualization
│ │ ├── case-hash-manifest.js # Case hash tracking
│ │ └── case-summary-exporter.js # Case summary export
│ │
│ ├── 📁 Evidence Management (16 files)
│ │ ├── evidence-manager.html # Main evidence management
│ │ ├── enhanced-evidence-upload.js # Advanced upload features
│ │ ├── enhanced-upload-styles.css # Upload UI styling
│ │ ├── evidence-display.css # Evidence display styling
│ │ ├── evidence-display.js # Evidence display logic
│ │ ├── evidence-preview.css # Preview modal styling
│ │ ├── evidence-preview.js # Evidence preview system
│ │ ├── evidence-preview-styles.css # Additional preview styles
│ │ ├── evidence-preview-system.js # Preview system core
│ │ ├── evidence-viewers.js # Multi-format file viewers
│ │ ├── evidence-comparison.css # Comparison view styling
│ │ ├── evidence-comparison.html # Evidence comparison tool
│ │ ├── evidence-comparison.js # Comparison logic
│ │ ├── evidence-export.html # Evidence export page
│ │ ├── evidence-exporter.js # Export functionality
│ │ ├── evidence-tagging.html # Evidence tagging system
│ │ ├── evidence-tagging.js # Tag management logic
│ │ ├── evidence-verification.html # Evidence verification page
│ │ ├── evidence-verification.js # Blockchain verification
│ │ └── tag-manager.js # Tag CRUD operations
│ │
│ ├── 📜 Policy & Compliance (8 files)
│ │ ├── retention-policy.html # Retention policy management
│ │ ├── retention-policy.js # Retention policy logic
│ │ ├── retention-policy-manager.js # Policy enforcement
│ │ ├── retention-policy-styles.css # Retention policy styling
│ │ ├── legal-hold-management.html # Legal hold system
│ │ ├── data-protection.html # Data protection policies
│ │ ├── audit-trail.html # System audit trail viewer
│ │ └── activity-feed-widget.js # Activity feed component
│ │
│ ├── 👥 Role Management (7 files)
│ │ ├── role-manager.js # Role assignment logic
│ │ ├── role-wizard.js # Role selection wizard
│ │ ├── role-wizard-styles.css # Role wizard styling
│ │ ├── role-selection-wizard.js # Role onboarding wizard
│ │ ├── role-landing-system.js # Role-based landing pages
│ │ ├── role-change-approval.js # Role change workflow
│ │ └── settings.html # Role & system settings
│ │
│ ├── 🎨 UI/UX & Accessibility (6 files)
│ │ ├── responsive-improvements.css # Mobile responsive fixes
│ │ ├── accessibility-fixes.css # WCAG compliance fixes
│ │ ├── accessibility-manager.js # Accessibility features
│ │ ├── loading-screen.css # Loading screen styling
│ │ ├── loading-screen.js # Loading screen component
│ │ ├── fixed-navbar.js # Sticky navigation bar
│ │ ├── navbar.js # Navigation logic
│ │ ├── stability-fixes.css # UI stability patches
│ │ └── empty-states-system.js # Empty state components
│ │
│ ├── ℹ️ Help & Support (3 files)
│ │ ├── help-center.html # Help center main page
│ │ ├── help-center.js # Help center logic
│ │ ├── help-center-styles.css # Help center styling
│ │ ├── troubleshooting.html # Troubleshooting guide
│ │ └── api-reference.html # API documentation page
│ │
│ ├── 📈 System Monitoring (3 files)
│ │ ├── system-health.html # System health dashboard
│ │ ├── timeline-visualization.html # Activity timeline view
│ │ ├── timeline-visualization.js # Timeline rendering
│ │ └── notifications.js # Real-time notifications
│ │
│ └── 🛠️ System Utilities (4 files)
│ ├── enhanced-error-handling.js # Global error handling
│ ├── enhanced-stability.js # Stability improvements
│ ├── blockchain-feedback.js # Blockchain operation feedback
│ └── css/ # Additional stylesheets
│
├── server.js # Express.js backend server
├── complete-database-setup-fixed.sql # Complete database schema
├── package.json # Dependencies and scripts
├── render.yaml # Render.com deployment config
├── .env.example # Environment variables template
├── .gitignore # Git ignore rules
├── LICENSE # Apache 2.0 license
├── SECURITY.md # Security policy
├── CODE_OF_CONDUCT.md # Community guidelines
├── CONTRIBUTING.md # Contribution guidelines
└── README.md # Project documentation
```
### 📝 关键文件描述
#### 核心系统文件
- **server.js** - 带有 Socket.IO 的 Express 后端,处理所有 API 端点、认证、文件上传和数据库操作
- **complete-database-setup-fixed.sql** - 完整的 PostgreSQL 架构,包含 17+ 个表、行级安全策略、触发器和存储函数
- **package.json** - Node.js 依赖项(321 个包)和开发与部署的 npm 脚本
#### 配置与环境
- **.env.example** - 环境变量模板(Supabase URL、API 密钥、JWT 密钥)
- **render.yaml** - Render.com 部署配置,包含构建和启动命令
- **public/config.js** - 前端 API 端点、文件大小限制和支持格式的配置
#### 文档(docs/)
- **USER_GUIDE.md** - 完整的用户手册,包含角色特定说明和工作流程
- **DEVELOPER_GUIDE.md** - 开发设置、架构概述、API 参考和贡献指南
- **SECURITY.md** - 安全实现细节、最佳实践和漏洞报告
- **DEPLOYMENT.md** - Render、Vercel 和 Netlify 的生产部署说明
- **MAINTENANCE.md** - 系统维护程序、备份策略和故障排除
## 📚 文档
### 快速链接
- 🚀 [快速开始](#-how-to-run-locally)
- 📖 [用户指南](docs/USER_GUIDE.md)
- 💻 [开发者指南](docs/DEVELOPER_GUIDE.md)
- 📡 [API 文档](docs/swagger.js)
- 🔒 [安全指南](docs/SECURITY.md)
- 🚀 [部署指南](docs/DEPLOYMENT.md)
- 🔧 [维护指南](docs/MAINTENANCE.md)
### 完整文档
| 主题 | 描述 | 链接 |
| --------------------- | ----------------------------------------- | --------------------------------------------- |
| **用户指南** | 角色特定指南和常见任务 | [👤 用户指南](docs/USER_GUIDE.md) |
| **开发者指南** | 设置、架构和开发工作流程 | [💻 开发者指南](docs/DEVELOPER_GUIDE.md) |
| **API 文档** | 完整的 API 参考和示例 | [📡 API 文档](docs/swagger.js) |
| **安全指南** | 安全实践和漏洞缓解措施 | [🔒 安全指南](LINK_URL_16/>) |
| **部署指南** | 部署到 Render、Vercel 或 Netlify | [🚀 部署](docs/DEPLOYMENT.md) |
| **维护指南** | 常规维护和故障排除 | [🔧 维护](docs/MAINTENANCE.md) |
## 🚀 如何本地运行
### 先决条件
在开始前,请确保已安装以下内容:
- **Node.js**(v16 或更高版本) - [下载](https://nodejs.org/)
- **npm**(随 Node.js 附带)或 **yarn**
- **Git** - [下载](https://git-scm.com/)
- **MetaMask** 浏览器扩展 - [安装](https://metamask.io/)
- **Supabase** 账户 - [注册](https://supabase.com/)
- **代码编辑器**(推荐 VS Code)
### 1. 克隆仓库
```
# 克隆仓库
git clone
![]() Gooichand 🚀 Project Lead & Core Developer |
标签:Apache 2.0许可, CVE, GNU通用公共许可证, IPFS, MITM代理, Node.js, RBAC, Render部署, Supabase, Web3取证, XML 请求, Zenmap, 不可篡改, 区块链应用, 区块链证据管理, 去中心化存储, 可信时间戳, 司法取证, 哈希校验, 安全开发, 审计日志, 开源, 执法系统, 数字签名, 数字证据, 数据完整性, 权限管理, 模型越狱, 法院系统, 测试用例, 电子取证, 自定义脚本, 角色访问控制, 证据保全, 链上存证, 防篡改
