Okuma zamanı: 4 dakika
Bu kılavuz, sizi rahatsız eden o kötü hatayı ve bunları düzeltecek araçları bulmanıza yardımcı olabilir.
Hata ayıklama, herhangi bir yazılım geliştirme döngüsü için çok önemlidir; insanlar her zaman hata yapar. Bu yüzden yenilmeziz; hatalar yaparız ve onlardan ders alırız. Hata ayıklama, kodumuzun nerede geciktiğini bulma, bunu düzeltme ve tekrarlanmaması için bu hatayı öğrenme sürecidir.
Akıllı sözleşme geliştirme, blockchain uygulamaları oluşturmak için çok önemlidir. Ancak, diğer tüm yazılım geliştirme döngülerinde olduğu gibi, akıllı sözleşmelerde hata ayıklamak bazen zor olabilir ve burada genellikle çok büyük miktarda parayla uğraştığımız için hiçbir şeyi şansa bırakamayız. Akıllı sözleşmeler yazmada ve hata ayıklamada mükemmel olmalıyız. Bu nedenle, hata ayıklamayı en iyiden öğrenebilmeniz için bu blogu oluşturduk.
Herhangi bir şeyi düzeltmeden önce sorunu bilmemiz gerekiyor, bu yüzden akıllı sözleşme geliştirmede farklı türde hataları belirleyerek başlayalım.
Genel hatalar
Bu bölümde, akıllı sözleşme geliştiricilerinin düzenli olarak karşılaştığı farklı hata türlerini keşfedeceğiz.
- Sözdizimi hatası:– Bu hata düzeltmesi kolay bir hatadır. Bu, bir geliştirici, noktalı virgülü kaçırmak gibi bilgisayarın kodu anlamasını engelleyen bir kod hatası yaptığında olur.
- Mantıksal Hata:- Bu tür bir hatayı bazen bulmak zor olabilir. Yürütmeyi engellemez, ancak programın işlevselliği değiştirilir. Bu program, bir hesaptan diğerine para gönderirken parayı yanlış adrese aktaran akıllı bir sözleşme gibi beklenmedik şekilde davranır.
- Çalışma zamanı hatası:- Bu hataları tahmin etmek zordur. Beklenmedik bir zamanda ve beklenmedik yerlerde gelirler. Bu, akıllı sözleşmelerin yürütülmesi sırasında meydana gelir ve verimsiz istisna işleme nedeniyle olur. Örneğin, bu, bir sözleşme beklenmedik girdileri işleyemediğinde veya temeldeki blok zinciri tarafından yasaklanan bir işlemi gerçekleştirmeye çalıştığında ortaya çıkabilir. Örneğin, bir sözleşme izin verilen parametreden daha fazla para transfer etmeye çalışıyor.
- Yürütme Geri Alınan Hatalar:- Bu, kullanıcı akıllı sözleşme mantığına aykırı herhangi bir gayri meşru istekte bulunduğunda olur ve ardından istek iptal edilir ve geri alınır. Bunun nedeni, bazen akıllı sözleşmelerin işlemi gerçekleştirmek için belirli gereksinimlerin karşılanmasını gerektirmesidir. Yine de kullanıcı, gereklilikleri yerine getirmeden işlemine devam etmekte ve daha sonra işlem gerçekleştirilmemekte ve geri alınamamaktadır. Örneğin, bir kullanıcı 100$ transfer etmeye çalışıyor ancak 50$ bakiyesi var.
- Yığın taşması:- İşlemleri yürütmek için kaynaklar bir gaz ücretine mal olur. İşlev ne kadar ağırsa, maliyet de o kadar fazladır. Kodlamadaki ağır mekanizmalardan bazıları döngülerdir ve
yinelemeli aramalar<!– wp:paragraph –>Özyinelemeli çağrı, kendisine atıfta bulunabilen ve onları bir döngüde tekrar tekrar çağırabilen bir durumdur. Yinelemeli işlev, temel durumu (if) ve tümevarım durumunu (else) kullanır. Yeniden giriş saldırıları, koddaki özyinelemeli çağrılardan yararlanılarak gerçekleştirilir. <br/><!– /wp:paragraf –>
” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>yinelenen çağrılar. Yığın taşması ile ilgisi var
yinelemeli aramalar<!– wp:paragraph –>Özyinelemeli çağrı, kendisine atıfta bulunabilen ve onları bir döngüde tekrar tekrar çağırabilen bir durumdur. Yinelemeli işlev, temel durumu (if) ve tümevarım durumunu (else) kullanır. Yeniden giriş saldırıları, koddaki özyinelemeli çağrılardan yararlanılarak gerçekleştirilir. <br/><!– /wp:paragraf –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>yinelenen çağrılar.
yinelemeli aramalar<!– wp:paragraph –>Özyinelemeli çağrı, kendisine atıfta bulunabilen ve onları bir döngüde tekrar tekrar çağırabilen bir durumdur. Yinelemeli işlev, temel durumu (if) ve tümevarım durumunu (else) kullanır. Yeniden giriş saldırıları, koddaki özyinelemeli çağrılardan yararlanılarak gerçekleştirilir. <br/><!– /wp:paragraf –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>Tekrarlamalı çağrılar, aynı işlev içindeki bir işlevi farklı girişlerle çağırma yöntemidir. şeker kamışı suyu makinesi gibi tekrar eden bir işlev düşünebilir. Makine bir işlev olarak ve şeker kamışı girdi olarak davranır. Makineden her şeker kamışı akışı, bir işlev çağrısı anlamına gelir. Şeker kamışı bir süre sonra tekrar makinenin altına girer ve bu işlem sürekli tekrarlanır. Tekrarlama budur. Ancak gaz maliyetlerini ve EVM kaynaklarını azaltmak istediğimiz için ethereum, yineleme çağrısını 1024 defaya kadar sınırlar. Bir işlevi 1025. kez çağırdığınızda yığın taşmasına neden olur.
- ATLAMA hatası:- Olmayan bir fonksiyonu çağırmaya çalıştığınızda veya Assembly dilini kullanarak yanlış hafızayı işaret ettiğinizde bu bir hata ile sonuçlanır. Bu, başka bir sözleşmenin bir işlevini çağırdığınızda bile olabilir, ancak bu işlev mevcut değildir. Bu tür hatalara JUMP hataları denir.
Bunlar, geliştiricilerin karşılaştığı bazı yaygın akıllı sözleşme hatalarıydı; hataların tespit edilmesi ve anlaşılması bazen zor olabilir. Hataları bulmak ve düzeltmeye çalışmak için çeşitli araçlardan yardım alıyoruz. Bir sonraki bölümde bunları tek tek inceleyelim.
Dört Yararlı Hata Ayıklama Aracı
Bu bölümde, dünya çapındaki en deneyimli geliştiriciler tarafından hataları belirlemek ve çözmek için yoğun olarak kullanılan araçları öğreneceğiz. Hadi gidelim.
Baret
Bu araç, akıllı sözleşmeleri çeşitli parametreler üzerinde test etmek için yaygın olarak kullanılır ve kabul edilir. Ethereum için açık kaynaklı bir geliştirme ortamı sağlar. Akıllı sözleşmeler geliştirmek, test etmek ve dağıtmak için araçlar içerir. Yerleşik hata ayıklayıcısı, dünyadaki birçok geliştiriciye yardımcı olur. Bu, test aşamasında da ağır bir rol oynar.
yermantarı
Bu, Ethereum için popüler bir geliştirme çerçevesidir. Kask gibi, akıllı sözleşmeler geliştirmek, test etmek ve dağıtmak için araçlar içerir ve ayrıca Trüf Hata Ayıklayıcı, test aşamasında sorunsuz bir geliştirme deneyimi ile geliştiricilere yardımcı olur.
Remix
Bu, web3'teki yolculuğuna ilk başladıklarında hemen hemen her geliştiricinin karşılaştığı şeydi. Bu, sağlamlık için çevrimiçi bir kod düzenleyicidir, bu nedenle geliştirmeye başlamak için çevrimdışı kurulum gerekmez. Yerleşik hata ayıklama özelliği, geliştiricilerin kodu taramasına ve değişken sorunlarını incelemesine olanak tanır. Ve tüm bunlar çevrimiçi, çevrimdışı araçlara gerek yok.
etherscan
Bu, Ethereum için yaygın olarak güvenilir ve popüler bir blok gezginidir. Geliştiricilerin, Ethereum blok zincirinde dağıtılan akıllı sözleşmeleri incelemesine ve hatalarını ayıklamasına olanak tanır. Bunu kullanarak, herhangi bir adresin veya sözleşmenin işlemlerini ve etkinliğini takip edebilirsiniz. Bu, akıllı sözleşmeniz herhangi bir zincirleme sorunla karşı karşıya kalırsa sorunun nerede olacağını belirlemenize yardımcı olur.
Sonuç
Akıllı sözleşmelerde hata ayıklamak zordur ve bazen sinir bozucudur, ancak güvenlik ve testle ilgili çok önemli bir aşamadır. Güvenlik açıklarının kendilerini bilgisayar korsanlarına gösterme olasılığının en yüksek olduğu yer burasıdır ve protokolün tamamen başarısız olmasına neden olabilir. Kendinizi bu tür durumlardan kurtarmak için denetimlere gitmeniz şiddetle tavsiye edilir.
QuillAudits, uzun süredir bu sektörde yer almaktadır ve olası her güvenlik açığının üstesinden gelebilecek ve protokolünüzü güvence altına almanıza yardımcı olacak uzman bir ekibe sahiptir. Test, önemi ve hata ayıklama ile ilişkisi ile ilgili olarak, her yönü anlamanıza yardımcı olacak ayrıntılı blogu okuyun. https://blog.quillhash.com/2023/02/16/testing-and-formal-verification/. Web sitemizi ziyaret edin ve projenizi denetletin!
12 Görünümler
- SEO Destekli İçerik ve Halkla İlişkiler Dağıtımı. Bugün Gücünüzü Artırın.
- Plato blok zinciri. Web3 Metaverse Zekası. Bilgi Güçlendirildi. Buradan Erişin.
- Kaynak: https://blog.quillhash.com/2023/03/03/4-most-useful-smart-contract-debugging-tools/
- a
- Hakkımızda
- Hesap
- karşısında
- etkinlik
- adres
- Sonra
- karşı
- Türkiye
- veriyor
- her zaman
- miktar
- ve
- Başka
- uygulamaları
- etrafında
- boy
- Montaj
- saldırılar
- Denemeler
- denetimler
- Bakiye
- baz
- Çünkü
- İYİ
- Engellemek
- blockchain
- blockchain uygulamaları
- Blog
- Böcek
- böcek
- bina
- yapılı
- yerleşik
- çağrı
- denilen
- aramalar
- yapamam
- taşımak
- dava
- belli
- zor
- şans
- koşullar
- kod
- kodlama
- nasıl
- ortak
- tamamlamak
- bilgisayar
- koşul
- sözleşme
- sözleşmeleri
- Ücret
- maliyetler
- çok önemli
- kesim
- devir
- anlaşma
- konuşlandırılmış
- dağıtma
- detaylı
- Geliştirici
- geliştiriciler
- gelişen
- gelişme
- farklı
- zor
- sırasında
- her
- editör
- çevre
- hata
- Hatalar
- Ethereum
- Etereum blok zincir
- Hatta
- Her
- EVM
- örnek
- istisna
- yürütme
- infaz
- deneyim
- deneyimli
- uzman
- keşfetmek
- kâşif
- karşı
- başarısız
- Başarısızlık
- Özellikler(Hazırlık aşamasında)
- ücret
- bulmak
- Ad
- sabit
- ileri
- iskelet
- itibaren
- sinir bozucu
- işlev
- işlevsellik
- GAZ
- almak
- Go
- Goes
- rehberlik
- hackerlar
- sap
- kullanma
- olmak
- olur
- Zor
- ağır şekilde
- ağır
- yardım et
- faydalı
- yardımcı olur
- okuyun
- büyük ölçüde
- HTTPS
- Kocaman
- İnsanlar
- belirlemek
- belirlenmesi
- önem
- in
- içerir
- verimsiz
- giriş
- konu
- sorunlar
- IT
- kendisi
- seyahat
- atlama
- Bilmek
- gecikmeli
- dil
- öncülük etmek
- ÖĞRENİN
- öğrenme
- Ayrılmak
- Lets
- Muhtemelen
- sınırları
- Uzun
- uzun zaman
- makine
- yapmak
- YAPAR
- çok
- anlamına geliyor
- Bellek
- yöntem
- eksik
- hata
- para
- Daha
- çoğu
- gerek
- sonraki
- çevrimdışı
- Zincir Üzerinde
- ONE
- Online
- açık kaynak
- operasyon
- Operasyon
- Diğer
- parametre
- parametreler
- MÜKEMMEL OLAN YERİ BULUN
- faz
- Yerler
- Platon
- Plato Veri Zekası
- PlatoVeri
- Nokta
- Popüler
- mümkün
- tahmin
- mevcut
- önlemek
- gelir
- süreç
- program
- proje
- protokol
- sağlar
- tüyo
- Okumak
- yinelenme
- yinelenen
- Recursive
- ilişkin
- düzenli
- ilgili
- ilişki
- tekrarlanan
- talep
- gerektirir
- Yer Alan Kurallar
- Kaynaklar
- Sonuçlar
- Rol
- koşmak
- aynı
- İndirim
- taramak
- Bölüm
- güvenli
- güvenlik
- gönderme
- akıllı
- akıllı sözleşme
- Akıllı Sözleşmeler
- So
- Yazılım
- yazılım geliştirme
- katılık
- biraz
- yığın
- Aşama
- başladı
- Yine
- böyle
- Bizi daha iyi tanımak için
- takım
- Test yapmak
- The
- Dünya
- ve bazı Asya
- kendilerini
- İçinden
- zaman
- zamanlar
- için
- çok
- araç
- araçlar
- iz
- işlem
- işlemler
- transfer
- transferler
- rahatsız
- Güvenilir
- türleri
- altında
- altında yatan
- anlamak
- anlayış
- Beklenmedik
- us
- kullanım
- kullanıcı
- çeşitli
- güvenlik açıkları
- güvenlik açığı
- Web3
- Web sitesi
- Ne
- hangi
- geniş ölçüde
- irade
- içinde
- olmadan
- Dünya
- Dünya çapında
- olur
- yazı yazıyor
- Sen
- kendiniz
- zefirnet