Lugemise aeg: 4 protokoll
See juhend aitab teil leida selle ebameeldiva vea, mis teid häirib, ja tööriistu nende parandamiseks.
Silumine on iga tarkvara arendustsükli jaoks ülioluline; inimesed teevad alati vigu. Sellepärast oleme võitmatud; teeme vigu ja õpime neist. Silumine on protsess, mille käigus selgitatakse välja, kus meie kood hilineb, parandatakse see ja õpitakse sellest veast teada, et see ei korduks.
Nutikas lepingute arendamine on plokiahela rakenduste loomisel ülioluline. Kuid nagu iga teise tarkvaraarenduse tsükli puhul, võib nutikate lepingute silumine mõnikord olla keeruline ja kuna siin on sageli tegemist tohutute rahasummadega, ei saa me jätta midagi juhuse hooleks. Peame olema täiuslikud nutikate lepingute kirjutamisel ja täiuslikud silumisel. Seetõttu oleme koostanud selle ajaveebi, et saaksite silumise kohta õppida parimatelt.
Enne millegi parandamist peame probleemi teadma, nii et alustame nutikate lepingute arenduses erinevat tüüpi vigade tuvastamisega.
Levinud vead
Selles jaotises uurime erinevaid vigu, millega nutikate lepingute arendajad regulaarselt kokku puutuvad.
- Süntaksiviga:– Seda viga on lihtne parandada. See juhtub siis, kui arendaja teeb koodivea, mis ei lase arvutil sellest aru saada (nt semikoolon).
- Loogiline viga:- Seda tüüpi vigu võib mõnikord olla raske leida. See ei takista täitmist, kuid programmi funktsionaalsust muudetakse. See programm käitub ootamatult nagu nutikas leping, mis kannab raha ühelt kontolt teisele saatmisel valele aadressile.
- Käitusaja viga:- Neid vigu on raske ennustada. Nad tulevad ootamatul ajal ja ootamatutes kohtades. See juhtub nutikate lepingute täitmise ajal ja ebatõhusa erandite käsitlemise tõttu. Näiteks võib see juhtuda siis, kui leping ei suuda käsitleda ootamatuid sisestusi või üritab läbi viia toimingut, mis on aluseks oleva plokiahelaga keelatud. Näiteks üritatakse lepinguga üle kanda rohkem raha kui lubatud parameeter.
- Täitmise taastatud vead:- See juhtub siis, kui kasutaja esitab mis tahes ebaseadusliku taotluse, mis on vastuolus nutika lepingu loogikaga, siis päring tühistatakse ja tühistatakse. See juhtub seetõttu, et mõnikord nõuavad nutikad lepingud tehingu töötlemiseks teatud nõuete täitmist. Sellegipoolest jätkab kasutaja tehingut nõudeid täitmata ning seejärel tehingut edasi ei viida ega tagasi pöörata. Näiteks üritab kasutaja üle kanda 100 dollarit, kuid tema saldo on 50 dollarit.
- ületäitumine:- Ressursid toimingute tegemiseks maksavad gaasitasu. Mida raske on funktsioon, seda suurem on selle maksumus. Mõned kodeerimise rasked mehhanismid on silmused ja
Rekursiivsed kõned<!– wp:paragraph –>Rekursiivne kõne on tingimus, mis võib iseendale viidata ja neid tsüklina ikka ja jälle uuesti kutsuda. Rekursiivne funktsioon kasutab põhitähti (if) ja induktsiooni (muu). Taassisenemise rünnakud viiakse läbi koodis rekursiivsete kõnede abil. <br/><!– /wp:lõik –>
” data-gt-translate-attributes=”[{"atribuut":"data-cmtooltip", "format":"html"}]”>rekursiivsed kõned. Virna ülevool on seotud
Rekursiivsed kõned<!– wp:paragraph –>Rekursiivne kõne on tingimus, mis võib iseendale viidata ja neid tsüklina ikka ja jälle uuesti kutsuda. Rekursiivne funktsioon kasutab põhitähti (if) ja induktsiooni (muu). Taassisenemise rünnakud viiakse läbi koodis rekursiivsete kõnede abil. <br/><!– /wp:lõik –>” data-gt-translate-attributes=”[{"atribuut":"data-cmtooltip", "format":"html"}]”>rekursiivsed kõned.
Rekursiivsed kõned<!– wp:paragraph –>Rekursiivne kõne on tingimus, mis võib iseendale viidata ja neid tsüklina ikka ja jälle uuesti kutsuda. Rekursiivne funktsioon kasutab põhitähti (if) ja induktsiooni (muu). Taassisenemise rünnakud viiakse läbi koodis rekursiivsete kõnede abil. <br/><!– /wp:lõik –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>Rekursiivsed väljakutsed on meetod funktsiooni kutsumiseks sama funktsiooni sees erinevate sisenditega. võib mõelda korduvale funktsioonile kui suhkruroomahla masinale. Masin käitub funktsioonina ja suhkruroog sisendina. Iga suhkruroo jooksmine masinast tähendab funktsioonikutset. Ühe korra pärast läheb suhkruroog uuesti masina alla ja see protsess kordub. See on kordumine. Kuid kuna tahame vähendada gaasikulusid ja EVM-i ressursse, piirab ethereum korduvat kõnet kuni 1024 korda. Kui kutsute funktsiooni 1025. korda, põhjustab see viru ületäitumise.
- JUMP viga:- Kui proovite kutsuda funktsiooni, mida pole olemas, või kasutate koostekeelt ja osutate valemälule, põhjustab see tõrke. See võib juhtuda isegi siis, kui helistate mõne muu lepingu funktsioonile, kuid seda funktsiooni pole olemas. Seda tüüpi vigu nimetatakse JUMP-tõrgeteks.
Need olid mõned tavalised nutika lepingu vead, millega arendajad kokku puutuvad; vigu võib mõnikord olla raske avastada ja mõista. Vigade leidmiseks ja parandamiseks võtame appi erinevad tööriistad. Vaatame need järgmises osas ükshaaval läbi.
Neli kasulikku silumistööriista
Selles jaotises õpime tundma tööriistu, mida kõige kogenumad arendajad kogu maailmas vigade tuvastamiseks ja lahendamiseks laialdaselt kasutavad. Lähme.
Kiiver
Seda tööriista kasutatakse laialdaselt ja aktsepteeritakse nutikate lepingute testimiseks erinevate parameetritega. See pakub Ethereumi jaoks avatud lähtekoodiga arenduskeskkonda. See sisaldab tööriistu arukate lepingute arendamiseks, testimiseks ja juurutamiseks. Selle sisseehitatud silur on abiks paljudele arendajatele üle maailma. See mängib suurt rolli ka testimise etapis.
Truffle
See on Ethereumi populaarne arendusraamistik. Sarnaselt hardhatiga sisaldab see tööriistu nutikate lepingute arendamiseks, testimiseks ja juurutamiseks ning on ka loonud Trühvli siluja, mis aitab arendajatel testimisetapis sujuva arenduskogemusega.
Remix
See on see, millega peaaegu iga arendaja web3-s oma teekonda alustades kokku puutus. See on võrgupõhine koodiredaktor kindluse tagamiseks, seega pole arenduse alustamiseks vaja võrguühenduseta installimist. Selle sisseehitatud silumisfunktsioon võimaldab arendajatel skannida koodi ja kontrollida muutuvaid probleeme. Ja kõik see on võrgus, ilma võrguühenduseta tööriistu vajamata.
Eetersaan
See on Ethereumi laialdaselt usaldusväärne ja populaarne plokkide uurija. See võimaldab arendajatel kontrollida ja siluda nutikaid lepinguid, mis on juurutatud Ethereumi plokiahelas. Selle abil saate jälgida mis tahes aadressi või lepingu tehinguid ja tegevusi. See aitab teil tuvastada, kus oleks probleem, kui teie nutikas lepingus on probleeme ahelas.
Järeldus
Nutikate lepingute silumine on keeruline ja mõnikord masendav, kuid see on turvalisuse ja testimisega seotud oluline etapp. See on koht, kus haavatavused häkkeritele kõige tõenäolisemalt esitlevad ja võivad viia protokolli täieliku ebaõnnestumiseni. Et end sellistest olukordadest säästa, on tungivalt soovitatav minna auditile.
QuillAudits on selles vertikaalis olnud pikka aega ja sellel on ekspertide meeskond, kes saab hakkama kõigi võimalike haavatavustega ja aitab teil oma protokolli kaitsta. Seoses testimise, selle tähtsuse ja seoste otsimisega lugege üksikasjalikku ajaveebi, mis aitab teil mõista kõiki aspekte https://blog.quillhash.com/2023/02/16/testing-and-formal-verification/. Külastage meie veebisaiti ja kontrollige oma projekti!
12 views
- SEO-põhise sisu ja PR-levi. Võimenduge juba täna.
- Platoblockchain. Web3 metaversiooni intelligentsus. Täiustatud teadmised. Juurdepääs siia.
- Allikas: https://blog.quillhash.com/2023/03/03/4-most-useful-smart-contract-debugging-tools/
- a
- MEIST
- konto
- üle
- tegevus
- aadress
- pärast
- vastu
- Materjal: BPA ja flataatide vaba plastik
- võimaldab
- alati
- summa
- ja
- Teine
- rakendused
- ümber
- aspekt
- Kokkupanek
- Reageerib
- Katsed
- auditid
- Saldo
- baas
- sest
- BEST
- Blokeerima
- blockchain
- plokiahela rakendused
- Blogi
- Bug
- vead
- Ehitus
- ehitatud
- sisseehitatud
- helistama
- kutsutud
- Kutsub
- ei saa
- viima
- juhul
- kindel
- raske
- võimalus
- asjaolusid
- kood
- Kodeerimine
- Tulema
- ühine
- täitma
- arvuti
- seisund
- leping
- lepingud
- Maksma
- kulud
- otsustav
- lõigatud
- tsükkel
- tegelema
- lähetatud
- juurutamine
- üksikasjalik
- arendaja
- Arendajad
- arenev
- & Tarkvaraarendus
- erinev
- raske
- ajal
- iga
- toimetaja
- keskkond
- viga
- vead
- ethereum
- Ethereumi plokiahel
- Isegi
- Iga
- EVM
- näide
- erand
- hukkamine
- täitmine
- kogemus
- kogenud
- ekspert
- uurima
- uurija
- ees
- ei
- ebaedu
- tunnusjoon
- tasu
- leidma
- esimene
- Määrama
- edasi
- Raamistik
- Alates
- masendav
- funktsioon
- funktsionaalsus
- GAS
- saama
- Go
- Goes
- suunata
- häkkerid
- käepide
- Käsitsemine
- juhtuda
- juhtub
- Raske
- tugevalt
- raske
- aitama
- kasulik
- aitab
- siin
- kõrgelt
- HTTPS
- tohutu
- Inimestel
- identifitseerima
- identifitseerimiseks
- tähtsus
- in
- hõlmab
- ebaefektiivne
- sisend
- probleem
- küsimustes
- IT
- ise
- teekond
- hüppama
- Teadma
- mahajäänud
- keel
- viima
- Õppida
- õppimine
- Lahkuma
- Lets
- Tõenäoliselt
- piirid
- Pikk
- kaua aega
- masin
- tegema
- TEEB
- palju
- vahendid
- Mälu
- meetod
- puuduvad
- viga
- raha
- rohkem
- kõige
- Vajadus
- järgmine
- offline
- Ahelas
- ONE
- Internetis
- avatud lähtekoodiga
- töö
- Operations
- Muu
- parameeter
- parameetrid
- täiuslik
- faas
- Kohad
- Platon
- Platoni andmete intelligentsus
- PlatoData
- Punkt
- populaarne
- võimalik
- ennustada
- esitada
- vältida
- tulu
- protsess
- õppekava
- projekt
- protokoll
- annab
- Quillhash
- Lugenud
- kordumine
- korduv
- Korduv
- kohta
- regulaarselt
- seotud
- seos
- korduv
- taotleda
- nõudma
- Nõuded
- Vahendid
- Tulemused
- Roll
- jooks
- sama
- Säästa
- skaneerida
- Osa
- kindlustama
- turvalisus
- saatmine
- nutikas
- arukas leping
- Tarkvaralepingud
- So
- tarkvara
- tarkvaraarenduse
- kindlus
- mõned
- Kestab
- Stage
- alustatud
- Veel
- selline
- Võtma
- meeskond
- Testimine
- .
- maailm
- oma
- ennast
- Läbi
- aeg
- korda
- et
- liiga
- tööriist
- töövahendid
- jälgida
- tehing
- Tehingud
- üle
- ülekandeid
- häiriv
- Usaldatud
- liigid
- all
- aluseks
- mõistma
- mõistmine
- Ootamatu
- us
- kasutama
- Kasutaja
- eri
- Haavatavused
- haavatavus
- Web3
- veebisait
- M
- mis
- laialdaselt
- will
- jooksul
- ilma
- maailm
- ülemaailmne
- oleks
- kirjutamine
- sa
- Sinu
- ise
- sephyrnet