建立一個 Bank 銀行 使用者可以將我們發行的 Staking Token (ERC20代幣)存入銀行 使用者執行定存,會開始計算 Reward 利息回饋 使用者解除定存(withdraw),獲得 Reward 利息回饋 部署二個合約: 1. Staking Token ERC20 的智能合約 [提示:可透過 Openzeppelin Wizard 快速產生 ERC20] 3. Bank 銀行合約,並擁有以下功能 Deposit 定存:實作 deposit function,可以將 Staking Token 存入 Bank 合約 Withdraw 解除定存並提款,實作 withdraw function TimeLock 固定鎖倉期 部署方式:Remix JavaScript VM 部署合約 ![](https://i.imgur.com/BsUi7s4.png) 首先User會有788個幣 --- ![](https://i.imgur.com/Euswkwj.png) 銀行預設會有1000個幣 是發幣的合約人手打過去 --- ![](https://i.imgur.com/LoIjIZc.png) 這邊的操作: 1.deposit傳100顆幣 2.馬上提出會被鎖倉 鎖倉期為一個"週期" 3.更新銀行帳戶餘額 4.查看銀行帳戶餘額 這邊就會看到有收到那100顆幣 --- ![](https://i.imgur.com/HF3qWaL.png) 1,2:Timer按2下,模擬利息計數週期 3:然後用戶withdraw 順利提領 --- ![](https://i.imgur.com/yy32Z4C.png) 這邊一樣是刷新銀行餘額 看到從以前的1100變成979 --- ![](https://i.imgur.com/cyVzq2j.png) 最後用戶的錢包有809顆幣 用戶眼中的流程: 1.用戶投100顆進去 利息為10% 2.經過1個週期後 100x1.1 = 110 2.再經過下一個週期: 110x1.1 = 121(淨賺21) 所以他一開始有788顆幣,最後788+21 = 809 心得: 這次的練習體驗到跨合約之間的溝通,這次的設計不是照銀行的定存規則去做的,因為我不熟悉相關規定,我是按照美股ETF的理解去做的,同一筆錢複合去算年利率這樣。 但即使是這樣,這次的代碼還是有很多不足的地方,例如我把很多東西都public 資料就沒有這麼安全 這是致命的弱點 最後,很期待之後可以結合react 去做不同的嘗試 https://gist.githubusercontent.com/alex124513/bbbaf2e566c211b7b9c37de6138b9664/raw/5472a749f4bced197546ebb8b1c65ce38e0bce30/BankBasic.sol https://gist.githubusercontent.com/alex124513/bbbaf2e566c211b7b9c37de6138b9664/raw/5472a749f4bced197546ebb8b1c65ce38e0bce30/StakingToken.sol