Verificació formal en contractes intel·ligents

La verificació formal dels contractes intel·ligents és una tendència emergent a l’espai de les criptomonedes centrada en la reducció d’instàncies d’errors i vulnerabilitats dels contractes intel·ligents que han provocat nombrosos hacks de gran perfil i preocupacions de seguretat endèmiques..

La verificació formal té una gran varietat d’aplicacions pel que fa als sistemes de maquinari i programari. Ha esdevingut extremadament important a mesura que augmenta la complexitat dels sistemes, sobretot amb el maquinari. A les xarxes blockchain, la lletania de vulnerabilitats i explotacions de contractes intel·ligents ha conduït a la necessitat de millorar la programació i auditoria de contractes intel·ligents.

Verificació formal en contractes intel·ligents

Antecedents sobre la verificació formal

Usos de verificació formal mètodes formals per comprovar si un disseny d’un maquinari o sistema de programari compleix o no amb un conjunt específic de propietats. Els mètodes formals són un tipus particular de tècnica matemàtica per a l’especificació, desenvolupament i verificació de sistemes de maquinari i programari. L’ús de mètodes formals per demostrar o refutar la correcció dels algoritmes previstos es coneix com a verificació formal.

A Martin Davis se li atribueix el desenvolupament de la primera prova matemàtica generada per ordinador el 1954. El concepte va començar a guanyar força a la dècada de 1960 per verificar la correcció dels programes d’ordinador en els primers llenguatges com Pascal i Java. Després d’alguns errors informàtics d’alt perfil, com ara Error Pentium FDIV el 1994, el sentiment que la verificació formal havia de ser omnipresent va començar a fer boles de neu.

La prova d’un sistema de programari o maquinari es pot dividir en dues fases generals:

  1. Validació
  2. Verificació

La validació determina si el producte compleix les necessitats de l’usuari.

La verificació comprova si el producte compleix o no les especificacions.

La verificació consisteix a produir un model matemàtic abstracte que es correlaciona amb les especificacions de disseny del producte (és a dir, algorisme, xip de maquinari) mentre que els mètodes formals utilitzats per generar el model provenen principalment dels fonaments teòrics de la informàtica.

L’ús de la verificació formal ha esdevingut extremadament important en sistemes de maquinari, on és utilitzat per gairebé tots els principals fabricants de maquinari per garantir la robustesa dels seus productes. Tanmateix, el seu ús no és tan freqüent en el programari com en el maquinari, cosa que s’atribueix principalment a la naturalesa comercial de la fabricació de maquinari..

Tanmateix, aquesta dinàmica comença a canviar amb l’aparició de blockchains i criptomonedes, on s’executen de manera autònoma considerables transferències de valor a través d’una xarxa descentralitzada. Amb més valor en joc que els sistemes tradicionals, la correcció dels contractes intel·ligents s’ha convertit en una preocupació urgent.

A història breu de les explotacions de contractes intel·ligents és tot el que cal per comprendre les conseqüències de les vulnerabilitats simples del codi de contracte.

Per què utilitzar-lo per a contractes intel·ligents?

Segons un recent estudiar realitzat en prop d’un milió de contractes intel·ligents d’Ethereum, 34.200 d’ells van ser marcats com a vulnerables, en 10 segons per contracte. Aquest nombre sorprenent es va arribar analitzant les vulnerabilitats de rastreig de contractes intel·ligents, inclosos:

  • Trobar contractes que bloquegin els fons de manera indefinida
  • Contractes que filtren fons de manera negligent a usuaris arbitraris
  • Contractes que qualsevol persona pot matar

Juntament amb la complexitat lògica general i la novetat associada a la programació de contractes intel·ligents per a cadenes de blocs, la seva naturalesa immutable (un cop compromesos amb la cadena de blocs) fa que les vulnerabilitats siguin molt més perjudicials.

Brian Marick i Daejun Park ofereixen un excel·lent anàlisi de les vulnerabilitats dels contractes intel·ligents i de com la verificació formal pot ajudar a mitigar les seves instàncies. Bàsicament, normalment hi ha dues maneres en què un desenvolupador pot aconseguir el que vol d’un contracte intel·ligent.

  1. Intenció incompresa
  2. Cometre un error en implementar aquesta intenció

Molts d’aquests errors estàndard poden conduir a enormes sumes de fons tancats, com ara el Cartera paritària o amb Ethereum’s exploit d’enviament recursiu al Incident DAO. La verificació formal s’utilitza com una manera de confirmar matemàticament que les vulnerabilitats específiques no conduiran a danyar els vectors d’explotació.

S’utilitza una especificació formal com a resultat o resultat precís que busca un contracte intel·ligent, que un ordinador pot comprovar. Posteriorment, la verificació es realitza una vegada que el contracte es compleix amb el bytecode i la verificació formal demostra que el bytecode compilat implementa l’especificació. No obstant això, la realització manual de verificacions formals és un procés ardu i, de vegades, comporta els seus propis errors. Fins i tot la verificació dels resultats de la prova formal pot venir amb els seus matisos.

