Lukeaika: 4 pöytäkirja
Tämä opas voi auttaa sinua löytämään sinua vaivaavan ikävän vian ja työkalut niiden korjaamiseen.
Virheenkorjaus on ratkaisevan tärkeää kaikissa ohjelmistokehitysjaksoissa; ihmiset tekevät aina virheitä. Siksi olemme lyömättömiä; teemme virheitä ja opimme niistä. Vianetsintä on prosessi, jossa selvitetään, missä koodimme viivästyy, korjataan se ja opitaan virheestä, jotta se ei toistu.
Älykäs sopimuskehitys on ratkaisevan tärkeää lohkoketjusovellusten rakentamisessa. Mutta kuten muissakin ohjelmistokehitysjaksoissa, älykkäiden sopimusten virheenkorjaus voi joskus olla haastavaa, ja koska meillä on usein tekemisissä valtava määrä rahaa, emme voi jättää mitään sattuman varaan. Meidän on oltava täydellisiä älykkäiden sopimusten kirjoittamisessa ja täydellisiä virheenkorjauksessa. Siksi olemme laatineet tämän blogin, jotta voit oppia virheenkorjauksesta parhailta.
Ennen kuin korjaamme mitään, meidän on tiedettävä ongelma, joten aloitetaan tunnistamalla erityyppiset viat älykkäiden sopimusten kehittämisessä.
Yleiset virheet
Tässä osiossa tutkimme erilaisia vikoja, joihin älykkäiden sopimusten kehittäjät törmäävät säännöllisesti.
- Syntaksivirhe:– Tämä virhe on helppo korjata. Näin tapahtuu, kun kehittäjä tekee koodivirheen, joka estää tietokonetta ymmärtämästä sitä, esimerkiksi puuttuu puolipiste.
- Looginen virhe:- Tämäntyyppisiä virheitä voi joskus olla vaikea löytää. Se ei estä suorittamista, mutta ohjelman toiminnallisuutta muutetaan. Tämä ohjelma käyttäytyy yllättäen kuin älykäs sopimus, joka siirtää rahaa väärään osoitteeseen, kun rahaa lähetetään tililtä toiselle.
- Runtime error:- Näitä virheitä on vaikea ennustaa. He tulevat odottamattomaan aikaan ja odottamattomissa paikoissa. Tämä tapahtuu älykkäiden sopimusten suorittamisen aikana ja johtuu tehottomasta poikkeuskäsittelystä. Tämä voi tapahtua esimerkiksi silloin, kun sopimus ei pysty käsittelemään odottamattomia syötteitä tai yrittää suorittaa toimintoa, jonka taustalla oleva lohkoketju kieltää. Esimerkiksi sopimus yrittää siirtää enemmän rahaa kuin sallittu parametri.
- Suorituksen palautuneet virheet:- Tämä tapahtuu, kun käyttäjä tekee minkä tahansa laittoman pyynnön, joka on vastoin älykkään sopimuksen logiikkaa, pyyntö peruutetaan ja palautetaan. Tämä tapahtuu, koska joskus älykkäät sopimukset edellyttävät tiettyjen vaatimusten täyttymistä tapahtuman käsittelemiseksi. Silti käyttäjä jatkaa tapahtumaa täyttämättä vaatimuksia, jolloin tapahtumaa ei siirretä eteenpäin eikä palauteta. Esimerkiksi käyttäjä yrittää siirtää 100 dollaria, mutta hänellä on 50 dollarin saldo.
- Pino ylivuoto:- Resurssit toiminnan toteuttamiseen maksavat kaasumaksun. Mitä painava toiminto, sitä korkeammat kustannukset. Jotkut koodauksen raskaat mekanismit ovat silmukat ja
Rekursiiviset puhelut<!– wp:paragraph –>Rekursiivinen kutsu on ehto, joka voi viitata itseensä ja kutsua niitä uudelleen ja uudelleen silmukassa. Rekursiivinen funktio käyttää peruskirjainta (if) ja induktiokirjainta (else). Re-entancy-hyökkäykset suoritetaan hyödyntämällä koodissa olevia rekursiivisia kutsuja. <br/><!– /wp:kohta –>
” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>rekursiiviset kutsut. Pinon ylivuoto liittyy
Rekursiiviset puhelut<!– wp:paragraph –>Rekursiivinen kutsu on ehto, joka voi viitata itseensä ja kutsua niitä uudelleen ja uudelleen silmukassa. Rekursiivinen funktio käyttää peruskirjainta (if) ja induktiokirjainta (else). Re-entancy-hyökkäykset suoritetaan hyödyntämällä koodissa olevia rekursiivisia kutsuja. <br/><!– /wp:kohta –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>rekursiiviset kutsut.
Rekursiiviset puhelut<!– wp:paragraph –>Rekursiivinen kutsu on ehto, joka voi viitata itseensä ja kutsua niitä uudelleen ja uudelleen silmukassa. Rekursiivinen funktio käyttää peruskirjainta (if) ja induktiokirjainta (else). Re-entancy-hyökkäykset suoritetaan hyödyntämällä koodissa olevia rekursiivisia kutsuja. <br/><!– /wp:kohta –>” data-gt-translate-attributes=”[{"attribute":"data-cmtooltip", "format":"html"}]”>Rekursiiviset kutsut ovat tapa kutsua funktio saman funktion sisällä eri tuloilla. voi ajatella toistuvaa toimintoa sokeriruo'omehukoneena. Kone toimii funktiona ja sokeriruoko syötteenä. Jokainen sokeriruo'on ajo koneesta tarkoittaa funktiokutsua. Kerran kuluttua sokeriruoko menee jälleen koneen alle, ja tämä prosessi toistuu. Tätä on toistuminen. Mutta koska haluamme leikata kaasukustannuksia ja EVM-resursseja, ethereum rajoittaa toistuvan puhelun jopa 1024 kertaa. Kun kutsut funktiota 1025. kerran, se johtaa pinon ylivuotoon.
- JUMP-virhe:- Kun yrität kutsua funktiota, jota ei ole olemassa, tai käyttää kokoonpanokieltä ja osoittaa väärään muistiin, tämä johtaa virheeseen. Tämä voi tapahtua jopa silloin, kun kutsut jonkin muun sopimuksen funktiota, mutta kyseistä funktiota ei ole olemassa. Tämän tyyppisiä virheitä kutsutaan JUMP-virheiksi.
Nämä olivat joitain yleisiä älykkäitä sopimusvirheitä, joita kehittäjät kohtaavat; virheitä voi joskus olla vaikea havaita ja ymmärtää. Virheiden löytämiseksi ja niiden korjaamiseksi käytämme erilaisia työkaluja. Käydään ne läpi yksitellen seuraavassa osiossa.
Neljä hyödyllistä virheenkorjaustyökalua
Tässä osiossa opimme työkaluista, joita kokeneimmat kehittäjät maailmanlaajuisesti käyttävät usein virheiden tunnistamiseen ja ratkaisemiseen. Mennään.
Suojakypärä
Tämä työkalu on laajalti käytetty ja hyväksytty älykkäiden sopimusten testaamiseen eri parametreilla. Se tarjoaa avoimen lähdekoodin kehitysympäristön Ethereumille. Se sisältää työkaluja älykkäiden sopimusten kehittämiseen, testaamiseen ja käyttöönottoon. Sen sisäänrakennettu debuggeri on hyödyllinen monille kehittäjille ympäri maailmaa. Tällä on iso rooli myös testausvaiheessa.
Tryffeli
Tämä on suosittu Ethereumin kehityskehys. Kuten hardhat, se sisältää työkaluja älykkäiden sopimusten kehittämiseen, testaamiseen ja käyttöönottoon, ja se on myös rakentanut Tryffeli Debuggeri, joka auttaa kehittäjiä saamaan sujuvan kehityskokemuksen testausvaiheessa.
Remix
Tämä on se, johon melkein jokainen kehittäjä törmäsi aloittaessaan matkansa web3:ssa. Tämä on online-koodieditori vakautta varten, joten offline-asennusta ei tarvita kehityksen aloittamiseksi. Sen sisäänrakennetun virheenkorjausominaisuuden avulla kehittäjät voivat skannata koodin ja tarkistaa muuttuviin ongelmiin. Ja kaikki tämä on verkossa ilman offline-työkaluja.
Etherscan
Tämä on laajalti luotettu ja suosittu Ethereumin lohkotutkija. Sen avulla kehittäjät voivat tarkastaa ja korjata Ethereum-lohkoketjussa käyttöön otettuja älykkäitä sopimuksia. Tämän avulla voit seurata minkä tahansa osoitteen tai sopimuksen tapahtumia ja toimintaa. Tämä auttaa sinua tunnistamaan, missä ongelma olisi, jos älykkäässä sopimuksessasi on ketjun ongelmia.
Yhteenveto
Älykkäiden sopimusten virheenkorjaus on vaikeaa ja joskus turhauttavaa, mutta se on tärkeä vaihe turvallisuuteen ja testaukseen liittyen. Täällä haavoittuvuudet tulevat todennäköisimmin hakkereille ja voivat johtaa protokollan täydelliseen epäonnistumiseen. Säästyäksesi tällaisilta tilanteilta on erittäin suositeltavaa käydä auditoinneissa.
QuillAudits on toiminut tällä alalla pitkään, ja sillä on asiantuntijatiimi, joka voi käsitellä kaikki mahdolliset haavoittuvuudet ja auttaa sinua suojaamaan protokollasi. Mitä tulee testaukseen, sen tärkeyteen ja sen suhteeseen virheenkorjaukseen, lue yksityiskohtainen blogi, joka auttaa sinua ymmärtämään kaikkia näkökohtia https://blog.quillhash.com/2023/02/16/testing-and-formal-verification/. Vieraile verkkosivuillamme ja auditoi hankkeesi!
12 Näyttökerrat
- SEO-pohjainen sisällön ja PR-jakelu. Vahvista jo tänään.
- Platoblockchain. Web3 Metaverse Intelligence. Tietoa laajennettu. Pääsy tästä.
- Lähde: https://blog.quillhash.com/2023/03/03/4-most-useful-smart-contract-debugging-tools/
- a
- Meistä
- Tili
- poikki
- toiminta
- osoite
- Jälkeen
- vastaan
- Kaikki
- mahdollistaa
- aina
- määrä
- ja
- Toinen
- sovellukset
- noin
- ulkomuoto
- Kokoonpano
- Hyökkäykset
- yrityksiä
- tarkastukset
- Balance
- pohja
- koska
- PARAS
- Tukkia
- blockchain
- blockchain-sovellukset
- Blogi
- Vika
- Bugs
- Rakentaminen
- rakennettu
- sisäänrakennettu
- soittaa
- nimeltään
- Puhelut
- ei voi
- kuljettaa
- tapaus
- tietty
- haastava
- mahdollisuus
- olosuhteet
- koodi
- Koodaus
- Tulla
- Yhteinen
- täydellinen
- tietokone
- ehto
- sopimus
- sopimukset
- Hinta
- kustannukset
- ratkaiseva
- Leikkaus
- sykli
- sopimus
- käyttöön
- levityspinnalta
- yksityiskohtainen
- Kehittäjä
- kehittäjille
- kehittämällä
- Kehitys
- eri
- vaikea
- aikana
- kukin
- toimittaja
- ympäristö
- virhe
- virheet
- ethereum
- Ethereum blockchain
- Jopa
- Joka
- EVM
- esimerkki
- poikkeus
- täytäntöönpanosta
- teloitus
- experience
- kokenut
- asiantuntija
- tutkia
- tutkimusmatkailija
- päin
- epäonnistuu
- Epäonnistuminen
- Ominaisuus
- maksu
- Löytää
- Etunimi
- Korjata
- Eteenpäin
- Puitteet
- alkaen
- turhauttava
- toiminto
- toiminnallisuus
- GAS
- saada
- Go
- Goes
- ohjaavat
- hakkerit
- kahva
- Käsittely
- tapahtua
- tapahtuu
- Kova
- raskaasti
- raskas
- auttaa
- hyödyllinen
- auttaa
- tätä
- erittäin
- HTTPS
- valtava
- Ihmiset
- tunnistaa
- tunnistaminen
- merkitys
- in
- sisältää
- tehoton
- panos
- kysymys
- kysymykset
- IT
- itse
- matka
- hypätä
- Tietää
- jääneillä
- Kieli
- johtaa
- OPPIA
- oppiminen
- jättää
- Lets
- Todennäköisesti
- rajat
- Pitkät
- pitkä aika
- kone
- tehdä
- TEE
- monet
- välineet
- Muisti
- menetelmä
- puuttuva
- virhe
- raha
- lisää
- eniten
- Tarve
- seuraava
- offline
- Ketjussa
- ONE
- verkossa
- avoimen lähdekoodin
- toiminta
- Operations
- Muut
- parametri
- parametrit
- täydellinen
- vaihe
- paikat
- Platon
- Platonin tietotieto
- PlatonData
- Kohta
- Suosittu
- mahdollinen
- ennustaa
- esittää
- estää
- tuotto
- prosessi
- ohjelma
- projekti
- protokolla
- tarjoaa
- Quillhash
- Lue
- toistuminen
- toistuva
- Rekursiivinen
- suhteen
- säännöllisesti
- liittyvä
- suhde
- toistuva
- pyyntö
- edellyttää
- vaatimukset
- Esittelymateriaalit
- tulokset
- Rooli
- ajaa
- sama
- Säästä
- skannata
- Osa
- turvallinen
- turvallisuus
- lähettäminen
- fiksu
- älykäs sopimus
- Smart-sopimukset
- So
- Tuotteemme
- ohjelmistokehitys
- kiinteys
- jonkin verran
- pino
- Vaihe
- alkoi
- Yhä
- niin
- ottaa
- joukkue-
- Testaus
- -
- maailma
- heidän
- itse
- Kautta
- aika
- kertaa
- että
- liian
- työkalu
- työkalut
- raita
- kauppa
- Liiketoimet
- siirtää
- siirrot
- huolestuttavaa
- luotettu
- tyypit
- varten
- taustalla oleva
- ymmärtää
- ymmärtäminen
- Odottamaton
- us
- käyttää
- käyttäjä
- eri
- haavoittuvuuksia
- alttius
- Web3
- Verkkosivu
- Mitä
- joka
- laajalti
- tulee
- sisällä
- ilman
- maailman-
- maailmanlaajuisesti
- olisi
- kirjoittaminen
- Voit
- Sinun
- itse
- zephyrnet