# Blockchain Smart Contract Course Project **Repository Path**: darling47/Blockchain-Smart-Contract-Course-Project ## Basic Information - **Project Name**: Blockchain Smart Contract Course Project - **Description**: 这是我的区块链智能合约课设,主题是众筹,使用了区块链技术更加透明公开,可以点对点的帮助到每一个人而且减少了第三方的抽成,使救助更加直接,更加高效让每一笔资金都有更大的价值 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-18 - **Last Updated**: 2025-11-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### **项目策划案:基于区块链的透明求助众筹平台** #### 1. 项目概述 **目标用户**: * **求助者**:需要经济援助的个人或组织。 * **捐助者**:希望进行慈善捐助,并关心款项去向的个人。 * **管理员**:平台运营方,负责审核求助信息的真实性。 #### 2. 系统架构 系统主要由三部分组成: * **前端**:用户交互界面。 * **后端服务器**:处理业务逻辑、用户认证、与数据库和区块链交互。 * **区块链网络**:存储智能合约,处理数字货币的存、取、转。 ``` +----------------+ +------------------+ +-------------------+ | | | | | | | 前端 |<---->| 后端服务器 |<---->| MySQL 数据库 | | (Web App) | | (springboot) | | | | | | | | | +----------------+ +------------------+ +-------------------+ | | | (连接 MetaMask) | (调用合约、监听事件) | | +--------v--------------------------v-------------------------------+ | | | 区块链网络 ( hardhat) | | | | +----------------+ +----------------+ | | | 求助合约A | | 求助合约B | ... | | | (合约地址 0x123) | | (合约地址 0x456) | | | +----------------+ +----------------+ | | | +-------------------------------------------------------------------+ ``` --- #### 3. 功能模块详解 ##### 3.1. 用户系统 * **注册/登录**:传统账号/密码注册。 * **连接MetaMask**:登录后,前端引导用户连接其MetaMask钱包。这将用于后续部署合约和捐款。 ##### 3.2. 求助信息发布与审核流程 1. **用户发布求助**: * 用户填写求助表单(标题、详情、目标金额等)。 * 点击“提交”后,前端通过已连接的MetaMask**部署一个新的“求助智能合约”**。 * 部署成功后,获得一个唯一的**合约地址**。 * 后端将求助信息(标题、详情、目标金额、**合约地址**、发布者钱包地址、状态=`待审核`)存入数据库。 2. **管理员审核**: * 管理员在后台管理界面看到待审核的求助帖子。 * 管理员核实信息真实性后,将数据库中该求助帖的状态更新为 `已审核`。 * (前端)只显示状态为 `已审核` 的求助帖。 ##### 3.3. 捐款流程 1. 捐助者在已审核的求助帖中看到“求助信息”和对应的“合约地址”。 2. 点击“捐款”,输入捐款金额。 3. 前端调用MetaMask,向指定的**合约地址**发起交易。 4. 交易在区块链上确认后,捐款即被锁定在对应的智能合约中。 ##### 3.4. 取款流程 1. 求助者(即合约部署者)登录并连接自己的钱包。 2. 在“我的求助”页面,可以看到自己发布的、已审核的求助帖及其对应的合约地址和当前合约余额。 3. 点击“提取资金”,前端通过MetaMask调用该合约的`withdraw`函数。 4. 智能合约执行,将合约中的所有或指定金额的资金转移到求助者的钱包地址。 --- **关键点**: * **`constructor`**:部署时设置求助者为`owner`。 * **`receive`函数**:允许合约接收以太币,并触发`DonationReceived`事件。 * **`withdraw`函数**:仅`owner`可调用,将合约内所有资金转给`owner`。 * **事件**:前端可以监听这些事件,实时更新UI(如捐款动态、余额变化)。 --- #### 5. 数据库设计(MySQL) **核心表**: * **`users` 用户表** * `id` (INT, PK, AI) * `username` (VARCHAR) * `email` (VARCHAR) * `password_hash` (VARCHAR) * `wallet_address` (VARCHAR, 可空) // 关联的用户钱包地址 * `created_at` (TIMESTAMP) * **`requests` 求助表** * `id` (INT, PK, AI) * `user_id` (INT, FK to `users.id`) * `title` (VARCHAR) * `description` (TEXT) * `target_amount` (DECIMAL) // 目标金额 * `contract_address` (VARCHAR(42), UNIQUE) // 核心!存储部署的合约地址 * `status` (ENUM('pending', 'approved', 'rejected')) // 审核状态 * `created_at` (TIMESTAMP) * **`admins` 管理员表** * `id` (INT, PK, AI) * `user_id` (INT, FK to `users.id`) * `permissions` (VARCHAR) --- #### 6. 技术栈建议 * **前端**: Ethers.js +vue3 * **后端**:springboot * **数据库**: MySQL * **区块链开发**: * **语言**: Solidity * **开发框架**: Hardhat