Lesetid: 4 minutter
Denne veiledningen kan hjelpe deg med å finne den ekle feilen som plager deg, og verktøyene for å rette dem.
Feilsøking er avgjørende for enhver programvareutviklingssyklus; mennesker gjør alltid feil. Derfor er vi uslåelige; vi gjør feil og lærer av dem. Feilsøking er en prosess for å finne ut hvor koden vår henger, fikse det og lære om feilen slik at den ikke gjentas.
Smart kontraktsutvikling er avgjørende for å bygge blockchain-applikasjoner. Men som med enhver annen programvareutviklingssyklus kan feilsøking av smarte kontrakter noen ganger være utfordrende, og ettersom vi her ofte håndterer en enorm sum penger, kan vi ikke overlate noe til tilfeldighetene. Vi må være perfekte til å skrive smarte kontrakter og perfekte til å feilsøke. Det er derfor vi har kommet opp med denne bloggen slik at du kan lære om feilsøking fra de beste.
Før vi fikser noe, må vi vite problemet, så la oss begynne med å identifisere ulike typer feil i smart kontraktsutvikling.
Vanlige feil
I denne delen vil vi utforske ulike typer feil som utviklere av smarte kontrakter kommer over jevnlig.
- Syntaksfeil:– Denne feilen er enkel å fikse. Dette skjer når en utvikler gjør en kodefeil som hindrer datamaskinen i å forstå den, som å savne et semikolon.
- Logisk feil:- Denne typen feil kan noen ganger være vanskelig å finne. Det forhindrer ikke kjøringen, men programmets funksjonalitet er endret. Dette programmet oppfører seg uventet som en smart kontrakt som overfører penger til feil adresse når du sender penger fra en konto til en annen.
- Runtime feil:- Disse feilene er vanskelige å forutsi. De kommer på et uventet tidspunkt og uventede steder. Dette skjer under utførelse av smarte kontrakter og skjer på grunn av ineffektiv unntakshåndtering. Dette kan for eksempel oppstå når en kontrakt ikke klarer å håndtere uventede inndata eller forsøk på å utføre en operasjon som er forbudt av den underliggende blokkjeden. For eksempel prøver en kontrakt å overføre mer penger enn den tillatte parameteren.
- Utførelse tilbakeførte feil:- Dette skjer når brukeren kommer med en illegitim forespørsel som er i strid med smartkontraktens logikk, så blir forespørselen kansellert og tilbakeført. Dette skjer fordi noen ganger krever smarte kontrakter at visse krav oppfylles for å behandle transaksjonen. Likevel fortsetter brukeren med transaksjonen uten å oppfylle kravene, og da blir ikke transaksjonen videreført og tilbakeført. For eksempel prøver en bruker å overføre $100, men har en $50-saldo.
- stack Overflow:- Ressursene for å utføre operasjonene koster en gassavgift. Jo tung funksjon, jo høyere kostnad. Noen av de tunge mekanismene i koding er løkker og
Rekursive samtaler<!– wp:paragraph –>Rekursivt anrop er en tilstand som kan referere til seg selv og kalle dem opp igjen og igjen i en loop. Den rekursive funksjonen bruker grunntilfelle (hvis) og induksjonstilfelle (annet). Re-entrancy-angrep utføres ved å utnytte rekursive anrop i koden. <br/><!– /wp:paragraph –>
” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]">rekursive anrop. Stack overflow har å gjøre med
Rekursive samtaler<!– wp:paragraph –>Rekursivt anrop er en tilstand som kan referere til seg selv og kalle dem opp igjen og igjen i en loop. Den rekursive funksjonen bruker grunntilfelle (hvis) og induksjonstilfelle (annet). Re-entrancy-angrep utføres ved å utnytte rekursive anrop i koden. <br/><!– /wp:paragraph –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]">rekursive anrop.
Rekursive samtaler<!– wp:paragraph –>Rekursivt anrop er en tilstand som kan referere til seg selv og kalle dem opp igjen og igjen i en loop. Den rekursive funksjonen bruker grunntilfelle (hvis) og induksjonstilfelle (annet). Re-entrancy-angrep utføres ved å utnytte rekursive anrop i koden. <br/><!– /wp:paragraph –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>Rekursive anrop er en metode for å påkalle en funksjon innenfor samme funksjon med forskjellige innganger. kan tenke på en tilbakevendende funksjon som sukkerrørjuicemaskinen. Maskinen oppfører seg som en funksjon og sukkerrøret som input. Hver kjøring med sukkerrør fra maskinen betyr et funksjonsanrop. Etter en gang går sukkerrøret under maskinen igjen, og denne prosessen gjentar seg stadig. Dette er hva gjentakelse er. Men ettersom vi ønsker å kutte på gasskostnader og EVM-ressurser, begrenser ethereum gjentakelsen opp til 1024 ganger. Når du kaller en funksjon 1025. gang, resulterer det i stackoverflyt.
- JUMP feil:- Når du prøver å kalle en funksjon som ikke eksisterer eller bruker assemblerspråk og peker på falskt minne, resulterer dette i en feil. Dette kan til og med skje når du kaller en funksjon i en annen kontrakt, men den funksjonen eksisterer ikke. Denne typen feil kalles JUMP-feil.
Dette var noen vanlige smarte kontraktsfeil utviklere støter på; feil kan noen ganger være vanskelig å oppdage og forstå. For å finne feilene og prøve å fikse dem tar vi hjelp av ulike verktøy. La oss gå gjennom dem én etter én i neste avsnitt.
Fire nyttige feilsøkingsverktøy
I denne delen vil vi lære om verktøy som er mye brukt for å identifisere og løse feil av de fleste erfarne utviklere over hele verden. La oss gå.
Hardhatt
Dette verktøyet er mye brukt og akseptert for å teste smarte kontrakter på ulike parametere. Det gir et åpen kildekode-utviklingsmiljø for Ethereum. Den inkluderer verktøy for å utvikle, teste og distribuere smarte kontrakter. Den innebygde debuggeren er nyttig for mange utviklere rundt om i verden. Dette spiller også en stor rolle i testfasen.
Truffle
Dette er et populært utviklingsrammeverk for Ethereum. I likhet med hardhat inkluderer den verktøy for å utvikle, teste og distribuere smarte kontrakter og har også bygget Trøffelfeilsøker, som hjelper utviklere med en jevn utviklingsopplevelse i testfasen.
Remix
Dette er den som nesten alle utviklere kom over da de først startet sin reise i web3. Dette er en online koderedigerer for soliditet, så ingen offline installasjon er nødvendig for å begynne med utvikling. Den innebygde feilsøkingsfunksjonen lar utviklere skanne koden og inspisere variable problemer. Og alt dette er online uten behov for offline-verktøy.
Etherscan
Dette er en allment pålitelig og populær blokkutforsker for Ethereum. Det lar utviklere inspisere og feilsøke smarte kontrakter distribuert på Ethereum-blokkjeden. Ved å bruke dette kan du spore transaksjoner og aktivitet for enhver adresse eller kontrakt. Dette hjelper deg med å identifisere hvor problemet ville være hvis den smarte kontrakten din står overfor problemer i kjeden.
konklusjonen
Å feilsøke smarte kontrakter er vanskelig og noen ganger frustrerende, men det er et avgjørende stadium knyttet til sikkerhet og testing. Det er her sårbarheter mest sannsynlig vil presentere seg for hackere og kan føre til fullstendig feil i protokollen. For å redde deg selv fra slike omstendigheter, anbefales det sterkt å gå til revisjoner.
QuillAudits har vært i denne vertikalen i lang tid og har et ekspertteam som kan håndtere alle mulige sårbarheter og hjelpe deg med å sikre protokollen din. Angående testingen, dens betydning og dens forhold til feilsøking, les den detaljerte bloggen, som vil hjelpe deg å forstå alle aspekter https://blog.quillhash.com/2023/02/16/testing-and-formal-verification/. Besøk nettsiden vår og få prosjektet ditt revidert!
12 Visninger
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- Platoblokkkjede. Web3 Metaverse Intelligence. Kunnskap forsterket. Tilgang her.
- kilde: https://blog.quillhash.com/2023/03/03/4-most-useful-smart-contract-debugging-tools/
- a
- Om oss
- Logg inn
- tvers
- aktivitet
- adresse
- Etter
- mot
- Alle
- tillater
- alltid
- beløp
- og
- En annen
- søknader
- rundt
- aspektet
- Montering
- Angrep
- forsøk
- revisjoner
- Balansere
- basen
- fordi
- BEST
- Blokker
- blockchain
- blockchain applikasjoner
- Blogg
- Bug
- bugs
- Bygning
- bygget
- innebygd
- ring
- som heter
- Samtaler
- kan ikke
- bære
- saken
- viss
- utfordrende
- sjanse
- omstendigheter
- kode
- Koding
- Kom
- Felles
- fullføre
- datamaskin
- tilstand
- kontrakt
- kontrakter
- Kostnad
- Kostnader
- avgjørende
- Kutt
- syklus
- avtale
- utplassert
- utplasserings
- detaljert
- Utvikler
- utviklere
- utvikle
- Utvikling
- forskjellig
- vanskelig
- under
- hver enkelt
- redaktør
- Miljø
- feil
- feil
- ethereum
- Ethereum blockchain
- Selv
- Hver
- EVM
- eksempel
- unntak
- utførende
- gjennomføring
- erfaring
- erfaren
- Expert
- utforske
- explorer
- vendt
- mislykkes
- Failure
- Trekk
- gebyr
- Finn
- Først
- Fix
- Forward
- Rammeverk
- fra
- frustrerende
- funksjon
- funksjonalitet
- GAS
- få
- Go
- Går
- veilede
- hackere
- håndtere
- Håndtering
- skje
- skjer
- Hard
- tungt
- tung
- hjelpe
- nyttig
- hjelper
- her.
- svært
- HTTPS
- stort
- Mennesker
- identifisere
- identifisering
- betydning
- in
- inkluderer
- ineffektiv
- inngang
- utstedelse
- saker
- IT
- selv
- reise
- hoppe
- Vet
- lagging
- Språk
- føre
- LÆRE
- læring
- Permisjon
- Lar
- Sannsynlig
- grenser
- Lang
- lang tid
- maskin
- gjøre
- GJØR AT
- mange
- midler
- Minne
- metode
- mangler
- feil
- penger
- mer
- mest
- Trenger
- neste
- offline
- On-Chain
- ONE
- på nett
- åpen kildekode
- drift
- Drift
- Annen
- parameter
- parametere
- perfekt
- fase
- steder
- plato
- Platon Data Intelligence
- PlatonData
- Point
- Populær
- mulig
- forutsi
- presentere
- forebygge
- fortsetter
- prosess
- program
- prosjekt
- protokollen
- gir
- Quillhash
- Lese
- tilbakefall
- gjentakende
- rekursiv
- om
- regelmessig
- i slekt
- forhold
- gjentatt
- anmode
- krever
- Krav
- Ressurser
- Resultater
- Rolle
- Kjør
- samme
- Spar
- skanne
- Seksjon
- sikre
- sikkerhet
- sending
- Smart
- smart kontrakt
- Smarte kontrakter
- So
- Software
- programvareutvikling
- soliditet
- noen
- stable
- Scene
- startet
- Still
- slik
- Ta
- lag
- Testing
- De
- verden
- deres
- seg
- Gjennom
- tid
- ganger
- til
- også
- verktøy
- verktøy
- spor
- Transaksjonen
- Transaksjoner
- overføre
- overføringer
- plagsom
- klarert
- typer
- etter
- underliggende
- forstå
- forståelse
- Uventet
- us
- bruke
- Bruker
- ulike
- Sikkerhetsproblemer
- sårbarhet
- Web3
- Nettsted
- Hva
- hvilken
- allment
- vil
- innenfor
- uten
- verden
- verdensomspennende
- ville
- skriving
- Du
- Din
- deg selv
- zephyrnet