Web3:n ja DApp-sovellusten kehityksen perusteet · Oppitunti

Paikallisverkko ja haarauttaminen

Testiympäristöt.

Oppitunti 4/413 vaihetta

Paikallisverkko ja haarauttaminen on ilmainen Web3:n ja DApp-sovellusten kehityksen perusteet-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Web3:n ja DApp-sovellusten kehityksen perusteet-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Web3:n ja DApp-sovellusten kehityksen perusteet-kurssilla on yhteensä 4 oppituntia.

Hardhat Network

Hardhat sisältää kehitykseen suunnitellun sisäänrakennetun paikallisen Ethereum-verkon. Se toimii muistissa, louhii lohkot välittömästi ja tarjoaa rahoitettuja testitilejä.

  • Oikeaa ETH:ta tai kaasumaksuja ei tarvita.
  • Deterministiset tilit, joita voitte käyttää uudelleen.
  • Yksityiskohtaiset virheilmoitukset ja pinojäljet.

Paikallisen solmun käynnistäminen

Suorittakaa erillinen JSON-RPC-palvelin, jotta lompakot ja käyttöliittymät voivat muodostaa siihen yhteyden:

npx hardhat node

Tämä tulostaa 20 rahoitettua tiliä yksityisavaimineen ja kuuntelee osoitteessa http://127.0.0.1:8545.

npx hardhat node

localhost-verkko

Käynnissä olevan solmun kohdistamista varten määrittäkää asetuksiin localhost-verkko:

module.exports = { solidity: "0.8.24", networks: { localhost: { url: "http://127.0.0.1:8545" }, }, };

Sen jälkeen voitte tehdä käyttöönoton komennolla npx hardhat run scripts/deploy.js --network localhost.

module.exports = {
  solidity: "0.8.24",
  networks: {
    localhost: { url: "http://127.0.0.1:8545" },
  },
};

Prosessin sisäinen verkko ja erillinen verkko

Hardhat Networkia voi käyttää kahdella tavalla:

  • Prosessin sisäinen — uusi verkko käynnistetään automaattisesti, kun suoritatte komennon test tai run ilman valitsinta --network. Tila hylätään tämän jälkeen.
  • Erillinen — käynnistetään komennolla npx hardhat node ja pidetään käynnissä ulkoisia yhteyksiä varten.

Mitä forkkaus tarkoittaa

Forkkaus luo annetun lohkon kohdalta paikallisen kopion oikeasta verkosta, kuten Ethereum mainnetistä. Saatte käyttöön koko ketjun tilan — käyttöönotetut sopimukset, saldot ja token-tiedot — mutta voitte kokeilla vapaasti.

Tämä sopii erinomaisesti live-protokollien, kuten Uniswapin tai Aaven, testaamiseen ilman oikeiden varojen käyttämistä.

Forkin määrittäminen

Ottakaa forkkaus käyttöön ohjaamalla Hardhat-verkko archive RPC -URL-osoitteeseen:

module.exports = { networks: { hardhat: { forking: { url: "https://mainnet.example-rpc.io/KEY", }, }, }, };

Tarvitsette yleensä archive-solmun tarjoajan, jotta koko aiempi tila on käytettävissä.

module.exports = {
  networks: {
    hardhat: {
      forking: {
        url: "https://mainnet.example-rpc.io/KEY",
      },
    },
  },
};

Lohkonumeron kiinnittäminen

Toistettavia testejä varten kiinnittäkää fork tiettyyn lohkoon:

forking: { url: "https://mainnet.example-rpc.io/KEY", blockNumber: 19000000, }

Kiinnittäminen pitää tilan vakaana ja antaa Hardhatille mahdollisuuden tallentaa vastaukset välimuistiin, joten testit suoritetaan nopeammin eivätkä tulokset muutu ketjun edetessä.

forking: {
  url: "https://mainnet.example-rpc.io/KEY",
  blockNumber: 19000000,
}

Tilien toisena käyttäjänä esiintyminen

Forkissa voitte toimia millä tahansa osoitteella — myös sellaisella, jota ette omista — ja testata esimerkiksi valaan tokenien siirtämistä:

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");

Ajan ja lohkojen muokkaaminen

Paikallinen verkko tarjoaa erityisiä RPC-metodeja ajan ja lohkojen hallintaan. Niistä on hyötyä esimerkiksi vestingin tai huutokauppojen testaamisessa:

// 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");

Tilan palauttaminen

Voitte palauttaa forkin testien välillä puhtaaseen tilannevedokseen:

await hre.network.provider.request({ method: "hardhat_reset", params: [], });

Tämä palauttaa alkuperäisen forkatun tilan käynnistämättä prosessia uudelleen, joten testit pysyvät erillään toisistaan.

await hre.network.provider.request({
  method: "hardhat_reset",
  params: [],
});

Tilannevedokset ja palautukset

Kokonaan palauttamisen lisäksi voitte ottaa kevyitä tilannevedoksia ja palata niihin. Näin test fixturet toimivat taustalla:

const id = await hre.network.provider.send("evm_snapshot"); // ... run some transactions ... await hre.network.provider.send("evm_revert", [id]);

Jokaiseen tilannevedoksen tunnisteeseen voi palata kerran.

const id = await hre.network.provider.send("evm_snapshot");
// ... run some transactions ...
await hre.network.provider.send("evm_revert", [id]);

Pikatarkistus

Testatkaa, miten hyvin ymmärrätte paikalliset verkot ja forkkaamisen.

Kertaus

Opitte suorittamaan paikallisia verkkoja ja forkkaamaan niitä.

  • npx hardhat node käynnistää erillisen JSON-RPC-solmun rahoitettuine tileineen.
  • Prosessin sisäistä verkkoa käytetään automaattisesti testeissä, ja se hylätään testien jälkeen.
  • Forkkaus kopioi live-mainnetin tilan paikallisesti turvallista kokeilua varten.
  • Kiinnittäkää blockNumber toistettavuutta ja välimuistia varten.
  • Erityisillä RPC-metodeilla voi esiintyä toisena käyttäjänä, siirtää aikaa eteenpäin, louhia lohkoja ja palauttaa tilan.
Aloita maksutta

Opi Web3:n ja DApp-sovellusten kehityksen perusteet tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
29
Oppitunnit
105

Usein kysytyt kysymykset

Onko oppitunti ”Paikallisverkko ja haarauttaminen” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Web3:n ja DApp-sovellusten kehityksen perusteet-oppimispolun 3 oppituntia, myös oppitunnin “Paikallisverkko ja haarauttaminen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Web3:n ja DApp-sovellusten kehityksen perusteet-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Paikallisverkko ja haarauttaminen”?

Testiympäristöt. Harjoittelet Web3:n ja DApp-sovellusten kehityksen perusteet-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Web3:n ja DApp-sovellusten kehityksen perusteet-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Web3:n ja DApp-sovellusten kehityksen perusteet-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Paikallisverkko ja haarauttaminen”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Web3:n ja DApp-sovellusten kehityksen perusteet-oppitunnilla?

Kyllä. Jokainen Web3:n ja DApp-sovellusten kehityksen perusteet-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Hardhatin määritys
  2. Sopimusten kääntäminen
  3. Skriptit ja tehtävät
  4. Paikallisverkko ja haarauttaminen
← Takaisin: Web3:n ja DApp-sovellusten kehityksen perusteet