Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ileskov/lottery
Lottery contract with VRF2 Contract is using VRFv2 for generating random numbers.
https://github.com/ileskov/lottery
blockchain defi erc20-token erc721 ethereum nft smart-contracts solidity
Last synced: about 1 month ago
JSON representation
Lottery contract with VRF2 Contract is using VRFv2 for generating random numbers.
- Host: GitHub
- URL: https://github.com/ileskov/lottery
- Owner: ILESKOV
- Created: 2022-07-18T09:06:51.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2022-10-19T22:45:11.000Z (about 2 years ago)
- Last Synced: 2023-03-06T03:50:56.264Z (almost 2 years ago)
- Topics: blockchain, defi, erc20-token, erc721, ethereum, nft, smart-contracts, solidity
- Language: TypeScript
- Homepage:
- Size: 974 KB
- Stars: 5
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ♠ Lottery ♣
> Lottery contract with VRF2
> Contract is using VRFv2 for generating random numbers. Therefore, for the correct operation of the contract, it is necessary to create subscription on > https://vrf.chain.link/goerli for rinkeby testnet or https://vrf.chain.link/mainnet for mainnet, replenish the balance of LINK and add contract address as a consumer## 📁 Table of Contents
* [General Info](#-general-information)
* [Technologies Used](#-technologies-used)
* [Features](#-features)
* [Requirements For Initial Setup](#-requirements-for-initial-setup)
* [Setup](#-setup)
* [Contact](#-contact)## 🚩 General Information
- Owner(admin) of the contract can start/end lottery
- Every user can participate and price of ticket is based on LOT ERC20 tokens. Each ticket represents itself an ERC721 token
- After owner end lottery, the winner will be picked using randomness from Chainlink VRFv2 Coordinator
## 💻 Technologies Used
- Chainlink VRFv2
- hh coverage
- slither
- docgen## 🌟 Features
- Trully random contract(Ideally for lottery)
- Ticket price is based LOT tokens
- The contract has been properly reviewed.## 👀 Requirements For Initial Setup
- Install [NodeJS](https://nodejs.org/en/), should work with any node version below 16.16.0
- Install [Hardhat](https://hardhat.org/)## 📟 Setup
### 1. 💾 Clone/Download the Repository
### 2. 📦 Install Dependencies:
```
$ cd lottery_file
$ npm install
```### 3. 🔍 .env environment variables required to set up
Create .env file inside project folder
- You can get your ethereum or testnet API key [here](https://infura.io/dashboard/ethereum),[here](https://www.alchemy.com) or any other service that allow you to connect to the nodes
- You can get your private key from your wallet (Don't share your private key with untrusted parties)
- Subscription id can be obtained here after creation of subscription [here](https://vrf.chain.link)
- Key Hash and address of vrf coordinator can be obtained from here [here](https://docs.chain.link/docs/vrf-contracts) Just choose network and copy:)
- You can get your etherscan API -key [here](https://etherscan.io/myapikey).
- LOT_ADDRESS be available after deploying contracts
```
GOERLI_API =
MAINNET_API =
PRIVATE_KEY =
ETHERSCAN_KEY =
SUBSCRIPTION_ID =
KEY_HASH =
AGGREGATOR =
VRF_COORDINATOR =
PERCENT_WINNER =
PERCENT_OWNER =
TICKET_PRICE =
```### 4. ⚠️ Run Tests
```
$ npm run test
``````
$ npm run coverage
```### 5. 🚀 Deploy to GORELI or Mainnet
```
$ npm run deploy:goerli
```
```
$ npm run deploy:polygon
```
```
$ npm run deploy:mainnet
```
### Note:
deploy.ts implements the verification script and you don't need to complete any additional steps in order to verify the contract.## 💬 Contact
Created by [@LESKOV](https://www.linkedin.com/in/ivan-leskov-4b5664189/) - feel free to contact me!