This project built with Foundry, allows to deploy a funding contract. Here you can find everything you need to deploy, test, and use this project.
- git
- You'll know you did it right if you can run
git --version
and you see a response likegit version x.x.x
- You'll know you did it right if you can run
- foundry
- You'll know you did it right if you can run
forge --version
and you see a response likeforge 0.2.0 (816e00b 2023-03-16T00:05:26.396218Z)
- You'll know you did it right if you can run
git clone https://github.com/Miguer-dev/fund_me
cd fund_me
forge build
Deploy:
forge script scripts/DeployFundMe.s.sol
forge test
or
// Only run test functions matching the specified regex pattern.
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
.
Optionally, add your ETHERSCAN_API_KEY
if you want to verify your contract on Etherscan.
- Deploy
forge script script/DeployFundMe.s.sol --rpc-url $SEPOLIA_RPC_URL --private-key $PRIVATE_KEY --broadcast --verify --etherscan-api-key $ETHERSCAN_API_KEY
After deploying to a testnet or local net, you can run the scripts.
Using cast deployed locally example:
cast send <FUNDME_CONTRACT_ADDRESS> "fund()" --value 0.1ether --private-key <PRIVATE_KEY>
or
forge script script/FundFundMe.s.sol --rpc-url sepolia --private-key $PRIVATE_KEY --broadcast
cast send <FUNDME_CONTRACT_ADDRESS> "withdraw()" --private-key <PRIVATE_KEY>
You can estimate how much gas things cost by running:
forge snapshot
And you'll see an output file called .gas-snapshot
To run code formatting:
forge fmt