Web3 Tools & Stack
This page gives you a curated, opinionated overview of Web3 tools: dev environments, RPC providers, testing frameworks, security analyzers, deployment automation and frontend clients.
Introduction
Web3 development is not about a single tool. It is about how your tools work together: compiler, test runner, local node, RPC provider, block explorer, security analyzers, deployment scripts, monitoring and frontend clients.
This page is not a marketing list — it tries to answer: “Which tools should I actually use for real projects, and how do they fit together?”
Start with 1–2 core tools (for example: Hardhat + ethers) and add the rest as your project grows. Overloaded toolchains make debugging harder, not easier.
Types of Web3 tools
Most tools fall into a few categories:
- Dev environments — Hardhat, Foundry, Remix, Truffle.
- Nodes & RPC — Anvil, Hardhat Network, Alchemy, Infura, local geth.
- Testing & debug — Hardhat toolbox, Foundry forge/cast, Tenderly.
- Security & analysis — Slither, Echidna, Mythril, linters.
- Deployment & ops — scripts, Ignition, OZ Defender, Etherscan APIs.
- Frontend & clients — ethers.js, viem, wagmi, wallet connectors.
Choosing a stack
There is no single “best” tech stack. It depends on what you’re building and what you are comfortable with. A few principles:
- Favor tools with strong docs and community.
- Use as few tools as necessary to ship safely.
- Make sure every tool is reproducible in CI (no manual steps).
For most modern projects, a great starting combo is: Hardhat 3 + TS + @nomicfoundation/hardhat-toolbox-ethers for contracts, Foundry for advanced testing, and viem / wagmi on the frontend.
Hardhat
Hardhat is a TypeScript/Node-based development environment for compiling, testing and deploying smart contracts. It integrates well with Ethers, TypeScript and JS tooling in general.
Install & init
npm install --save-dev hardhat
npx hardhat # interactive project setup
With Hardhat 3 you typically work with a hardhat.config.ts and the @nomicfoundation/hardhat-toolbox-ethers plugin for tests, fixtures and extra matchers.
Подробнее см. hardhat.html в твоей документации.
Foundry
Foundry is a fast, Rust-based toolkit with first-class Solidity testing, fuzzing and invariant testing. It is especially popular among auditors and DeFi teams.
Install
curl -L https://foundry.paradigm.xyz | bash
foundryup
Key components
- forge — compile, test, deploy.
- cast — CLI for calling contracts, sending txs, querying chain.
- anvil — local Ethereum node, similar to Hardhat Network.
Basic workflow
forge init my-project
cd my-project
forge test
anvil # local node
cast call ...
Foundry shines when you write lots of tests, fuzzing, invariant testing and low-level EVM experiments. It also integrates well with Hardhat configs via the same RPC endpoints.
Remix IDE
Remix is a browser-based IDE for Solidity. Great for quick experiments, proofs-of-concept and learning, but not ideal for large production systems.
- No local Git integration by default.
- Harder to integrate with CI and complex toolchains.
Use Remix primarily when you want to try out a small contract quickly or demo something. For real projects, move to a local environment (Hardhat / Foundry).
Truffle (legacy)
Truffle was one of the first Ethereum frameworks. Today it is largely replaced by Hardhat and Foundry in most modern stacks. You will still see it in older tutorials and legacy codebases, but you generally don’t need it for new projects.
Local nodes
Local nodes simulate a blockchain on your machine. Good local node tools:
- Anvil (Foundry) — fast, robust; supports forking mainnet.
- Hardhat Network — built into Hardhat; powerful debugging.
Run Anvil
anvil
Run Hardhat Network
npx hardhat node
Both can be used as RPC endpoints for tests, frontends and other scripts during development.
RPC providers
To talk to real networks (mainnet, testnets), you need an RPC provider:
- Alchemy
- Infura
- QuickNode
- Ankr
- Blast, Chainstack, etc.
// example Hardhat network config
networks: {
sepolia: {
type: "http",
chainType: "l1",
url: process.env.SEPOLIA_RPC_URL,
accounts: [process.env.SEPOLIA_PRIVATE_KEY],
},
}
Never commit RPC keys or private keys to Git. Always load them from environment variables or secure config variables.
Block explorers
Block explorers like Etherscan, Blockscout, SnowTrace let you inspect transactions, contract code and logs. They are essential for debugging and verifying contracts.
- Used to check: did your tx revert? what events were emitted?
- Used to verify: source code matches the on-chain bytecode.
Testing tools
Testing is where Hardhat and Foundry shine.
- Hardhat toolbox — Mocha, Chai, ethers.js, fixtures, matchers.
- Foundry — native Solidity tests, fuzzing, invariants.
Hardhat test
npx hardhat test
Foundry test
forge test
Use Hardhat for TypeScript tests (if you’re JS/TS centric), and Foundry for heavy Solidity testing and fuzz/invariant layers.
Debugging & traces
When something breaks, you want to see why. Tools:
- Hardhat traces & console.log in Solidity.
- Foundry debug & traces.
- Tenderly transaction debugger (UI).
// Hardhat - enable console.log in Solidity with console.sol
import "hardhat/console.sol";
function foo(uint x) external {
console.log("foo called with", x);
}
Tenderly
Tenderly is a Web3 platform that gives you advanced debugging, simulations, gas profiling, alerting and more, with a nice UI.
- Simulate tx before sending.
- Debug historical tx with step-by-step trace.
- Set up alerts for specific on-chain events.
Slither
Slither is a static analyzer for Solidity. It scans your code and finds common bug patterns and suspicious constructs.
Install
pip install slither-analyzer
Run
slither .
You can integrate Slither into CI so every commit is scanned automatically. Combine it with your manual review and tests — tools are helpers, not replacements for thinking.
Echidna
Echidna is a property-based fuzzer for Ethereum. You define invariants or properties and it tries to break them by generating many inputs and sequences of calls.
In practice, many teams now use Foundry for fuzzing as a simpler entry point, but Echidna remains a strong tool in security pipelines.
Mythril & other analyzers
Mythril is a symbolic execution engine for EVM bytecode. It can detect certain classes of vulnerabilities automatically, but requires some tuning to be effective.
Other analyzers and platforms (e.g. consenSys tools, commercial SaaS scanners) also exist — use them as additional layers, not as a replacement for manual audits.
Linting & code style
Good style reduces bugs. Typical tools:
- solhint — linter for Solidity.
- prettier-plugin-solidity — formatting Solidity via Prettier.
npm install --save-dev solhint prettier prettier-plugin-solidity
Add a .solhint.json and format on save in your editor. Consistent formatting makes code easier to read and review.
Deployment scripts
For deployment, you typically use scripts in Hardhat or Foundry:
- Hardhat: npx hardhat run scripts/deploy.ts --network sepolia
- Foundry: forge script / forge create
// Hardhat deploy example (simplified)
import { network, ethers } from "hardhat";
async function main() {
const { networkName } = await network.connect();
console.log("Deploying to", networkName);
const token = await ethers.deployContract("MyToken");
await token.waitForDeployment();
console.log("Token deployed at", await token.getAddress());
}
main().catch((e) => {
console.error(e);
process.exit(1);
});
Good practice: write addresses and config into a JSON file that your frontend and tests can import.
Verification tools
Verification publishes your Solidity source on explorers like Etherscan so users and other contracts can inspect it.
Typical tools:
- Hardhat Etherscan plugin / toolbox.
- Foundry’s verification helpers.
npx hardhat verify --network sepolia <deployed_address> arg1 arg2 ...
OpenZeppelin Defender
Defender is a platform by OpenZeppelin for secure operations: upgrades, relayers, admin actions, monitoring and incident response.
- Safely execute admin transactions via multisig.
- Automate routine tasks via relayers.
- Monitor events and set up alerts.
Monitoring & dashboards
For production protocols, you need observability:
- Dune / Flipside — analytics dashboards.
- Tenderly — real-time tx monitoring & alerts.
- Custom scripts using ethers / viem to watch events.
Monitoring is part of security: the faster you detect weird behavior, the more time you have to react (pause, upgrade, communicate).
ethers.js
ethers.js is a popular JavaScript/TypeScript library to interact with Ethereum: send transactions, read state, listen to events.
import { ethers } from "ethers";
const provider = new ethers.JsonRpcProvider(process.env.SEPOLIA_RPC_URL);
const signer = new ethers.Wallet(process.env.PRIVATE_KEY!, provider);
const erc20 = new ethers.Contract(
TOKEN_ADDRESS,
ERC20_ABI,
signer
);
ethers integrates smoothly with Hardhat (via toolbox) and is widely used in both backend scripts and frontends.
viem & wagmi
viem is a TypeScript-first, low-level client for EVM. wagmi builds on viem to provide React hooks for dapps.
- viem — great for type-safe, framework-agnostic usage.
- wagmi — great for React apps with wallet connections.
Typical pattern: wagmi + viem on frontend, reading addresses and ABIs from the JSON produced by your Hardhat / Foundry deployments.
Wallets & connectors
To let users connect, you use connectors on top of wallet standards:
- WalletConnect
- RainbowKit
- web3modal
They handle provider selection, session management and UI for choosing MetaMask, WalletConnect, Coinbase Wallet, etc.
JS-focused stack
If you mostly live in JavaScript and want minimal friction:
- Hardhat for contracts (JS/TS config).
- @nomicfoundation/hardhat-toolbox-ethers for testing.
- Anvil or Hardhat Network as local chain.
- ethers.js for scripts and backend.
- React + wagmi + viem for frontend.
TypeScript fullstack stack
For a full TS pipeline (contracts + backend + frontend):
- Hardhat 3 with hardhat.config.ts.
- TypeScript tests for contracts.
- Node-based backend with TS (NestJS / Express / Next API routes).
- Frontend: Next.js + wagmi + viem.
- Type-safe ABIs (for example via typechain or helpers).
Audit-focused stack
If you want to focus on security and audits:
- Foundry as core testing + fuzzing + invariants.
- Slither in CI for static analysis.
- Hardhat optionally for TS-based integration tests.
- Tenderly or similar for tx-level debugging.
- Custom scripts with cast or ethers to poke live contracts.