Che cos’è uno smart contract?
Che cos’è uno smart contract? Scopri come funzionano i programmi autoeseguibili su blockchain, cosa rendono possibile, i loro limiti e rischi e come verificarne uno prima di usarlo.
Uno smart contract è un programma memorizzato su una blockchain che si esegue automaticamente quando si verificano condizioni predefinite. Può custodire e trasferire fondi secondo il proprio codice, senza che una banca, un broker o un altro intermediario decida se eseguire ogni singolo passaggio.
Gli smart contract sono alla base di quasi tutto ciò che nel mondo crypto va oltre i semplici pagamenti: token, exchange decentralizzati, protocolli di prestito, NFT e DAO. Capire cosa possono e non possono fare ti aiuta a valutare sia le opportunità sia i rischi del loro utilizzo.
Come funzionano gli smart contract
L’idea di contratti fatti rispettare dal codice fu descritta dall’informatico Nick Szabo negli anni ’90, usando come analogia un distributore automatico: inserisci le monete giuste, scegli un prodotto e la macchina te lo consegna senza bisogno di un negoziante.
Su una blockchain, il processo funziona così:
- 1Uno sviluppatore scrive il codice, ad esempio in Solidity per Ethereum o in Rust per alcune altre reti.
- 2Il codice viene distribuito tramite una transazione e riceve un proprio indirizzo.
- 3Gli utenti richiamano il contratto inviando transazioni a quell’indirizzo, spesso allegando dei token.
- 4Ogni nodo esegue il codice e concorda sul risultato, così l’esito è identico per tutti.
- 5Lo stato del contratto viene aggiornato — saldi, registri di proprietà o impostazioni cambiano on-chain.
Ogni passaggio comporta una commissione di rete. Su Ethereum questa commissione si chiama gas; leggi cos’è il gas su Ethereum per capire come funziona.
A cosa servono gli smart contract
| Utilizzo | Cosa fa il contratto | Esempio |
|---|---|---|
| Token | Tiene traccia di saldi e trasferimenti | Un contratto di token ERC-20 |
| Exchange decentralizzati | Custodisce pool di token e prezza gli scambi con una formula | Un market maker automatizzato (AMM) |
| Prestiti | Accetta garanzie, eroga prestiti, liquida le posizioni a rischio | Un money market DeFi |
| NFT | Registra la proprietà di oggetti unici | Il contratto NFT di una collezione |
| DAO | Conta i voti ed esegue le proposte approvate | Un contratto di governance on-chain |
| Wallet multisig | Richiede più approvazioni per spostare i fondi | La tesoreria di un progetto |
Molti di questi contratti interagiscono tra loro, ed è per questo che la DeFi viene talvolta descritta come «lego del denaro». La nostra guida alla DeFi mostra come questi pezzi si incastrano.
Smart contract vs contratti tradizionali
È utile confrontare gli smart contract con gli accordi cartacei che la maggior parte delle persone conosce.
| Contratto tradizionale | Smart contract | |
|---|---|---|
| Scritto in | Linguaggio umano | Codice di programmazione |
| Fatto rispettare da | Tribunali, istituzioni, buona fede delle parti | La rete blockchain che esegue il codice |
| Flessibilità | Può essere rinegoziato o interpretato | Viene eseguito esattamente come scritto, salvo sia progettato per essere aggiornato |
| Trasparenza | Di solito privato | Codice e attività sono spesso pubblici on-chain |
| Gestione delle controversie | Giudici, arbitri, avvocati | Nessun meccanismo integrato per le controversie oltre al codice |
| Velocità | Da giorni a mesi per il regolamento | Da secondi a minuti, a seconda della rete |
I punti di forza sono la velocità, la trasparenza e l’eliminazione degli intermediari. Il punto debole è la rigidità: il codice non sa valutare equità o contesto. Se accade qualcosa di inatteso che gli sviluppatori non avevano previsto, il contratto segue semplicemente le sue regole — anche quando il risultato chiaramente non è quello che nessuno intendeva. Ne parliamo più in dettaglio in Cosa sono testnet e mainnet?
Chi scrive e controlla gli smart contract
Chiunque può distribuire uno smart contract; sulle blockchain pubbliche non esiste alcun processo di approvazione. Questa apertura favorisce un’innovazione rapida, ma significa anche che i contratti truffa sono facili da distribuire quanto quelli legittimi. Dopo il deploy, il controllo dipende da come è stato scritto il contratto: alcuni non hanno alcun proprietario, altri sono controllati da un singolo wallet e altri ancora da un multisig o da un voto della DAO con un ritardo temporale. Sapere quale modello si applica è una parte fondamentale della valutazione del rischio di qualsiasi app. Letture correlate: Exploit degli smart contract.
Cosa non possono fare gli smart contract
Gli smart contract sono potenti, ma hanno un campo d’azione ristretto.
- Conoscono solo i dati on-chain. Per usare informazioni del mondo reale, come prezzi o risultati sportivi, si affidano agli oracoli, che portano dati esterni on-chain e possono guastarsi o essere manipolati.
- Non comprendono le intenzioni. Se invii fondi alla funzione sbagliata o firmi un’approvazione malevola, il contratto fa ciò che dice il codice.
- Non sono automaticamente contratti legali. L’esecuzione del codice e l’efficacia giuridica sono questioni distinte.
- Non possono annullare gli errori. Una transazione completata di norma resta completata.
Rischi nell’uso degli smart contract
Bug ed exploit
Il codice è scritto da persone, e gli errori capitano. Gli attaccanti cercano falle e possono svuotare i fondi in una sola transazione. Gli audit aiutano, ma non possono garantire la sicurezza — vedi come valutare il report di audit di uno smart contract.
Chiavi di amministrazione e aggiornamenti
Molti contratti sono aggiornabili o hanno funzioni riservate al proprietario che possono sospendere gli scambi, modificare le commissioni o coniare nuovi token. Queste funzioni possono proteggere gli utenti in un’emergenza, ma creano anche la possibilità di abusi o del furto di una chiave di amministrazione. Letture correlate: L’account abstraction spiegata.
Contratti malevoli
I token truffa possono contenere regole nascoste, come il blocco delle vendite o tasse di trasferimento enormi. Un contratto può sembrare normale sulla pagina di un token e comportarsi in modo molto diverso nella pratica. Vedi anche: ICO vs IEO vs IDO.
Approvazioni
Usare la DeFi spesso richiede di autorizzare un contratto a spendere i tuoi token. Le approvazioni illimitate concesse a un contratto difettoso o malevolo possono essere usate in seguito per sottrarre quei token. Se vuoi approfondire, leggi Cos’è la mempool?
Come verificare uno smart contract prima di usarlo
- 1Conferma l’indirizzo dal sito ufficiale del progetto e da una fonte indipendente.
- 2Cercalo su un block explorer per vedere la data di creazione, l’attività e se il codice sorgente è verificato.
- 3Controlla gli audit di società note e verifica se i problemi riscontrati sono stati risolti.
- 4Scopri chi controlla le funzioni di amministrazione — un multisig, un timelock o un singolo wallet.
- 5Inizia con piccoli importi e limita le approvazioni dei token alla cifra che ti serve.
La nostra guida su come verificare l’indirizzo ufficiale del contratto di un token illustra nel dettaglio i primi due passaggi.
In sintesi
Uno smart contract è codice autoeseguibile su una blockchain che può custodire e trasferire valore senza intermediari. Questo rende possibile una finanza aperta e programmabile, ma significa anche che bug, poteri di amministrazione nascosti e codice malevolo agiscono in modo istantaneo e irreversibile. Verifica l’indirizzo, capisci chi controlla il contratto e approva solo ciò che ti serve.
Domande frequenti
Gli smart contract sono giuridicamente vincolanti?
Non automaticamente. Uno smart contract è un software che viene eseguito su una blockchain, non un accordo legale di per sé. Alcuni ordinamenti possono riconoscere accordi registrati o eseguiti tramite codice, ma dipende dal Paese e dalle circostanze. Se l’efficacia giuridica è importante, verifica la normativa locale o rivolgiti a un professionista qualificato.
Uno smart contract può essere modificato dopo il deploy?
Il codice distribuito di solito non può essere modificato. Tuttavia, molti progetti usano architetture aggiornabili, come i contratti proxy, che permettono a un amministratore di indirizzare gli utenti verso nuovo codice. Questa flessibilità aiuta a correggere i bug, ma significa anche che qualcuno ha il potere di cambiare le regole. Verifica chi controlla le eventuali chiavi di aggiornamento o di amministrazione.
Quali blockchain supportano gli smart contract?
Ethereum ha reso popolari gli smart contract di uso generale, e molte altre reti li supportano, tra cui BNB Chain, Solana, Avalanche, Cardano e le reti layer 2 di Ethereum. Bitcoin, per scelta progettuale, supporta solo uno scripting limitato. Ogni piattaforma usa linguaggi e strumenti propri, quindi i contratti non sono automaticamente trasferibili dall’una all’altra.
Cosa succede se uno smart contract ha un bug?
Il codice viene eseguito esattamente come è scritto, bug compreso. Gli attaccanti possono sfruttarlo per svuotare i fondi, e le transazioni di solito non possono essere annullate. Alcuni progetti possono mettere in pausa o aggiornare i contratti per limitare i danni, mentre i contratti immutabili non possono essere corretti in alcun modo. Audit e bug bounty riducono questo rischio, ma non lo eliminano.
