Smart Contract: una breve introduzione

Francesco Chiapello2023-01-13

Scopri cos'è uno smart contract, come funziona sulla blockchain e la programmazione con Solidity. Una guida introduttiva al mondo dei contratti digitali.

Alla base del funzionamento degli smart contract c’è la blockchain.

È ormai di uso comune citare il nome blockchain nei più svariati contesti, dalla vita di tutti i giorni fino a coinvolgere grandi temi di valore politico ed internazionale.

Però spesso si fa riferimento ad una tecnologia poco compresa, ostica per i più e circondata da un velo di mistero. 

Indice

  1. Blockchain, cosa c’è alla base del funzionamento? 
  2. Oltre la blockchain: Cryptocurrencies e Smart Contract
    1. Come funzionano gli Smart Contract di Ethereum
  3. Quali linguaggi per programmare uno Smart Contrct?
    1. Introduzione alla programmazione con Solidity 
  4. Il futuro dei Contratti Digitali

Blockchain, cosa c’è alla base del funzionamento dei contratti digitali? 

La blockchain appartiene ai cosiddetti DLT, ovvero le Distributed Ledger Technology. Queste tecnologie mettono in pratica il concetto di libro mastro, ossia un registro distribuito, e hanno le seguenti proprietà:

  • anonimo, l’identità dei partecipanti è anonima o pseudo-anonima;
  • unanime, tutti i partecipanti del network sono d’accordo sulla validità di ogni record salvato al suo interno;
  • timestamped, a ogni transazione viene associato il suo timestamp;
  • immutabile, ogni registrazione sulla chain è irreversibile e non può essere modificato;
  • distribuito, tutti i nodi, ovvero i partecipanti della rete, hanno una copia del ledger, il registro, per garantire una completa trasparenza;
  • programmabile, la blockchain è programmabile mediante la creazione di smart contracts.

Struttura centralizzata vs decentralizzata

La blockchain pone le sue basi in tempi più antichi in cui si teneva traccia di informazioni di importanza cruciale tramite forma scritta nei registri.

Quest’ultimi sono costituiti da dati strutturati e scritti sulla base di regole prefissate. Il registro è quindi possibile consultarlo e utilizzarlo ogni qual volta si desideri ottenere conferma consultandone le informazioni in esso contenute.

Oltre la blockchain: Cryptocurrencies e Smart Contract

Tutte le caratteristiche citate sono di fondamentale importanza per il corretto funzionamento di una blockchain. Grazie a queste peculiarità abbiamo assistito alla nascita delle famigerate monete virtuali cryptocurrencies, prima fra tutte: Bitcoin.

Il funzionamento delle valute digitali si basa, ancora una volta, sulla crittografia e sulle tecnologie peer-to-peer decentralizzate che permettono lo scambio di monete virtuale tra i wallet

Le principali monete crypto attualmente in circolazione sono: Bitcoin, Bitcoin Cash, Ripple, Ethereum, Litecoin, Tether, BNB, Dogecoin. Altre meno famose come Dash, Stellar Lumens, Solana.

La lista potrebbe andare avanti a lungo… CoinMarketCap è il sito Web di monitoraggio dei prezzi delle criptovalute più referenziato al mondo e ne traccia attualmente 8958 differenti.

Bitcoin è stata la prima criptovaluta decentralizzata della storia. È nata principalmente con lo scopo di rivoluzionare le transazioni finanziarie con l’obiettivo di renderele: trasparenti, veloci ed a prova di truffa.

D’altro canto invece, nata a opera di Vitalik Buterin nel 2013, Ethereum ha rivoluzionato il mondo delle criptovalute permettendo, oltre agli scambi finanziari, lo sviluppo e la programmazione di contratti digitali.

Ma non è l’unica rivoluzione della Fondazione Ethereum, che nel 2022 ha effettuato il passaggio al sistema di validazione Proof-of-Stake (PoS): The Merge. 

La vera innovazione consiste nel fatto che il validator, ovvero il miner nel contesto Proof-of-Work, convalida un nuovo blocco aggiunto alla blockchain e riceve come ricompensa le fee delle transazioni contenute in quel blocco. Il validator viene scelto casualmente tra tutti i nodi della rete e le possibilità che ha di essere scelto aumentano notevolmente all’aumentare dei token di cui è in possesso.

Il consumo di energia da parte di PoS è lampante siccome i nodi della rete non devono più competere tra loro per aggiudicarsi i token derivanti dalla soluzione dei nuovi blocchi della chain

Come funzionano gli Smart Contract di Ethereum

Gli smart contract sono programmi memorizzati su una blockchain che vengono eseguiti quando sono soddisfatte condizioni predeterminate. Tipicamente sono utilizzati per automatizzare l’esecuzione di un accordo. In questo modo tutti i partecipanti possano essere immediatamente certi dell’esito, senza il coinvolgimento di alcun intermediario terzo.

 

