Probleemi kärgi

Sa oled koodis süüdimõistetud, sest nutileping õõnestab võrk, kui see tuleb elusasse kasti. Sisevoog on tunduvalt ohtlik, kui eksimusi ei tabata enne, kui plokiahel tõmbab pingeriistad. Siin on see, mida me kõik vajame: kindel, puhas test.

Keskkond: eristatav testnet või lokaalne süst

Alustuseks: ära viska oma leping otse Mainneti. Vaata ethereumkihlveod.com – seal on tõmbed, mis räägivad, miks testnet on värikas. Geth või Hardhat, vali oma relv. Kummaski juhus, vaid üks reegel: see peab töötama üksi, ilma sõltuvusteta. Kui sinu testnode vibud hüppab, siis oled läinud paremal teel.

Koodikvaliteedi kontroll

Kood, mis on kirjutatud kiirelt, võib näida puhas, kuid sisemine vaenlane on peidus iga rea lõpus. Kasuta static analysis: Slither, MythX või Oyente. Ühe sõna haamurist: slither tekitab hoiatusi, millest sinu IDE-s lendab kolmereadised pilved. Lühike märk: kui hoiatus on rohkem kui kolm, peata ja paranda kohe.

Unit testide koostamine

Testid on sinu armee fronti. Truffle, Hardhat, Foundry – kumbki annab sujuva testide käivituse. Kirjuta testid iga funktsiooni kohta, isegi need, mis tunduvad triviaalsetena. Oota ootamatuid reiteid, need on põgenikud. « Look: », test, mis simuleerib reentrancy rünnakut, annab sulle varajase hoiatusi.

Integreeritud testimine ja simulatsioonid

Unusta üksiktestid. Sa ei anna liivalõhku, kui kogu sahar ei löö kasti. Simuleeri kogu lepingukettet, kanda läbi kogu transaction flow. Hardhat console suudab käivitada skripti, mis jäljendab kasutaja ostu, müüki, lõppkontrolli – ja see teeb selgeks, kust viga tuleb.

Fuzzing – stressi test

Fuzzing on nagu lööb äkilise tormi kasti. Aja oma leping suure hulga juhuslike sisenditega. Kui üks sisend põhjustab krahhi, saad see varakult. Täpne: käyt 100 000 randomised aadresse, õnnestunud testide arv on 0? Otsusta, et kood vajab refaktoorimist.

Gaasihindade simulatsioon

Kas sa mõtled sõna « turvalisus »? See ei ole pelgalt koodi vigade puudumine, vaid ka kulude kontroll. Heuristid, mis prognoosivad gaasikulu, näitavad, kui sügavalt su leping võib sattuda. Kui gaas kulub 2 miljonit, siis on sul reeglina optimeerimisprobleeme.

Lõplik kontrollpunkt

Enne avaldamist tee endale üks kord “sandboxi” jooksutus. Deployi leping testneti, tee päris transaction. Kontrolli, kas reentrancy-guard aktiveerub, kas fallback-funktsioon käivitub ainult oodatult. See on see hetk, mil oma koodi saad silmitseva tööriista läbi heita.

Andmete analüüs ja logid – vaata, mis suudab jälgida, et ükski sündmus ei põ̃kki. Lõpuks võta oma IDE, pane sinna breakpoint ja “run” – see on üks väiksem samm, kuid see võib päästa miljonid.

Siin on see, mida sa pead kohe tegema: ava oma terminal, käivita “hardhat test” ja kui kõik läbib, deployi testneti, tee üks transaction, võta screenshot. Vaata, kas midagi läks valesti. Kui ei, siis oled valmis.