Lästid: 4 minuter
Den här guiden kan hjälpa dig att hitta den där otäcka buggen som stör dig och verktygen för att rätta till dem.
Felsökning är avgörande för alla programvaruutvecklingscykler; människor gör alltid fel. Det är därför vi är oslagbara; vi gör fel och lär oss av dem. Felsökning är en process för att ta reda på var vår kod släpar, fixa det och lära sig om det felet så att det inte upprepas.
Smart kontraktsutveckling är avgörande för att bygga blockchain-applikationer. Men som med alla andra programvaruutvecklingscykler kan felsökning av smarta kontrakt ibland vara utmanande, och eftersom vi här ofta har att göra med en enorm summa pengar kan vi inte lämna något åt slumpen. Vi måste vara perfekta på att skriva smarta kontrakt och perfekta på att felsöka. Det är därför vi har tagit fram den här bloggen så att du kan lära dig om felsökning av de bästa.
Innan vi åtgärdar något måste vi känna till problemet, så låt oss börja med att identifiera olika typer av buggar i smart kontraktsutveckling.
Vanliga fel
I det här avsnittet kommer vi att utforska olika typer av buggar som utvecklare av smarta kontrakt stöter på regelbundet.
- Syntaxfel:– Det här felet är lätt att åtgärda. Detta händer när en utvecklare gör ett kodfel som hindrar datorn från att förstå det, som att missa ett semikolon.
- Logiskt fel:- Den här typen av fel kan ibland vara svåra att hitta. Det hindrar inte exekveringen, men programmets funktionalitet ändras. Det här programmet beter sig oväntat som ett smart kontrakt som överför pengar till den felaktiga adressen när man skickar pengar från ett konto till ett annat.
- Runtime-fel:- Dessa fel är svåra att förutsäga. De kommer vid en oväntad tidpunkt och vid oväntade platser. Detta inträffar under utförandet av smarta kontrakt och sker på grund av ineffektiv undantagshantering. Till exempel kan detta inträffa när ett kontrakt misslyckas med att hantera oväntade input eller försök att utföra en operation som är förbjuden av den underliggande blockkedjan. Till exempel försöker ett kontrakt att överföra mer pengar än den tillåtna parametern.
- Utförande Återställda fel:- Detta händer när användaren gör en olaglig begäran som strider mot det smarta kontraktets logik då förfrågan avbryts och återställs. Detta händer eftersom smarta kontrakt ibland kräver att vissa krav måste uppfyllas för att behandla transaktionen. Ändå fortsätter användaren med transaktionen utan att uppfylla kraven, och då förs transaktionen inte vidare och går tillbaka. Till exempel, en användare försöker överföra 100 USD men har ett saldo på 50 USD.
- stack Overflow:- Resurserna för att utföra operationerna kostar en gasavgift. Ju tung funktion, desto högre kostnad. Några av de tunga mekanismerna i kodning är loopar och
Rekursiva samtal<!– wp:paragraph –>Rekursivt anrop är ett tillstånd som kan referera till sig självt och anropa dem igen och igen i en loop. Den rekursiva funktionen använder basfall (if) och induktionsfall (annat). Återinträdesattacker utförs genom att utnyttja rekursiva anrop i koden. <br/><!– /wp:paragraph –>
” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]">rekursiva anrop. Stack overflow har att göra med
Rekursiva samtal<!– wp:paragraph –>Rekursivt anrop är ett tillstånd som kan referera till sig självt och anropa dem igen och igen i en loop. Den rekursiva funktionen använder basfall (if) och induktionsfall (annat). Återinträdesattacker utförs genom att utnyttja rekursiva anrop i koden. <br/><!– /wp:paragraph –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]">rekursiva anrop.
Rekursiva samtal<!– wp:paragraph –>Rekursivt anrop är ett tillstånd som kan referera till sig självt och anropa dem igen och igen i en loop. Den rekursiva funktionen använder basfall (if) och induktionsfall (annat). Återinträdesattacker utförs genom att utnyttja rekursiva anrop i koden. <br/><!– /wp:paragraph –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>Rekursiva anrop är en metod för att anropa en funktion inom samma funktion med olika indata. kan tänka sig en återkommande funktion som sockerrörsjuicemaskinen. Maskinen fungerar som en funktion och sockerröret som input. Varje körning av sockerrör från maskinen innebär ett funktionsanrop. Efter en gång går sockerröret under maskinen igen, och denna process upprepas hela tiden. Detta är vad återfall är. Men eftersom vi vill minska på gaskostnader och EVM-resurser, begränsar ethereum återkommande samtal upp till 1024 gånger. När du anropar en funktion 1025:e gången resulterar det i ett stackspill.
- JUMP-fel:- När du försöker anropa en funktion som inte finns eller använder assemblerspråk och pekar på falskt minne resulterar detta i ett fel. Detta kan till och med hända när du anropar en funktion i något annat kontrakt, men den funktionen finns inte. Dessa typer av fel kallas JUMP-fel.
Dessa var några vanliga smarta kontraktsfel som utvecklare stöter på; fel kan ibland vara svåra att upptäcka och förstå. För att hitta felen och försöka åtgärda dem tar vi hjälp av olika verktyg. Låt oss gå igenom dem en efter en i nästa avsnitt.
Fyra användbara felsökningsverktyg
I det här avsnittet kommer vi att lära oss om verktyg som ofta används för att identifiera och lösa buggar av de flesta erfarna utvecklare över hela världen. Nu går vi.
hardhat
Detta verktyg används i stor utsträckning och accepteras för att testa smarta kontrakt på olika parametrar. Det tillhandahåller en utvecklingsmiljö med öppen källkod för Ethereum. Den innehåller verktyg för att utveckla, testa och distribuera smarta kontrakt. Dess inbyggda debugger är till hjälp för många utvecklare runt om i världen. Detta spelar också en stor roll i testfasen.
Tryffel
Detta är ett populärt utvecklingsramverk för Ethereum. Liksom hardhat innehåller den verktyg för att utveckla, testa och distribuera smarta kontrakt och har även byggt Tryffeldebugger, vilket hjälper utvecklare med en smidig utvecklingsupplevelse i teststadiet.
Remix
Det här är den som nästan alla utvecklare stötte på när de började sin resa i web3. Detta är en onlinekodredigerare för soliditet, så ingen offlineinstallation behövs för att börja med utveckling. Dess inbyggda felsökningsfunktion låter utvecklare skanna koden och inspektera variabla problem. Och allt detta är online utan behov av offlineverktyg.
Etherscan
Detta är en allmänt pålitlig och populär blockutforskare för Ethereum. Det tillåter utvecklare att inspektera och felsöka smarta kontrakt som distribueras på Ethereum blockchain. Med hjälp av detta kan du spåra transaktioner och aktivitet för alla adresser eller kontrakt. Detta hjälper dig att identifiera var problemet skulle vara om ditt smarta kontrakt står inför problem i kedjan.
Slutsats
Att felsöka smarta kontrakt är svårt och ibland frustrerande, men det är ett avgörande skede relaterat till säkerhet och testning. Det är här sårbarheter som mest sannolikt kommer att presentera sig för hackare och kan leda till att protokollet misslyckas fullständigt. För att rädda dig själv från sådana omständigheter rekommenderas det starkt att gå på revisioner.
QuillAudits har varit i den här vertikalen länge och har ett expertteam som kan hantera alla möjliga sårbarheter och hjälpa dig att säkra ditt protokoll. Angående testningen, dess betydelse och dess samband med felsökning, läs den detaljerade bloggen, som hjälper dig att förstå varje aspekt https://blog.quillhash.com/2023/02/16/testing-and-formal-verification/. Besök vår hemsida och få ditt projekt granskat!
12 Visningar
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- Platoblockchain. Web3 Metaverse Intelligence. Kunskap förstärkt. Tillgång här.
- Källa: https://blog.quillhash.com/2023/03/03/4-most-useful-smart-contract-debugging-tools/
- a
- Om Oss
- Konto
- tvärs
- aktivitet
- adress
- Efter
- mot
- Alla
- tillåter
- alltid
- mängd
- och
- Annan
- tillämpningar
- runt
- aspekt
- Montage
- Attacker
- Försök
- revisioner
- Balansera
- bas
- därför att
- BÄST
- Blockera
- blockchain
- blockchain-applikationer
- Blogg
- Bug
- fel
- Byggnad
- byggt
- inbyggd
- Ring
- kallas
- Samtal
- kan inte
- bära
- Vid
- vissa
- utmanande
- chans
- omständigheter
- koda
- Kodning
- komma
- Gemensam
- fullborda
- dator
- tillstånd
- kontrakt
- kontrakt
- Pris
- Kostar
- avgörande
- Klipp
- cykel
- behandla
- utplacerade
- utplacera
- detaljerad
- Utvecklare
- utvecklare
- utveckla
- Utveckling
- olika
- svårt
- under
- varje
- redaktör
- Miljö
- fel
- fel
- ethereum
- Ethereum blockchain
- Även
- Varje
- EVM
- exempel
- undantag
- exekvera
- utförande
- erfarenhet
- erfaren
- expert
- utforska
- explorer
- vänd
- misslyckas
- Misslyckande
- Leverans
- avgift
- hitta
- Förnamn
- Fast
- Framåt
- Ramverk
- från
- frustrerande
- fungera
- funktionalitet
- GAS
- skaffa sig
- Go
- Går
- styra
- hackare
- hantera
- Arbetsmiljö
- hända
- händer
- Hård
- kraftigt
- tung
- hjälpa
- hjälp
- hjälper
- här.
- höggradigt
- HTTPS
- stor
- Människa
- identifiera
- identifiera
- vikt
- in
- innefattar
- ineffektiv
- ingång
- fråga
- problem
- IT
- sig
- resa
- hoppa
- Vet
- eftersläpande
- språk
- leda
- LÄRA SIG
- inlärning
- Lämna
- Lets
- sannolikt
- gränser
- Lång
- länge sedan
- Maskinen
- göra
- GÖR
- många
- betyder
- Minne
- metod
- saknas
- misstag
- pengar
- mer
- mest
- Behöver
- Nästa
- offline
- On-Chain
- ONE
- nätet
- öppen källkod
- drift
- Verksamhet
- Övriga
- parameter
- parametrar
- perfekt
- fas
- platser
- plato
- Platon Data Intelligence
- PlatonData
- Punkt
- Populära
- möjlig
- förutse
- presentera
- förhindra
- vinning
- process
- programmet
- projektet
- protokoll
- ger
- Pilbåt
- Läsa
- upprepning
- återkommande
- Rekursiv
- om
- regelbundet
- relaterad
- förhållande
- upprepade
- begära
- kräver
- Krav
- Resurser
- Resultat
- Roll
- Körning
- Samma
- Save
- scanna
- §
- säkra
- säkerhet
- skicka
- smarta
- smart kontrakt
- Smarta kontrakt
- So
- Mjukvara
- mjukvaruutveckling
- fasthet
- några
- stapel
- Etapp
- igång
- Fortfarande
- sådana
- Ta
- grupp
- Testning
- Smakämnen
- världen
- deras
- sig själva
- Genom
- tid
- gånger
- till
- alltför
- verktyg
- verktyg
- spår
- transaktion
- Transaktioner
- överföring
- överföringar
- oroande
- betrodd
- typer
- under
- underliggande
- förstå
- förståelse
- Oväntat
- us
- användning
- Användare
- olika
- sårbarheter
- sårbarhet
- Web3
- Webbplats
- Vad
- som
- brett
- kommer
- inom
- utan
- världen
- inom hela sverige
- skulle
- skrivning
- Om er
- Din
- själv
- zephyrnet