Waktu Baca: 4 menit
Panduan ini dapat membantu Anda menemukan bug jahat yang mengganggu Anda dan alat untuk memperbaikinya.
Debugging sangat penting untuk setiap siklus pengembangan perangkat lunak; manusia selalu melakukan kesalahan. Itu sebabnya kami tidak terkalahkan; kita membuat kesalahan dan belajar darinya. Debugging adalah proses mencari tahu di mana kode kita tertinggal, memperbaikinya, dan mempelajari kesalahan itu agar tidak terulang kembali.
Pengembangan kontrak pintar sangat penting untuk membangun aplikasi blockchain. Tetapi seperti siklus pengembangan perangkat lunak lainnya, men-debug smart contract kadang-kadang bisa menjadi tantangan, dan karena di sini kita sering berurusan dengan sejumlah besar uang, kita tidak dapat membiarkan apa pun terjadi secara kebetulan. Kita harus sempurna dalam menulis smart contract dan sempurna dalam debugging. Itu sebabnya kami membuat blog ini agar Anda dapat belajar tentang debug dari yang terbaik.
Sebelum memperbaiki apa pun, kita perlu mengetahui masalahnya, jadi mari kita mulai dengan mengidentifikasi berbagai jenis bug dalam pengembangan kontrak pintar.
Kesalahan Umum
Di bagian ini, kita akan menjelajahi berbagai jenis bug yang ditemui pengembang kontrak pintar secara teratur.
- Kesalahan sintaks:โ Kesalahan ini mudah diperbaiki. Ini terjadi ketika pengembang membuat kesalahan kode yang mencegah komputer memahaminya, seperti kehilangan titik koma.
- Kesalahan Logis:- Jenis kesalahan ini terkadang sulit ditemukan. Itu tidak mencegah eksekusi, tetapi fungsionalitas program diubah. Program ini tiba-tiba berperilaku seperti kontrak pintar yang mentransfer uang ke alamat yang salah saat mengirim uang dari satu akun ke akun lainnya.
- Kesalahan waktu proses:- Kesalahan ini sulit diprediksi. Mereka datang pada waktu yang tidak terduga dan tempat yang tidak terduga. Ini terjadi selama pelaksanaan kontrak pintar dan terjadi karena penanganan pengecualian yang tidak efisien. Misalnya, ini dapat terjadi ketika sebuah kontrak gagal menangani masukan yang tidak terduga atau upaya untuk melakukan operasi yang dilarang oleh blockchain yang mendasarinya. Misalnya, kontrak mencoba mentransfer lebih banyak uang daripada parameter yang diizinkan.
- Eksekusi Dikembalikan Kesalahan:- Ini terjadi ketika pengguna membuat permintaan tidak sah yang bertentangan dengan logika smart contract kemudian permintaan tersebut dibatalkan dan dikembalikan. Hal ini terjadi karena terkadang smart contract memerlukan persyaratan tertentu yang harus dipenuhi untuk memproses transaksi. Tetap saja, pengguna melanjutkan transaksi tanpa memenuhi persyaratan, dan kemudian transaksi tidak diteruskan dan dikembalikan. Misalnya, pengguna mencoba mentransfer $100 tetapi memiliki saldo $50.
- Stack Overflow:- Sumber daya untuk melaksanakan operasi memerlukan biaya gas. Semakin berat fungsinya, semakin mahal biayanya. Beberapa mekanisme berat dalam pengkodean adalah loop dan
Panggilan rekursif<!โ wp:paragraph โ>Pemanggilan rekursif adalah kondisi yang dapat merujuk ke dirinya sendiri dan memanggilnya kembali berulang kali dalam satu lingkaran. Fungsi rekursif menggunakan kasus dasar (jika) dan kasus induksi (lain). Serangan masuk kembali dilakukan dengan mengeksploitasi panggilan rekursif dalam kode. <br/><!โ /wp:paragraf โ>
โ data-gt-translate-attributes=โ[{"attribute":"data-cmtooltip", "format":"html"}]โ>panggilan rekursif. Stack overflow ada hubungannya dengan
Panggilan rekursif<!โ wp:paragraph โ>Pemanggilan rekursif adalah kondisi yang dapat merujuk ke dirinya sendiri dan memanggilnya kembali berulang kali dalam satu lingkaran. Fungsi rekursif menggunakan kasus dasar (jika) dan kasus induksi (lain). Serangan masuk kembali dilakukan dengan mengeksploitasi panggilan rekursif dalam kode. <br/><!โ /wp:paragraf โ>โ data-gt-translate-attributes=โ[{"attribute":"data-cmtooltip", "format":"html"}]โ>panggilan rekursif.
Panggilan rekursif<!โ wp:paragraph โ>Pemanggilan rekursif adalah kondisi yang dapat merujuk ke dirinya sendiri dan memanggilnya kembali berulang kali dalam satu lingkaran. Fungsi rekursif menggunakan kasus dasar (jika) dan kasus induksi (lain). Serangan masuk kembali dilakukan dengan mengeksploitasi panggilan rekursif dalam kode. <br/><!โ /wp:paragraf โ>โ data-gt-translate-attributes=โ[{"attribute":"data-cmtooltip", "format":"html"}]โ>Pemanggilan rekursif adalah metode pemanggilan fungsi dalam fungsi yang sama dengan input berbeda Anda dapat memikirkan fungsi berulang sebagai mesin jus tebu. Mesin berperilaku sebagai fungsi dan tebu sebagai masukan. Setiap putaran tebu dari mesin berarti pemanggilan fungsi. Setelah satu kali, tebu masuk ke dalam mesin lagi, dan proses ini terus berulang. Inilah yang dimaksud dengan kekambuhan. Tetapi karena kami ingin memangkas biaya bahan bakar dan sumber daya EVM, ethereum membatasi panggilan berulang hingga 1024 kali. Saat Anda memanggil fungsi untuk ke-1025 kalinya, ini menghasilkan stack overflow.
- kesalahan JUMP:- Saat Anda mencoba memanggil fungsi yang tidak ada atau menggunakan bahasa rakitan dan mengarahkan ke memori palsu, ini menghasilkan kesalahan. Ini bahkan dapat terjadi ketika Anda memanggil fungsi dari kontrak lain, tetapi fungsi itu tidak ada. Jenis kesalahan ini disebut kesalahan JUMP.
Ini adalah beberapa kesalahan kontrak pintar yang umum ditemui pengembang; kesalahan terkadang sulit untuk dideteksi dan dipahami. Untuk menemukan kesalahan dan mencoba memperbaikinya, kami mengambil bantuan berbagai alat. Mari kita membahasnya satu per satu di bagian selanjutnya.
Empat Alat Debugging yang Berguna
Di bagian ini, kita akan belajar tentang alat yang banyak digunakan untuk mengidentifikasi dan menyelesaikan bug oleh sebagian besar developer berpengalaman di seluruh dunia. Ayo pergi.
Topi keras
Alat ini banyak digunakan dan diterima untuk menguji kontrak pintar pada berbagai parameter. Ini menyediakan lingkungan pengembangan sumber terbuka untuk Ethereum. Ini termasuk alat untuk mengembangkan, menguji, dan menerapkan kontrak pintar. Debugger bawaannya sangat membantu banyak pengembang di seluruh dunia. Ini memainkan peran berat dalam fase pengujian juga.
Truffle
Ini adalah kerangka pengembangan populer untuk Ethereum. Seperti hardhat, ini termasuk alat untuk mengembangkan, menguji, dan menerapkan kontrak pintar dan juga telah dibangun Debugger Truffle, yang membantu developer dengan pengalaman pengembangan yang lancar di tahap pengujian.
Remix
Inilah yang ditemui hampir setiap pengembang saat pertama kali memulai perjalanan mereka di web3. Ini adalah editor kode online untuk soliditas, jadi tidak diperlukan instalasi offline untuk memulai pengembangan. Fitur debug bawaannya memungkinkan pengembang memindai kode dan memeriksa masalah variabel. Dan semua ini online tidak perlu alat offline.
Ethercan
Ini adalah penjelajah blok yang sangat tepercaya dan populer untuk Ethereum. Ini memungkinkan pengembang untuk memeriksa dan men-debug smart contract yang diterapkan di blockchain Ethereum. Dengan ini, Anda dapat melacak transaksi dan aktivitas alamat atau kontrak apa pun. Ini membantu Anda mengidentifikasi di mana masalahnya jika smart contract Anda menghadapi masalah on-chain.
Kesimpulan
Men-debug smart contract itu sulit dan terkadang membuat frustrasi, tetapi ini adalah tahap krusial yang terkait dengan keamanan dan pengujian. Di sinilah kerentanan paling mungkin muncul di hadapan peretas dan dapat menyebabkan kegagalan total protokol. Untuk menyelamatkan diri Anda dari keadaan seperti itu, sangat disarankan untuk melakukan audit.
QuillAudits telah berada di vertikal ini sejak lama dan memiliki tim ahli yang dapat menangani setiap kemungkinan kerentanan dan membantu Anda mengamankan protokol Anda. Mengenai pengujian, kepentingannya, dan hubungannya dengan debugging, baca blog mendetail, yang akan membantu Anda memahami setiap aspek https://blog.quillhash.com/2023/02/16/testing-and-formal-verification/. Kunjungi situs web kami dan dapatkan proyek Anda diaudit!
12 views
- Konten Bertenaga SEO & Distribusi PR. Dapatkan Amplifikasi Hari Ini.
- Platoblockchain. Intelijen Metaverse Web3. Pengetahuan Diperkuat. Akses Di Sini.
- Sumber: https://blog.quillhash.com/2023/03/03/4-most-useful-smart-contract-debugging-tools/
- a
- Tentang Kami
- Akun
- di seluruh
- kegiatan
- alamat
- Setelah
- terhadap
- Semua
- memungkinkan
- selalu
- jumlah
- dan
- Lain
- aplikasi
- sekitar
- penampilan
- Majelis
- Serangan
- Mencoba
- audit
- Saldo
- mendasarkan
- karena
- TERBAIK
- Memblokir
- blockchain
- aplikasi blockchain
- Blog
- Bug
- bug
- Bangunan
- dibangun di
- built-in
- panggilan
- bernama
- Panggilan
- tidak bisa
- membawa
- kasus
- tertentu
- menantang
- kesempatan
- keadaan
- kode
- Pengkodean
- bagaimana
- Umum
- lengkap
- komputer
- kondisi
- kontrak
- kontrak
- Biaya
- Biaya
- sangat penting
- Memotong
- siklus
- transaksi
- dikerahkan
- penggelaran
- terperinci
- Pengembang
- pengembang
- berkembang
- Pengembangan
- berbeda
- sulit
- selama
- setiap
- editor
- Lingkungan Hidup
- kesalahan
- kesalahan
- ethereum
- Blockchain Ethereum
- Bahkan
- Setiap
- EVM
- contoh
- pengecualian
- mengeksekusi
- eksekusi
- pengalaman
- berpengalaman
- ahli
- menyelidiki
- penjelajah
- menghadapi
- gagal
- Kegagalan
- Fitur
- biaya
- Menemukan
- Pertama
- Memperbaiki
- Depan
- Kerangka
- dari
- membuat frustrasi
- fungsi
- fungsi
- GAS
- mendapatkan
- Go
- Pergi
- membimbing
- hacker
- menangani
- Penanganan
- terjadi
- Terjadi
- Sulit
- berat
- berat
- membantu
- bermanfaat
- membantu
- di sini
- sangat
- HTTPS
- besar
- Manusia
- mengenali
- mengidentifikasi
- pentingnya
- in
- termasuk
- tidak efisien
- memasukkan
- isu
- masalah
- IT
- Diri
- perjalanan
- melompat
- Tahu
- lagging
- bahasa
- memimpin
- BELAJAR
- pengetahuan
- Meninggalkan
- Lets
- Mungkin
- batas
- Panjang
- lama
- mesin
- membuat
- MEMBUAT
- banyak
- cara
- Memori
- metode
- hilang
- kesalahan
- uang
- lebih
- paling
- Perlu
- berikutnya
- Pengunjung
- Di Rantai
- ONE
- secara online
- open source
- operasi
- Operasi
- Lainnya
- parameter
- parameter
- sempurna
- tahap
- Tempat
- plato
- Kecerdasan Data Plato
- Data Plato
- Titik
- Populer
- mungkin
- meramalkan
- menyajikan
- mencegah
- hasil
- proses
- program
- proyek
- protokol
- menyediakan
- Quillhash
- Baca
- kambuh
- berulang
- Rekursif
- mengenai
- secara teratur
- terkait
- hubungan
- ulang
- permintaan
- membutuhkan
- Persyaratan
- Sumber
- Hasil
- Peran
- Run
- sama
- Save
- pemindaian
- Bagian
- aman
- keamanan
- mengirim
- pintar
- kontrak pintar
- Kontrak Cerdas
- So
- Perangkat lunak
- pengembangan perangkat lunak
- soliditas
- beberapa
- tumpukan
- Tahap
- mulai
- Masih
- seperti itu
- Mengambil
- tim
- pengujian
- Grafik
- Dunia
- mereka
- diri
- Melalui
- waktu
- kali
- untuk
- terlalu
- alat
- alat
- jalur
- .
- Transaksi
- transfer
- transfer
- mengganggu
- Terpercaya
- jenis
- bawah
- pokok
- memahami
- pemahaman
- Tiba-tiba
- us
- menggunakan
- Pengguna
- berbagai
- Kerentanan
- kerentanan
- Web3
- Situs Web
- Apa
- yang
- sangat
- akan
- dalam
- tanpa
- dunia
- industri udang di seluruh dunia.
- akan
- penulisan
- Kamu
- Anda
- diri
- zephyrnet.dll