Identifying and Characterizing Semantic Clones of Solidity Functions
Dit artikel presenteert een schaalbare methodologie voor het identificeren van semantische klonen in Solidity-smartcontracts door code en commentaar te analyseren, waarbij hoge precisie en recall worden bereikt terwijl structurele ontwerpalternatieven worden verkend en Large Language Models worden ingezet om documentatiegaten in code zonder commentaar te overbruggen.
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 de wereld van Slimme Contracten (de digitale overeenkomsten die draaien op blockchains zoals Ethereum) voor als een enorme, openbare bibliotheek. Zodra een boek (een contract) is geschreven en op de plank is gezet, kan het nooit worden gewist of gewijzigd. Omdat de boeken openbaar zijn, kopiëren schrijvers vaak secties uit andere boeken om tijd te besparen. Dit heet "klonen".
Meestal is kopiëren makkelijk te herkennen. Als je een alinea letterlijk overneemt, is het duidelijk. Maar wat als iemand een alinea herschrijft met volledig andere woorden, de zinsstructuur verandert en een paar synoniemen verwisselt, maar de betekenis precies hetzelfde blijft? In de programmeerwereld heet dit een Semantische Kloon (of een Type-4 kloon).
Dit artikel gaat over het bouwen van een betere "bibliothecaris" om deze verborgen, herschreven kopieën te vinden in Solidity (de taal die wordt gebruikt om deze contracten te schrijven), omdat het kopiëren van slechte logica even makkelijk beveiligingsgaten kan verspreiden als het kopiëren van goede logica.
Hier is een uiteenzetting van hun werk met behulp van eenvoudige analogieën:
1. Het Probleem: De Valstrik van het "Herschreven Recept"
Stel je twee chefs voor die recepten schrijven voor "Chocoladetaart".
- Chef A schrijft: "Meng bloem, suiker en eieren. Bak op 175°C."
- Chef B schrijft: "Combineer droge ingrediënten met natte ingrediënten. Plaats in de oven op 175°C."
Voor een computer die op exacte overeenkomsten zoekt, zien deze er totaal anders uit. Maar voor een mens zijn het hetzelfde recept. In de blockchainwereld, als het recept van Chef A een verborgen gebrek heeft (zoals vergeten te controleren of de oven heet is), en Chef B het idee kopieert zonder het gebrek op te merken, is de hele keuken in gevaar.
De auteurs ontdekten dat bestaande tools lijken op robots die alleen zoeken naar exacte woordovereenkomsten. Ze missen deze "herschreven recepten".
2. De Oplossing: De "Chef's Notities" Lezen
De onderzoekers realiseerden zich dat terwijl de code (de ingrediënten en stappen) er misschien anders uitziet, de commentaren (de notities die de chef boven het recept schreef) de intentie vaak op zeer vergelijkbare wijze uitleggen.
- De Analogie: Denk aan de code als de handelingen en de commentaren als de voice-over die uitlegt wat de handelingen doen.
- De Methode: Ze bouwden een systeem dat twee dingen vergelijkt:
- De Code: Ze controleren of de code anders is (lage gelijkenis).
- De Commentaren: Ze controleren of de geschreven beschrijvingen zeer vergelijkbaar zijn (hoge gelijkenis).
Als de code er anders uitziet maar de voice-over hetzelfde klinkt, markeren ze het als een "Semantische Kloon".
3. De Resultaten: Een Zeer Nauwkeurige Detective
Ze testten deze methode op een enorme dataset van bijna 300.000 moderne slimme contracten.
- Het Succespercentage: Toen ze een steekproef van 1.155 paren handmatig controleerden, was hun methode in totaal 59% van de tijd correct.
- De "Zelfde Naam" Bonus: Als de functies dezelfde naam hadden (zoals beide
transferheten), steeg de nauwkeurigheid naar 84%. - Het Veiligheidsnet: Ze controleerden ook of ze er geen hadden gemist. Ze ontdekten dat ze slechts ongeveer 3% van de echte klonen misten (een "recall"-percentage van 97%).
Ze ontdekten dat deze "herschreven recepten" niet zomaar ongelukken zijn; het zijn vaak ontwerpprocedures. Ontwikkelaars herschrijven ze om de code veiliger te maken, "gas" te besparen (de vergoeding die wordt betaald om het contract uit te voeren), of om de code beter te organiseren.
4. De Uitdaging: De "Stille" Bibliotheek
Een groot probleem dat ze ontdekten, is dat 75% van deze functies helemaal geen commentaren heeft. Het is alsof je een bibliotheek hebt waar drie kwart van de boeken geen titel of samenvatting heeft. Zonder commentaren kan hun "voice-over"-methode niet werken.
5. De Oplossing: De "AI-Schrijver" (LLM's)
Om het probleem van de "stille bibliotheek" op te lossen, gebruikten ze Grote Taalmodellen (AI) als schrijver.
- De Analogie: Als een boek geen samenvatting heeft, vroegen ze de AI om de code te lezen en er een samenvatting voor te schrijven.
- Het Experiment: Ze voerden de code aan de AI, vroegen het om een beschrijving te schrijven, en gebruikten vervolgens hun systeem om de door de AI geschreven beschrijvingen te vergelijken.
- Het Resultaat: Zelfs zonder door mensen geschreven notities, stelden de door de AI gegenereerde samenvattingen hen in staat 75% van de verborgen klonen correct te vinden.
Ze testten ook verschillende "prompts" (instructies voor de AI). Ze ontdekten dat het vragen aan de AI om een simpele, directe samenvatting beter werkte dan het vragen om een complex, gestructureerd rapport. De complexe rapporten voegden te veel "flauwekul" toe die het systeem verwarde, terwijl simpele samenvattingen de focus hielden op de kernbetekenis.
6. Waarom Dit Belangrijk Is
De auteurs concluderen dat dit niet alleen gaat over het vinden van duplicaten; het gaat over het vinden van alternatieven.
- Als je een ontwikkelaar bent die een veilig contract bouwt, wil je niet alleen één manier om iets te doen. Je wilt alle verschillende manieren zien waarop andere mensen hetzelfde probleem hebben opgelost.
- Door deze semantische klonen te vinden, kunnen ontwikkelaars verschillende "herschreven recepten" vergelijken om te zien welke veiliger, goedkoper of efficiënter is voordat ze hun eigen bouwen.
Kortom: Het artikel presenteert een nieuwe manier om "verborgen tweeling" in code te vinden door de intentie (commentaren) te vergelijken in plaats van alleen de syntaxis (code). Wanneer commentaren ontbreken, gebruiken ze AI om ze te schrijven, waardoor ze succesvol verborgen ontwerpalternatieven blootleggen die kunnen helpen blockchain-contracten veiliger en efficiënter te maken.
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.