Web3 & DApp Development Fundamentals · บทเรียน

เหตุใดจึงใช้ OpenZeppelin

โค้ดที่ผ่านการทดสอบอย่างเข้มข้น

บทเรียน 1 จาก 413 ขั้นตอน

เหตุใดจึงใช้ OpenZeppelin เป็นบทเรียน Web3 & DApp Development Fundamentals ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Web3 & DApp Development Fundamentals และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Web3 & DApp Development Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

What Is OpenZeppelin

OpenZeppelin Contracts is a library of secure, reusable smart contract building blocks for Solidity.

  • Implements common standards (ERC-20, ERC-721, ERC-1155).
  • Provides access control, security, and utility modules.
  • Is audited and widely used across production protocols.

Why Not Write It Yourself

Reimplementing token standards by hand is risky:

  • Subtle bugs in arithmetic or approvals can drain funds.
  • Standards have edge cases easy to miss.
  • Custom code is unaudited and untested by the community.

Reusing battle-tested code lets you focus on your unique logic.

Installing the Library

Add OpenZeppelin Contracts as a dependency:

npm install @openzeppelin/contracts

It installs into node_modules, and Hardhat resolves imports from there automatically.

npm install @openzeppelin/contracts

Importing Contracts

Import the modules you need by their package path:

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

The path mirrors the library's folder structure (token, access, security, utils).

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

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

Inheriting a Standard

You build your contract by inheriting from a base. An ERC-20 token in just a few lines:

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

All transfer, approval, and balance logic is inherited.

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

Overriding Behavior

You can customize inherited functions by overriding them, while still calling the parent with 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);
}

The Module Categories

OpenZeppelin is organized into areas:

  • token/ — ERC-20, ERC-721, ERC-1155 implementations.
  • access/ — Ownable, AccessControl.
  • security/ — ReentrancyGuard, Pausable.
  • utils/ — math, strings, cryptography helpers.

The Wizard

OpenZeppelin offers a web-based Contracts Wizard that generates a starter contract from checkboxes — pick the standard, toggle mintable, pausable, or access control, and copy the code.

It is a great way to scaffold a correct base before customizing.

Audited and Versioned

OpenZeppelin releases are audited and follow semantic versioning. Pin a version in package.json so a major upgrade does not silently change behavior:

"@openzeppelin/contracts": "^5.0.0"

Read the migration guide before bumping major versions.

"@openzeppelin/contracts": "^5.0.0"

Not a Silver Bullet

OpenZeppelin secures the building blocks, but your logic still needs review:

  • Inheriting securely written code does not make custom functions safe.
  • Misconfiguration (wrong roles, missing checks) can still create holes.

Always test and, for high-value contracts, get an audit.

Contracts vs Contracts-Upgradeable

OpenZeppelin ships two packages:

  • @openzeppelin/contracts — standard contracts with normal constructors.
  • @openzeppelin/contracts-upgradeable — the same modules adapted for proxies, using initializers.

Pick the upgradeable variant only if you actually deploy behind a proxy.

Quick Check

Test your understanding of why teams use OpenZeppelin.

Recap

You learned why OpenZeppelin is the standard library for Solidity.

  • It offers audited, reusable implementations of token standards and security modules.
  • Install with npm and inherit base contracts like ERC20.
  • Override functions with super to customize behavior.
  • Modules cover token, access, security, and utils; the Wizard scaffolds code.
  • Pin versions and still test your own logic — it is not a silver bullet.
เริ่มต้นได้ฟรี

เรียนรู้ Web3 & DApp Development Fundamentals ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
29
บทเรียน
105

คำถามที่พบบ่อย

บทเรียน “เหตุใดจึงใช้ OpenZeppelin” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “เหตุใดจึงใช้ OpenZeppelin” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Web3 & DApp Development Fundamentals ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Web3 & DApp Development Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “เหตุใดจึงใช้ OpenZeppelin”

โค้ดที่ผ่านการทดสอบอย่างเข้มข้น คุณปฏิบัติ Web3 & DApp Development Fundamentals ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Web3 & DApp Development Fundamentals หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Web3 & DApp Development Fundamentals บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “เหตุใดจึงใช้ OpenZeppelin” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Web3 & DApp Development Fundamentals นี้ได้ไหม

ได้ บทเรียน Web3 & DApp Development Fundamentals ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เหตุใดจึงใช้ OpenZeppelin
  2. การควบคุมการเข้าถึง
  3. ส่วนขยายโทเค็น
  4. สัญญาที่อัปเกรดได้
← กลับไปที่ Web3 & DApp Development Fundamentals