Pelajaran 1Pola kontrak umum: Ownable, Pausable, ReentrancyGuard, Pull over Push payments, pola Checks-Effects-InteractionsJelajahi pola smart contract dasar yang meningkatkan keamanan dan kemudahan pemeliharaan. Anda akan mengimplementasikan Ownable, Pausable, dan ReentrancyGuard, serta menerapkan Pull over Push dan Checks-Effects-Interactions dalam alur pembayaran nyata.
Mengimplementasikan dan menggunakan kontrol akses OwnableKontrak Pausable dan pemberhentian daruratReentrancyGuard dan pertahanan serangan reentrancyDesain alur pembayaran Pull over PushPraktik terbaik Checks-Effects-InteractionsPelajaran 2Matematika aman dan perlindungan overflow di Solidity 0.8+: pemeriksaan bawaan vs pustaka eksplisit (sejarah OpenZeppelin SafeMath)Pelajari bagaimana pemeriksaan overflow bawaan Solidity 0.8+ mengubah keamanan aritmatika. Bandingkan pustaka gaya SafeMath lama dengan pola modern, dan pelajari kapan blok unchecked aman untuk operasi aritmatika efisien gas.
Dasar-dasar overflow dan underflow integerPemeriksaan aritmatika bawaan di Solidity 0.8+Pustaka SafeMath lama dan migrasiMenggunakan blok unchecked dengan aman untuk gasPengujian kasus tepi aritmatika dan batasPelajaran 3Variabel state, storage vs memory, events, modifiers, dan penanganan error (require, revert, assert, custom errors)Kuasai cara Solidity menyimpan dan mengakses data menggunakan variabel state, storage, memory, dan calldata. Pelajari cara memancarkan events, menulis modifier yang dapat digunakan kembali, dan menerapkan require, revert, assert, serta custom errors untuk penanganan error yang jelas.
Variabel state dan slot storagePenggunaan storage vs memory vs calldataMerancang dan memancarkan events yang bergunaMenulis modifier yang aman dan dapat digunakan kembaliRequire, revert, assert, dan custom errorsPelajaran 4Visibilitas dan mutabilitas fungsi: public, external, internal, private; view, pure, payableJelaskan bagaimana visibilitas dan mutabilitas fungsi memengaruhi keamanan, gas, dan kegunaan. Pelajari kapan menggunakan public, external, internal, dan private, serta bagaimana view, pure, dan payable memengaruhi perubahan state dan transfer nilai.
Perbandingan public vs external fungsiInternal dan private untuk enkapsulasiView dan pure untuk logika read-onlyFungsi payable dan transfer ETHMerancang API yang jelas dan amanPelajaran 5Merancang akuntansi deposit/penarikan: mapping(address => uint256) balances, events untuk deposit/penarikan, menangani multiple tokens vs vault single-tokenPelajari cara merancang alur deposit dan penarikan yang aman menggunakan mapping, events, dan interface token. Bandingkan vault single-token dan multi-token, serta tangani kasus tepi seperti transfer gagal dan perilaku token tak terduga.
Mapping balances dan invariant akuntansiMemancarkan events untuk deposit dan penarikanDesain vault single-token dan interfaceVault multi-token dan identifikasi tokenMenangani transfer gagal dan keanehan tokenPelajaran 6Pengujian smart contract: konsep unit testing, fixtures, mocks untuk token ERC-20, dan struktur tes (arrange-act-assert)Pelajari cara menguji smart contract dengan pendekatan terstruktur. Anda akan menulis unit test, menggunakan fixtures dan mocks untuk token ERC-20, mengikuti arrange-act-assert, serta mencakup kasus tepi, revert, dan ekspektasi event.
Framework pengujian dan pengaturan proyekStruktur tes Arrange-Act-AssertMenggunakan fixtures untuk state yang dapat diulangMocking token ERC-20 dan perilakuMenguji revert, events, dan kasus tepiPelajaran 7Dasar-dasar bahasa Solidity: sintaks, tipe, visibilitas, inheritance, dan pragma kompiler (spesifik 0.8.x)Bangun pemahaman solid tentang sintaks Solidity, tipe, dan aturan visibilitas. Jelajahi inheritance, interface, pragma kompiler, dan spesifik 0.8.x seperti custom errors dan peningkatan keamanan tipe untuk pengembangan smart contract modern.
File sumber, kontrak, dan sintaks dasarTipe nilai, tipe referensi, dan arrayVisibilitas fungsi dan variabel stateInheritance, interface, dan kontrak abstrakPragma kompiler dan perubahan bahasa 0.8.xPelajaran 8Dasar-dasar upgradeability kontrak dan trade-off: pola proxy (transparent, UUPS) dan kapan menghindari upgrade untuk vault sederhanaPahami kapan dan bagaimana mengupgrade kontrak menggunakan pola proxy. Bandingkan proxy transparent dan UUPS, kendala layout storage, dan risiko governance, serta lihat mengapa vault sederhana mungkin lebih aman tanpa upgradeability.
Mengapa mengupgrade kontrak dan kapan menghindarinyaArsitektur proxy transparent dan peranPola proxy UUPS dan fungsi upgradeKompatibilitas layout storage dan jebakanRisiko keamanan dan governance dari upgradePelajaran 9Dasar-dasar optimalisasi gas: layout storage, packing, meminimalkan panggilan eksternal, dan menggunakan calldataPelajari teknik optimalisasi gas praktis untuk kontrak Solidity. Anda akan menganalisis layout storage dan packing, mengurangi panggilan eksternal mahal, memanfaatkan calldata, dan mengukur penggunaan gas untuk memandu mikro-optimalisasi yang aman.
Memahami biaya gas dan pengembalianLayout storage dan packing variabelMeminimalkan panggilan eksternal dan lintas-kontrakMenggunakan calldata untuk input read-only murahMengukur dan membenchmark penggunaan gasPelajaran 10Penelusuran mendalam standar token ERC-20: interface (IERC20), allowances, semantik approve/transferFrom, penanganan nilai kembalian dan token non-standarTelusuri mendalam standar ERC-20, fokus pada interface IERC20, balances, allowances, dan alur approve/transferFrom. Pelajari cara menangani nilai kembalian, token non-standar, dan pola interaksi aman dalam kontrak produksi.
Interface IERC20 dan fungsi yang diperlukanPenanganan balances, totalSupply, dan decimalsAlur kerja approve dan transferFrom allowanceMenangani token ERC-20 non-standarInteraksi ERC-20 aman dengan pustaka pembantu