Mengapa OpenZeppelin
Kode yang telah teruji di lapangan
Mengapa OpenZeppelin adalah pelajaran Web3 & DApp Development Fundamentals gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Web3 & DApp Development Fundamentals, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Web3 & DApp Development Fundamentals mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
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/contractsIt installs into node_modules, and Hardhat resolves imports from there automatically.
npm install @openzeppelin/contractsImporting 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
superto 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.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mengapa OpenZeppelin” gratis?
Ya — teks lengkap “Mengapa OpenZeppelin” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Web3 & DApp Development Fundamentals, upgrade ke CoddyKit PRO. Kursus Web3 & DApp Development Fundamentals mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Mengapa OpenZeppelin”?
Kode yang telah teruji di lapangan Kamu berlatih Web3 & DApp Development Fundamentals dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Web3 & DApp Development Fundamentals?
Tidak diperlukan pengalaman sebelumnya. Web3 & DApp Development Fundamentals di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Mengapa OpenZeppelin” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Web3 & DApp Development Fundamentals ini?
Ya. Setiap pelajaran Web3 & DApp Development Fundamentals menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mengapa OpenZeppelin
- Kontrol Akses
- Ekstensi Token
- Kontrak yang Dapat Di-upgrade