Grunnleggende om Web3- og DApp-utvikling · leksjon

Lokalt nettverk og forgrening

Testmiljøer

Leksjon 4 av 413 trinn

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 node

Dette skriver ut 20 finansierte kontoer med de private nøklene deres og lytter på http://127.0.0.1:8545.

npx hardhat node

localhost-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 test eller run uten --network. Tilstanden forkastes etterpå.
  • Frittstående — startes med npx hardhat node og 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 node starter 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 blockNumber for reproduserbarhet og mellomlagring.
  • Spesielle RPC-metoder etterligner kontoer, spoler tiden frem, utvinner blokker og tilbakestiller tilstanden.
Gratis å komme i gang

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

  1. Oppsett av Hardhat
  2. Kompilere kontrakter
  3. Skript og oppgaver
  4. Lokalt nettverk og forgrening
← Tilbake til Grunnleggende om Web3- og DApp-utvikling