- Deposit any amount of ether.
- User can withdraw ether from store based on this condition
-
Address of the User must have enough ether to withdraw minimum of
1 eth
. -
User can only withdraw only
1 eth
at the time. -
User can only withdraw after
1 week
has completed -
The withdrawal limit can only be change by the contract owner.
-
Contract has function to view ether balances on address and last time withdrawals made.
-
Contract also uses Chainlink data-feeds to Eth price in USD.
git clone https://github.com/SabeloMkhwanzi/EtherVault.git
cd EtherVault
forge build
Deploy:
forge script scripts/DeployEtherVault.s.sol
- 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
forge coverage
- 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). 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.
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
Optionally, add your ETHERSCAN_API_KEY
if you want to verify your contract on Etherscan.
- Get testnet ETH
Head over to faucets.chain.link and get some testnet ETH. You should see the ETH show up in your metamask.
- Deploy
forge script script/DeployFundMe.s.sol --rpc-url $SEPOLIA_RPC_URL --private-key $PRIVATE_KEY --broadcast --verify --etherscan-api-key $ETHERSCAN_API_KEY