Daftar periksa keamanan kontrak pintar
Daftar periksa pengembangan kontrak pintar
Berikut adalah proses tingkat tinggi yang kami sarankan untuk diikuti saat Anda menulis kontrak pintar Anda.
Periksa masalah keamanan yang diketahui:
- Tinjau kontrak Anda dengan Slither (opens in a new tab). Alat ini memiliki lebih dari 40 detektor bawaan untuk kerentanan umum. Jalankan pada setiap check-in dengan kode baru dan pastikan mendapatkan laporan yang bersih (atau gunakan mode triase untuk membungkam masalah tertentu).
- Tinjau kontrak Anda dengan Crytic (opens in a new tab). Alat ini memeriksa 50 masalah yang tidak diperiksa oleh Slither. Crytic juga dapat membantu tim Anda untuk saling memantau, dengan memunculkan masalah keamanan secara mudah di Pull Request pada GitHub.
Pertimbangkan fitur khusus dari kontrak Anda:
- Apakah kontrak Anda dapat ditingkatkan (upgradeable)? Tinjau kode peningkatan Anda untuk mencari kelemahan dengan
slither-check-upgradeability(opens in a new tab) atau Crytic (opens in a new tab). Kami telah mendokumentasikan 17 cara peningkatan bisa menjadi kacau. - Apakah kontrak Anda dimaksudkan untuk mematuhi ERC? Periksa dengan
slither-check-erc(opens in a new tab). Alat ini secara instan mengidentifikasi penyimpangan dari enam spesifikasi umum. - Apakah Anda berintegrasi dengan token pihak ketiga? Tinjau daftar periksa integrasi token kami sebelum mengandalkan kontrak eksternal.
Periksa secara visual fitur keamanan penting dari kode Anda:
- Tinjau pencetak inheritance-graph (opens in a new tab) dari Slither. Hindari masalah shadowing yang tidak disengaja dan masalah linierisasi C3.
- Tinjau pencetak function-summary (opens in a new tab) dari Slither. Ini melaporkan visibilitas fungsi dan kontrol akses.
- Tinjau pencetak vars-and-auth (opens in a new tab) dari Slither. Ini melaporkan kontrol akses pada variabel status.
Dokumentasikan properti keamanan penting dan gunakan pembuat pengujian otomatis untuk mengevaluasinya:
- Pelajari cara mendokumentasikan properti keamanan untuk kode Anda. Awalnya memang sulit, tetapi ini adalah aktivitas tunggal yang paling penting untuk mencapai hasil yang baik. Ini juga merupakan prasyarat untuk menggunakan teknik lanjutan apa pun dalam tutorial ini.
- Tentukan properti keamanan di Solidity, untuk digunakan dengan Echidna (opens in a new tab) dan Manticore (opens in a new tab). Fokus pada mesin status Anda, kontrol akses, operasi aritmatika, interaksi eksternal, dan kesesuaian standar.
- Tentukan properti keamanan dengan API Python Slither. Fokus pada pewarisan, dependensi variabel, kontrol akses, dan masalah struktural lainnya.
- Jalankan pengujian properti Anda pada setiap komit dengan Crytic (opens in a new tab). Crytic dapat mengonsumsi dan mengevaluasi pengujian properti keamanan sehingga semua orang di tim Anda dapat dengan mudah melihat bahwa pengujian tersebut lulus di GitHub. Pengujian yang gagal dapat memblokir komit.
Terakhir, perhatikan masalah yang tidak dapat ditemukan dengan mudah oleh alat otomatis:
- Kurangnya privasi: orang lain dapat melihat transaksi Anda saat sedang mengantre di kolam
- Transaksi front running
- Operasi kriptografi
- Interaksi berisiko dengan komponen DeFi eksternal
Minta bantuan
Jam kerja Ethereum (opens in a new tab) diadakan setiap Selasa sore. Sesi 1 lawan 1 selama 1 jam ini adalah kesempatan untuk menanyakan pertanyaan apa pun yang Anda miliki tentang keamanan, memecahkan masalah menggunakan alat kami, dan mendapatkan umpan balik dari para ahli tentang pendekatan Anda saat ini. Kami akan membantu Anda menyelesaikan panduan ini.
Bergabunglah dengan Slack kami: Empire Hacking (opens in a new tab). Kami selalu tersedia di saluran #crytic dan #ethereum jika Anda memiliki pertanyaan.
Pembaruan terakhir halaman: 7 Februari 2025