Audit smart contract pada dasarnya adalah tinjauan kode yang dilakukan oleh spesialis keamanan. Auditor memeriksa kode sumber kontrak untuk mencari kerentanan, kesalahan logika, dan penyimpangan dari spesifikasi. Audit tipikal untuk protokol DeFi memakan waktu 2-6 minggu dan biayanya berkisar antara $50.000 hingga lebih dari $500.000 tergantung pada kompleksitas dan firma auditnya.
Apa yang secara andal ditangkap oleh audit adalah pola kerentanan yang sudah dikenal. Serangan reentrancy, masalah integer overflow dan underflow, kesalahan konfigurasi kontrol akses, dan kerentanan front-running semuanya memiliki tanda tangan yang terdokumentasi dengan baik yang dapat diidentifikasi oleh auditor berpengalaman. Ini adalah jenis bug yang memiliki kasus uji dan alat deteksi yang mapan. Alat analisis otomatis seperti Slither dan Mythril dapat menangkap banyak dari ini bahkan sebelum auditor manusia mulai meninjau.
Di mana audit menjadi kurang andal adalah dalam menangkap kesalahan logika bisnis. Sebuah kontrak mungkin secara teknis aman, tanpa kerentanan yang dapat dieksploitasi dalam kodenya, tetapi masih memiliki cacat logis yang memungkinkan ekstraksi nilai dengan cara yang tidak dimaksudkan oleh perancang. Bug-bug ini mengharuskan auditor memahami secara mendalam apa yang seharusnya dilakukan oleh protokol dan kemudian memverifikasi bahwa kode tersebut benar-benar melakukannya. Ini lebih sulit daripada kedengarannya, terutama untuk protokol kompleks dengan beberapa kontrak yang saling berinteraksi.
Risiko komposabilitas sangat sulit untuk diaudit. Sebuah kontrak mungkin berperilaku sempurna secara terpisah tetapi menciptakan kerentanan ketika berinteraksi dengan protokol lain. Serangan flash loan sering kali mengeksploitasi pola interaksi ini. Kontrak yang diaudit mungkin sama sekali tidak memiliki bug. Masalahnya adalah bagaimana ia merespons input yang tidak terduga dari kontrak lain yang belum ada ketika audit dilakukan.
Serangan ekonomi mewakili kategori lain yang ditangani dengan buruk oleh audit tradisional. Manipulasi oracle, serangan tata kelola, dan ketidakseimbangan liquidity pool sering kali bukan bug kode. Mereka adalah masalah insentif ekonomi yang memerlukan analisis teori permainan daripada tinjauan kode. Beberapa firma audit telah mulai menambahkan analisis ekonomi ke layanan mereka, tetapi ini masih kurang matang dibandingkan audit kode tradisional.
Laporan audit itu sendiri layak untuk diperhatikan. Sebagian besar firma audit mengklasifikasikan temuan berdasarkan tingkat keparahan: kritis, tinggi, sedang, rendah, dan informasional. Audit yang bersih tidak berarti tidak ada temuan. Itu berarti semua temuan dengan tingkat keparahan kritis dan tinggi telah diatasi. Temuan rendah dan informasional sering kali diakui tetapi tidak diperbaiki, yang umumnya masuk akal tetapi patut dipahami sebagai pengguna.
Beberapa audit dari firma yang berbeda memberikan cakupan yang lebih baik daripada audit tunggal, tidak peduli seberapa bereputasinya. Firma yang berbeda menggunakan metodologi yang berbeda dan memiliki area keahlian yang berbeda. Trail of Bits mungkin menangkap sesuatu yang dilewatkan OpenZeppelin, dan sebaliknya. Protokol yang paling sadar keamanan mendapatkan 2-3 audit ditambah mempertahankan program bug bounty yang berkelanjutan.
Program bug bounty berfungsi sebagai pelengkap berkelanjutan untuk audit titik waktu. Immunefi menyelenggarakan bounty untuk ratusan protokol, dengan hadiah berkisar dari ribuan hingga jutaan dolar. Logika ekonominya sederhana: membayar peretas white hat sebesar $500.000 untuk menemukan bug jauh lebih murah daripada kehilangan $50 juta karena eksploitasi. Protokol yang menggabungkan audit dengan bug bounty yang dermawan cenderung memiliki catatan keamanan terbaik.
Bagi pengguna, intinya secara praktis adalah bahwa audit itu perlu tetapi tidak cukup. Audit secara signifikan mengurangi probabilitas jenis eksploitasi tertentu tetapi tidak menghilangkan risiko. Kehadiran audit seharusnya meningkatkan kepercayaan diri Anda, tetapi tidak boleh menjadi satu-satunya faktor dalam penilaian risiko Anda. Waktu dalam produksi tanpa insiden, ukuran dan aktivitas program bug bounty, dan rekam jejak tim protokol semuanya juga penting.