Hvad er formel verifikation af smart contracts?
Hjem
Artikler
Hvad er formel verifikation af smart contracts?

Hvad er formel verifikation af smart contracts?

Avanceret
Offentliggjort Mar 2, 2023Opdateret Jul 12, 2023
5m

Denne artikel er et bidrag fra fællesskabet. Forfatteren er David Tarditi, VP for Engineering hos CertiK, et Web3-revisionsselskab af smart contracts.

TL;DR

Formel verifikation af smart contracts sikrer, at de er fri for fejl, s√•rbarheder og anden utilsigtet adf√¶rd. Det indeb√¶rer, at en menneskelig ekspert pr√¶senterer logikken for den p√•g√¶ldende smart contract som matematiske udsagn og derefter k√łrer dem gennem en automatiseret proces, der kontrollerer den faktiske logik i forhold til modeller af kontraktens forventede adf√¶rd. Kombinationen af formel verifikation og manuel revision giver en omfattende evaluering af sikkerheden for en smart contract.

Introduktion

Smart contracts er computerprogrammer, der er implementeret p√• en blockchain, og som k√łrer automatisk, n√•r visse betingelser er opfyldt. De kan v√¶re alt fra enkle til ekstremt komplekse og kan indeholde aktiver til en v√¶rdi af millioner eller endda milliarder af dollar.¬†¬†

Sikkerhedss√•rbarheder i kode til smart contracts kan have √łdel√¶ggende konsekvenser, herunder tyveri af alle de aktiver, som en smart contract indeholder. I 2021 blev der stj√•let 50 millioner dollar fra den automatiserede market maker (AMM) Uranium Finance p√• grund af en enkelt tastefejl i en smart contract.

Ogs√• i 2021 uddelte Compound Finance 80 millioner dollar i ufortjente bel√łnninger p√• grund af en fejl med et enkelt tegn. I 2022 blev der stj√•let 320 millioner dollar fra Wormhole Bridge p√• grund af en fejl i √©n af dens smart contracts.

Det er vigtigt at f√• smart contract-programmet rigtigt f√łrste gang. Smart contracts er open source-kontrakter, hvilket betyder, at koden er offentligt tilg√¶ngelig, n√•r en kontrakt er implementeret. Hvis en hacker finder en fejl, kan vedkommende udnytte den med det samme. Desuden er det ikke en mulighed at lappe sikkerhedshuller over tid, da koden i en smart contract typisk ikke kan √¶ndres efter implementeringen.

Hvordan fungerer verifikation af smart contracts?  

Formel verifikation af smart contracts fungerer ved at pr√¶sentere logikken og den √łnskede adf√¶rd i smart contracts som matematiske udsagn. Revisorerne bruger derefter automatiserede v√¶rkt√łjer til at kontrollere, om disse erkl√¶ringer er korrekte.

Processen omfatter:

  1. Definition af specifikationer og √łnskede egenskaber for en kontrakt i et formelt sprog.

  2. Oversættelse af kontraktens kode til en formel repræsentation, f.eks. matematiske modeller eller logik.

  3. Brug af automatiserede teorembevisere eller modeltjekkere til at validere kontraktens specifikationer og egenskaber.

  4. Gentagelse af verifikationsprocessen for at finde og rette eventuelle fejl eller afvigelser fra de √łnskede egenskaber.

Derfor er verifikation af smart contracts vigtig

Brugen af matematisk r√¶sonnement er med til at sikre, at formelt verificerede smart contracts er frie for fejl, s√•rbarheder og anden utilsigtet adf√¶rd. Det er ogs√• med til at √łge tilliden til kontrakten, da dens egenskaber er blevet omhyggeligt bevist som korrekte.¬†

Nedenfor er der nogle eksempler p√•, hvordan verifikation af smart contracts har hjulpet med at forhindre betydelige √łkonomiske tab og andre katastrofale resultater.¬†¬†

