Grunderna i Web3- och DApp-utveckling · Lektion

Varför OpenZeppelin

Beprövad kod

Lektion 1 av 413 steg

Varför OpenZeppelin är en gratis lektion i Grunderna i Web3- och DApp-utveckling på CoddyKit. Detta är lektion 1 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.

Vad är OpenZeppelin

OpenZeppelin Contracts är ett bibliotek med säkra, återanvändbara byggblock för smarta kontrakt i Solidity.

  • Implementerar vanliga standarder (ERC-20, ERC-721, ERC-1155).
  • Tillhandahåller moduler för åtkomstkontroll, säkerhet och verktygsfunktioner.
  • Är granskat och används i stor utsträckning i produktionsprotokoll.

Varför inte skriva det själv

Att implementera tokenstandarder på nytt för hand är riskabelt:

  • Subtila fel i aritmetik eller godkännanden kan tömma tillgångar.
  • Standarder har specialfall som är lätta att missa.
  • Anpassad kod är inte granskad eller testad av communityn.

Genom att återanvända väl beprövad kod kan Ni fokusera på Er unika logik.

Installera biblioteket

Lägg till OpenZeppelin Contracts som ett beroende:

npm install @openzeppelin/contracts

Det installeras i node_modules, och Hardhat hittar automatiskt importer därifrån.

npm install @openzeppelin/contracts

Importera kontrakt

Importera de moduler Ni behöver via deras paketsökväg:

// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

Sökvägen speglar bibliotekets mappstruktur (token, access, security, utils).

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

Ärv en standard

Ni bygger Ert kontrakt genom att ärva från en basklass. En ERC-20-token på bara några rader:

contract MyToken is ERC20 { constructor() ERC20("MyToken", "MTK") { _mint(msg.sender, 1000000 * 10 ** decimals()); } }

All logik för överföringar, godkännanden och saldon ärvs.

contract MyToken is ERC20 {
    constructor() ERC20("MyToken", "MTK") {
        _mint(msg.sender, 1000000 * 10 ** decimals());
    }
}

Åsidosätt beteende

Ni kan anpassa ärvda funktioner genom att åsidosätta dem och samtidigt anropa föräldern med super:

function transfer(address to, uint256 amount) public override returns (bool) { require(to != address(0), "No zero address"); return super.transfer(to, amount); }
function transfer(address to, uint256 amount)
    public override returns (bool) {
    require(to != address(0), "No zero address");
    return super.transfer(to, amount);
}

Modulkategorierna

OpenZeppelin är organiserat i följande områden:

  • token/ — implementeringar av ERC-20, ERC-721 och ERC-1155.
  • access/ — Ownable, AccessControl.
  • security/ — ReentrancyGuard, Pausable.
  • utils/ — hjälpverktyg för matematik, strängar och kryptografi.

Wizarden

OpenZeppelin erbjuder en webbaserad Contracts Wizard som genererar ett startkontrakt utifrån kryssrutor — välj standard, aktivera mintning, pausning eller åtkomstkontroll och kopiera koden.

Det är ett utmärkt sätt att skapa en korrekt grund innan Ni anpassar den.

Granskad och versionshanterad

OpenZeppelin-utgåvor är granskade och följer semantisk versionshantering. Lås en version i package.json så att en större uppgradering inte ändrar beteendet utan att det märks:

"@openzeppelin/contracts": "^5.0.0"

Läs migreringsguiden innan Ni uppgraderar till en ny huvudversion.

"@openzeppelin/contracts": "^5.0.0"

Ingen universallösning

OpenZeppelin säkrar byggblocken, men Er logik behöver fortfarande granskas:

  • Att ärva säkert skriven kod gör inte anpassade funktioner säkra.
  • Felkonfiguration (fel roller eller saknade kontroller) kan fortfarande skapa säkerhetshål.

Testa alltid och låt granska kontrakt med högt värde.

Contracts jämfört med Contracts-Upgradeable

OpenZeppelin levererar två paket:

  • @openzeppelin/contracts — standardkontrakt med vanliga konstruktorer.
  • @openzeppelin/contracts-upgradeable — samma moduler anpassade för proxies, med initialiserare.

Välj den uppgraderingsbara varianten endast om Ni faktiskt distribuerar bakom en proxy.

Snabb kontroll

Testa Er förståelse av varför team använder OpenZeppelin.

Sammanfattning

Ni har lärt Er varför OpenZeppelin är standardbiblioteket för Solidity.

  • Det erbjuder granskade, återanvändbara implementeringar av tokenstandarder och säkerhetsmoduler.
  • Installera med npm och ärv baskontrakt som ERC20.
  • Åsidosätt funktioner med super för att anpassa beteendet.
  • Modulerna omfattar token, access, security och utils; Wizarden skapar en kodgrund.
  • Lås versioner och testa fortfarande Er egen logik — det är ingen universallösning.
Gratis att börja

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 ”Varför OpenZeppelin” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Grunderna i Web3- och DApp-utveckling, inklusive ”Varför OpenZeppelin”, 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 ”Varför OpenZeppelin”?

Beprövad kod 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 1 av 4.

Hur lång tid tar lektionen ”Varför OpenZeppelin”?

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

  1. Varför OpenZeppelin
  2. Åtkomstkontroll
  3. Tokenutökningar
  4. Uppgraderbara kontrakt
← Tillbaka till Grunderna i Web3- och DApp-utveckling