Timp de citit: 4 minute
Acest ghid vă poate ajuta să găsiți acea eroare urâtă care vă deranjează și instrumentele pentru a le remedia.
Depanarea este crucială pentru orice ciclu de dezvoltare software; oamenii fac mereu erori. De aceea suntem de neînvins; facem erori și învățăm din ele. Depanarea este un proces de a afla unde întârzie codul nostru, de a remedia și de a afla despre acea eroare, astfel încât să nu se repete.
Dezvoltarea inteligentă a contractelor este crucială pentru construirea de aplicații blockchain. Dar, ca și în cazul oricărui alt ciclu de dezvoltare de software, depanarea contractelor inteligente poate fi uneori o provocare și, deoarece aici avem de-a face adesea cu o sumă uriașă de bani, nu putem lăsa nimic la voia întâmplării. Trebuie să fim perfecți la scrierea de contracte inteligente și perfecți la depanare. De aceea, am creat acest blog, astfel încât să puteți învăța despre depanare de la cei mai buni.
Înainte de a remedia orice, trebuie să cunoaștem problema, așa că să începem cu identificarea diferitelor tipuri de erori în dezvoltarea unui contract inteligent.
Erori comune
În această secțiune, vom explora diferite tipuri de erori pe care dezvoltatorii de contracte inteligente le întâlnesc în mod regulat.
- Eroare de sintaxă:– Această eroare este una ușor de remediat. Acest lucru se întâmplă atunci când un dezvoltator face o greșeală de cod care împiedică computerul să o înțeleagă, cum ar fi lipsa punctului și virgulă.
- Eroare logică:- Acest tip de eroare poate fi uneori greu de găsit. Nu împiedică execuția, dar funcționalitatea programului este alterată. Acest program se comportă în mod neașteptat ca un contract inteligent care transferă bani la adresa incorectă atunci când trimite bani dintr-un cont în altul.
- Eroare de execuție:- Aceste erori sunt greu de prezis. Ele vin într-un moment neașteptat și în locuri neașteptate. Acest lucru are loc în timpul executării contractelor inteligente și se întâmplă din cauza gestionării ineficiente a excepțiilor. De exemplu, acest lucru poate apărea atunci când un contract nu reușește să gestioneze intrări neașteptate sau încercări de a efectua o operațiune interzisă de blockchain-ul subiacent. De exemplu, un contract încearcă să transfere mai mulți bani decât parametrul permis.
- Erori de execuție anulată:- Acest lucru se întâmplă atunci când utilizatorul face orice solicitare nelegitimă care este împotriva logicii contractului inteligent, apoi cererea este anulată și anulată. Acest lucru se întâmplă deoarece uneori contractele inteligente necesită îndeplinirea anumitor cerințe pentru a procesa tranzacția. Cu toate acestea, utilizatorul continuă cu tranzacția fără a îndeplini cerințele, iar apoi tranzacția nu este reportată și revenită. De exemplu, un utilizator încearcă să transfere 100 USD, dar are un sold de 50 USD.
- Depășirea stivei:- Resursele pentru executarea operatiunilor costa o taxa de gaz. Cu cât funcția este grea, cu atât costul este mai mare. Unele dintre mecanismele grele în codificare sunt bucle și
Apeluri recursive<!– wp:paragraph –>Apelul recursiv este o condiție care se poate referi la ea însăși și le poate reapela din nou și din nou într-o buclă. Funcția recursivă folosește cazul de bază (dacă) și cazul de inducție (altfel). Atacurile de reintrare sunt efectuate prin exploatarea apelurilor recursive din cod. <br/><!– /wp:paragraf –>
” data-gt-translate-attributes="[{"attribute":"data-cmtooltip", "format":"html"}]”>apeluri recursive. Debordarea stivei are de-a face cu
Apeluri recursive<!– wp:paragraph –>Apelul recursiv este o condiție care se poate referi la ea însăși și le poate reapela din nou și din nou într-o buclă. Funcția recursivă folosește cazul de bază (dacă) și cazul de inducție (altfel). Atacurile de reintrare sunt efectuate prin exploatarea apelurilor recursive din cod. <br/><!– /wp:paragraf –>” data-gt-translate-attributes="[{"attribute":"data-cmtooltip", "format":"html"}]”>apeluri recursive.
Apeluri recursive<!– wp:paragraph –>Apelul recursiv este o condiție care se poate referi la ea însăși și le poate reapela din nou și din nou într-o buclă. Funcția recursivă folosește cazul de bază (dacă) și cazul de inducție (altfel). Atacurile de reintrare sunt efectuate prin exploatarea apelurilor recursive din cod. <br/><!– /wp:paragraf –>” data-gt-translate-attributes="[{"attribute":"data-cmtooltip", "format":"html"}]”>Apelurile recursive sunt o metodă de a invoca o funcție în cadrul aceleiași funcții cu intrări diferite. se poate gândi la o funcție recurentă ca mașina de suc de trestie de zahăr. Mașina se comportă ca o funcție, iar trestia de zahăr ca intrare. Fiecare rulare de trestie de zahăr de la mașină înseamnă un apel de funcție. După un timp, trestia de zahăr intră din nou sub aparat și acest proces se repetă. Aceasta este recurența. Dar, deoarece dorim să reducem costurile cu gazul și resursele EVM, Ethereum limitează apelurile recurente de până la 1024 de ori. Când apelați o funcție a 1025-a oară, rezultă o depășire a stivei.
- Eroare JUMP:- Când încercați să apelați o funcție care nu există sau folosiți limbajul de asamblare și indicați o memorie falsă, aceasta duce la o eroare. Acest lucru se poate întâmpla chiar și atunci când apelați o funcție a unui alt contract, dar acea funcție nu există. Aceste tipuri de erori se numesc erori JUMP.
Acestea au fost câteva erori comune de contracte inteligente pe care le întâlnesc dezvoltatorii; erorile pot fi uneori greu de detectat și de înțeles. Pentru a găsi erorile și a încerca să le remediam, luăm ajutorul diferitelor instrumente. Să le parcurgem unul câte unul în secțiunea următoare.
Patru instrumente utile de depanare
În această secțiune, vom afla despre instrumentele utilizate intens pentru a identifica și rezolva erori de către cei mai experimentați dezvoltatori din întreaga lume. Să mergem.
Palarie tare
Acest instrument este utilizat pe scară largă și acceptat pentru testarea contractelor inteligente pe diverși parametri. Oferă un mediu de dezvoltare open-source pentru Ethereum. Include instrumente pentru dezvoltarea, testarea și implementarea contractelor inteligente. Depanatorul său încorporat este util pentru mulți dezvoltatori din întreaga lume. Acest lucru joacă un rol important și în faza de testare.
trufă
Acesta este un cadru de dezvoltare popular pentru Ethereum. La fel ca și cască, include instrumente pentru dezvoltarea, testarea și implementarea contractelor inteligente și, de asemenea, a construit Truffle Debugger, care ajută dezvoltatorii cu o experiență de dezvoltare fără probleme în etapa de testare.
Remix
Acesta este cel pe care aproape toți dezvoltatorii l-au întâlnit când și-au început călătoria în web3. Acesta este un editor de cod online pentru soliditate, deci nu este necesară nicio instalare offline pentru a începe dezvoltarea. Caracteristica sa de depanare încorporată permite dezvoltatorilor să scaneze codul și să inspecteze problemele variabile. Și toate acestea sunt online, fără a fi nevoie de instrumente offline.
Etherscan
Acesta este un explorator de blocuri de încredere și popular pentru Ethereum. Le permite dezvoltatorilor să inspecteze și să depaneze contractele inteligente implementate pe blockchain-ul Ethereum. Folosind aceasta, puteți urmări tranzacțiile și activitatea oricărei adrese sau contract. Acest lucru vă ajută să identificați unde ar fi problema dacă contractul dvs. inteligent se confruntă cu probleme în lanț.
Concluzie
Depanarea contractelor inteligente este dificilă și uneori frustrantă, dar este o etapă crucială legată de securitate și testare. Aici este cel mai probabil ca vulnerabilitățile să se prezinte hackerilor și pot duce protocolul la eșec complet. Pentru a vă salva de astfel de circumstanțe, este foarte recomandat să mergeți la audituri.
QuillAudits se află în această verticală de mult timp și are o echipă de experți care poate gestiona orice vulnerabilitate posibilă și vă poate ajuta să vă asigurați protocolul. În ceea ce privește testarea, importanța acesteia și relația cu depanarea, citiți blogul detaliat, care vă va ajuta să înțelegeți fiecare aspect https://blog.quillhash.com/2023/02/16/testing-and-formal-verification/. Vizitați site-ul nostru și auditați-vă proiectul!
12 Vizualizări
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- Platoblockchain. Web3 Metaverse Intelligence. Cunoștințe amplificate. Accesați Aici.
- Sursa: https://blog.quillhash.com/2023/03/03/4-most-useful-smart-contract-debugging-tools/
- a
- Despre Noi
- Cont
- peste
- activitate
- adresa
- După
- împotriva
- TOATE
- permite
- mereu
- sumă
- și
- O alta
- aplicatii
- în jurul
- aspect
- Asamblare
- Atacuri
- Încercările
- audituri
- Sold
- de bază
- deoarece
- CEL MAI BUN
- Bloca
- blockchain
- aplicații blockchain
- Blog
- Bug
- gandaci
- Clădire
- construit
- construit-in
- apel
- denumit
- apeluri
- nu poti
- transporta
- caz
- sigur
- provocare
- șansă
- împrejurări
- cod
- Codificare
- cum
- Comun
- Completă
- calculator
- condiție
- contract
- contracte
- A costat
- Cheltuieli
- crucial
- Tăiat
- ciclu
- afacere
- dislocate
- Implementarea
- detaliat
- Dezvoltator
- Dezvoltatorii
- în curs de dezvoltare
- Dezvoltare
- diferit
- dificil
- în timpul
- fiecare
- editor
- Mediu inconjurator
- eroare
- Erori
- ethereum
- Etanșul blocului
- Chiar
- Fiecare
- EVM
- exemplu
- excepție
- executând
- execuție
- experienţă
- cu experienţă
- expert
- explora
- explorator
- cu care se confruntă
- eșuează
- Eșec
- Caracteristică
- taxă
- Găsi
- First
- Repara
- Înainte
- Cadru
- din
- frustrant
- funcţie
- funcționalitate
- GAS
- obține
- Go
- Merge
- ghida
- hackeri
- manipula
- Manipularea
- întâmpla
- se întâmplă
- Greu
- puternic
- greu
- ajutor
- util
- ajută
- aici
- extrem de
- HTTPS
- mare
- Oamenii
- identifica
- identificarea
- importanță
- in
- include
- ineficace
- intrare
- problema
- probleme de
- IT
- în sine
- călătorie
- a sari
- Cunoaște
- rămâne în urmă
- limbă
- conduce
- AFLAȚI
- învăţare
- Părăsi
- Permite
- Probabil
- Limitele
- Lung
- perioadă lungă de timp
- maşină
- face
- FACE
- multe
- mijloace
- Memorie
- metodă
- dispărut
- greşeală
- bani
- mai mult
- cele mai multe
- Nevoie
- următor
- Offline
- În lanț
- ONE
- on-line
- open-source
- operaţie
- Operațiuni
- Altele
- parametru
- parametrii
- Perfect
- fază
- Locuri
- Plato
- Informații despre date Platon
- PlatoData
- Punct
- Popular
- posibil
- prezice
- prezenta
- împiedica
- venituri
- proces
- programă
- proiect
- protocol
- furnizează
- Quillhash
- Citeste
- recurență
- recurente
- recursive
- cu privire la
- regulat
- legate de
- relație
- repetat
- solicita
- necesita
- Cerinţe
- Resurse
- REZULTATE
- Rol
- Alerga
- acelaşi
- Economisiți
- scanare
- Secțiune
- sigur
- securitate
- trimitere
- inteligent
- contract inteligent
- Contracte inteligente
- So
- Software
- de dezvoltare de software
- soliditate
- unele
- stivui
- Etapă
- început
- Încă
- astfel de
- Lua
- echipă
- Testarea
- lumea
- lor
- se
- Prin
- timp
- ori
- la
- de asemenea
- instrument
- Unelte
- urmări
- tranzacție
- Tranzacții
- transfer
- Transferuri
- frământă
- de încredere
- Tipuri
- în
- care stau la baza
- înţelege
- înţelegere
- Neașteptat
- us
- utilizare
- Utilizator
- diverse
- Vulnerabilitățile
- vulnerabilitate
- Web3
- website
- Ce
- care
- pe larg
- voi
- în
- fără
- lume
- la nivel internațional.
- ar
- scris
- Tu
- Ta
- te
- zephyrnet