Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.
Foundry consists of:
- Forge: Ethereum testing framework (like Truffle, Hardhat and DappTools).
- Cast: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data.
- Anvil: Local Ethereum node, akin to Ganache, Hardhat Network.
- Chisel: Fast, utilitarian, and verbose solidity REPL.
This repository is a collection of lesson files for the Cyfrin - Security and Auditing course - 'First audit | PasswordStore' lesson.
This README.md mainly introduces Foundry which is the framework I use during my learning.
My notes taken during this course can be found in the Notes.md file of this repository. This file is where all learnt knowledge is stored, it represents a combination of what is presented and my own input to help absorb the material faster.
From the terminal, we wanto forge to use our .env file of variables, to do that - run the following command:
$ source .env
This project uses Foundry. See the book for instructions on how to install and use Foundry.
$ forge build
$ forge test
$ forge fmt
$ forge snapshot
$ anvil
$ forge script script/Counter.s.sol:CounterScript --rpc-url <your_rpc_url> --private-key <your_private_key>
$ cast <subcommand>
- Will return hexadecimal value
- Allows to check that we are doing what we expect to be doing- e.g check hex data in metamask against the hex value of function name to verify correct function is being called
$ cast sig "functionName()"
- This is used to achieve the same goal of 'cast sig', however, this is used for functions that have parameters which makes the hex string much larger
- This would return what each of the parameters are for the function
$ cast --calldata-decode "functionName()" HexString(e.g.2a4d5b etc etc)
$ forge --help
$ anvil --help
$ cast --help