Kompilera kontrakt
Byggartefakter
Kompilera kontrakt är en gratis lektion i Grunderna i Web3- och DApp-utveckling på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Grunderna i Web3- och DApp-utveckling, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Grunderna i Web3- och DApp-utveckling innehåller totalt 4 lektioner.
Varför kompilera
Solidity-källkod kan inte köras direkt på EVM. Kompilatorn omvandlar .sol-filer till bytekod och ett ABI som verktyg och klienter använder.
- Bytekod — instruktionerna på låg nivå som distribueras on-chain.
- ABI — ett JSON-gränssnitt som beskriver funktioner och händelser.
Kompileringsuppgiften
Hardhat kompilerar alla kontrakt i contracts/ med ett enda kommando:
npx hardhat compileHardhat hämtar automatiskt rätt version av solc, så Du behöver inte installera kompilatorn manuellt.
npx hardhat compileVälja Solidity-version
Kompilatorversionen anges i hardhat.config.js och måste uppfylla pragma-villkoret i Dina kontrakt:
module.exports = {
solidity: "0.8.24",
};Om Ditt kontrakt innehåller pragma solidity ^0.8.24; måste den konfigurerade versionen vara kompatibel, annars misslyckas kompileringen.
module.exports = {
solidity: "0.8.24",
};Byggartefakter
Efter kompileringen skriver Hardhat utdata till mappen artifacts/. Varje kontrakt får en JSON-fil som innehåller:
abi— applikationens binära gränssnitt.bytecode— bytekod för distribution.deployedBytecode— bytekod för körning.
Det är dessa artefakter som ethers.js läser in för att interagera med Ditt kontrakt.
Cachemappen
Hardhat använder en cache/-mapp för att hålla reda på vad som har ändrats. Vid nästa kompilering kompileras endast ändrade filer om.
Denna inkrementella kompilering gör att stora projekt byggs snabbt. Om något verkar vara inaktuellt kan Du tvinga fram ett nytt bygge.
Rensa bygget
Om Du vill ta bort cachade och genererade filer kör Du rensningsuppgiften:
npx hardhat cleanDetta tar bort artifacts/ och cache/. Använd den när Du misstänker att en inaktuell artefakt orsakar märkligt beteende och kompilera sedan om.
npx hardhat cleanKompilatoroptimering
Optimeraren minskar gaskostnaderna och bytekodens storlek. Aktivera den i konfigurationen:
module.exports = {
solidity: {
version: "0.8.24",
settings: {
optimizer: { enabled: true, runs: 200 },
},
},
};Ett högre värde för runs optimerar för frekventa anrop, medan ett lägre värde optimerar för distributionsstorlek.
module.exports = {
solidity: {
version: "0.8.24",
settings: {
optimizer: { enabled: true, runs: 200 },
},
},
};Flera kompilatorversioner
Om olika kontrakt behöver olika Solidity-versioner kan Du ange flera kompilatorer:
module.exports = {
solidity: {
compilers: [
{ version: "0.8.24" },
{ version: "0.7.6" },
],
},
};Hardhat väljer en matchande kompilator för varje fil baserat på dess pragma.
module.exports = {
solidity: {
compilers: [
{ version: "0.8.24" },
{ version: "0.7.6" },
],
},
};Läsa kompilatorvarningar
Kompilatorn rapporterar fel (som stoppar bygget) och varningar (som inte gör det). Vanliga varningar är:
- Oanvända lokala variabler.
- Skuggade deklarationer.
- Funktioner som kan markeras som
viewellerpure.
Ta varningar på allvar — de antyder ofta verkliga buggar.
Använda ABI senare
Efter kompileringen importerar Du artefakten i skript eller tester för att ansluta till ett kontrakt:
const artifact = require("./artifacts/contracts/Greeter.sol/Greeter.json");
console.log(artifact.abi);Verktyg som ethers.js använder detta ABI för att koda och avkoda anrop korrekt.
const artifact = require("./artifacts/contracts/Greeter.sol/Greeter.json");
console.log(artifact.abi);Tvinga fram en omkompilering
Som standard hoppar Hardhat över filer som inte har ändrats. Om Du vill bygga om allt utan att rensa kan Du skicka med force-flaggan:
npx hardhat compile --forceDetta är användbart efter ändringar av kompilatorinställningar, som den inkrementella cachen kanske inte upptäcker på egen hand.
npx hardhat compile --forceSnabbkontroll
Testa Din förståelse av kompilering i Hardhat.
Sammanfattning
Du har lärt Dig hur Hardhat kompilerar kontrakt.
npx hardhat compilebygger alla kontrakt och hämtar rätt solc.- Artefakter (ABI + bytekod) hamnar i
artifacts/; inkrementella byggen användercache/. npx hardhat cleantar bort inaktuella utdata.- Optimeraren och flera kompilatorversioner konfigureras i
hardhat.config.js. - Åtgärda alltid varningar — de avslöjar ofta buggar.
Lär dig Grunderna i Web3- och DApp-utveckling med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 29
- Lektioner
- 105
Vanliga frågor
Är lektionen ”Kompilera kontrakt” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Grunderna i Web3- och DApp-utveckling, inklusive ”Kompilera kontrakt”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Grunderna i Web3- och DApp-utveckling innehåller totalt 4 lektioner.
Vad lär jag mig i ”Kompilera kontrakt”?
Byggartefakter Ni övar på Grunderna i Web3- och DApp-utveckling med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Grunderna i Web3- och DApp-utveckling?
Du behöver inga förkunskaper. Utbildningen i Grunderna i Web3- och DApp-utveckling på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Kompilera kontrakt”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Grunderna i Web3- och DApp-utveckling-lektionen?
Ja. Varje Grunderna i Web3- och DApp-utveckling-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Konfigurera Hardhat
- Kompilera kontrakt
- Skript och uppgifter
- Lokalt nätverk och forking