Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/allwin199/foundry-raffle-v2.0
https://github.com/allwin199/foundry-raffle-v2.0
Last synced: 6 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/allwin199/foundry-raffle-v2.0
- Owner: allwin199
- Created: 2023-07-29T06:25:10.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-07-31T13:25:06.000Z (over 1 year ago)
- Last Synced: 2024-05-29T17:23:42.583Z (6 months ago)
- Language: Solidity
- Size: 61.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Foundry Smart Contract Lottery
# Getting Started
## Quickstart
```
git clone https://github.com/allwin199/foundry-raffle-v2.0.git
cd foundry-raffle-v2.0
forge build
```# Usage
## Start a local node
```
make anvil
```## Library
If you're having a hard time installing the chainlink library, you can optionally run this command.
```
forge install smartcontractkit/[email protected] --no-commit
```## Deploy
This will default to your local node. You need to have it running in another terminal in order for it to deploy.
```
make deploy
```## Testing
1. Unit
2. Integration
3. Forked```
forge test
```or
```
forge test --fork-url $SEPOLIA_RPC_URL
```### Test Coverage
```
forge coverage
```# Deployment to a testnet or mainnet
1. Setup environment variables
You'll want to set your `SEPOLIA_RPC_URL` and `PRIVATE_KEY` as environment variables. You can add them to a `.env` file, similar to what you see in `.env.example`.
- `PRIVATE_KEY`: The private key of your account (like from [metamask](https://metamask.io/)). **NOTE:** FOR DEVELOPMENT, PLEASE USE A KEY THAT DOESN'T HAVE ANY REAL FUNDS ASSOCIATED WITH IT.
- You can [learn how to export it here](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key).
- `SEPOLIA_RPC_URL`: This is url of the sepolia testnet node you're working with. You can get setup with one for free from [Alchemy](https://alchemy.com/?a=673c802981)Optionally, add your `ETHERSCAN_API_KEY` if you want to verify your contract on [Etherscan](https://etherscan.io/).
1. Get testnet ETH
Head over to [faucets.chain.link](https://faucets.chain.link/) and get some testnet ETH. You should see the ETH show up in your metamask.
2. Deploy
```
make deploy ARGS="--network sepolia"
```This will setup a ChainlinkVRF Subscription for you. If you already have one, update it in the `scripts/HelperConfig.s.sol` file. It will also automatically add your contract as a consumer.
3. Register a Chainlink Automation Upkeep
[You can follow the documentation if you get lost.](https://docs.chain.link/chainlink-automation/compatible-contracts)
Go to [automation.chain.link](https://automation.chain.link/new) and register a new upkeep. Choose `Custom logic` as your trigger mechanism for automation. Your UI will look something like this once completed:
## Scripts
After deploying to a testnet or local net, you can run the scripts.
Using cast deployed locally example:
```
cast send "enterRaffle()" --value 0.1ether --private-key --rpc-url $SEPOLIA_RPC_URL
```or, to create a ChainlinkVRF Subscription:
```
make createSubscription ARGS="--network sepolia"
```## Estimate gas
You can estimate how much gas things cost by running:
```
forge snapshot
```And you'll see an output file called `.gas-snapshot`
# Formatting
To run code formatting:
```
forge fmt
```# Thank you!