Czas czytania: 4 minuty
Ten przewodnik może pomóc Ci znaleźć ten paskudny błąd, który Cię niepokoi, oraz narzędzia do ich naprawienia.
Debugowanie ma kluczowe znaczenie dla każdego cyklu tworzenia oprogramowania; ludzie zawsze popełniają błędy. Dlatego jesteśmy nie do pokonania; popełniamy błędy i uczymy się na nich. Debugowanie to proces ustalania, gdzie nasz kod jest opóźniony, naprawiania tego i poznawania tego błędu, aby się nie powtarzał.
Rozwój inteligentnych kontraktów ma kluczowe znaczenie dla budowania aplikacji blockchain. Ale tak jak w przypadku każdego innego cyklu tworzenia oprogramowania, debugowanie inteligentnych kontraktów może czasem być trudne, a ponieważ często mamy do czynienia z ogromną kwotą pieniędzy, nie możemy pozostawić niczego przypadkowi. Musimy być perfekcyjni w pisaniu inteligentnych kontraktów i perfekcyjni w debugowaniu. Właśnie dlatego stworzyliśmy ten blog, abyś mógł uczyć się debugowania od najlepszych.
Zanim cokolwiek naprawimy, musimy znać problem, więc zacznijmy od zidentyfikowania różnych rodzajów błędów w rozwoju inteligentnych kontraktów.
Powszechne błędy
W tej sekcji przyjrzymy się różnym rodzajom błędów, z którymi regularnie spotykają się deweloperzy inteligentnych kontraktów.
- Błąd składni:– Ten błąd jest łatwy do naprawienia. Dzieje się tak, gdy programista popełnia błąd w kodzie, który uniemożliwia komputerowi zrozumienie go, na przykład pominięcie średnika.
- Błąd logiczny:- Ten typ błędu może być czasami trudny do znalezienia. Nie uniemożliwia to wykonania, ale zmienia się funkcjonalność programu. Ten program nieoczekiwanie zachowuje się jak inteligentna umowa, która przesyła pieniądze na niewłaściwy adres podczas przesyłania pieniędzy z jednego konta na drugie.
- Błąd wykonania:- Te błędy są trudne do przewidzenia. Pojawiają się w nieoczekiwanym czasie i nieoczekiwanych miejscach. Dzieje się tak podczas wykonywania inteligentnych kontraktów i dzieje się to z powodu nieefektywnej obsługi wyjątków. Na przykład może się to zdarzyć, gdy umowa nie obsługuje nieoczekiwanych danych wejściowych lub próbuje przeprowadzić operację zabronioną przez bazowy łańcuch bloków. Na przykład kontrakt próbuje przelać więcej pieniędzy niż dozwolony parametr.
- Wykonanie cofniętych błędów:- Dzieje się tak, gdy użytkownik składa jakiekolwiek nielegalne żądanie, które jest sprzeczne z logiką inteligentnego kontraktu, a następnie żądanie jest anulowane i cofnięte. Dzieje się tak, ponieważ czasami inteligentne kontrakty wymagają spełnienia pewnych wymagań w celu przetworzenia transakcji. Mimo to użytkownik kontynuuje transakcję bez spełnienia wymagań, a następnie transakcja nie jest przenoszona i cofana. Na przykład użytkownik próbuje przelać 100 USD, ale ma saldo w wysokości 50 USD.
- Przepełnienie stosu:- Zasoby potrzebne do wykonania operacji kosztują opłatę gazową. Im ciężka funkcja, tym większy koszt. Niektóre z ciężkich mechanizmów w kodowaniu to pętle i
Wywołania rekurencyjne<!– wp:paragraph –>Wywołanie rekurencyjne to warunek, który może odnosić się do siebie i wywoływać je wielokrotnie w pętli. Funkcja rekurencyjna wykorzystuje przypadek podstawowy (if) i przypadek indukcyjny (else). Ataki ponownego wejścia są wykonywane przez wykorzystanie wywołań rekurencyjnych w kodzie. <br/><!– /wp:paragraf –>
” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>wywołania rekurencyjne. Przepełnienie stosu ma związek z
Wywołania rekurencyjne<!– wp:paragraph –>Wywołanie rekurencyjne to warunek, który może odnosić się do siebie i wywoływać je wielokrotnie w pętli. Funkcja rekurencyjna wykorzystuje przypadek podstawowy (if) i przypadek indukcyjny (else). Ataki ponownego wejścia są wykonywane przez wykorzystanie wywołań rekurencyjnych w kodzie. <br/><!– /wp:paragraf –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>wywołania rekurencyjne.
Wywołania rekurencyjne<!– wp:paragraph –>Wywołanie rekurencyjne to warunek, który może odnosić się do siebie i wywoływać je wielokrotnie w pętli. Funkcja rekurencyjna wykorzystuje przypadek podstawowy (if) i przypadek indukcyjny (else). Ataki ponownego wejścia są wykonywane przez wykorzystanie wywołań rekurencyjnych w kodzie. <br/><!– /wp:paragraf –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>Wywołania rekurencyjne to metoda wywoływania funkcji w ramach tej samej funkcji z różnymi danymi wejściowymi może myśleć o powtarzającej się funkcji, takiej jak maszyna do wyciskania soku z trzciny cukrowej. Maszyna zachowuje się jak funkcja, a trzcina cukrowa jako dane wejściowe. Każdy przebieg trzciny cukrowej z maszyny oznacza wywołanie funkcji. Po pewnym czasie trzcina cukrowa ponownie trafia pod maszynę i ten proces się powtarza. Na tym polega powtarzalność. Ale ponieważ chcemy obniżyć koszty gazu i zasoby EVM, ethereum ogranicza powtarzające się wywołania do 1024 razy. Wywołanie funkcji po raz 1025 powoduje przepełnienie stosu.
- Błąd SKOK:- Kiedy próbujesz wywołać funkcję, która nie istnieje lub używasz języka asemblera i wskazujesz na fałszywą pamięć, powoduje to błąd. Może się to zdarzyć nawet wtedy, gdy wywołasz funkcję z innego kontraktu, ale ta funkcja nie istnieje. Błędy tego typu nazywane są błędami JUMP.
Oto niektóre typowe błędy smart kontraktów, z którymi spotykają się programiści; błędy mogą być czasami trudne do wykrycia i zrozumienia. Aby znaleźć błędy i spróbować je naprawić, korzystamy z pomocy różnych narzędzi. Omówimy je jeden po drugim w następnej sekcji.
Cztery przydatne narzędzia do debugowania
W tej sekcji dowiemy się o narzędziach często używanych do identyfikowania i rozwiązywania błędów przez najbardziej doświadczonych programistów na całym świecie. Chodźmy.
Kask
To narzędzie jest szeroko stosowane i akceptowane do testowania inteligentnych kontraktów na różnych parametrach. Zapewnia środowisko programistyczne typu open source dla Ethereum. Obejmuje narzędzia do opracowywania, testowania i wdrażania inteligentnych kontraktów. Wbudowany debuger jest pomocny dla wielu programistów na całym świecie. Odgrywa to również dużą rolę w fazie testowania.
Trufla
Jest to popularna platforma programistyczna dla Ethereum. Podobnie jak hardhat, zawiera narzędzia do opracowywania, testowania i wdrażania inteligentnych kontraktów, a także ma wbudowany Debuger trufli, która pomaga programistom w płynnym rozwoju na etapie testowania.
Remix
Z tym spotkał się prawie każdy programista, gdy zaczynał swoją przygodę z web3. Jest to edytor kodu online zapewniający solidność, więc do rozpoczęcia programowania nie jest wymagana instalacja offline. Wbudowana funkcja debugowania pozwala programistom skanować kod i sprawdzać problemy ze zmiennymi. A wszystko to online, bez użycia narzędzi offline.
Etherscan
Jest to powszechnie zaufany i popularny eksplorator bloków dla Ethereum. Pozwala programistom sprawdzać i debugować inteligentne kontrakty wdrożone na blockchainie Ethereum. Dzięki temu możesz śledzić transakcje i aktywność dowolnego adresu lub umowy. Pomaga to określić, gdzie byłby problem, gdyby Twój inteligentny kontrakt napotkał jakiekolwiek problemy w łańcuchu.
Wnioski
Debugowanie inteligentnych kontraktów jest trudne i czasami frustrujące, ale jest kluczowym etapem związanym z bezpieczeństwem i testowaniem. W tym miejscu luki najczęściej ujawniają się hakerom i mogą doprowadzić protokół do całkowitej awarii. Aby uchronić się przed takimi okolicznościami, zdecydowanie zaleca się pójście na audyty.
QuillAudits działa w tej branży od dłuższego czasu i dysponuje zespołem ekspertów, który poradzi sobie z każdą możliwą luką w zabezpieczeniach i pomoże zabezpieczyć protokół. Jeśli chodzi o testowanie, jego znaczenie i związek z debugowaniem, przeczytaj szczegółowy blog, który pomoże ci zrozumieć każdy aspekt https://blog.quillhash.com/2023/02/16/testing-and-formal-verification/. Odwiedź naszą stronę internetową i zleć audyt swojego projektu!
12 odwiedzajacy
- Dystrybucja treści i PR oparta na SEO. Uzyskaj wzmocnienie już dziś.
- Platoblockchain. Web3 Inteligencja Metaverse. Wzmocniona wiedza. Dostęp tutaj.
- Źródło: https://blog.quillhash.com/2023/03/03/4-most-useful-smart-contract-debugging-tools/
- a
- O nas
- Konto
- w poprzek
- działalność
- adres
- Po
- przed
- Wszystkie kategorie
- pozwala
- zawsze
- ilość
- i
- Inne
- aplikacje
- na około
- aspekt
- Montaż
- Ataki
- Próby
- kontrole
- Bilans
- baza
- bo
- BEST
- Blokować
- blockchain
- aplikacje blockchain
- Blog
- Bug
- błędy
- Budowanie
- wybudowany
- wbudowany
- wezwanie
- nazywa
- Połączenia
- nie może
- nieść
- walizka
- pewien
- wyzwanie
- szansa
- okoliczności
- kod
- Kodowanie
- jak
- wspólny
- kompletny
- komputer
- warunek
- umowa
- umowy
- Koszty:
- Koszty:
- istotny
- Ciąć
- cykl
- sprawa
- wdrażane
- wdrażanie
- szczegółowe
- Deweloper
- deweloperzy
- rozwijanie
- oprogramowania
- różne
- trudny
- podczas
- każdy
- redaktor
- Środowisko
- błąd
- Błędy
- ethereum
- Ethereum blockchain
- Parzyste
- Każdy
- EVM
- przykład
- wyjątek
- wykonywania
- egzekucja
- doświadczenie
- doświadczony
- ekspert
- odkryj
- badacz
- okładzina
- nie
- Brak
- Cecha
- opłata
- Znajdź
- i terminów, a
- Fix
- Naprzód
- Framework
- od
- frustrujące
- funkcjonować
- Funkcjonalność
- GAS
- otrzymać
- Go
- Goes
- poprowadzi
- hakerzy
- uchwyt
- Prowadzenie
- zdarzyć
- dzieje
- Ciężko
- ciężko
- ciężki
- pomoc
- pomocny
- pomaga
- tutaj
- wysoko
- HTTPS
- olbrzymi
- Ludzie
- zidentyfikować
- identyfikacja
- znaczenie
- in
- obejmuje
- niewydajny
- wkład
- problem
- problemy
- IT
- samo
- podróż
- skok
- Wiedzieć
- otulina
- język
- prowadzić
- UCZYĆ SIĘ
- nauka
- Pozostawiać
- pozwala
- Prawdopodobnie
- Limity
- długo
- długi czas
- maszyna
- robić
- WYKONUJE
- wiele
- znaczy
- Pamięć
- metoda
- brakujący
- błąd
- pieniądze
- jeszcze
- większość
- Potrzebować
- Następny
- nieaktywny
- Na łańcuchu
- ONE
- Online
- open source
- działanie
- operacje
- Inne
- parametr
- parametry
- doskonały
- faza
- Miejsca
- plato
- Analiza danych Platona
- PlatoDane
- punkt
- Popularny
- możliwy
- przewidzieć
- teraźniejszość
- zapobiec
- dochód
- wygląda tak
- program
- projekt
- protokół
- zapewnia
- Quillhash
- Czytaj
- nawrót
- powtarzające się
- Rekurencyjne
- w sprawie
- regularnie
- związane z
- relacja
- powtórzony
- zażądać
- wymagać
- wymagania
- Zasoby
- Efekt
- Rola
- run
- taki sam
- Zapisz
- skanować
- Sekcja
- bezpieczne
- bezpieczeństwo
- wysyłanie
- mądry
- inteligentna umowa
- Inteligentne kontrakty
- So
- Tworzenie
- rozwoju oprogramowania
- solidność
- kilka
- stos
- STAGE
- rozpoczęty
- Nadal
- taki
- Brać
- zespół
- Testowanie
- Połączenia
- świat
- ich
- sami
- Przez
- czas
- czasy
- do
- także
- narzędzie
- narzędzia
- śledzić
- transakcja
- transakcje
- przenieść
- transfery
- niepokojące
- zaufany
- typy
- dla
- zasadniczy
- zrozumieć
- zrozumienie
- Nieoczekiwany
- us
- posługiwać się
- Użytkownik
- różnorodny
- Luki w zabezpieczeniach
- wrażliwość
- Web3
- Strona internetowa
- Co
- który
- szeroko
- będzie
- w ciągu
- bez
- świat
- na calym swiecie
- by
- pisanie
- You
- Twój
- siebie
- zefirnet