Rete locale e fork
Ambienti di test
Rete locale e fork è una lezione Web3 & DApp Development Fundamentals gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Web3 & DApp Development Fundamentals, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Web3 & DApp Development Fundamentals include 4 lezioni in totale.
Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.
The Hardhat Network
Hardhat ships with a built-in local Ethereum network designed for development. It runs in-memory, mines blocks instantly, and gives you funded test accounts.
- No real ETH or gas costs.
- Deterministic accounts you can reuse.
- Rich error messages and stack traces.
Starting a Local Node
Run a standalone JSON-RPC server so wallets and front-ends can connect:
npx hardhat nodeThis prints 20 funded accounts with their private keys and listens on http://127.0.0.1:8545.
npx hardhat nodeThe localhost Network
To target the running node, define a localhost network in your config:
module.exports = {
solidity: "0.8.24",
networks: {
localhost: { url: "http://127.0.0.1:8545" },
},
};Then deploy with npx hardhat run scripts/deploy.js --network localhost.
module.exports = {
solidity: "0.8.24",
networks: {
localhost: { url: "http://127.0.0.1:8545" },
},
};In-Process vs Standalone
There are two ways to use the Hardhat Network:
- In-process — a fresh network spun up automatically when you run
testorrunwithout--network. State is discarded after. - Standalone — started with
npx hardhat nodeand kept alive for external connections.
What Is Forking
Forking creates a local copy of a real network (like Ethereum mainnet) at a given block. You get all the on-chain state — deployed contracts, balances, token data — but can experiment freely.
This is perfect for testing against live protocols such as Uniswap or Aave without spending real funds.
Configuring a Fork
Enable forking by pointing the Hardhat network at an archive RPC URL:
module.exports = {
networks: {
hardhat: {
forking: {
url: "https://mainnet.example-rpc.io/KEY",
},
},
},
};You typically need an archive node provider for full historical state.
module.exports = {
networks: {
hardhat: {
forking: {
url: "https://mainnet.example-rpc.io/KEY",
},
},
},
};Pinning a Block Number
For reproducible tests, pin the fork to a specific block:
forking: {
url: "https://mainnet.example-rpc.io/KEY",
blockNumber: 19000000,
}Pinning keeps state stable and lets Hardhat cache responses, so tests run faster and never drift as the chain advances.
forking: {
url: "https://mainnet.example-rpc.io/KEY",
blockNumber: 19000000,
}Impersonating Accounts
On a fork you can act as any address — even one you do not own — to test flows like a whale moving tokens:
await hre.network.provider.request({
method: "hardhat_impersonateAccount",
params: ["0xWhaleAddress"],
});
const whale = await hre.ethers.getSigner("0xWhaleAddress");await hre.network.provider.request({
method: "hardhat_impersonateAccount",
params: ["0xWhaleAddress"],
});
const whale = await hre.ethers.getSigner("0xWhaleAddress");Time and Block Manipulation
The local network exposes special RPC methods to control time and blocks, useful for testing vesting or auctions:
// Advance time by 1 day
await hre.network.provider.send("evm_increaseTime", [86400]);
// Mine a new block
await hre.network.provider.send("evm_mine");// Advance time by 1 day
await hre.network.provider.send("evm_increaseTime", [86400]);
// Mine a new block
await hre.network.provider.send("evm_mine");Resetting State
You can reset the fork back to a clean snapshot between tests:
await hre.network.provider.request({
method: "hardhat_reset",
params: [],
});This restores the original forked state without restarting the process, keeping test runs isolated.
await hre.network.provider.request({
method: "hardhat_reset",
params: [],
});Snapshots and Reverts
Beyond a full reset, you can take lightweight snapshots and revert to them, which is how test fixtures work under the hood:
const id = await hre.network.provider.send("evm_snapshot");
// ... run some transactions ...
await hre.network.provider.send("evm_revert", [id]);Each snapshot id can be reverted to once.
const id = await hre.network.provider.send("evm_snapshot");
// ... run some transactions ...
await hre.network.provider.send("evm_revert", [id]);Quick Check
Test your understanding of local networks and forking.
Recap
You learned to run and fork local networks.
npx hardhat nodestarts a standalone JSON-RPC node with funded accounts.- The in-process network is used automatically for tests and discarded after.
- Forking copies live mainnet state locally for safe experimentation.
- Pin
blockNumberfor reproducibility and caching. - Special RPC methods impersonate accounts, advance time, mine blocks, and reset state.
Impara Web3 & DApp Development Fundamentals con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 29
- Lezioni
- 105
Domande Frequenti
La lezione «Rete locale e fork» è gratuita?
Sì — il testo completo di «Rete locale e fork» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Web3 & DApp Development Fundamentals, passa a CoddyKit PRO. Il corso Web3 & DApp Development Fundamentals include 4 lezioni in totale.
Cosa imparerò in «Rete locale e fork»?
Ambienti di test Eserciti Web3 & DApp Development Fundamentals con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Web3 & DApp Development Fundamentals?
Non è richiesta alcuna esperienza precedente. Web3 & DApp Development Fundamentals su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Rete locale e fork»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Web3 & DApp Development Fundamentals?
Sì. Ogni lezione Web3 & DApp Development Fundamentals include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Configurazione di Hardhat
- Compilazione dei contratti
- Script e task
- Rete locale e fork