Eines com la Assistent de prova de Coq han estat desenvolupats per ajudar a facilitar les proves mecanitzades sobre les propietats dels programes i actualment són utilitzats per diverses criptomonedes emergents amb els llenguatges que utilitzen incrustats a Coq.

Tot i que l’auditoria de contractes intel·ligents proporciona una capa de garantia molt necessària mitjançant la revisió de codis, la verificació formal dels contractes intel·ligents pot ajudar a reduir encara més els casos de vulnerabilitat mitjançant l’anàlisi matemàtica. Amb la prevalença dels contractes intel·ligents, sembla natural que l’aplicació de la verificació formal s’estengui a la indústria.

Aplicacions actuals de verificació formal

Diverses plataformes ja integren la verificació formal o tenen previst fer-ho aviat. L’avaluació de la seguretat i la seguretat dels contractes intel·ligents que operin dins d’aquestes plataformes serà vital per avaluar-ne l’eficàcia per evitar vulnerabilitats crítiques..

Zilliqa

Zilliqa és una cadena de blocs d’alt rendiment dissenyada per allotjar aplicacions descentralitzades (dapps) escalables i segures. Diversos dels desenvolupadors tècnics darrere de Zilliqa van ser autors de l’estudi anterior que va descobrir els milers de punts febles del contracte intel·ligent.

Zilliqa

Zilliqa utilitza un nou llenguatge de programació anomenat Scilla, dissenyat per membres de l’equip de Zilliqa i alguns altres afiliats. Scilla és un llenguatge de nivell intermedi que està incrustat al Coq Proof Assistant. Es pretén que sigui un objectiu de traducció per a idiomes de nivell superior per realitzar anàlisis i verificacions abans de la compilació de contractes a bytecode.

Tezos

Tezos està escrit en OCaml i el seu llenguatge de contracte intel·ligent és Michelson, basat en OCaml. OCaml va ser seleccionat a causa de les seves funcions de programació funcionals de velocitat, sintaxi i semàntica inequívocs i capacitats per implementar proves formals. Tezos també utilitza el Coq Proof Assistant per facilitar la verificació formal dels contractes intel·ligents.

Guia de Tezos

Arthur Breitman, cofundador de Tezos, publicat detalls sobre la verificació d’alguns Michelson contracta a Coq, que va incloure un contracte multi-sig al seu testnet l’any passat. Tezos es va llançar recentment, de manera que la seva aplicació de verificació formal hauria de proporcionar un indicador excel·lent per a l’estat de seguretat millorada dels contractes intel·ligents mitjançant el mètode. El fet que es produeixin o no explotacions que han afectat els contractes de Solidity a Tezos trigarà un cert temps a desenvolupar-se, però avaluar la seguretat dels contractes intel·ligents a Tezos pot ser molt indicatiu d’una tendència continuada.

Cardano

Cardano està escrit en Haskell i el seu llenguatge de contracte intel·ligent és Plutus, que es basa en Haskell.

Guia Cardano

Cardano està dissenyat amb una capa de càlcul Cardano (CCL) que consta de 2 capes:

  1. Una màquina virtual i un marc lingüístic especificats formalment
  2. Idiomes especificats formalment que faciliten la verificació del codi de contracte intel·ligent

L’objectiu és crear un entorn que racionalitzi el procés per garantir que un contracte funcioni tal com s’ha dissenyat sense vulnerabilitats catastròfiques. Cal destacar que Cardano no utilitza un disseny de pila delimitat com l’EVM d’Ethereum, de manera que no preocupar-se pel flux aritmètic de la pila li permet verificar formalment els contractes intel·ligents molt més fàcilment..

Ethereum

Ethereum ha estat investigant la incorporació de la verificació formal des de fa força temps, i diversos projectes investiguen el seu potencial. Una d’aquestes publicacions, “Fer més intel·ligents els contractes intel·ligents,”Se centra en els errors de contractes intel·ligents i suggereix maneres de mitigar-los, inclosa la millora de la semàntica operativa d’Ethereum per fomentar la verificació formal.

Guia Ethereum

Hi ha límits de gas a Ethereum desafiant per implementar la verificació formal. A més, l’única manera de conèixer el significat d’un programa Solidity és compilar-lo en bytecode. El compilador canvia ràpidament, de manera que les eines de verificació també haurien d’adaptar-se a la velocitat de canvi. Tenint en compte la història i la història establertes d’Ethereum, la verificació formal dels contractes intel·ligents a Ethereum proporcionaria, ostensiblement, el millor indicador per a la seva efectivitat en la mitigació de les vulnerabilitats si la verificació formal s’utilitzés àmpliament a la xarxa..

Conclusió

La verificació formal és una tasca molt complexa i àrdua. Malgrat això, s’ha convertit en un estàndard universal a la indústria del maquinari i és probable que continuï agafant impuls en l’espai del programari. Les cadenes de blocs i les xarxes de criptomonedes, on les transferències d’alt valor són habituals, acceleraran segurament aquest efecte. La mesura de l’impacte positiu de la verificació formal dels contractes intel·ligents probablement trigarà uns quants anys a desenvolupar-se, ja que només estem veient els inicis del que hauria de ser una tendència molt més àmplia a la indústria.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me