# #4作業模板:用 chainlink VRF 產生隨機數來實作樂 學號:Jess | C0041203 :::spoiler ## 基本題 - 多人可以參與這期投注,該期投注的總金額會作為當期樂透發放獎金 - 實作一個參與樂透 ==enter== Function,參與者必須投入 0.001 ether 才能參與這期樂透(提示:可定義 enter function,並用 payable 接收 eth) ```solidity= function enter () payable { // ... } ``` - 可以知道參與這期樂透有多少人 - 可以知道這期總獎金額目前是多少 ether - 合約需定義 ==getRandomNumber== Function,必須使用 ChainLink VRF 預言機來取得隨機數 - 部署合約者是 owner - 提示:在constructor設定 - owner 可以呼叫 ==pickWinner== Function,挑出這期幸運得主,並將樂透總獎金自動轉給幸運得主錢包 - 開獎條件:本期樂透總獎金必須累積到某個金額(例:0.01 eth),owner才可開獎。 - 幸運得主可獲得樂透本期總投注獎金 100% - 例:本期樂透共有 6 位 User 投入,獎池有 2 eth,則將 2 eth 全部轉給某位幸運得主 - 合約需部署到 Goerli 測試鏈,並 Verify 開源 > 盡量不要設定太大數字,因要上測試鏈,需珍惜僅有的測試幣 ## 進階題(可選) - 設定每一期樂透開獎時間限制(例如10分鐘)開獎一次 - 若開獎時間未到,owner 無法進行開獎 - 若已超過開獎時間,未累積到指定開獎金額(例:0.01 eth),則退款給本期所有投注者 ::: ## 繳交作業 - Goerli 合約地址:https://goerli.etherscan.io/address/0x2FfFE971Bc5Dd997c14c0c9f15ee7a024D419B58#code - Github 原始碼:https://gist.github.com/wangpiju/824baaa2af04f85cb9022d84abafe456 - 基本題:Y - 進階題:Y - 這次因為自己的版本只有基本題,所以改用上課的版本交功課XD,有在本地進行充分測試以及理解 ###### tags: `Solidity 工程師實戰營第 4 期`