Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/allwin199/stablecoin-foundry
This project is meant to be a stablecoin where users can deposit WETH and WBTC in exchange for a token that will be pegged to the USD.
https://github.com/allwin199/stablecoin-foundry
chainlink-price-feeds ethereum foundry smart-contracts solidity stablecoin
Last synced: 6 days ago
JSON representation
This project is meant to be a stablecoin where users can deposit WETH and WBTC in exchange for a token that will be pegged to the USD.
- Host: GitHub
- URL: https://github.com/allwin199/stablecoin-foundry
- Owner: allwin199
- Created: 2024-01-18T04:55:59.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-03-18T06:47:41.000Z (8 months ago)
- Last Synced: 2024-05-29T17:23:55.579Z (6 months ago)
- Topics: chainlink-price-feeds, ethereum, foundry, smart-contracts, solidity, stablecoin
- Language: Solidity
- Homepage: https://sepolia.etherscan.io/address/0x3563fa28e228b8af2e3dff10b48b1b3c1cb83af2#code
- Size: 79.1 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Foundry DeFi Stablecoin
# About
This project is meant to be a stablecoin where users can deposit WETH and WBTC in exchange for a token that will be pegged to the USD.
# Getting Started
## Quickstart
```
git clone https://github.com/allwin199/stablecoin-foundry.git
cd stablecoin-foundry
forge build
```# Usage
## Start a local node
```
make anvil
```## 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
```## Deploy - Other Network
[See below](#deployment-to-a-testnet-or-mainnet)
## Testing
```
forge test
```### Test Coverage
```
forge coverage
```and for coverage based testing:
```
forge coverage --report debug
```# Deployment to a testnet or mainnet
1. Setup environment variables
- You'll want to set your `SEPOLIA_RPC_URL` in environment variables. You can add them to a `.env` file, similar to what you see in `.env.example`.
- `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)
2. Use wallet options to Encrypt Private Keys
- [Private Key Encryption](https://github.com/allwin199/foundry-fundamendals/blob/main/DeploymentDetails.md)
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 deployToSepolia
```## Scripts
Instead of scripts, we can directly use the `cast` command to interact with the contract.
For example, on Sepolia:
1. Get some WETH
```
cast send 0xdd13E55209Fd76AfE204dBda4007C227904f0a81 "deposit()" --value 0.1ether --rpc-url $SEPOLIA_RPC_URL --private-key $PRIVATE_KEY
```2. Approve the WETH
```
cast send 0xdd13E55209Fd76AfE204dBda4007C227904f0a81 "approve(address,uint256)" 0x091EA0838eBD5b7ddA2F2A641B068d6D59639b98 1000000000000000000 --rpc-url $SEPOLIA_RPC_URL --private-key $PRIVATE_KEY
```3. Deposit and Mint DSC
```
cast send 0x091EA0838eBD5b7ddA2F2A641B068d6D59639b98 "depositCollateralAndMintDsc(address,uint256,uint256)" 0xdd13E55209Fd76AfE204dBda4007C227904f0a81 100000000000000000 10000000000000000 --rpc-url $SEPOLIA_RPC_URL --private-key $PRIVATE_KEY
```## 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!