---
# System prepended metadata

title: 第 2 次讀書會實作練習 - 用 chainlink VRF 產生隨機數實作樂透
tags: [KryptoCamp 第 2 次讀書會實作練習]

---

# 第 2 次讀書會實作練習 - 用 chainlink VRF 產生隨機數實作樂透
學號：Dapp_余昌旻_Charming

:::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/0x3f576B6087354CA825594e7f87D67c65A20e79Ba
- Github 原始碼：（若有 github，可填入）或Gist：https://github.com/Charming0420/Solidity-Test-Database/blob/main/Chainlink_Lottery.sol
- 基本題：Y
- 進階題：N

###### tags: `KryptoCamp 第 2 次讀書會實作練習`