Læsetid: 4 minutter
Denne guide kan hjælpe dig med at finde den grimme fejl, der bekymrer dig, og værktøjerne til at rette op på dem.
Debugging er afgørende for enhver softwareudviklingscyklus; mennesker laver altid fejl. Derfor er vi uovertrufne; vi laver fejl og lærer af dem. Debugging er en proces med at finde ud af, hvor vores kode halter, rette det og lære om den fejl, så den ikke gentages.
Smart kontraktudvikling er afgørende for at bygge blockchain-applikationer. Men som med enhver anden softwareudviklingscyklus kan fejlsøgning af smarte kontrakter nogle gange være udfordrende, og da vi her ofte har at gøre med en enorm mængde penge, kan vi ikke overlade noget til tilfældighederne. Vi skal være perfekte til at skrive smarte kontrakter og perfekte til at fejlfinde. Det er derfor, vi har lavet denne blog, så du kan lære om fejlretning fra de bedste.
Før vi løser noget, er vi nødt til at kende problemet, så lad os begynde med at identificere forskellige typer fejl i smart kontraktudvikling.
Almindelige fejl
I dette afsnit vil vi udforske forskellige typer af fejl, som udviklere af smarte kontrakter støder på regelmæssigt.
- Syntaks fejl:– Denne fejl er let at rette. Dette sker, når en udvikler laver en kodefejl, der forhindrer computeren i at forstå den, som at mangle et semikolon.
- Logisk fejl:- Denne type fejl kan nogle gange være svære at finde. Det forhindrer ikke udførelsen, men programmets funktionalitet ændres. Dette program opfører sig uventet som en smart kontrakt, der overfører penge til den forkerte adresse, når der sendes penge fra en konto til en anden.
- Runtime fejl:- Disse fejl er svære at forudsige. De kommer på et uventet tidspunkt og uventede steder. Dette sker under udførelsen af smarte kontrakter og sker på grund af ineffektiv undtagelseshåndtering. For eksempel kan dette forekomme, når en kontrakt ikke håndterer uventede input eller forsøg på at udføre en operation, der er forbudt af den underliggende blockchain. For eksempel forsøger en kontrakt at overføre flere penge end den tilladte parameter.
- Udførelse tilbageførte fejl:- Dette sker, når brugeren fremsætter en illegitim anmodning, der er imod den smarte kontrakts logik, så annulleres anmodningen og vendes tilbage. Dette sker, fordi smarte kontrakter nogle gange kræver, at visse krav er opfyldt for at behandle transaktionen. Alligevel fortsætter brugeren med transaktionen uden at opfylde kravene, og så videreføres og tilbageføres transaktionen ikke. For eksempel forsøger en bruger at overføre $100, men har en $50-saldo.
- Stack Overflow:- Ressourcerne til at udføre operationerne koster et gasgebyr. Jo tung funktion, desto højere omkostninger. Nogle af de tunge mekanismer i kodning er loops og
Rekursive opkald<!– wp:paragraph –>Rekursivt kald er en tilstand, der kan henvise til sig selv og genkalde dem igen og igen i en løkke. Den rekursive funktion bruger basiscase (hvis) og induktionstilfælde (andet). Re-entrancy-angreb udføres ved at udnytte rekursive opkald i koden. <br/><!– /wp:afsnit –>
” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]">rekursive opkald. Stack overflow har at gøre med
Rekursive opkald<!– wp:paragraph –>Rekursivt kald er en tilstand, der kan henvise til sig selv og genkalde dem igen og igen i en løkke. Den rekursive funktion bruger basiscase (hvis) og induktionstilfælde (andet). Re-entrancy-angreb udføres ved at udnytte rekursive opkald i koden. <br/><!– /wp:afsnit –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]">rekursive opkald.
Rekursive opkald<!– wp:paragraph –>Rekursivt kald er en tilstand, der kan henvise til sig selv og genkalde dem igen og igen i en løkke. Den rekursive funktion bruger basiscase (hvis) og induktionstilfælde (andet). Re-entrancy-angreb udføres ved at udnytte rekursive opkald i koden. <br/><!– /wp:afsnit –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>Rekursive opkald er en metode til at påkalde en funktion inden for den samme funktion med forskellige input. kan tænke på en tilbagevendende funktion som sukkerrørsaftmaskinen. Maskinen opfører sig som en funktion og sukkerrøret som input. Hver kørsel af sukkerrør fra maskinen betyder et funktionskald. Efter én gang går sukkerrøret under maskinen igen, og denne proces bliver ved med at gentage sig. Dette er hvad gentagelse er. Men da vi ønsker at skære ned på gasomkostninger og EVM-ressourcer, begrænser ethereum gentagelsesopkaldet op til 1024 gange. Når du kalder en funktion 1025. gang, resulterer det i et stackoverflow.
- JUMP fejl:- Når du forsøger at kalde en funktion, der ikke findes, eller bruger assemblersprog og peger på falsk hukommelse, resulterer dette i en fejl. Dette kan endda ske, når du kalder en funktion i en anden kontrakt, men den funktion eksisterer ikke. Disse typer fejl kaldes JUMP-fejl.
Dette var nogle almindelige smarte kontraktfejl, som udviklere støder på; fejl kan nogle gange være svære at opdage og forstå. For at finde fejlene og prøve at rette dem tager vi hjælp af forskellige værktøjer. Lad os gennemgå dem én efter én i næste afsnit.
Fire nyttige fejlfindingsværktøjer
I dette afsnit vil vi lære om værktøjer, der er meget brugt til at identificere og løse fejl af de fleste erfarne udviklere over hele verden. Lad os gå.
Hård hat
Dette værktøj er meget brugt og accepteret til at teste smarte kontrakter på forskellige parametre. Det giver et open source-udviklingsmiljø for Ethereum. Det inkluderer værktøjer til at udvikle, teste og implementere smarte kontrakter. Dens indbyggede debugger er nyttig for mange udviklere rundt om i verden. Dette spiller også en stor rolle i testfasen.
Trøffel
Dette er en populær udviklingsramme for Ethereum. Ligesom hardhat inkluderer det værktøjer til udvikling, test og implementering af smarte kontrakter og har også bygget Trøffel Debugger, som hjælper udviklere med en problemfri udviklingsoplevelse i testfasen.
Remix
Dette er den, som næsten alle udviklere stødte på, da de først startede deres rejse i web3. Dette er en online kode editor for soliditet, så ingen offline installation er nødvendig for at begynde med udvikling. Dens indbyggede fejlfindingsfunktion lader udviklere scanne koden og inspicere variable problemer. Og alt dette er online uden behov for offline værktøjer.
Etherscan
Dette er en bredt betroet og populær blokudforsker til Ethereum. Det giver udviklere mulighed for at inspicere og fejlsøge smarte kontrakter implementeret på Ethereum blockchain. Ved at bruge dette kan du spore transaktioner og aktivitet på enhver adresse eller kontrakt. Dette hjælper dig med at identificere, hvor problemet ville være, hvis din smarte kontrakt står over for problemer i kæden.
Konklusion
Fejlretning af smarte kontrakter er vanskeligt og nogle gange frustrerende, men det er en afgørende fase relateret til sikkerhed og test. Det er her, sårbarheder er mest tilbøjelige til at præsentere sig selv for hackere og kan føre til, at protokollen fejler fuldstændigt. For at redde dig selv fra sådanne omstændigheder, anbefales det stærkt at gå til revision.
QuillAudits har været i denne vertikal i lang tid og har et ekspertteam, der kan håndtere enhver mulig sårbarhed og hjælpe dig med at sikre din protokol. Med hensyn til testen, dens vigtighed og dens relation til fejlretning, læs den detaljerede blog, som vil hjælpe dig med at forstå alle aspekter https://blog.quillhash.com/2023/02/16/testing-and-formal-verification/. Besøg vores hjemmeside og få dit projekt revideret!
12 Views
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- Platoblokkæde. Web3 Metaverse Intelligence. Viden forstærket. Adgang her.
- Kilde: https://blog.quillhash.com/2023/03/03/4-most-useful-smart-contract-debugging-tools/
- a
- Om
- Konto
- tværs
- aktivitet
- adresse
- Efter
- mod
- Alle
- tillader
- altid
- beløb
- ,
- En anden
- applikationer
- omkring
- udseende
- Assembly
- Angreb
- Forsøg på
- revisioner
- Balance
- bund
- fordi
- BEDSTE
- Bloker
- blockchain
- blockchain applikationer
- Blog
- Bug
- bugs
- Bygning
- bygget
- indbygget
- ringe
- kaldet
- Opkald
- kan ikke
- bære
- tilfælde
- vis
- udfordrende
- chance
- omstændigheder
- kode
- Kodning
- Kom
- Fælles
- fuldføre
- computer
- betingelse
- kontrakt
- kontrakter
- Koste
- Omkostninger
- afgørende
- Klip
- cyklus
- deal
- indsat
- implementering
- detaljeret
- Udvikler
- udviklere
- udvikling
- Udvikling
- forskellige
- svært
- i løbet af
- hver
- editor
- Miljø
- fejl
- fejl
- ethereum
- Ethereum blockchain
- Endog
- Hver
- EVM
- eksempel
- undtagelse
- udførelse
- udførelse
- erfaring
- erfarne
- ekspert
- udforske
- opdagelsesrejsende
- vender
- mislykkes
- Manglende
- Feature
- gebyr
- Finde
- Fornavn
- Fix
- Videresend
- Framework
- fra
- frustrerende
- funktion
- funktionalitet
- GAS
- få
- Go
- Goes
- vejlede
- hackere
- håndtere
- Håndtering
- ske
- sker
- Hård Ost
- stærkt
- tunge
- hjælpe
- hjælpsom
- hjælper
- link.
- stærkt
- HTTPS
- kæmpe
- Mennesker
- identificere
- identificere
- betydning
- in
- omfatter
- ineffektiv
- indgang
- spørgsmål
- spørgsmål
- IT
- selv
- rejse
- hoppe
- Kend
- halter
- Sprog
- føre
- LÆR
- læring
- Forlade
- Lets
- Sandsynlig
- grænser
- Lang
- lang tid
- maskine
- lave
- maerker
- mange
- midler
- Hukommelse
- metode
- mangler
- fejltagelse
- penge
- mere
- mest
- Behov
- næste
- offline
- On-Chain
- ONE
- online
- open source
- drift
- Produktion
- Andet
- parameter
- parametre
- perfekt
- fase
- Steder
- plato
- Platon Data Intelligence
- PlatoData
- Punkt
- Populær
- mulig
- forudsige
- præsentere
- forhindre
- udbytte
- behandle
- program
- projekt
- protokol
- giver
- Quillhash
- Læs
- tilbagevenden
- tilbagevendende
- Rekursiv
- om
- regelmæssigt
- relaterede
- relation
- gentaget
- anmode
- kræver
- Krav
- Ressourcer
- Resultater
- roller
- Kør
- samme
- Gem
- scanne
- Sektion
- sikker
- sikkerhed
- afsendelse
- Smart
- smart kontrakt
- Smarte kontrakter
- So
- Software
- softwareudvikling
- soliditet
- nogle
- stable
- Stage
- påbegyndt
- Stadig
- sådan
- Tag
- hold
- Test
- verdenen
- deres
- selv
- Gennem
- tid
- gange
- til
- også
- værktøj
- værktøjer
- spor
- transaktion
- Transaktioner
- overførsel
- overførsler
- bekymrende
- betroet
- typer
- under
- underliggende
- forstå
- forståelse
- Uventet
- us
- brug
- Bruger
- forskellige
- Sårbarheder
- sårbarhed
- Web3
- Hjemmeside
- Hvad
- som
- bredt
- vilje
- inden for
- uden
- world
- verdensplan
- ville
- skrivning
- Du
- Din
- dig selv
- zephyrnet