Den formelle verifiseringen av smarte kontrakter er en fremvoksende trend i kryptovalutaområdet som fokuserer på å redusere forekomster av feil og sårbarheter av smarte kontrakter som har ført til mange høyprofilerte hack og endemiske sikkerhetsproblemer.
Formell verifisering har et bredt spekter av applikasjoner med hensyn til maskinvare- og programvaresystemer. Det har blitt overordentlig viktig ettersom kompleksiteten til systemene øker, spesielt med maskinvare. I blockchain-nettverk har litany av sårbarheter og utnyttelser av smarte kontrakter ført til et behov for forbedret smart kontraktprogrammering og revisjon.
Contents
Bakgrunn for formell verifisering
# | Crypto Exchange | Benefits |
---|---|---|
1 | Best exchange ![]() VISIT SITE |
|
2 | Ideal for newbies ![]() Visit SITE |
|
3 | Crypto + Trading ![]() |
|
Formell verifisering bruker formelle metoder for å sjekke om et design av et maskinvare- eller programvaresystem oppfyller et bestemt sett med egenskaper. Formelle metoder er en bestemt type matematisk teknikk for spesifikasjon, utvikling og verifisering av både maskinvare- og programvaresystemer. Å bruke formelle metoder for å bevise eller motbevise riktigheten av tiltenkte algoritmer er kjent som formell verifisering.
Martin Davis er kreditert for å utvikle det første datagenererte matematiske beviset i 1954. Konseptet begynte å få grep på 1960-tallet for å verifisere riktigheten av dataprogrammer på tidlige språk som Pascal og Java. Etter noen høyprofilerte datamaskinfeil, for eksempel Pentium FDIV Bug i 1994 startet følelsen av at formell verifisering måtte være allestedsnærværende med snøball.
Testing av programvare eller maskinvaresystem kan deles inn i to generelle faser:
- Validering
- Bekreftelse
Validering er å avgjøre om produktet oppfyller brukerens behov.
Verifisering tester om produktet samsvarer med spesifikasjonene eller ikke.
Verifisering består i å produsere en abstrakt matematisk modell som samsvarer med designspesifikasjonene til produktet (dvs. algoritme, maskinvarebrikke) mens de formelle metodene som brukes til å generere modellen hovedsakelig stammer fra teoretiske informatikkgrunnlag..
Bruken av formell verifisering har blitt ekstremt viktig i maskinvaresystemer, der den brukes av nesten alle større maskinvareprodusenter for å sikre robustheten til produktene deres. Imidlertid er bruken av den nesten ikke så utbredt i programvare som den er i maskinvare, noe som hovedsakelig tilskrives den kommersielle naturen til maskinvareproduksjon..
# | CRYPTO BROKERS | Benefits |
---|---|---|
1 | Best Crypto Broker ![]() |
|
2 | Cryptocurrency Trading ![]() VISIT SITE |
|
# | BITCOIN CASINO | Benefits |
---|---|---|
1 | Best Crypto Casino ![]() |
|
2 | Fast money transfers ![]() VISIT SITE |
|
Imidlertid begynner denne dynamikken å endre seg med fremkomsten av blokkjeder og kryptokurver hvor betydelige overføringer av verdi blir utført autonomt over et desentralisert nettverk. Med mer verdi på spill enn tradisjonelle systemer, har riktigheten av smarte kontrakter blitt en presserende bekymring.
EN kort historie av smarte kontraktutnyttelser er alt som trengs for å forstå konsekvensene av enkle sårbarheter i kontraktkoden.
Hvorfor bruke den til smarte kontrakter?
I følge en fersk studere utført på nesten 1 million Ethereum-smarte kontrakter, 34.200 av dem ble flagget som sårbare på 10 sekunder per kontrakt. Det svimlende tallet ble nådd ved å analysere sporingsproblemer i smarte kontrakter, inkludert:
- Finne kontrakter som låser midler på ubestemt tid
- Kontrakter som lekker penger uforsiktig til vilkårlige brukere
- Kontrakter som kan drepes av hvem som helst
Sammen med den generelle logiske kompleksiteten og nyheten knyttet til programmering av smarte kontrakter for blokkjeder, gjør deres uforanderlige natur – når de først er forpliktet til blockchain – sårbarheter potensielt mye mer skadelig.
Brian Marick og Daejun Park gir et utmerket analyse av sårbarheter for smarte kontrakter og hvordan formell bekreftelse kan bidra til å redusere forekomsten. I hovedsak er det vanligvis to måter som en utvikler ikke kan få det de vil ha fra en smart kontrakt.
- Misforstått hensikt
- Gjør en feil når du implementerer den hensikten
Mange av disse standardfeilene kan føre til enorme summer av låste midler som med Paritets lommebok eller med Ethereum’s rekursiv send utnyttelse i DAO-hendelse. Formell verifisering brukes som en måte å matematisk bekrefte at spesifikke sårbarheter ikke vil føre til skadelige utnyttelsesvektorer.
En formell spesifikasjon brukes som den presise utgangen eller resultatet som en smart kontrakt leter etter, som en datamaskin kan sjekke. Bekreftelse skjer deretter når kontrakten kompileres til bytekoden, og den formelle verifiseringen beviser at den kompilerte bykoden implementerer spesifikasjonen. Imidlertid er manuell utføring av formelle verifikasjoner en vanskelig prosess, og noen ganger kommer det med sine egne feil. Selv verifisering av formelle bevisresultater kan komme med nyanser.
Verktøy som Coq Proof Assistant har blitt utviklet for å lette mekaniserte bevis på egenskapene til programmer, og brukes for tiden av flere nye kryptovalutaer med språkene de bruker innebygd i Coq.
Mens smart kontraktsrevisjon gir et sårt tiltrengt forsikringslag gjennom kodevurderinger, kan formell verifisering av smarte kontrakter bidra til å redusere forekomster av sårbarheter gjennom matematisk analyse ytterligere. Med smarte kontrakter som blir mer utbredt, virker det naturlig at anvendelsen av formell verifisering vil bli mer utbredt i bransjen.
Gjeldende anvendelser av formell bekreftelse
Flere plattformer integrerer enten formell bekreftelse allerede, eller planlegger å gjøre det snart. Evaluering av sikkerheten og sikkerheten til smarte kontrakter som opererer innenfor disse plattformene, vil være viktig for å måle deres effektivitet når det gjelder å redusere kritiske sårbarheter..
Zilliqa
Zilliqa er en blockchain med høy gjennomstrømning designet for å være vert for skalerbare og sikre desentraliserte applikasjoner (dapps). Flere av de tekniske utviklerne bak Zilliqa var forfattere av den tidligere studien som avdekket tusenvis av smarte kontraktssvakheter.
Zilliqa bruker et nytt programmeringsspråk kalt Scilla, designet av medlemmer av Zilliqa-teamet og noen andre tilknyttede selskaper. Scilla er et mellomnivåspråk som er innebygd i Coq Proof Assistant. Det er ment å være et oversettelsesmål for språk på høyere nivå for å utføre analyse og verifisering før kontrakter blir samlet til bytekode..
Tezos
Tezos er skrevet i OCaml og det smarte kontraktsspråket er Michelson, basert på OCaml. OCaml ble valgt på grunn av dets funksjonelle programmeringstilbud for hastighet, entydig syntaks og semantikk, og evner til å implementere formelle bevis. Tezos bruker også Coq Proof Assistant for å legge til rette for formell verifisering av smarte kontrakter.
Arthur Breitman – Tezos medstifter – postet detaljer om verifisering av noen Michelson kontrakter i Coq, inkludert en multi-sig-kontrakt på testnettet deres i fjor. Tezos ble nylig lansert, så anvendelsen av formell bekreftelse bør gi et utmerket mål for tilstanden til forbedret sikkerhet for smarte kontrakter ved hjelp av metoden. Hvorvidt bedrifter som har plaget soliditetskontrakter vil spille ut i Tezos eller ikke, vil ta litt tid å utfolde seg, men å evaluere hvordan sikre smarte kontrakter blir på Tezos, kan være en indikasjon på en fortsatt utvikling.
Cardano
Cardano er skrevet på Haskell og det smarte kontraktsspråket er Plutus, som er basert på Haskell.
Cardano er designet med et Cardano Computation Layer (CCL) som består av to lag:
- Et formelt spesifisert virtuelt maskin- og språkrammeverk
- Formelt spesifiserte språk som letter bekreftelse av smart kontraktskode
Målet er å skape et miljø som strømlinjeformer prosessen med å garantere at en kontrakt fungerer som designet uten katastrofale sårbarheter. Spesielt bruker ikke Cardano et avgrenset stakkdesign som Ethereums EVM, så ikke å bekymre deg for stakkaritmetisk flyt gjør det mulig å formelt verifisere smarte kontrakter mye lettere.
Ethereum
Ethereum har forsket på innlemmelsen av formell verifisering i ganske lang tid, med flere prosjekter som undersøker potensialet. En slik publikasjon, “Gjør smarte kontrakter smartere,”Fokuserer på smarte kontraktfeil og foreslår måter å redusere dem på, inkludert forbedring av den operative semantikken til Ethereum for å fremme formell verifisering.
Gassgrenser i Ethereum gjør det utfordrende å implementere formell verifisering. Videre er den eneste måten å vite betydningen av et soliditetsprogram å kompilere det i bytekode. Kompilatoren endres raskt, så verifiseringsverktøy vil også måtte justere seg til endringshastigheten. Tatt i betraktning Ethereums etablerte nettverk og historie, ville formell verifisering av smarte kontrakter i Ethereum tilsynelatende gi den beste måleren for deres effektivitet for å redusere sårbarheter, hvis formell bekreftelse ble mye brukt i nettverket.
Konklusjon
Formell verifisering er en svært kompleks og vanskelig oppgave. Til tross for dette har det blitt en universell standard i maskinvareindustrien og vil trolig fortsette å få fart i programvareplassen. Blokkjeder og kryptovaluta-nettverk – der overføringer av høy verdi er vanlige – vil med sikkerhet akselerere denne effekten. Å måle den positive effekten av formell verifisering av smarte kontrakter vil sannsynligvis ta flere år å utfolde seg, ettersom vi bare ser begynnelsen på det som skulle bli en mye bredere trend i bransjen.