Che cos'è un contratto intelligente?

Completato

Un contratto intelligente è un programma archiviato all'interno di un blockchain. I contratti intelligenti estendono il blockchain dai dati al codice. Rappresentano un accordo tra parti. Il contratto viene codificato; quando si verifica un'azione, il codice viene eseguito e fornisce una risposta.

Tutti i termini e le condizioni dei contratti vengono definiti a livello di programmazione. Una definizione specifica le regole, i requisiti e le ricompense per i partecipanti al blockchain. Specifica anche la modalità di trasferimento degli asset digitali tra le parti. A ogni contratto intelligente viene assegnato un indirizzo di 20 byte che lo identifica in modo univoco.

I contratti intelligenti vengono eseguiti autonomamente, inviano eventi che attivano transizioni di stato e chiamano funzioni. Sono ideali per la tecnologia blockchain, in quanto consentono a persone che non si conoscono di svolgere le proprie attività nella modalità specificata, in modo sicuro e senza bisogno di intermediari.

I contratti intelligenti sono in genere usati con Ethereum. Ethereum è il primo blockchain programmabile del mondo. Consente la definizione di contratti intelligenti per facilitare il trasferimento di asset digitali, ad esempio gli ether (ETH).

Il linguaggio usato per scrivere i contratti è Solidity. Solidity è Turing completo, ovvero consente di scrivere contratti complessi con modalità di definizione e codifica semplici e chiare.

Poiché ogni transizione di stato viene registrata e non è modificabile, è necessario testare accuratamente il contratto prima di rilasciarlo in un ambiente di produzione. Le correzioni di bug possono essere costose e causare anche danni critici al sistema.

I contratti intelligenti presentano queste proprietà e vantaggi principali:

  • Trasparenza: gli utenti della blockchain possono leggere contratti intelligenti e accedervi usando le API.
  • Immutabilità: l'esecuzione del contratto intelligente crea log che non possono essere modificati.
  • Distribuzione: l'output del contratto viene convalidato e verificato dai nodi nella rete. Gli stati del contratto possono essere resi visibili pubblicamente. In alcuni casi sono visibili anche le variabili "private".

Casi d'uso

I contratti intelligenti possono offrire vantaggi a molti settori e per molti processi. Osservare i casi d'uso seguenti.

Assicurazione: quando si verificano determinati eventi, i contratti intelligenti attivano automaticamente un reclamo semplificando e rendendo più agile l'elaborazione dei reclami. Per determinare l'indennizzo che verrà riconosciuto agli utenti, è quindi possibile registrare i dettagli dei reclami nella blockchain. Questa funzionalità può ridurre i tempi di elaborazione e le percentuali di errore umano.

Voto: i contratti intelligenti possono aiutare a rendere automatico e trasparente il voto. Ogni contratto rappresenta un unico scrutinio, che corrisponde all'identità di un elettore. Poiché un blockchain è immutabile, ovvero non può essere modificato, i voti non possono essere manomessi.

Supply chain: quando gli articoli si spostano nella supply chain, i contratti intelligenti possono registrare la proprietà e verificare in qualsiasi momento il responsabile di un prodotto. In qualsiasi fase, il contratto intelligente può essere usato per determinare esattamente dove devono trovarsi i prodotti. Se un agente della supply chain non riesce a consegnare in tempo, tutte le altre parti sanno dove si è verificato il problema.

Conservazione dei record: molti settori possono usare contratti intelligenti per migliorare la velocità e la sicurezza del mantenimento dei record. La tecnologia blockchain può essere usata per digitalizzare i record e per crittografarli e archiviarli in modo sicuro. L'accesso può anche essere controllato in modo che solo gli utenti autorizzati possano accedere ai record.

Proprietà proprietà: i contratti intelligenti possono registrare chi è proprietario della proprietà. Questo è un modo rapido ed economico per registrare la proprietà. I contratti intelligenti contribuiscono anche a facilitare il trasferimento della proprietà in modo tempestivo e sicuro.

Strumenti per l'uso dei contratti intelligenti

Molti strumenti consentono di sviluppare contratti intelligenti in modo efficace. Le sezioni seguenti illustrano alcuni ambienti di sviluppo integrato (IDE), estensioni e framework che è possibile prendere in considerazione.

IDE

  • Visual Studio Code: editor di codice ridefinito e ottimizzato per la compilazione e il debug di applicazioni Web e cloud moderne. In questo modulo, Visual Studio Code viene usato per tutti gli esercizi.
  • Remix: compilatore e IDE basato su browser che è possibile usare per compilare contratti Ethereum nel linguaggio Solidity e per eseguire il debug delle transazioni. Remix è una soluzione ideale per l'esame dei contratti di esempio. È possibile usarlo per scrivere, testare e distribuire contratti personalizzati. Remix non viene usato in questo modulo, ma è possibile provarlo autonomamente negli esercizi relativi ai contratti.

Estensioni

  • Estensione Truffle for VS Code:questa estensione può semplificare la creazione, la compilazione e la distribuzione di contratti intelligenti nei libri mastri Ethereum. Questa estensione ha un'integrazione predefinita con Truffle, Ganache e altri strumenti e servizi. In questo modulo si userà l'estensione per scrivere e testare contratti intelligenti.

Framework

  • Truffle Suite: usare la suite di strumenti Truffle per testare i contratti Ethereum prima di distribuirli nei ledgger pubblici e sostenere costi reali. Per semplificare il lavoro di sviluppo, sviluppare il codice in locale. La suite di strumenti include Truffle, Ganache e Drizzle. In questo modulo verrà usato Truffle.
  • OpenZeppelin: usare gli strumenti OpenZeppelin per scrivere, distribuire e gestire applicazioni decentralizzate. OpenZeppelin offre due prodotti: la libreria di contratti e l'SDK. OpenZeppelin non viene usato in questo modulo, ma successivamente sarà possibile provarlo per la scrittura di applicazioni blockchain sicure.