Onze muren versterken: V1-beveiliging gehard met Certik-audit
Door DeHub Team — 2021-07-04
Naar aanleiding van de kwetsbaarheid van het v1 smart contract hebben we in het derde kwartaal van 2021 een volledige audit met Certik laten uitvoeren en hebben we onderzocht wat het vond.
Audits worden gebruikt als marketing in deze branche, dus het is de moeite waard om dit nauwkeurig op te schrijven: waar we het voor hadden gedaan, wat het dekte en wat het niet verhinderde.
Waarom later, niet eerder
Het ongemakkelijke antwoord is dat v1 zonder één is uitgebracht. De community had gestemd over de fundamenten van de token, de lancering was in beweging, en een volledige audit kost weken kalender tijd en een betekenisvolle kost voor een project dat nog niet was gelijst.
Dat was de verkeerde handel en de kwetsbaarheid bewees het. Elk contract dat we sindsdien hebben geïmplementeerd, is gecontroleerd voordat het live ging, niet daarna. Het is een beleid dat bestaat vanwege dit kwartaal.
Wat de audit eigenlijk is
Een audit is een gestructureerde, tegenstrijdige lezing van de code door mensen die worden betaald om dingen te vinden en geen belang hebben bij de uitkomst. Een goede produceert een lijst met bevindingen naar ernst, een reeks aanbevolen wijzigingen en een overzicht van welke je daadwerkelijk hebt gemaakt.
Dat laatste is waar audits verkeerd worden voorgesteld. "Gecontroleerd door Certik" is geen bevinding — een rapport met onopgeloste critici is nog steeds een audit. De nuttige bewering is dat de bevindingen zijn opgelost en de resoluties zijn geverifieerd, wat we hier hebben gedaan, en het is de versie die we sindsdien hebben gepubliceerd.

Wat een audit je niet oplevert
Direct zijn over de grenzen, omdat we later een aantal van hen op de harde manier hebben geleerd:
- Het omvat de code, niet het ontwerp. Een contract kan vrij zijn van exploiteerbare bugs en zich nog steeds slecht gedragen onder omstandigheden die niemand heeft gemodelleerd.
- Het is een momentopname. Het is van toepassing op de gecontroleerde versie. Elke wijziging daarna is niet gecontroleerd totdat dit niet het geval is.
- Het kan de onderdelen die geen code zijn niet zien. Ons meest schadelijke incident dat jaar was helemaal niet technisch — het was een frauduleuze advertentie agent, en er zou geen contractaudit hebben bestaan.
De duidelijkste illustratie is Q4 2022. De belasting van het v2-contract leidde tot storingen onder reële marktomstandigheden en bevroor zowel de token als onze liquiditeitspool. Dat was een ontwerpprobleem, geen niet-gepatchte bug, en daarom zijn we uiteindelijk overgestapt op gewone standaard ERC-20-tokenomics met helemaal niets slims in het overdrachtspad.
Wat we hebben bewaard
De audit heeft zijn werk gedaan. Houders werden heel gemaakt door middel van een automatische 1:1 airdrop, het verharde contract droeg DHB door het volgende jaar, en het proces werd standaard.
De grotere les was hier goedkoper te leren dan later: de audit is niet de veiligheid. De veiligheid is de gewoonte om aan te nemen dat je contract verkeerd is totdat iemand zonder reden om aardig te zijn heeft geprobeerd het te bewijzen.
Hoe we erover praten
We gebruiken "gecontroleerd" niet als een claim op zich, en we moedigen iedereen die een project beoordeelt aan om het woord te behandelen als het begin van een vraag in plaats van het einde van een vraag.
De nuttige vragen zijn: gecontroleerd door wie, tegen welke versie, wat vonden ze en wat is er eigenlijk veranderd. Een rapport met onopgeloste kritische bevindingen is nog steeds een audit. Een rapport over een contract dat sindsdien is gewijzigd, beschrijft iets dat niet meer wordt ingezet.
Die vragen zijn de reden dat de transparantieverslagen en uiteindelijk dhbscan.com bestaan. Ze beantwoorden ze zonder dat iemand het hoeft te vragen.
DeHub openen