Skip to content

Latest commit

 

History

History
166 lines (110 loc) · 3.54 KB

README.md

File metadata and controls

166 lines (110 loc) · 3.54 KB

Angle Angle Project Boilerplate

CI Coverage

This repository proposes a template that is based on foundry frameworks. It also provides templates for EVM compatible smart contracts (in ./contracts/example), tests and deployment scripts.

Starting

Install packages

You can install all dependencies by running

yarn
forge i

Create .env file

In order to interact with non local networks, you must create an .env that has:

  • PRIVATE_KEY
  • MNEMONIC
  • network key (eg. ALCHEMY_NETWORK_KEY)
  • ETHERSCAN_API_KEY

For additional keys, you can check the .env.example file.

Warning: always keep your confidential information safe.

Headers

To automatically create headers, follow: https://github.com/Picodes/headers

Hardhat Command line completion

Follow these instructions to have hardhat command line arguments completion: https://hardhat.org/hardhat-runner/docs/guides/command-line-completion

Foundry Installation

curl -L https://foundry.paradigm.xyz | bash

source /root/.zshrc
# or, if you're under bash: source /root/.bashrc

foundryup

To install the standard library:

forge install foundry-rs/forge-std

To update libraries:

forge update

Foundry on Docker 🐳

If you don’t want to install Rust and Foundry on your computer, you can use Docker Image is available here ghcr.io/foundry-rs/foundry.

docker pull ghcr.io/foundry-rs/foundry
docker tag ghcr.io/foundry-rs/foundry:latest foundry:latest

To run the container:

docker run -it --rm -v $(pwd):/app -w /app foundry sh

Then you are inside the container and can run Foundry’s commands.

Tests

You can run tests as follows:

forge test -vvvv --watch
forge test -vvvv --match-path contracts/forge-tests/KeeperMulticall.t.sol
forge test -vvvv --match-test "testAbc*"
forge test -vvvv --fork-url https://eth-mainnet.alchemyapi.io/v2/Lc7oIGYeL_QvInzI0Wiu_pOZZDEKBrdf

You can also list tests:

forge test --list
forge test --list --json --match-test "testXXX*"

Deploying

There is an example script in the scripts/foundry folder. Then you can run:

yarn foundry:deploy <FILE_NAME> --rpc-url <NETWORK_NAME>

Example:

yarn foundry:deploy scripts/foundry/DeployMockAgEUR.s.sol --rpc-url goerli

Coverage

We recommend the use of this vscode extension.

yarn hardhat:coverage
yarn foundry:coverage

Simulate

You can simulate your transaction live or in fork mode. For both option you need to complete the scripts/foundry/Simulate.s.sol with your values: address sending the tx, address caled and the data to give to this address call.

For live simulation

yarn foundry:simulate

For fork simulation

yarn foundry:fork
yarn foundry:simulate:fork

For fork simulation at a given block

yarn foundry:fork:block ${XXXX}
yarn foundry:simulate:fork

Gas report

yarn foundry:gas

Slither

pip3 install slither-analyzer
pip3 install solc-select
solc-select install 0.8.11
solc-select use 0.8.11
slither .

Media

Don't hesitate to reach out on Twitter 🐦