Current patterns and references for EVM development. Covers the full stack: contracts → testing → deployment → frontend integration.
LayerToolReferenceContractsSolidity 0.8.xreferences/solidity.mdFrameworkFoundry (forge/cast/anvil)references/foundry.mdFramework (alt)Hardhatreferences/hardhat.mdStandardsOpenZeppelin 5.xreferences/openzeppelin.mdStandardsERC-4626 (tokenized vaults)references/erc4626.mdFrontend (low-level)Viem 2.xreferences/viem.mdFrontend (React)Wagmi 2.xreferences/wagmi.mdFrontend (legacy)ethers.js 6.xreferences/ethers.md
Starting a new Foundry project: See references/foundry.md → Project Setup
Starting a Hardhat project: See references/hardhat.md → Installation
Writing an ERC-20: See references/openzeppelin.md → ERC-20
Building a yield vault (ERC-4626): See references/erc4626.md → OpenZeppelin Implementation
First depositor attack on vaults: See references/erc4626.md → First Depositor Attack
Connecting a wallet in React: See references/wagmi.md → Quick Start
Reading contract state with Viem: See references/viem.md → Read Contracts
Common Solidity errors: See references/solidity.md → Error Reference
Deploying to Optimism/Base with Hardhat: See references/hardhat.md → hardhat.config.ts
scripts/fetch-docs.js <topic> pulls live docs from official sources when the reference files may be stale.
bash
node scripts/fetch-docs.js solidity # Solidity docs
node scripts/fetch-docs.js foundry # Foundry book
node scripts/fetch-docs.js viem # Viem docs
node scripts/fetch-docs.js wagmi # Wagmi docs
node scripts/fetch-docs.js openzeppelin # OZ docs
node scripts/fetch-docs.js hardhat # Hardhat docs
node scripts/fetch-docs.js erc4626 # ERC-4626 (OZ vault docs)
calldata instead of memory for read-only function paramsuint128 in one slot beats two separate uint256unchecked blocks for arithmetic that can't overflow (saves ~30 gas/op)immutable > constant > storage for values set once