Lanjut ke konten utama

Daftar periksa keamanan kontrak pintar

kontrak pintarkeamanansolidity
Tingkat menengah
โœ๏ธTrailofbits
๐Ÿ“šMembuat kontrak yang aman(opens in a new tab)
๐Ÿ“†7 September 2020
โฑ๏ธ3 bacaan singkat

Daftar periksa pengembangan kontrak pintar

Berikut adalah proses tingkat tinggi yang kami sarankan untuk diikuti sementara Anda menulis kontrak pintar Anda.

Periksa masalah keamanan yang dikenal:

  • Tinjau ulang kontrak Anda dengan Slither(opens in a new tab). Slither memiliki lebih dari 40 detektor bawaan untuk mencari kerentanan umum. Jalankan Slither pada setiap pemeriksaan dengan kode baru dan pastikan kontrak mendapatkan laporan yang bersih (atau gunakan mode triase untuk mendiamkan beberapa masalah).
  • Tinjau ulang kontrak Anda dengan Crytic(opens in a new tab). Crytic memeriksa 50 masalah yang tidak dapat dilakukan Slither. Crytic dapat menolong tim Anda mengetahui perkembangan anggota lain juga, dengan memunculkan masalah keamanan di Permintaan Penarikan di GitHub dengan mudah.

Pertimbangkan fitur spesial kontrak Anda:

  • Apakah kontrak Anda dapat ditingkatkan? Tinjau kode yang dapat ditingkatkan untuk mencari kelemahannya dengan slither-check-upgradeability(opens in a new tab) atau Crytic(opens in a new tab). Kami telah mendokumentasikan 17 alur dari peningkatan yang bermasalah.
  • Apakah kontrak Anda mengklaim telah sesuai dengan ERC? Periksa dengan slither-check-erc(opens in a new tab). Peralatan ini dengan segera mengidentifikasi deviasi dari enam spesifikasi umum.
  • Apakah Anda memiliki tes unit di Truffle? Perkuat dengan slither-prop(opens in a new tab). Secara otomatis ini akan menghasilkan serangkaian properti keamanan yang kokoh untuk fitur ERC20 yang didasarkan pada kode spesifik Anda.
  • Apakah Anda berintegrasi dengan token pihak ketiga? Tinjau daftar periksa integrasi token kami sebelum menggunakan kontrak eksternal.

Secara visual periksa fitur keamanan kritikal kode Anda:

Dokumentasikan properti keamanan kritikal dan gunakan pembuat tes otomatis untuk mengevaluasinya:

  • Pelajari cara mendokumentasikan properti keamanan untuk kode Anda. Pada awalnya ini sulit, tapi inilah satu-satunya aktivitas yang paling penting untuk mencapai hasil yang baik. Aktivitas ini juga merupakan persyaratan untuk menggunakan teknik tingkat lanjut dalam tutorial ini.
  • Tentukan properti keamanan di Solidity, untuk penggunaan dengan Echidna(opens in a new tab) dan Manticore(opens in a new tab). Fokuskan pada mesin state, kontrol akses, operasi aritmetik, interaksi eksternal, dan kesesuaian dengan standar.
  • Tentukan properti keamanan dengan API Python Slither. Fokuskan pada warisan, dependensi variabel, kontrol akses, dan masalah struktur lainnya.
  • Jalankan tes properti Anda pada setiap commit dengan Crytic(opens in a new tab). Crytic dapat mengkonsumsi dan mengevaluasi tes properti keamanan sehingga semua orang di dalam tim Anda dapat dengan mudah melihat bahwa tes lolos uji di GitHub. Tes yang gagal dapat menghalangi commit.

Akhirnya, waspadalah terhadap masalah yang tidak dapat dengan mudah ditemukan oleh peralatan otomatis:

  • Kurangnya privasi: setiap orang bisa melihat transaksi Anda sementara diantrikan dalam pool
  • Transaksi front running
  • Operasi kriptografis
  • Interaksi berisiko dengan komponon DeFi eksternal

Minta bantuan

Jam kerja Ethereum(opens in a new tab) dimulai setiap Selasa sore. Sesi berdurasi 1 jam dan 1 lawan 1 ini adalah kesempatan untuk mengajukan pertanyaan apa pun kepada kami tentang keamanan, penyelesaian masalah menggunakan peralatan kami, dan mendapatkan umpan balik dari para ahli tentang pendekatan yang Anda pakai saat ini. Kami akan menolong Anda memahami panduan ini.

Bergabunglah dengan Slack kami: Empire Hacking(opens in a new tab). Kami selalu dapat dihubungi di kanal #crytic dan #ethereum jika Anda memiliki pertanyaan apa pun.

Terakhir diedit: , Invalid DateTime

Apakah halaman ini membantu?