Tools & Environment Setup
Remix (remix.ethereum.org) is a browser IDE: file explorer, compiler, deploy & run panel with in-browser VMs (Remix VM), debugger, static analysis plugin, and MetaMask connection ("Injected Provider").
4.1 Remix IDE (zero-install — start here)
Remix (remix.ethereum.org) is a browser IDE: file explorer, compiler, deploy & run panel with in-browser VMs (Remix VM), debugger, static analysis plugin, and MetaMask connection ("Injected Provider"). Ideal for learning and quick experiments.
4.2 Foundry (recommended for professional development)
Foundry is a Rust-based toolkit where tests are written in Solidity:
build, test, fuzz, coverage, gas snapshots, deploy scripts, verification
Swiss-army CLI: call contracts, send txs, encode/decode ABI, convert units fast local Ethereum node; can fork mainnet
Project layout: src/ (contracts), test/ (*.t.sol), script/ (*.s.sol), lib/ (dependencies as git submodules), foundry.toml (config).
curl -L https://foundry.paradigm.xyz | bash # installs foundryup (on Windows use WSL or prebuilt binaries)
foundryup # installs forge, cast, anvil, chisel
forge init my-project && cd my-project
forge build
forge test -vvv
forge install OpenZeppelin/openzeppelin-contracts
anvil # local node at http://127.0.0.1:8545 with 10 funded test accounts
cast --to-wei 1 ether # 1000000000000000000
cast call <addr> "balanceOf(address)(uint256)" <holder> --rpc-url $RPC_URL
cast sig "transfer(address,uint256)" # 0xa9059cbb# foundry.toml
[profile.default]
src = "src"
out = "out"
libs = ["lib"]
solc_version = "0.8.28"
optimizer = true
optimizer_runs = 200
evm_version = "cancun"
remappings = ["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/"]
[fuzz]
runs = 10004.3 Hardhat (JavaScript/TypeScript ecosystem)
Hardhat is a Node.js development environment with a local network, plugins, and tests in TypeScript/JavaScript (using ethers.js or viem). Hardhat 3 (2025) adds native Solidity tests, multichain simulation, and a Rust-powered runtime, while keeping the TypeScript test workflow.
mkdir my-hardhat && cd my-hardhat
npx hardhat --init # Hardhat 3 (Hardhat 2: npm i -D hardhat && npx hardhat init)
npx hardhat compile
npx hardhat test
npx hardhat node # local JSON-RPC node at 127.0.0.1:85454.4 The compiler: solc
Version managers: solc-select (Python), or let Foundry/Hardhat download compilers automatically.
npm install -g solc # solcjs (JavaScript build)
solc --version
solc --bin --abi --optimize -o build/ MyContract.sol
solc --via-ir --optimize --optimize-runs 1000 MyContract.sol
solc --storage-layout MyContract.sol # JSON storage layout4.5 Wallets, networks, explorers
MetaMask, Rabby, Coinbase Wallet, Frame browser wallets that sign transactions Hardware wallets (Ledger, Trezor) keep keys offline — use for real funds and deployer keys
Testnets: Sepolia (apps), Hoodi (validators/staking; replaced Holesky in 2025) free test ETH from faucets
RPC providers: Alchemy, Infura, QuickNode, public endpoints JSON-RPC access to nodes
Explorers: Etherscan, Blockscout, chain-specific explorers inspect txs, verified source, read/write contracts Tenderly, Phalcon transaction simulation, tracing, debugging
4.6 Editor setup
VS Code with the Solidity extension (Nomic Foundation) or JetBrains IDEs with the Solidity plugin; forge fmt or Prettier with prettier-plugin-solidity for formatting; solhint for linting.