Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sabelomkhwanzi/ethervault
https://github.com/sabelomkhwanzi/ethervault
Last synced: about 5 hours ago
JSON representation
- Host: GitHub
- URL: https://github.com/sabelomkhwanzi/ethervault
- Owner: SabeloMkhwanzi
- Created: 2023-08-12T19:41:56.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-08-14T07:24:45.000Z (over 1 year ago)
- Last Synced: 2023-08-14T08:26:34.933Z (over 1 year ago)
- Language: Solidity
- Size: 6.84 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Foundry Smart Contract EtherVault
#### [πHere's the deployed Smart Contract](https://sepolia.etherscan.io/address/0x37d138a62be828e111e682ff7d699f47bb8dd769)
### Structure of our Project
1. Deposit any amount of ether.
- User can withdraw ether from store based on this condition
2. Address of the User must have enough ether to withdraw minimum of `1 eth`.
3. User can only withdraw only `1 eth` at the time.
4. User can only withdraw after `1 week` has completed
5. The withdrawal limit can only be change by the contract owner.
6. Contract has function to view ether balances on address and last time withdrawals made.
7. Contract also uses Chainlink data-feeds to Eth price in USD.
## Quickstart
```
git clone https://github.com/SabeloMkhwanzi/EtherVault.git
cd EtherVault
forge build
```# Usage
Deploy:
```
forge script scripts/DeployEtherVault.s.sol
```## Testing
1. Unit
This repo we cover #1 and #3.
```
forge test
```or
```
// Only run test functions matching the specified regex pattern."forge test -m testFunctionName" is deprecated. Please use
forge test --match-test testFunctionName
```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.
3. Deploy
```
forge script script/DeployFundMe.s.sol --rpc-url $SEPOLIA_RPC_URL --private-key $PRIVATE_KEY --broadcast --verify --etherscan-api-key $ETHERSCAN_API_KEY
```#### happy coding π¨βπ»