Vai al contenuto principale
Change page

Introduzione agli smart contract

Cos'è uno smart contract?

Uno "smart contract" è semplicemente un programma che viene eseguito sulla blockchain di Ethereum. È un insieme di codice (le sue funzioni) e dati (il suo stato) che risiede a un indirizzo specifico sulla blockchain di Ethereum.

Gli smart contract sono un tipo di account Ethereum. Questo significa che hanno un saldo e possono essere la destinazione di transazioni. Tuttavia, non sono controllati da un utente, ma vengono distribuiti sulla rete ed eseguiti come programmati. Gli account utente possono quindi interagire con uno smart contract inviando transazioni che eseguono una funzione definita nello smart contract stesso. Gli smart contract possono definire regole, come un contratto normale, e applicarle automaticamente tramite il codice. Di default, gli smart contract non possono essere eliminati e le interazioni con essi sono irreversibili.

Prerequisiti

Se hai appena iniziato o cerchi un'introduzione meno tecnica, ti consigliamo la nostra introduzione agli smart contract.

Assicurati di aver letto le informazioni su account, transazioni e sulla Ethereum Virtual Machine prima di tuffarti nel mondo degli smart contract.

Un distributore automatico digitale

Forse la migliore metafora per uno smart contract è un distributore automatico, come descritto da Nick Szabo (opens in a new tab). Con gli input giusti, è garantito un certo output.

Per ottenere uno snack da un distributore automatico:

denaro + selezione dello snack = snack erogato

Questa logica è programmata nel distributore automatico.

Uno smart contract, come un distributore automatico, ha una logica programmata al suo interno. Ecco un semplice esempio di come apparirebbe questo distributore automatico se fosse uno smart contract scritto in Solidity:

Proprio come un distributore automatico elimina la necessità di un dipendente addetto alla vendita, gli smart contract possono sostituire gli intermediari in molti settori.

Permissionless

Chiunque può scrivere uno smart contract e distribuirlo sulla rete. Devi solo imparare a programmare in un linguaggio per smart contract e avere abbastanza ETH per distribuire il tuo contratto. Distribuire uno smart contract è tecnicamente una transazione, quindi devi pagare il gas nello stesso modo in cui devi pagare il gas per un semplice trasferimento di ETH. Tuttavia, i costi del gas per la distribuzione del contratto sono molto più alti.

Ethereum dispone di linguaggi adatti agli sviluppatori per scrivere smart contract:

  • Solidity
  • Vyper

Maggiori informazioni sui linguaggi

Tuttavia, devono essere compilati prima di poter essere distribuiti, in modo che la macchina virtuale di Ethereum possa interpretare e memorizzare il contratto. Maggiori informazioni sulla compilazione

Componibilità

Gli smart contract sono pubblici su Ethereum e possono essere pensati come API aperte. Questo significa che puoi chiamare altri smart contract nel tuo smart contract per estendere notevolmente ciò che è possibile fare. I contratti possono persino distribuire altri contratti.

Scopri di più sulla componibilità degli smart contract.

Limitazioni

Gli smart contract da soli non possono ottenere informazioni sugli eventi del "mondo reale" perché non possono recuperare dati da fonti offchain. Questo significa che non possono rispondere agli eventi nel mondo reale. Questo è intenzionale. Affidarsi a informazioni esterne potrebbe compromettere il consenso, che è importante per la sicurezza e la decentralizzazione.

Tuttavia, è importante che le applicazioni blockchain siano in grado di utilizzare dati offchain. La soluzione sono gli oracoli, che sono strumenti che acquisiscono dati offchain e li rendono disponibili agli smart contract.

Un'altra limitazione degli smart contract è la dimensione massima del contratto. Uno smart contract può avere una dimensione massima di 24KB, altrimenti esaurirà il gas. Questo limite può essere aggirato utilizzando Il Diamond Pattern (opens in a new tab).

Contratti multisig

I contratti multisig (a firma multipla) sono account smart contract che richiedono più firme valide per eseguire una transazione. Questo è molto utile per evitare singoli punti di vulnerabilità per i contratti che detengono quantità sostanziali di ether o altri token. I multisig dividono anche la responsabilità per l'esecuzione del contratto e la gestione delle chiavi tra più parti e impediscono che la perdita di una singola chiave privata porti alla perdita irreversibile di fondi. Per questi motivi, i contratti multisig possono essere utilizzati per la semplice governance delle DAO. I multisig richiedono N firme su M possibili firme accettabili (dove N ≤ M e M > 1) per essere eseguiti. N = 3, M = 5 e N = 4, M = 7 sono comunemente usati. Un multisig 4/7 richiede quattro firme valide su sette possibili. Questo significa che i fondi sono ancora recuperabili anche se si perdono tre firme. In questo caso, significa anche che la maggioranza dei detentori di chiavi deve essere d'accordo e firmare affinché il contratto venga eseguito.

Risorse sugli smart contract

Contratti OpenZeppelin - Libreria per lo sviluppo sicuro di smart contract.

Letture consigliate

Tutorial: Firme degli smart contract (EIP-1271) su Ethereum

Ultimo aggiornamento della pagina: 25 febbraio 2026