Skip to content

Huggin423/CrowdFunding-Dapp

Repository files navigation

基于区块链的众筹系统

参考petshop实验,通过web3和ganache、Hardhat 等工具完成合约编写、区块链部署、功能展示

功能要求

  1. 项目创建:允许用户提交项目名称、描述、筹款目标金额和截止日期 等信息。合约需要存储这些项目信息,并为每个项目分配一个唯一的 ID。
  2. 资金捐赠:允许用户选择一个正在进行中的项目,并向其捐赠一定数量的币,存入合约中。合约需要记录每个捐赠者的地址和捐赠金额,并更新项目的当前筹款总额。能够展示所有正在进行和已结束的众筹项目的信息,包括名称、描述、目标金额、已筹金额、剩余时间和捐赠者列表 (可选)。
  3. 筹款结束逻辑:基于时间结束,当达到项目的截止日期时,任何人都可以调用一个合约函数来结束该项目。
  4. 结束结果判断:
    • 达到或超过目标:合约将当前筹集到的所有资金转移给项目发起人。
    • 未达到目标:合约允许捐赠者提取他们捐赠的资金。
  5. 提取资金:项目发起人在项目成功结束后,可以调用一个合约函数将筹集到的资金提取到他们的账户。捐赠者在项目失败后,可以调用一个合约函数将他们捐赠的资金提取回来。

可选形式

控制台调用展示、编译器调用展示、前端

可选额外内容(额外加分)

  • 前端不做过多要求,可使用vue、react等前端框架完成,大家有能力的话尽量写一个简单的前端来展示,整体的效果会比较好
  • 实现基于目标完成度的阶段性资金释放 (简化版里程碑),捐款达到一定比例后,或者在项目发起人标记完成某个里程碑后 ,允许释放一部分资金。
  • 增加基于时间的早期捐赠奖励机制,例如,前 10 位捐款人可以获得额外的感谢或未来可能的福利。

文档结构

|-- artifacts
    |-- build-info
    |-- contracts
        |-- CrowdFund.sol
|-- cache
|-- contracts
    |-- CrowdFund.sol
|-- frontend
    |-- public
    |-- router
    |-- src
        |-- assets
        |-- components
        |-- contracts
        |-- stores
        |-- App.vue
        |-- main.js
    |-- views
    |-- index.html'
|-- ignition
    |-- deployments
        |-- chain-31337
    |-- modules
        |-- DeployCrowdFund.js
|-- test
    |-- CrowdFund.test.js
|-- .gitignore
|-- hardhat.config.js
|-- package-lock.json
|-- package.json
|-- README.md
|-- start-dev-environment.sh
|-- stop_hardhat_node.sh

About

一个去中心化的众筹平台

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors