「來點酷提案」利用區塊鏈技術導入慈善組織,可直接追蹤金流流向,企圖消滅傳統捐款層出不窮的詐騙案件,將透過 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資料夾
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
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
開發合約及部署,最後在 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
將以下環境變數加到 f2e/.env
中,可複製 f2e/.env.example
REACT_APP_INFURA_ID
:請至 Infura
註冊取得
複製 .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
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 |