← Nieuwste papers
💻 computer science

Assessing Vulnerability in Smart Contracts: The Role of Code Complexity Metrics in Security Analysis

Dit onderzoek toont aan dat hoewel individuele softwarecomplexiteitsmetrieken een lage correlatie vertonen met specifieke kwetsbaarheden in Solidity smart contracts, hun collectieve analyse effectief onderscheid maakt tussen veilige en kwetsbare code, waarbij kwetsbare contracten consistent hogere gemiddelde complexiteitsscores vertonen.

Oorspronkelijke auteurs: Masoud Jamshidiyan Tehrani

Gepubliceerd 2026-01-26
📖 4 min leestijd☕ Koffiepauze-leesvoer

Oorspronkelijke auteurs: Masoud Jamshidiyan Tehrani

Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer

Stel je een Smart Contract voor als een zelfuitvoerende verkoopautomaat die op een blockchain is gebouwd. Zodra je er geld in doet en op een knop drukt, geeft hij automatisch een snack uit. Je kunt niet achteraf de interne tandwielen van de machine aanpassen; het is "onveranderlijk" (immutable). Als er een fout in de tandwielen zit, kan een hacker al het geld binnenin stelen, en is er geen manier om het te repareren zonder een hele nieuwe machine te bouwen.

Dit artikel gaat over het proberen vinden van die kapotte tandwielen voordat de machine wordt ingezet. De onderzoekers stelden een eenvoudige vraag: "Kunnen we zien of een verkoopautomaat waarschijnlijk kapot is, enkel door te kijken naar hoe ingewikkeld de blauwdrukken zijn?"

Hier is de uitsplitsing van hun bevindingen met behulp van alledaagse analogieën:

1. Het kernidee: Complexiteit is een "red flag"

De onderzoekers keken naar 21 verschillende manieren om te meten hoe "rommelig" of "complex" een stuk code is. Zie deze metrieken als manieren om zaken te meten zoals:

  • SLOC (Source Lines of Code): Hoeveel pagina's heeft de instructiehandleiding?
  • Nesting: Hoeveel lagen van "als dit, dan dat"-dozen zitten er in elkaar? (Zoals een Russische matroesjka-pop).
  • Coupling: Hoeveel andere machines moet deze machine nodig hebben om mee te praten om te kunnen werken?

De bevinding: Ze ontdekten dat rommelige blauwdwerken meestal betekenen dat de machines kapot zijn.
Wanneer ze keken naar contracten die gehackt waren (kwetsbaar), waren die blauwdrukken bijna altijd complexer, langer en meer verstrengeld dan de blauwdrukken voor veilige contracten.

2. Het "Glazen Bol" probleem (Individuele metrieken)

De onderzoekers probeerden te zien of één specifieke meting een hack kon voorspellen.

  • Analogie: Stel je voor dat je probeert te raden of een auto een ongeluk zal krijgen door alleen naar het aantal bekerhouders te kijken.
  • Resultaat: Het werkte niet goed. Geen enkele metriek (zoals alleen het tellen van de regels code) was een perfecte "glazen bol". Als je alleen naar het aantal regels keek, kon je niet betrouwbaar zeggen: "Deze gaat zeker gehackt worden." De connectie was er wel, maar was zwak.

3. Het succes van de "Teaminspanning" (Gecombineerde metrieken)

Echter, wanneer ze naar alle metingen samen keken, werd het beeld heel duidelijk.

  • Analogie: Je kunt niet zeggen of een soep zout is door alleen de zoutpot te proeven, maar als je de hele kom proeft, weet je precies hoe zout hij is.
  • Resultaat: Hoewel één metriek niet genoeg was, was de combinatie van metrieken erg goed in het onderscheiden tussen veilige contracten en gevaarlijke contracten. De "kwetsbare" contracten hadden consequent hogere scores op alle fronten (meer regels, diepere nesting, meer verbindingen) vergeleken met de veilige contracten.

4. De verrassende uitzonderingen

Er waren drie dingen die tegen de regel "meer complexiteit = meer gevaar" ingingen:

  1. Comments (CLOC): Veilige contracten hadden meer opmerkingen (notities geschreven door de programmeur om de code uit te leggen). Kwetsbare contracten hadden er minder.
    • Takeaway: Het schrijven van notities bij je blauwdruk lijkt te helpen om je machine veilig te houden.
  2. Descendants (NOD): Veilige contracten hadden meer "afstammelingen" (versies of kind-contracten). Kwetsbare contracten hadden er minder.
  3. Parameters: Kwetsbare contracten hadden gemiddeld zelfs iets minder inputs/parameters.

5. Wat dit betekent voor ontwikkelaars

Het artikel concludeert dat complexiteit niet de oorzaak van de hack is (zoals een virus), maar het is een zeer luid waarschuwingssignaal.

  • De Analogie: Als je een huis ziet met een wirwar aan draden, blootliggende leidingen en een verwarrend vloerplan, weet je niet zeker of het in brand zal vliegen, maar je weet wel dat de kans veel groter is dan bij een huis met nette, georganiseerde bedrading.
  • Het Advies: Ontwikkelaars moeten proberen hun code simpel te houden. Als een contract te ingewikkeld wordt, is dat een signaal om te stoen en te controleren op beveiligingslekken. Schrijf ook meer comments; de data suggereert dat goed gedocumenteerde code veiliger is.

Samenvatting

Het artikel bewijst dat complexiteit een sterke indicator van risico is in smart contracts. Je kunt niet vertrouwen op slechts één getal om een hack te voorspellen, maar als je naar de algehele "rommeligheid" van de code kij bent, kun je de gevaarlijke contracten veel beter opsporen dan wanneer je de complexiteit volledig negeert. Het is een hulpmiddel om auditors en ontwikkelaars te helpen welke contracten de meest zorgvuldige inspectie nodig hebben.

Verdrinkt u in papers in uw vakgebied?

Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.

Probeer Digest →