Gli smart contract per funzionare seguono semplici istruzioni “if/when…then…” eseguite da una rete di computer quando le condizioni del contratto sono state soddisfatte e verificate. Queste azioni potrebbero includere il rilascio di fondi alle parti coinvolte nel contratto, l’invio di notifiche o l’emissione di un biglietto. La blockchain si aggiornerà al completamento della transazione, in questo modo non può essere modificata e solo le parti autorizzate possono vederne i risultati.

Quali linguaggi usare per programmare uno Smart Contrct?

Il contratto intelligente può essere programmato da uno sviluppatore, anche se sempre più spesso le organizzazioni che utilizzano la blockchain per il business forniscono modelli, interfacce web e altri strumenti online per semplificare lo sviluppo e la struttura degli smart contract.  

Esistono molteplici linguaggi di programmazione per scrivere uno smart contract primo fra tutti Solidity. È un linguaggio di alto livello orientato agli oggetti e progettato per funzionare sulla Ethereum Virtual Machine (EVM). È influenzato da C++, Python e JavaScript, è tipizzato staticamente, supporta ereditarietà, librerie e tipi complessi definiti dall’utente tra le altre caratteristiche. Con Solidity si possono creare contratti per la gestione di votazionicrowdfundingaste al buio e portafogli multi-firma.

 

Altri linguaggi attualmente in voga per la creazione e il deploy di smart contracts sono Vyper, creato su base python, Yul e DAML.

Introduzione alla programmazione con Solidity 

Di seguito è riportato un breve snippet di codice in Solidity che rappresenta un semplice smart contract che è possibile eseguire sulla EVM di Ethereum.

Snippet codice Smart Contract in Solidity

La fiducia nello smart contract può essere stabilita meglio se il codice sorgente è disponibile. Poiché rendere disponibile il codice sorgente coinvolge sempre problemi legali relativi al copyright, il compilatore Solidity incoraggia l’uso di identificatori di licenza SPDX. Ogni file sorgente dovrebbe iniziare con un commento che ne indichi la licenza e nel nostro caso la licenza definita è MIT, una tra le più note licenze open-source.  

La seconda riga di codice del contratto prevede la direttiva pragma solidity che localmente al file del contratto stesso indica al compilatore quale versione del compilatore Solidity si intende utilizzare per l’analisi del codice sorgente e la sua validazione a fronte delle keyword utilizzate.

A seguire troviamo la tipica keyword presente in moltissimi linguaggi di programmazione ovvero constructor che permette genericamente di istanziare e inizializzare le variabili che ci serviranno durante l’esecuzione del nostro smart contract.

Il creatore dello smart contract scrive la variabile message, del nostro esempio, la prima e unica volta durante la fase di deploy del contratto stesso. Il valore contenuto da message potrà essere successivamente variato tramite la chiamata alla funzione setMessage da parte da chi vorrà utilizzare il contatto e scambiare informazioni con esso.

Dopo che il costruttore è stato eseguito, il codice finale del contratto viene memorizzato sulla blockchain. Questo codice include tutte le funzioni pubbliche ed esterne e tutte le funzioni che sono raggiungibili tramite chiamate di funzione. 

Il futuro dei Contratti Digitali

L'universo degli smart contract è in costante evoluzione e con linguaggi come Solidity. L'innovazione non smette mai di sorprenderci, e il futuro promette ancora molte scoperte nel mondo della programmazione decentralizzata e delle transazioni digitali.

Grazie per averci accompagnato in questa avventura nel mondo degli smart contract e della blockchain.

Per esplorare ulteriormente il mondo della blockchain, delle criptovalute e delle tecnologie decentralizzate, non esitare a seguirci sul blog di Ulixe. Troverai aggiornamenti e approfondimenti su questi affascinanti argomenti.

Francesco Chiapello

Lautore di questo articolo, è uno sviluppatore software Back-End, a cui piace cercare soluzioni semplici e innovative. Lavora in Ulixe dal 2021 e sta portando a termine la Laurea Magistrale in Ingegneria Informatica a Roma. Nel tempo libero ama fare trekking, viaggiare e fare lunghe pedalate con la sua mountain-bike.

Nel blog di Ulixe parla di blockchain, cryptovalute e tecnologie decentralizzate.


See More Posts

background

Be My Eyes: La svolta AI per l’accessibilità

Samuele Capano

background

WWDC 2024: Nuove Librerie per Sviluppatori iOS

Pierpaolo Pignelli

background

Dai Cifrari al Computer: Enigma e la rivoluzione della crittografia

Alessandra Bertini

Show more

Ulixe Group S.r.l. Copyright © Ulixe Group S.r.l. | Lungo Dora Pietro Colletta, 67, 10153, Torino, Italia | Partita IVA IT03305250122 | Numero Rea TO1173020