Foundry ja Hardhat
Rust-pohjaiset työkalut.
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/— sopimuksettest/— Solidity-testitiedostot (pääte.t.sol)script/— käyttöönottoskriptit (pääte.s.sol)lib/— git-alimoduuleina asennetut riippuvuudetfoundry.toml— määritykset
myproject/
src/Counter.sol
test/Counter.t.sol
script/Deploy.s.sol
lib/forge-std/
foundry.tomlRiippuvuuksien 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 remappingsCheatcodet
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_projectPikatarkistus
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.
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
- Foundry ja Hardhat
- forge-testaus
- Fuzzing ja invariantit
- cast ja anvil