Simple Science

Scienza all'avanguardia spiegata semplicemente

# Informatica# Crittografia e sicurezza# Ingegneria del software

Esaminare i difetti nei contratti smart

La ricerca mette in evidenza problemi con i contratti smart e i loro strumenti di verifica.

― 6 leggere min


Guai nei Contratti SmartGuai nei Contratti SmartSvelatidella blockchain.intelligenti minacciano l'affidabilitàProblemi critici nei contratti
Indice

La tecnologia blockchain ha attirato parecchia attenzione di recente. È famosa soprattutto per il suo utilizzo nelle criptovalute come il Bitcoin. Ma il suo impiego va oltre, trovando applicazioni in settori come il commercio al dettaglio, la sanità e le assicurazioni. Al centro di molti sistemi blockchain c'è qualcosa chiamato smart contract.

Gli smart contract sono come accordi digitali tra le parti. Sono scritti in codice e vengono eseguiti automaticamente quando vengono soddisfatte certe condizioni. Una volta attivati, questi smart contract non possono essere modificati. Se c'è un problema o un bug in uno smart contract, l'unica soluzione è terminarlo e crearne uno nuovo, il che può creare seri problemi per tutti coinvolti.

Problemi Comuni con gli Smart Contract

Nonostante i loro vantaggi, molti smart contract vengono attivati con problemi noti. Questi problemi possono portare a vari Fallimenti quando lo smart contract è in uso. Una delle ragioni principali per questi errori è che molti sviluppatori stanno ancora imparando a lavorare con la tecnologia blockchain e i linguaggi di programmazione usati per creare smart contract, come Solidity.

Questi problemi possono variare da piccoli bug a gravi vulnerabilità di sicurezza. Alcuni di questi problemi potrebbero passare inosservati fino a quando non causano un fallimento durante una transazione. Questi Difetti possono portare a perdite di fondi, corruzione dei dati e altre conseguenze serie.

Importanza di Rilevare Difetti negli Smart Contract

Per evitare questi problemi, è fondamentale rilevare e correggere i difetti negli smart contract prima che vengano attivati. Ci sono strumenti disponibili che possono aiutare a trovare questi difetti, ma molti di essi sono ancora nelle fasi iniziali di sviluppo e non sono molto efficaci nel trovare tutti i possibili problemi.

Questo articolo esplora gli impatti che i difetti negli smart contract possono avere sulla affidabilità dei sistemi blockchain. Esamina anche l'efficacia degli attuali Strumenti di verifica nell'identificare questi difetti, in particolare quelli che spesso passano inosservati.

Campagne di Iniezione di Difetti

Per capire come i difetti influenzano gli smart contract, un metodo utilizzato è chiamato "iniezione di difetti". Questo implica introdurre intenzionalmente difetti negli smart contract per vedere come si comportano durante le transazioni. In questo modo, gli sviluppatori possono vedere come questi difetti potrebbero portare a fallimenti.

Nella ricerca, sono stati iniettati difetti in una raccolta di veri smart contract, portando a un gran numero di versioni difettose. Questo metodo ha permesso di osservare come questi contratti si comportavano in un ambiente controllato. Esaminando i risultati, è stato possibile identificare quali difetti erano i più dannosi e con quale frequenza portavano a fallimenti.

Tipi di Difetti e Fallimenti

Nello studio, sono stati iniettati diversi tipi di difetti negli smart contract. Questi includevano:

  1. Fallimenti di Reversione: Quando una transazione fallisce e tutte le modifiche vengono annullate.
  2. Fallimenti di Aborto: Simili ai fallimenti di reversione, ma viene consumato tutto il gas.
  3. Fallimenti per Gas Esaurito: Si verifica quando un contratto finisce il gas e non può completarsi.
  4. Fallimenti di Correttezza: Quando una transazione produce un risultato errato.
  5. Fallimenti di Integrità: Portano a modifiche nello stato della blockchain che differiscono da quanto previsto.
  6. Fallimenti di Integrità Latenti: Modifiche nello stato che non sono immediatamente visibili agli utenti.

Ciascuno di questi fallimenti può portare a diverse conseguenze, alcune più gravi di altre. L'obiettivo della ricerca era determinare quanto fossero comuni questi difetti e come potessero essere rilevati dagli strumenti di verifica esistenti.

Panoramica dell'Esperimento

È stata selezionata una raccolta di 400 veri smart contract, e sono stati iniettati difetti in essi. Questo ha portato a un totale di 15.494 contratti difettosi. I contratti sono stati quindi eseguiti in un ambiente controllato per vedere come si comportavano durante le transazioni.

