Mengapa OpenZeppelin
Kod yang teruji dalam pertempuran
Mengapa OpenZeppelin ialah pelajaran Asas Pembangunan Web3 & DApp percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Asas Pembangunan Web3 & DApp, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Asas Pembangunan Web3 & DApp merangkumi sejumlah 4 pelajaran.
Apakah OpenZeppelin
OpenZeppelin Contracts ialah pustaka blok binaan kontrak pintar yang selamat dan boleh digunakan semula untuk Solidity.
- Melaksanakan piawaian umum (ERC-20, ERC-721, ERC-1155).
- Menyediakan modul kawalan akses, keselamatan dan utiliti.
- Diaudit dan digunakan secara meluas dalam protokol pengeluaran.
Mengapa Tidak Menulisnya Sendiri
Melaksanakan semula piawaian token secara manual adalah berisiko:
- Ralat kecil dalam aritmetik atau kelulusan boleh menghabiskan dana.
- Piawaian mempunyai kes pinggir yang mudah terlepas pandang.
- Kod tersuai tidak diaudit dan tidak diuji oleh komuniti.
Menggunakan semula kod yang telah diuji dalam pelbagai keadaan membolehkan Anda menumpukan perhatian pada logik unik Anda.
Memasang Pustaka
Tambahkan OpenZeppelin Contracts sebagai kebergantungan:
npm install @openzeppelin/contractsIa dipasang ke dalam node_modules, dan Hardhat menyelesaikan import dari situ secara automatik.
npm install @openzeppelin/contractsMengimport Kontrak
Import modul yang Anda perlukan menggunakan laluan pakejnya:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";Laluan tersebut mencerminkan struktur folder pustaka (token, access, security, utils).
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";Mewarisi Piawaian
Anda membina kontrak dengan mewarisi daripada asas. Token ERC-20 hanya memerlukan beberapa baris:
contract MyToken is ERC20 {
constructor() ERC20("MyToken", "MTK") {
_mint(msg.sender, 1000000 * 10 ** decimals());
}
}Semua logik pemindahan, kelulusan dan baki diwarisi.
contract MyToken is ERC20 {
constructor() ERC20("MyToken", "MTK") {
_mint(msg.sender, 1000000 * 10 ** decimals());
}
}Mengatasi Tingkah Laku
Anda boleh menyesuaikan fungsi yang diwarisi dengan mengatasinya, sambil masih memanggil induk menggunakan 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);
}Kategori Modul
OpenZeppelin disusun mengikut beberapa bidang:
- token/ — pelaksanaan ERC-20, ERC-721, ERC-1155.
- access/ — Ownable, AccessControl.
- security/ — ReentrancyGuard, Pausable.
- utils/ — pembantu matematik, rentetan dan kriptografi.
Wizard
OpenZeppelin menawarkan Wizard Kontrak berasaskan web yang menjana kontrak permulaan daripada kotak pilihan — pilih piawaian, hidupkan pilihan boleh dicetak, boleh dijeda atau kawalan akses, kemudian salin kod tersebut.
Ini cara yang baik untuk membina rangka asas yang betul sebelum menyesuaikannya.
Diaudit dan Berversi
Keluaran OpenZeppelin diaudit dan mengikuti pensikalan versi semantik. Tetapkan versi dalam package.json supaya peningkatan utama tidak mengubah tingkah laku secara senyap:
"@openzeppelin/contracts": "^5.0.0"Baca panduan migrasi sebelum menaik taraf versi utama.
"@openzeppelin/contracts": "^5.0.0"Bukan Penyelesaian Ajaib
OpenZeppelin menjamin keselamatan blok binaan, tetapi logik Anda masih perlu disemak:
- Mewarisi kod yang ditulis dengan selamat tidak menjadikan fungsi tersuai selamat.
- Konfigurasi yang salah (peranan yang salah, pemeriksaan yang tiada) masih boleh mewujudkan kelemahan.
Sentiasa jalankan ujian dan, untuk kontrak bernilai tinggi, dapatkan audit.
Contracts berbanding Contracts-Upgradeable
OpenZeppelin menyediakan dua pakej:
- @openzeppelin/contracts — kontrak piawai dengan pembina biasa.
- @openzeppelin/contracts-upgradeable — modul yang sama, disesuaikan untuk proksi dan menggunakan pemula.
Pilih varian boleh dinaik taraf hanya jika Anda benar-benar menggunakannya di sebalik proksi.
Semakan Pantas
Uji pemahaman Anda tentang sebab pasukan menggunakan OpenZeppelin.
Rumusan
Anda telah belajar sebab OpenZeppelin ialah pustaka piawai untuk Solidity.
- Ia menawarkan pelaksanaan piawaian token dan modul keselamatan yang diaudit serta boleh digunakan semula.
- Pasang dengan npm dan warisi kontrak asas seperti
ERC20. - Atasi fungsi dengan
superuntuk menyesuaikan tingkah laku. - Modul meliputi token, akses, keselamatan dan utiliti; Wizard membina rangka kod.
- Tetapkan versi dan tetap uji logik Anda sendiri — ia bukan penyelesaian ajaib.
Pelajari Asas Pembangunan Web3 & DApp dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 29
- Pelajaran
- 105
Soalan Lazim
Adakah pelajaran “Mengapa OpenZeppelin” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Asas Pembangunan Web3 & DApp, termasuk “Mengapa OpenZeppelin”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Asas Pembangunan Web3 & DApp merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Mengapa OpenZeppelin”?
Kod yang teruji dalam pertempuran Anda berlatih Asas Pembangunan Web3 & DApp menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Asas Pembangunan Web3 & DApp?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Asas Pembangunan Web3 & DApp di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Mengapa OpenZeppelin” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Asas Pembangunan Web3 & DApp ini?
Ya. Setiap pelajaran Asas Pembangunan Web3 & DApp menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Mengapa OpenZeppelin
- Kawalan Capaian
- Sambungan Token
- Kontrak Boleh Dinaik Taraf