Skip to content

Crowdfunding in Blockchain,讓我們集合力量,讓美好的事物發生,來點酷提案:)

Notifications You must be signed in to change notification settings

Hazelwu2/CoolProposal

Repository files navigation

Cool Demo Documentation

「來點酷提案」利用區塊鏈技術導入慈善組織,可直接追蹤金流流向,企圖消滅傳統捐款層出不窮的詐騙案件,將透過 KYC 認證、多簽同意提款打造全新慈善型態

🛠️ 操作教學

建立提案

設定提案標題、描述、最小募資金額、目標金額、封面圖片、募資結束時間

  • 目標金額需 > 最小募資金額

建立提案

贊助

  • 提案者無法贊助,Error:「proposer can't donate」
  • 贊助金額必須大於提案設定的「最小募資金額」
  • 贊助金額必須 > 0
  • 超過募資截止時間,Error:「it already over, can't donate」
  • 提案狀態完成,表示募資金額已達標

贊助

申請提款

  • 必須是提案者錢包,才可申請提款,否則 Error:「Only Proposer can create request.」
  • 提案必須達成募款金額,否則 Error:「target not Achieve」
  • 該提案合約必須有錢,否則 Error:「The contract has no money」
  • 提領金額必須 > 0,否則 Error:「The contract has no money」
  • 合約的錢必須 > 提領金額,否則 Error:「insufficient balance」

申請提款

同意提款

  • 錢包必須是贊助過這個提案,才可同意提款,否則 Error:「Only approvers can approve」
  • 不可是提案者錢包,否則 Error:「proposal can't approve」
  • 此提款已完成,再次同意提款 Error:「proposal is complete」
  • 若已同意過,再次同意會 Error:「Only sign once」
  • 同意數 >= 贊助人數 50%,合約將自動轉錢給提案者

同意提款

退款

  • 贊助者才能退款,否則 Error:「only sponsor allow refund」
  • 提案尚未達成募資金額 && 尚未結束募資,將不可退款,Error:「target to Achieve can't refund」

退款

🛠️ 開發

本專案分為 Solidity 智能合約、前端開發。

  • 智能合約:contracts
  • 前端Dapp:f2e資料夾

📱 Dapp

Install

$ cd ./f2e
$ yarn install && yarn dev
$ yarn build # 打包
$ yarn start # 屬於 Production 發布使用,執行前需先跑 yarn build

📱 開啟 http://localhost:3000 ,便可看到 Dapp 開發環境
👨🏼‍💻 複製 .env.example,另取名 .env 設定 REACT_APP_INFURA_ID Infura 申請 Project 取得 ID

👨‍💻 Solidity

Install

$ cd batch3-final-project-team-6
$ yarn install
$ npx hardhat node # 啟動 Hardhat 節點 localhost:8545
$ npx hardhat compile
$ npx hardhat run srcripts/deploy.js --network localhost # 部署到本地
$ npx hardhat run srcripts/deploy.js --network rinkeby # 部署到Rinkby測試鏈

compile 完後前端專案會自動更新合約地址、引用最新 ABI

👨‍💻 Develop Contract & Test Connect Contract in Dapp

開發合約及部署,最後在 Dapp 調試步驟

1. 在 `contracts` 新增合約 xxx.sol
2. 在 `scripts/deploy` 新增部署
3. $ `npx hardhat run srcripts/deploy.js --network localhost` 部署到本地
4. `f2e/contract/json` 引入合約 Address 及 abi json
5. 在 Dapp `f2e/src` 進行串接調試合約

☕ 使用技術

Client: React 18, Next, chakra-ui, ethers, wagmi, web3, sweetalert2

Server: Solidity, Hardhat

👨‍💻 Environment Variables

Frontend

將以下環境變數加到 f2e/.env 中,可複製 f2e/.env.example

REACT_APP_INFURA_ID:請至 Infura 註冊取得

Solidity

複製 .env.example.env REACT_APP_INFURA_ID:請至 ALCHEMY 註冊取得 RINKEBY_PRIVATE_KEY:Rinkby狐狸錢包的私鑰,請從狐狸錢包導出私鑰

.env

ALCHEMY_API_KEY=
RINKEBY_PRIVATE_KEY=

檔案結構

以下是專案檔案結構介紹

├── artifacts
│   ├── @openzeppelin
│   ├── address
│   ├── build-info
│   ├── contracts
│   └── hardhat
├── cache
├── contracts
├── demo
├── f2e 前端資料夾
│   ├── components 元件
│   ├── contract 引入智能合約的ABI、地址
│   ├── node_modules 前端使用到的套件
│   ├── pages 前端頁面
│   ├── public Webpack打包後的靜態檔案
│   ├── styles CSS檔案
│   └── utils 小工具 js
├── node_modules hardhat 依賴套件
├── scripts hardhat 跑部署的 script
└── test hardhat 測試的 script

✨ Contributors


Hazel
Front-End Developer

Jimbo
Front-End Developer

Allen
Solidity Developer

Jim
Whitepaper Writer

☝ 編輯歷程

版本 編輯時間 編輯人 說明
v1 2022/06/11 Hazel Readme初版
v2 2022/06/11 Hazel 更改說明
v3 2022/06/13 Hazel 新增Contributors, Env
v4 2022/06/18 Hazel 新增情境
v5 2022/06/20 Hazel 新增Demo GIF示範
v6 2022/06/20 Hazel 新增Logo, Badge
tags: 期末報告 3期第6組

About

Crowdfunding in Blockchain,讓我們集合力量,讓美好的事物發生,來點酷提案:)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published