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.