Čas branja: 4 min
Ta vodnik vam lahko pomaga najti tisto neprijetno napako, ki vas muči, in orodja za njihovo odpravo.
Odpravljanje napak je ključnega pomena za vsak cikel razvoja programske opreme; ljudje vedno delamo napake. Zato smo nepremagljivi; delamo napake in se iz njih učimo. Odpravljanje napak je postopek ugotavljanja, kje naša koda zaostaja, popravljanja tega in učenja o tej napaki, tako da se ne ponavlja.
Razvoj pametnih pogodb je ključnega pomena za gradnjo aplikacij blockchain. Toda kot pri katerem koli drugem ciklu razvoja programske opreme je lahko odpravljanje napak pri pametnih pogodbah včasih zahtevno, in ker imamo tu pogosto opravka z ogromno količino denarja, ne moremo ničesar prepustiti naključju. Biti moramo popolni pri pisanju pametnih pogodb in popolni pri odpravljanju napak. Zato smo pripravili ta blog, da se lahko o odpravljanju napak učite od najboljših.
Preden kar koli popravimo, moramo poznati težavo, zato začnimo z identifikacijo različnih vrst napak pri razvoju pametnih pogodb.
Pogoste napake
V tem razdelku bomo raziskali različne vrste napak, s katerimi se redno srečujejo razvijalci pametnih pogodb.
- Sintaksna napaka:– To napako je enostavno odpraviti. To se zgodi, ko razvijalec naredi napako v kodi, ki računalniku onemogoča razumevanje, na primer manjka podpičje.
- Logična napaka:- To vrsto napake je včasih težko najti. Ne prepreči izvajanja, vendar se spremeni funkcionalnost programa. Ta program se nepričakovano obnaša kot pametna pogodba, ki pri pošiljanju denarja z enega računa na drugega prenese denar na napačen naslov.
- Napaka med izvajanjem:- Te napake je težko predvideti. Pridejo ob nepričakovanem času in na nepričakovanih mestih. To se zgodi med izvajanjem pametnih pogodb in se zgodi zaradi neučinkovitega obravnavanja izjem. To se lahko na primer zgodi, ko pogodba ne obravnava nepričakovanih vnosov ali poskuša izvesti operacijo, ki jo prepoveduje osnovna veriga blokov. Na primer, pogodba poskuša prenesti več denarja od dovoljenega parametra.
- Napake, razveljavljene pri izvedbi:- To se zgodi, ko uporabnik poda kakršno koli nelegitimno zahtevo, ki je v nasprotju z logiko pametne pogodbe, nato pa je zahteva preklicana in razveljavljena. To se zgodi, ker včasih pametne pogodbe zahtevajo izpolnjevanje določenih zahtev za obdelavo transakcije. Kljub temu uporabnik nadaljuje s transakcijo, ne da bi izpolnil zahteve, nato pa transakcija ni prenesena naprej in razveljavljena. Na primer, uporabnik poskuša prenesti 100 USD, vendar ima stanje 50 USD.
- Stack Overflow:- Sredstva za izvajanje operacij stanejo pristojbino za plin. Težka kot je funkcija, višji so stroški. Nekateri težki mehanizmi pri kodiranju so zanke in
Rekurzivni klici<!– wp:paragraph –>Rekurzivni klic je pogoj, ki se lahko sklicuje sam nase in jih znova in znova prikliče v zanki. Rekurzivna funkcija uporablja osnovni primer (če) in indukcijski primer (drugo). Napadi ponovnega vstopa se izvajajo z izkoriščanjem rekurzivnih klicev v kodi. <br/><!– /wp:paragraph –>
” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>rekurzivni klici. Stack overflow je povezan s
Rekurzivni klici<!– wp:paragraph –>Rekurzivni klic je pogoj, ki se lahko sklicuje sam nase in jih znova in znova prikliče v zanki. Rekurzivna funkcija uporablja osnovni primer (če) in indukcijski primer (drugo). Napadi ponovnega vstopa se izvajajo z izkoriščanjem rekurzivnih klicev v kodi. <br/><!– /wp:paragraph –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>rekurzivni klici.
Rekurzivni klici<!– wp:paragraph –>Rekurzivni klic je pogoj, ki se lahko sklicuje sam nase in jih znova in znova prikliče v zanki. Rekurzivna funkcija uporablja osnovni primer (če) in indukcijski primer (drugo). Napadi ponovnega vstopa se izvajajo z izkoriščanjem rekurzivnih klicev v kodi. <br/><!– /wp:paragraph –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>Rekurzivni klici so metoda priklica funkcije znotraj iste funkcije z različnimi vhodi. lahko razmišlja o ponavljajoči se funkciji kot stroj za sok iz sladkornega trsa. Stroj se obnaša kot funkcija, sladkorni trs pa kot vhod. Vsak zagon sladkornega trsa iz stroja pomeni klic funkcije. Po enem času gre sladkorni trs spet pod stroj in ta postopek se ponavlja. To je tisto, kar je ponovitev. Ker pa želimo zmanjšati stroške plina in vire EVM, ethereum omejuje ponovni klic do 1024-krat. Ko funkcijo pokličete 1025-krat, pride do prelivanja sklada.
- Napaka JUMP:- Ko poskušate poklicati funkcijo, ki ne obstaja, ali uporabite zbirni jezik in kažete na lažni pomnilnik, pride do napake. To se lahko zgodi celo, ko pokličete funkcijo neke druge pogodbe, vendar ta funkcija ne obstaja. Te vrste napak se imenujejo JUMP napake.
To je bilo nekaj pogostih napak pri pametnih pogodbah, s katerimi se srečujejo razvijalci; napake je včasih težko odkriti in razumeti. Za iskanje napak in njihovo odpravo si pomagamo z različnimi orodji. Poglejmo jih enega za drugim v naslednjem razdelku.
Štiri uporabna orodja za odpravljanje napak
V tem razdelku bomo spoznali orodja, ki jih najbolj izkušeni razvijalci po vsem svetu pogosto uporabljajo za odkrivanje in odpravljanje napak. Pojdimo.
Trda kapa
To orodje se pogosto uporablja in je sprejeto za testiranje pametnih pogodb glede različnih parametrov. Zagotavlja odprtokodno razvojno okolje za Ethereum. Vključuje orodja za razvoj, testiranje in uvajanje pametnih pogodb. Njegov vgrajeni razhroščevalnik je v pomoč mnogim razvijalcem po vsem svetu. To igra pomembno vlogo tudi v fazi testiranja.
Tartuf
To je priljubljen razvojni okvir za Ethereum. Tako kot hardhat vključuje orodja za razvoj, testiranje in uvajanje pametnih pogodb, poleg tega pa ima tudi vgrajeno Truffle Debugger, ki razvijalcem pomaga pri nemoteni razvojni izkušnji v fazi testiranja.
Remix
To je tisto, s katerim se je srečal skoraj vsak razvijalec, ko je prvič začel svojo pot v web3. To je spletni urejevalnik kode za trdnost, zato za začetek razvoja ni potrebna namestitev brez povezave. Njegova vgrajena funkcija za odpravljanje napak razvijalcem omogoča skeniranje kode in pregledovanje spremenljivih težav. In vse to je na spletu, brez potrebe po orodjih brez povezave.
Etherscan
To je široko zaupanja vreden in priljubljen raziskovalec blokov za Ethereum. Razvijalcem omogoča pregled in odpravljanje napak v pametnih pogodbah, nameščenih v verigi blokov Ethereum. S tem lahko sledite transakcijam in dejavnosti katerega koli naslova ali pogodbe. To vam pomaga ugotoviti, kje bi bila težava, če se vaša pametna pogodba sooča s težavami v verigi.
zaključek
Odpravljanje napak v pametnih pogodbah je težko in včasih frustrirajoče, vendar je ključna faza, povezana z varnostjo in testiranjem. Tu se hekerjem najverjetneje pokažejo ranljivosti in lahko vodijo protokol do popolne okvare. Da bi se izognili takim okoliščinam, je zelo priporočljivo iti na revizije.
QuillAudits je v tej vertikali že dolgo časa in ima strokovno ekipo, ki se lahko spopade z vsako možno ranljivostjo in vam pomaga zaščititi vaš protokol. Glede testiranja, njegove pomembnosti in njegove povezave z odpravljanjem napak preberite podroben blog, ki vam bo pomagal razumeti vsak vidik https://blog.quillhash.com/2023/02/16/testing-and-formal-verification/. Obiščite našo spletno stran in zagotovite revizijo svojega projekta!
12 Ogledov
- Distribucija vsebine in PR s pomočjo SEO. Okrepite se še danes.
- Platoblockchain. Web3 Metaverse Intelligence. Razširjeno znanje. Dostopite tukaj.
- vir: https://blog.quillhash.com/2023/03/03/4-most-useful-smart-contract-debugging-tools/
- a
- O meni
- Račun
- čez
- dejavnost
- Naslov
- po
- proti
- vsi
- omogoča
- vedno
- znesek
- in
- Še ena
- aplikacije
- okoli
- vidik
- Skupščina
- Napadi
- Poskusi
- revizije
- Ravnovesje
- baza
- ker
- BEST
- Block
- blockchain
- blockchain aplikacije
- Blog
- Bug
- hrošči
- Building
- zgrajena
- vgrajeno
- klic
- se imenuje
- poziva
- ne more
- opravlja
- primeru
- nekatere
- izziv
- priložnost
- okoliščinah
- Koda
- Kodiranje
- kako
- Skupno
- dokončanje
- računalnik
- stanje
- Naročilo
- pogodbe
- strošek
- stroški
- ključnega pomena
- Cut
- cikel
- ponudba
- razporejeni
- uvajanja
- podrobno
- Razvojni
- Razvijalci
- razvoju
- Razvoj
- drugačen
- težko
- med
- vsak
- urednik
- okolje
- Napaka
- napake
- ethereum
- ethereum blockchain
- Tudi
- Tudi vsak
- EVM
- Primer
- izjema
- izvršitve
- izvedba
- izkušnje
- izkušen
- strokovnjak
- raziskuje
- raziskovalec
- s katerimi se sooča
- ne uspe
- Napaka
- Feature
- pristojbina
- Najdi
- prva
- fiksna
- Naprej
- Okvirni
- iz
- frustrirajoče
- funkcija
- funkcionalnost
- GAS
- dobili
- Go
- goes
- vodi
- hekerji
- ročaj
- Ravnanje
- se zgodi
- se zgodi
- Trdi
- močno
- težka
- pomoč
- pomoč
- Pomaga
- tukaj
- zelo
- HTTPS
- velika
- Ljudje
- identificirati
- identifikacijo
- Pomembnost
- in
- vključuje
- neučinkovit
- vhod
- vprašanje
- Vprašanja
- IT
- sam
- Potovanje
- skoči
- Vedite
- zaostajajo
- jezik
- vodi
- UČITE
- učenje
- pustite
- Lets
- Verjeten
- Meje
- Long
- dolgo časa
- stroj
- Znamka
- IZDELA
- več
- pomeni
- Spomin
- Metoda
- manjka
- napaka
- Denar
- več
- Najbolj
- Nimate
- Naslednja
- offline
- Na verigi
- ONE
- na spletu
- open source
- Delovanje
- operacije
- Ostalo
- parameter
- parametri
- popolna
- faza
- Mesta
- platon
- Platonova podatkovna inteligenca
- PlatoData
- Točka
- Popular
- mogoče
- napovedati
- predstaviti
- preprečiti
- izkupiček
- Postopek
- Učni načrt
- Projekt
- protokol
- zagotavlja
- Quillhash
- Preberi
- ponovitev
- ponavljajoče se
- Rekurzivno
- o
- redno
- povezane
- Razmerje
- ponovi
- zahteva
- zahteva
- Zahteve
- viri
- Rezultati
- vloga
- Run
- Enako
- Shrani
- skeniranje
- Oddelek
- zavarovanje
- varnost
- pošiljanja
- pametna
- pametna pogodba
- Pametne pogodbe
- So
- Software
- Razvoj programske opreme
- trdnost
- nekaj
- sveženj
- Stage
- začel
- Še vedno
- taka
- Bodite
- skupina
- Testiranje
- O
- svet
- njihove
- sami
- skozi
- čas
- krat
- do
- tudi
- orodje
- orodja
- sledenje
- transakcija
- Transakcije
- prenos
- transferji
- zaskrbljujoče
- zaupa
- Vrste
- pod
- osnovni
- razumeli
- razumevanje
- Nepričakovana
- us
- uporaba
- uporabnik
- različnih
- Ranljivosti
- ranljivost
- Web3
- Spletna stran
- Kaj
- ki
- pogosto
- bo
- v
- brez
- svet
- po vsem svetu
- bi
- pisanje
- Vi
- Vaša rutina za
- sami
- zefirnet