L'obiettivo principale era comprendere il comportamento sia dei contratti difettosi che di quelli non difettosi. Durante questi test sono state registrate metriche come il numero di transazioni riuscite, i tipi di fallimenti e l'uso delle risorse.

Efficacia degli Strumenti di Verifica

La ricerca ha anche valutato vari strumenti progettati per rilevare difetti negli smart contract. In particolare, sono stati valutati tre strumenti:

  1. Slither: Uno strumento di analisi statica che analizza il codice degli smart contract per potenziali vulnerabilità.
  2. Mythril: Uno strumento open-source che utilizza diverse tecniche di analisi per trovare debolezze negli smart contract.
  3. Securify: Uno strumento che controlla gli smart contract rispetto a modelli di sicurezza noti.

L'efficacia di questi strumenti è stata misurata in base a quanti difetti sono stati in grado di rilevare nei contratti difettosi generati. Le osservazioni hanno mostrato che mentre Slither poteva identificare un numero significativo di difetti, produceva anche molti falsi positivi. Mythril aveva un tasso di successo moderato, e Securify faticava a rilevare molti difetti.

I risultati hanno anche indicato che molti difetti sono passati inosservati da tutti gli strumenti. Questo solleva preoccupazioni sull'affidabilità degli smart contract attivati in situazioni reali.

Osservare gli Impatti dei Difetti

Attraverso gli esperimenti, è emerso che molte transazioni sono state influenzate dai difetti iniettati. Ad esempio, i fallimenti di reversione erano piuttosto comuni, così come i fallimenti per gas esaurito. I fallimenti erano collegati a specifici tipi di difetti, evidenziando che alcuni difetti sono più propensi a portare a problemi seri rispetto ad altri.

Inoltre, lo studio ha esaminato anche come questi difetti abbiano impattato le performance degli smart contract. In alcuni casi, la presenza di difetti ha comportato un aumento dell'uso della CPU, un maggiore consumo di memoria e tempi di transazione più lunghi.

Conclusioni e Direzioni Future

La ricerca ha mostrato che i difetti negli smart contract sono una vera minaccia per l'affidabilità dei sistemi blockchain. Molti strumenti di verifica esistenti non sono adeguati a rilevare questi difetti, specialmente quelli che possono portare a gravi fallimenti.

Gli sviluppatori devono essere cauti quando attivano smart contract perché difetti non rilevati potrebbero avere seri risvolti. I lavori futuri dovrebbero concentrarsi sul miglioramento dei metodi di rilevamento per questi difetti elusive e possibilmente sviluppare strumenti di verifica migliori. Questo potrebbe comportare la combinazione di diverse tecniche dagli strumenti studiati per migliorarne l'efficacia.

Affrontando questi problemi, la comunità blockchain può contribuire a garantire che gli smart contract siano più sicuri e affidabili, riducendo i rischi associati al loro attivamento e utilizzo.

Fonte originale

Titolo: Analyzing the Impact of Elusive Faults on Blockchain Reliability

Estratto: Blockchain recently became very popular due to its use in cryptocurrencies and potential application in various domains (e.g., retail, healthcare, insurance). The smart contract is a key part of blockchain systems and specifies an agreement between transaction participants. Nowadays, smart contracts are being deployed carrying residual faults, including severe vulnerabilities that lead to different types of failures at runtime. Fault detection tools can be used to detect faults that may then be removed from the code before deployment. However, in the case of smart contracts, the common opinion is that tools are immature and ineffective. In this work, we carry out a fault injection campaign to empirically analyze the runtime impact that realistic faults present in smart contracts may have on the reliability of blockchain systems. We place particular attention on the faults that elude popular smart contract verification tools and show if and in which ways the faults lead the blockchain system to fail at runtime. Results show general poor detection and, to some extent, complementary performance by the three tools used. The results also show that several elusive faults are responsible for severe blockchain failures.

Autori: Fernando Richter Vidal, Naghmeh Ivaki, Nuno Laranjeiro

Ultimo aggiornamento: 2023-04-11 00:00:00

Lingua: English

URL di origine: https://arxiv.org/abs/2304.05520

Fonte PDF: https://arxiv.org/pdf/2304.05520

Licenza: https://creativecommons.org/licenses/by/4.0/

Modifiche: Questa sintesi è stata creata con l'assistenza di AI e potrebbe presentare delle imprecisioni. Per informazioni accurate, consultare i documenti originali collegati qui.

Si ringrazia arxiv per l'utilizzo della sua interoperabilità ad accesso aperto.

Articoli simili