Lokalt nettverk og forgrening
Testmiljøer
Lokalt nettverk og forgrening er en gratis leksjon i Grunnleggende om Web3- og DApp-utvikling på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Grunnleggende om Web3- og DApp-utvikling, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Grunnleggende om Web3- og DApp-utvikling inneholder totalt 4 leksjoner.
Hardhat-nettverket
Hardhat leveres med et innebygd lokalt Ethereum-nettverk som er utviklet for utvikling. Det kjører i minnet, utvinner blokker umiddelbart og gir Dem finansierte testkontoer.
- Ingen ekte ETH eller gasskostnader.
- Deterministiske kontoer som De kan bruke på nytt.
- Detaljerte feilmeldinger og stack traces.
Starte en lokal node
Kjør en frittstående JSON-RPC-server slik at lommebøker og frontend-løsninger kan koble seg til:
npx hardhat nodeDette skriver ut 20 finansierte kontoer med de private nøklene deres og lytter på http://127.0.0.1:8545.
npx hardhat nodelocalhost-nettverket
Definer et localhost-nettverk i konfigurasjonen for å bruke noden som kjører:
module.exports = {
solidity: "0.8.24",
networks: {
localhost: { url: "http://127.0.0.1:8545" },
},
};Distribuer deretter med npx hardhat run scripts/deploy.js --network localhost.
module.exports = {
solidity: "0.8.24",
networks: {
localhost: { url: "http://127.0.0.1:8545" },
},
};I prosessen kontra frittstående
Det finnes to måter å bruke Hardhat-nettverket på:
- I prosessen — et nytt nettverk startes automatisk når De kjører
testellerrunuten--network. Tilstanden forkastes etterpå. - Frittstående — startes med
npx hardhat nodeog holdes i gang for eksterne tilkoblinger.
Hva er forking
Forking oppretter en lokal kopi av et ekte nettverk, for eksempel Ethereum mainnet, ved en bestemt blokk. De får all tilstanden på kjeden — distribuerte kontrakter, saldoer og token-data — men kan eksperimentere fritt.
Dette er perfekt for testing mot aktive protokoller som Uniswap eller Aave uten å bruke ekte midler.
Konfigurere en fork
Aktiver forking ved å angi en archive-RPC-URL for Hardhat-nettverket:
module.exports = {
networks: {
hardhat: {
forking: {
url: "https://mainnet.example-rpc.io/KEY",
},
},
},
};De trenger vanligvis en leverandør av en archive-node for å få tilgang til full historisk tilstand.
module.exports = {
networks: {
hardhat: {
forking: {
url: "https://mainnet.example-rpc.io/KEY",
},
},
},
};Fastsette et blokknivå
For reproduserbare tester bør De fastsette forken til en bestemt blokk:
forking: {
url: "https://mainnet.example-rpc.io/KEY",
blockNumber: 19000000,
}Ved å fastsette blokken forblir tilstanden stabil, og Hardhat kan mellomlagre svar. Dermed kjører testene raskere og endres aldri når kjeden utvikler seg.
forking: {
url: "https://mainnet.example-rpc.io/KEY",
blockNumber: 19000000,
}Etterligne kontoer
På en fork kan De opptre som hvilken som helst adresse — selv en De ikke eier — for å teste flyter som at en hval flytter 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");Manipulere tid og blokker
Det lokale nettverket eksponerer spesielle RPC-metoder for å kontrollere tid og blokker, noe som er nyttig ved testing av vesting eller auksjoner:
// 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");Tilbakestille tilstanden
De kan tilbakestille forken til et rent øyeblikksbilde mellom testene:
await hre.network.provider.request({
method: "hardhat_reset",
params: [],
});Dette gjenoppretter den opprinnelige forkede tilstanden uten å starte prosessen på nytt, slik at testkjøringene forblir isolerte.
await hre.network.provider.request({
method: "hardhat_reset",
params: [],
});Øyeblikksbilder og tilbakerulling
I tillegg til en full tilbakestilling kan De ta lette øyeblikksbilder og gå tilbake til dem. Det er slik test-fixtures fungerer under panseret:
const id = await hre.network.provider.send("evm_snapshot");
// ... run some transactions ...
await hre.network.provider.send("evm_revert", [id]);Hvert øyeblikksbilde kan brukes til tilbakerulling én gang.
const id = await hre.network.provider.send("evm_snapshot");
// ... run some transactions ...
await hre.network.provider.send("evm_revert", [id]);Sjekk kunnskapene
Test forståelsen Deres av lokale nettverk og forking.
Oppsummering
De har lært å kjøre og forke lokale nettverk.
npx hardhat nodestarter en frittstående JSON-RPC-node med finansierte kontoer.- Nettverket i prosessen brukes automatisk for tester og forkastes etterpå.
- Forking kopierer tilstanden fra mainnet lokalt for trygg eksperimentering.
- Fastsett
blockNumberfor reproduserbarhet og mellomlagring. - Spesielle RPC-metoder etterligner kontoer, spoler tiden frem, utvinner blokker og tilbakestiller tilstanden.
Lær deg Grunnleggende om Web3- og DApp-utvikling med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 29
- Leksjoner
- 105
Ofte stilte spørsmål
Er leksjonen «Lokalt nettverk og forgrening» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Grunnleggende om Web3- og DApp-utvikling, inkludert «Lokalt nettverk og forgrening», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Grunnleggende om Web3- og DApp-utvikling inneholder totalt 4 leksjoner.
Hva lærer jeg i «Lokalt nettverk og forgrening»?
Testmiljøer Du øver på Grunnleggende om Web3- og DApp-utvikling med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Grunnleggende om Web3- og DApp-utvikling?
Ingen tidligere erfaring er nødvendig. Grunnleggende om Web3- og DApp-utvikling på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «Lokalt nettverk og forgrening»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Grunnleggende om Web3- og DApp-utvikling-leksjonen?
Ja. Alle Grunnleggende om Web3- og DApp-utvikling-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Oppsett av Hardhat
- Kompilere kontrakter
- Skript og oppgaver
- Lokalt nettverk og forgrening