Uniswap

Uniswap er en velkendt AMM. Da Uniswap V1-smart contracten blev udviklet, blev den formelt verificeret. Inden udgivelsen blev der ved denne formelle verifikation fundet og rettet afrundingsfejl, som kunne have f√łrt til, at Uniswap V1 ville v√¶re blevet t√łmt for midler.¬†

Balancer

Balancer V2 er også en AMM, der blev formelt verificeret. Ved formel verifikation blev der fundet og rettet en ukorrekt beregning af gebyret i forbindelse med flash-lånefunktionen i den pågældende smart contract, hvilket kunne have gjort vekslingen sårbar over for tyveri.

SafeMoon

SafeMoon V1 indeholdt en subtil fejl, der blev fundet ved formel verifikation efter at den var blevet implementeret. Det var muligt for en ejer at give afkald p√• ejendomsretten til kontrakten og derefter generhverve den, hvis visse handlinger blev udf√łrt inden afkaldet p√• ejendomsretten.

Denne fejl blev overset i de fleste manuelle revisioner af SafeMoon V1-forks, fordi det krævede analyse af specifikke kombinationer af programvariabelværdier at finde den. Dette er noget, som mennesker let kan overse, og som en maskine let kan opfange.

Sådan arbejder formel verifikation og manuel revision sammen

Formel verifikation giver en systematisk og automatiseret m√•de til at kontrollere en kontrakts logik og adf√¶rd i forhold til de √łnskede egenskaber. Det g√łr det lettere at identificere og rette eventuelle fejl. Det er is√¶r nyttigt til at finde komplekse og subtile problemer, som kan v√¶re vanskelige at opdage ved manuel inspektion.

Manuel revision omfatter en ekspertgennemgang af en kontrakts kode, design og implementering. Revisorerne bruger deres erfaring og ekspertise til at identificere sikkerhedsrisici og evaluere kontraktens overordnede sikkerhedstilstand. De kan ogs√• bekr√¶fte, at den formelle verifikationsproces blev udf√łrt korrekt, og kontrollere, om der er problemer, som automatiserede v√¶rkt√łjer m√•ske ikke kan opdage.¬†

Kombinationen af formel verifikation og manuel revision giver en omfattende evaluering af sikkerheden for en smart contract. Det √łger chancerne for at finde og rette eventuelle s√•rbarheder. Resultatet er en tilgang med forsvar i dybden til sikkerhed, der udnytter b√•de menneskers og maskiners unikke evner.¬†

Sammenfatning

For at sikre sikkerheden for en smart contract er det vigtigt at anvende både formel verifikation og manuel revision for at sikre en omfattende og grundig evaluering af sikkerhedstilstanden for en smart contract.

Selv om formel verifikation kan v√¶re ressourcekr√¶vende, er det en investering, der er v√¶rd at foretage for kontrakter med h√łj v√¶rdi eller h√łj risiko. I sidste ende er det vigtigt at prioritere sikkerhed og sikre, at smart contracts er fri for fejl, s√•rbarheder og utilsigtet adf√¶rd.

Yderligere læsning

Ansvarsfraskrivelse og risikoadvarsel: Dette indhold pr√¶senteres for dig "som det er" til generel information og uddannelsesm√¶ssige form√•l uden erkl√¶ring eller garanti af nogen art. Det skal ikke opfattes som √łkonomisk r√•dgivning, og det er heller ikke hensigten at anbefale k√łb af et bestemt produkt eller en bestemt tjeneste. Priserne p√• digitale aktiver kan v√¶re volatile. V√¶rdien af din investering kan g√• op eller ned, og du f√•r muligvis ikke det investerede bel√łb tilbage. Du er eneansvarlig for dine investeringsbeslutninger, og Binance Academy er ikke ansvarlig for eventuelle tab, du m√•tte lide. Dette materiale skal ikke opfattes som √łkonomisk r√•dgivning.