Web3:n ja DApp-sovellusten kehityksen perusteet · Oppitunti

Foundry ja Hardhat

Rust-pohjaiset työkalut.

Oppitunti 1/413 vaihetta

Foundry ja Hardhat on ilmainen Web3:n ja DApp-sovellusten kehityksen perusteet-oppitunti CoddyKitissä. Tämä on oppitunti 1/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.

Mikä Foundry on

Foundry on nopea Rust-pohjainen työkalupakki Ethereum-kehitykseen. Sen avulla voitte kirjoittaa testit, skriptit ja käyttöönotot kokonaan Solidityllä ilman JavaScript-kerrosta.

Sen nopeus ja Solidity-natiivi testaaminen ovat tehneet siitä monien ammattimaisten älysopimustiimien suosiman vaihtoehdon.

Neljä työkalua

Foundry sisältää neljä komentorivityökalua:

  • forge — sopimusten kääntäminen, testaaminen ja käyttöönotto
  • cast — ketjujen ja sopimusten käyttäminen CLI:stä
  • anvil — paikallinen kehityslohkoketju
  • chisel — Solidity-REPL

Yhdessä ne kattavat koko kehityksen elinkaaren.

Mikä Hardhat on

Hardhat on JavaScript- ja TypeScript-pohjainen kehitysympäristö. Testit ja skriptit kirjoitetaan JS/TS-kielillä käyttäen esimerkiksi ethers.js- tai viem-kirjastoja, ja sille on saatavilla laaja liitännäisekosysteemi.

Se sopii hyvin tiimeille, jotka tuntevat Node.js-ympäristön ja joiden projekteissa käytetään paljon ketjun ulkopuolisia työkaluja.

Testien ohjelmointikieli

Suurin ero on testien ohjelmointikielessä:

  • Foundry — testit ovat Solidity-sopimuksia, joten sopimuskoodista ei tarvitse vaihtaa kontekstia
  • Hardhat — testit ovat JavaScriptiä/TypeScriptiä, ja niissä käytetään chai-tyylistä assertiokirjastoa

Solidity-testit antavat Foundrylle suoran pääsyn sisäiseen tilaan ja matalan tason cheatcode-toimintoihin.

// Foundry test (Solidity)
function testIncrement() public {
    counter.increment();
    assertEq(counter.number(), 1);
}

Nopeus

Foundryn Rust-toteutus ja natiivi EVM tekevät siitä huomattavasti Hardhatin Node-pohjaista suorittajaa nopeamman; suurissa testikokonaisuuksissa ero on usein suuruusluokkaa.

Nopeat palautesyklit ovat tärkeitä: kun testit suoritetaan millisekunneissa, kehittäjät ajavat niitä jatkuvasti ja havaitsevat virheet aiemmin.

Projektin rakenne

Foundry-projektilla on vakiintunut rakenne:

  • src/ — sopimukset
  • test/ — Solidity-testitiedostot (pääte .t.sol)
  • script/ — käyttöönottoskriptit (pääte .s.sol)
  • lib/ — git-alimoduuleina asennetut riippuvuudet
  • foundry.toml — määritykset
myproject/
  src/Counter.sol
  test/Counter.t.sol
  script/Deploy.s.sol
  lib/forge-std/
  foundry.toml

Riippuvuuksien hallinta

Foundry asentaa riippuvuudet git-alimoduuleina komennolla forge install ja käyttää import-uudelleenmäärityksiä npm-rekisterin sijaan. Hardhat käyttää npm-paketteja.

Alimoduulit pitävät tarkan lähdekoodiversion lukittuna repositoriossa, kun taas npm tarjoaa tutun versionhallinnan ja laajan pakettiekosysteemin.

$ forge install OpenZeppelin/openzeppelin-contracts
# adds to lib/ and updates remappings

Cheatcodet

Foundryn tärkein ominaisuus ovat cheatcodet: vm-objektin kautta tehtävät erityiskutsut, joilla testien EVM-tilaa voi muokata. Voitte siirtää aikaa, asettaa saldoja, esiintyä toisina osoitteina ja odottaa revert-toimintoja.

Hardhat tarjoaa vastaavia toimintoja apuliitännäisten kautta, mutta Foundryssä ne ovat sisäänrakennettuja ja suoraan Soliditystä käytettävissä.

vm.warp(block.timestamp + 1 days);
vm.prank(alice);
vm.expectRevert("not owner");

Skriptaus ja käyttöönotto

Foundry-käyttöönotot ovat Solidity-skriptejä, jotka suoritetaan komennolla forge script. Todelliset transaktiot lähetetään käyttämällä vm.startBroadcast()-funktiota. Hardhat-käyttöönotot ovat JS-skriptejä, jotka suoritetaan komennolla hardhat run.

Solidity-skriptaus pitää käyttöönoton logiikan samassa kielessä kuin sopimukset ja vähentää kontekstin vaihtamista.

function run() external {
    vm.startBroadcast();
    new Counter();
    vm.stopBroadcast();
}

Valinta näiden välillä

Yhtä kaikille sopivaa voittajaa ei ole:

  • Valitkaa Foundry, jos arvostatte nopeutta, fuzz-testausta ja Solidity-natiivia testaamista
  • Valitkaa Hardhat, jos tarvitsette monipuoliset JS/TS-työkalut ja laajan liitännäisekosysteemin

Monet tiimit käyttävät molempia: Foundryä yksikkö- ja fuzz-testeihin sekä Hardhatia monimutkaisiin käyttöönotto- ja integraatiotehtäviin. Ne voivat toimia rinnakkain samassa repositoriossa.

Foundryn asentaminen

Foundry asennetaan foundryup-työkalulla, joka on uusimmat binäärit noutava versionhallintaohjelma. Kun asennus on valmis, forge init luo uuden projektin, joka on valmis käännettäväksi ja testattavaksi.

$ curl -L https://foundry.paradigm.xyz | bash
$ foundryup
$ forge init my_project

Pikatarkistus

Millä kielellä Foundry-testit kirjoitetaan?

Kertaus

Vertailitte kahta tärkeintä työkalupakkia:

  • Foundry on Rust-pohjainen ja käyttää Solidity-testejä; Hardhat on Node-pohjainen ja käyttää JS/TS-testejä
  • Foundryn työkalut: forge, cast, anvil ja chisel
  • Foundry on nopeampi, ja siinä on sisäänrakennetut cheatcodet ja fuzz-testaus
  • Riippuvuudet git-alimoduuleina npm:n sijaan

Seuraavaksi perehdymme testien kirjoittamiseen forgella.

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 ”Foundry ja Hardhat” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Web3:n ja DApp-sovellusten kehityksen perusteet-oppimispolun 3 oppituntia, myös oppitunnin “Foundry ja Hardhat”. 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 ”Foundry ja Hardhat”?

Rust-pohjaiset työkalut. 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 1/4.

Kuinka kauan ”Foundry ja Hardhat”-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. Foundry ja Hardhat
  2. forge-testaus
  3. Fuzzing ja invariantit
  4. cast ja anvil
← Takaisin: Web3:n ja DApp-sovellusten kehityksen perusteet