Leestijd: 4 minuten
Deze gids kan je helpen die vervelende bug te vinden die je dwars zit en de tools om ze te verhelpen.
Foutopsporing is cruciaal voor elke softwareontwikkelingscyclus; mensen maken altijd fouten. Daarom zijn wij onverslaanbaar; we maken fouten en leren ervan. Foutopsporing is een proces van uitzoeken waar onze code achterblijft, dat oplossen en leren over die fout zodat deze niet wordt herhaald.
Slimme contractontwikkeling is cruciaal voor het bouwen van blockchain-applicaties. Maar net als bij elke andere softwareontwikkelingscyclus kan het debuggen van slimme contracten soms een uitdaging zijn, en aangezien we hier vaak met enorm veel geld te maken hebben, kunnen we niets aan het toeval overlaten. We moeten perfect zijn in het schrijven van slimme contracten en perfect in het debuggen. Daarom hebben we deze blog bedacht, zodat je van de beste kunt leren over foutopsporing.
Voordat we iets oplossen, moeten we het probleem kennen, dus laten we beginnen met het identificeren van verschillende soorten bugs in de ontwikkeling van slimme contracten.
Veel voorkomende fouten
In deze sectie zullen we verschillende soorten bugs onderzoeken die slimme contractontwikkelaars regelmatig tegenkomen.
- Syntax error:- Deze fout is eenvoudig op te lossen. Dit gebeurt wanneer een ontwikkelaar een codefout maakt waardoor de computer deze niet begrijpt, zoals het missen van een puntkomma.
- Logische fout:- Dit type fout kan soms moeilijk te vinden zijn. Het verhindert de uitvoering niet, maar de functionaliteit van het programma wordt gewijzigd. Dit programma gedraagt โโzich onverwachts als een slim contract dat geld overmaakt naar het verkeerde adres bij het overmaken van geld van de ene rekening naar de andere.
- Runtime-fout:- Deze fouten zijn moeilijk te voorspellen. Ze komen op een onverwacht moment en op onverwachte plaatsen. Dit gebeurt tijdens de uitvoering van slimme contracten en gebeurt als gevolg van inefficiรซnte afhandeling van uitzonderingen. Dit kan bijvoorbeeld gebeuren wanneer een contract onverwachte invoer niet verwerkt of probeert een bewerking uit te voeren die verboden is door de onderliggende blockchain. Een contract probeert bijvoorbeeld meer geld over te maken dan de toegestane parameter.
- Uitvoering herstelde fouten:- Dit gebeurt wanneer de gebruiker een onwettig verzoek indient dat in strijd is met de logica van het slimme contract, waarna het verzoek wordt geannuleerd en teruggedraaid. Dit gebeurt omdat soms aan slimme contracten moet worden voldaan om de transactie te verwerken. Toch gaat de gebruiker door met de transactie zonder aan de vereisten te voldoen, waarna de transactie niet wordt overgedragen en teruggedraaid. Een gebruiker probeert bijvoorbeeld $ 100 over te maken, maar heeft een saldo van $ 50.
- Stack Overflow:- De middelen voor het uitvoeren van de operaties kosten een gasvergoeding. Hoe zwaar de functie, hoe hoger de kosten. Enkele van de zware mechanismen bij het coderen zijn lussen en
Recursieve oproepen<!โ wp:paragraph โ>Recursieve aanroep is een voorwaarde die naar zichzelf kan verwijzen en ze keer op keer opnieuw kan aanroepen in een lus. De recursieve functie gebruikt basisgeval (if) en inductiegeval (else). Herintredingsaanvallen worden uitgevoerd door gebruik te maken van recursieve aanroepen in de code. <br/><!โ /wp:alinea โ>
โ data-gt-translate-attributes=โ[{"attribute":"data-cmtooltip", "format":"html"}]โ>recursieve aanroepen. Stackoverflow heeft te maken met
Recursieve oproepen<!โ wp:paragraph โ>Recursieve aanroep is een voorwaarde die naar zichzelf kan verwijzen en ze keer op keer opnieuw kan aanroepen in een lus. De recursieve functie gebruikt basisgeval (if) en inductiegeval (else). Herintredingsaanvallen worden uitgevoerd door gebruik te maken van recursieve aanroepen in de code. <br/><!โ /wp:alinea โ>โ data-gt-translate-attributes=โ[{"attribute":"data-cmtooltip", "format":"html"}]โ>recursieve aanroepen.
Recursieve oproepen<!โ wp:paragraph โ>Recursieve aanroep is een voorwaarde die naar zichzelf kan verwijzen en ze keer op keer opnieuw kan aanroepen in een lus. De recursieve functie gebruikt basisgeval (if) en inductiegeval (else). Herintredingsaanvallen worden uitgevoerd door gebruik te maken van recursieve aanroepen in de code. <br/><!โ /wp:alinea โ>โ data-gt-translate-attributes=โ[{"attribute":"data-cmtooltip", "format":"html"}]โ>Recursieve aanroepen zijn een methode om een โโfunctie aan te roepen binnen dezelfde functie met verschillende invoer. kan een terugkerende functie bedenken als de suikerrietsapmachine. De machine gedraagt โโzich als functie en het suikerriet als input. Elke run suikerriet uit de machine betekent een functieoproep. Na een keer gaat het suikerriet weer onder de machine en dit proces blijft zich herhalen. Dit is wat herhaling is. Maar omdat we willen besparen op gaskosten en EVM-bronnen, beperkt ethereum de herhalingsoproep tot 1024 keer. Wanneer u een functie 1025e keer aanroept, resulteert dit in een stackoverloop.
- JUMP-fout:- Wanneer u een functie probeert aan te roepen die niet bestaat of assembleertaal gebruikt en verwijst naar een vals geheugen, resulteert dit in een fout. Dit kan zelfs gebeuren wanneer u een functie van een ander contract aanroept, maar die functie bestaat niet. Dit soort fouten worden JUMP-fouten genoemd.
Dit waren enkele veelvoorkomende slimme contractfouten die ontwikkelaars tegenkomen; fouten kunnen soms moeilijk te detecteren en te begrijpen zijn. Om de fouten te vinden en te proberen ze op te lossen, gebruiken we verschillende tools. Laten we ze een voor een doornemen in de volgende sectie.
Vier handige hulpprogramma's voor foutopsporing
In deze sectie leren we over tools die veel worden gebruikt om bugs te identificeren en op te lossen door de meest ervaren ontwikkelaars wereldwijd. Laten we gaan.
bouwvakker
Deze tool wordt veel gebruikt en geaccepteerd voor het testen van slimme contracten op verschillende parameters. Het biedt een open-source ontwikkelomgeving voor Ethereum. Het bevat tools voor het ontwikkelen, testen en implementeren van slimme contracten. De ingebouwde debugger is nuttig voor veel ontwikkelaars over de hele wereld. Ook in de testfase speelt dit een grote rol.
Truffel
Dit is een populair ontwikkelraamwerk voor Ethereum. Net als hardhat bevat het tools voor het ontwikkelen, testen en implementeren van slimme contracten en heeft het ook gebouwd Truffel Debugger, wat ontwikkelaars helpt met een soepele ontwikkelervaring in de testfase.
Remix
Dit is degene die bijna elke ontwikkelaar tegenkwam toen ze voor het eerst aan hun reis in web3 begonnen. Dit is een online code-editor voor degelijkheid, dus er is geen offline installatie nodig om met ontwikkeling te beginnen. Dankzij de ingebouwde foutopsporingsfunctie kunnen ontwikkelaars de code scannen en variabele problemen inspecteren. En dit alles is online, geen behoefte aan offline tools.
Etherscan
Dit is een algemeen vertrouwde en populaire block explorer voor Ethereum. Hiermee kunnen ontwikkelaars slimme contracten die op de Ethereum-blockchain zijn geรฏmplementeerd, inspecteren en debuggen. Hiermee kunt u transacties en activiteiten van elk adres of contract volgen. Dit helpt u te identificeren waar het probleem zou zijn als uw slimme contract met problemen in de keten wordt geconfronteerd.
Conclusie
Het debuggen van slimme contracten is moeilijk en soms frustrerend, maar het is een cruciale fase met betrekking tot beveiliging en testen. Dit is waar kwetsbaarheden zich het meest waarschijnlijk aan hackers voordoen en ertoe kunnen leiden dat het protocol volledig faalt. Om uzelf voor dergelijke omstandigheden te behoeden, is het ten zeerste aan te raden om audits te doen.
QuillAudits zit al heel lang in deze branche en heeft een deskundig team dat elke mogelijke kwetsbaarheid aankan en u helpt uw โโprotocol te beveiligen. Lees de gedetailleerde blog over het testen, het belang ervan en de relatie met foutopsporing, die u zal helpen elk aspect te begrijpen https://blog.quillhash.com/2023/02/16/testing-and-formal-verification/. Bezoek onze website en laat uw project auditen!
12 keer bekeken
- Door SEO aangedreven content en PR-distributie. Word vandaag nog versterkt.
- Platoblockchain. Web3 Metaverse Intelligentie. Kennis versterkt. Toegang hier.
- Bron: https://blog.quillhash.com/2023/03/03/4-most-useful-smart-contract-debugging-tools/
- a
- Over
- Account
- over
- activiteit
- adres
- Na
- tegen
- Alles
- toestaat
- altijd
- bedragen
- en
- Nog een
- toepassingen
- rond
- verschijning
- bijeenkomst
- Aanvallen
- pogingen
- audits
- Balance
- baseren
- omdat
- BEST
- Blok
- blockchain
- blockchain-toepassingen
- Blog
- Bug
- bugs
- Gebouw
- bebouwd
- ingebouwd
- Bellen
- Dit betekent dat we onszelf en onze geliefden praktisch vergiftigen.
- oproepen
- kan niet
- dragen
- geval
- zeker
- uitdagend
- kans
- situatie
- code
- codering
- hoe
- Gemeen
- compleet
- computer
- voorwaarde
- contract
- contracten
- Kosten
- Kosten
- cruciaal
- Snijden
- cyclus
- transactie
- ingezet
- het inzetten
- gedetailleerd
- Ontwikkelaar
- ontwikkelaars
- het ontwikkelen van
- Ontwikkeling
- anders
- moeilijk
- gedurende
- elk
- editor
- Milieu
- fout
- fouten
- ethereum
- Ethereum blockchain
- Zelfs
- Alle
- EVM
- voorbeeld
- uitzondering
- uitvoeren
- uitvoering
- ervaring
- ervaren
- expert
- Verken
- ontdekkingsreiziger
- naar
- mislukt
- Storing
- Kenmerk
- honorarium
- VIND DE PLEK DIE PERFECT VOOR JOU IS
- Voornaam*
- Bepalen
- Naar voren
- Achtergrond
- oppompen van
- frustrerend
- functie
- functionaliteit
- GAS
- krijgen
- Go
- Goes
- gids
- Hackers
- handvat
- Behandeling
- gebeuren
- gebeurt
- Hard
- hard
- zwaar
- hulp
- nuttig
- helpt
- hier
- zeer
- HTTPS
- reusachtig
- Mensen
- identificeren
- het identificeren van
- belang
- in
- omvat
- ondoeltreffend
- invoer
- kwestie
- problemen
- IT
- zelf
- springen
- blijven
- achterblijvende
- taal
- leiden
- LEARN
- leren
- Verlof
- Laten we
- Waarschijnlijk
- grenzen
- lang
- lange tijd
- machine
- maken
- MERKEN
- veel
- middel
- Geheugen
- methode
- vermist
- fout
- geld
- meer
- meest
- Noodzaak
- volgende
- offline
- Aan de ketting
- EEN
- online.
- open source
- operatie
- Operations
- Overige
- parameter
- parameters
- fase
- plaatsen
- Plato
- Plato gegevensintelligentie
- PlatoData
- punt
- Populair
- mogelijk
- voorspellen
- presenteren
- voorkomen
- opbrengst
- programma
- project
- protocol
- biedt
- Quillhash
- Lees
- herhaling
- terugkerend
- Recursieve
- met betrekking tot
- regelmatig
- verwant
- relatie
- herhaald
- te vragen
- vereisen
- Voorwaarden
- Resources
- Resultaten
- Rol
- lopen
- dezelfde
- Bespaar
- aftasten
- sectie
- beveiligen
- veiligheid
- verzending
- slim
- slim contract
- Slimme contracten
- So
- Software
- software development
- stevigheid
- sommige
- stack
- Stadium
- gestart
- Still
- dergelijk
- Nemen
- team
- Testen
- De
- de wereld
- hun
- zich
- Door
- niet de tijd of
- keer
- naar
- ook
- tools
- tools
- spoor
- transactie
- Transacties
- overdracht
- transfers
- verontrustend
- vertrouwde
- types
- voor
- die ten grondslag liggen
- begrijpen
- begrip
- Onverwacht
- us
- .
- Gebruiker
- divers
- kwetsbaarheden
- kwetsbaarheid
- Web3
- Website
- Wat
- welke
- wijd
- wil
- binnen
- zonder
- wereld
- wereldwijd
- zou
- het schrijven van
- You
- Your
- jezelf
- zephyrnet