Come funziona lo smart contract?
Generalmente, nell'ambito delle forme contrattuali tradizionali la firma sul contratto da parte dei soggetti sottoscrittori è autografa: cioè viene fatta di persona, a mano. In un contratto intelligente, invece, sia le identità dei sottoscrittori sia le firme sono digitali, cioè espresse in un formato numerico che può essere compreso e utilizzato solo da specifici programmi.
Mentre in un contratto ordinario l'identità di un soggetto è definita dal nome e cognome, in uno smart contract è, invece, determinata dalla cosiddetta chiave pubblica: un numero composto da centinaia o anche migliaia di cifre.
Per comodità, la chiave pubblica è in genere rappresentata come sequenza alfanumerica, vale a dire composta da cifre e caratteri. Il termine "pubblica" si riferisce al fatto che questa chiave viene resa nota a tutti dal proprietario, essendo un semplice identificativo.
La particolarità di questo sistema è che alla chiave pubblica, visibile a tutti, è associata una seconda sequenza di cifre che deve, invece, rimanere segreta, la chiave privata.
A differenza della chiave pubblica, la chiave privata è nota solo al proprietario e permette di generare una firma digitale per ogni documento (o programma, nel caso degli smart contract). La firma può successivamente essere verificata da chiunque sia in possesso della chiave pubblica del soggetto firmatario, esattamente come se si stesse facendo una perizia calligrafica.
A differenza della firma ordinaria però, la firma digitale non è falsificabile: allo stato attuale delle nostre conoscenze non esiste, infatti, alcun modo di ricavare la chiave privata associata alla chiave pubblica nota. Se provassimo a indovinarla, il numero di tentativi necessari sarebbe così alto da rendere il compito impossibile, anche avendo a disposizione centinaia di computer impegnati in questo scopo. Per questi motivi, non è ad oggi possibile generare firme digitali al posto del legittimo proprietario, impersonandolo.
Per ovvie ragioni di sicurezza, la sequenza di cifre che costituisce la chiave privata deve essere custodita gelosamente e non comunicata ad altri, essendo l'equivalente digitale di una carta di pagamento: chi possiede la chiave privata di una persona può sostanzialmente rubarle l'identità, firmando documenti ed eseguendo transazioni al suo posto.
Normalmente la chiave privata non viene usata in maniera diretta dall'utente perché è molto lunga e non sarebbe pratico inserirla a mano (o ricordarla). Viene, quindi, immagazzinata in un file e usata direttamente dai programmi che ne hanno bisogno per apporre firme. È, tuttavia, buona pratica averne un backup cartaceo che può essere usato per recuperare la chiave in caso di disastro.
Una volta che il contratto intelligente è stato preparato e firmato digitalmente dai contraenti, viene validato e salvato in un registro condiviso tra tutti gli utenti: una blockchain o un ledger distribuito. A questo punto il contratto è immutabile, cioè non può più essere modificato, e diventa operativo.
Da questo momento l'interazione con il contratto potrà avvenire solo secondo regole prestabilite, che non verranno verificate da una terza parte come nei contratti ordinari, ma dal codice dello smart contract stesso.
Di per sé lo smart contract non può accedere a informazioni che si trovano al di fuori della catena di blocchi di cui fa parte. Per ottenere informazioni dal mondo esterno dalla blockchain, si serve di un bot, cioè un programma automatizzato, chiamato "oracolo". L'oracolo recepisce i dati dall'esterno e li comunica allo smart contract. In questo modo, lo smart contract può verificare che le condizioni previste dal contratto siano soddisfatte.
Un esempio di come funziona uno smart contract.
Una catena di hotel decide di affittare le stanze utilizzando uno smart contract. Modifica tutte le serrature, sostituendole con dispositivi smart che, invece di aprirsi con una chiave fisica, sono in grado di verificare le firme digitali e sbloccarsi solo se la verifica va a buon fine.
La catena di hotel pubblica, quindi, uno smart contract contenente la lista di tutte le stanze e i relativi prezzi. A questo punto, un ipotetico cliente può affittare una stanza eseguendo una transazione direttamente sullo smart contract. Per pagare la stanza e, successivamente, sbloccare la porta, l'utente non avrà bisogno di particolari conoscenze tecniche: gli basterà scaricare una semplice applicazione per il cellulare, simile a tante altre utilizzare per l'acquisto di beni e servizi online. La chiave privata creata sarà al sicuro sul nostro smartphone o pc e l'app potrà verificarne al momento l'autenticità. Tuttavia, dietro le quinte, il processo è automatizzato e reso sicuro dall'infrastruttura della blockchain e dello smart contract.
Ma come funziona questo processo? Pagando il prezzo richiesto, il cliente associa la propria chiave pubblica alla stanza che desidera affittare. Poi, arrivato in hotel, apre la stanza passando alla serratura smart una firma digitale che solo lui sarebbe in grado di generare, essendo in possesso della chiave privata corrispondente alla chiave pubblica che ha registrato sullo smart contract.