INTRODUZIONE AGLI SMART CONTRACT DI ETHEREUM

da

Inizialmente, pensavo che Ethereum fosse una cosa che sarebbe stata usata per scrivere semplici script finanziari. In realtà, la gente sta scrivendo su di essa cose come AUGUR.
Vitalik Buterin

Negli ultimi anni, con l’aumentare di tecnologie basate sulla Blockchain e con la costante nascita di nuove criptovalute, il concetto di Smart Contract ha iniziato a ricorrere sempre più di frequente. Proviamo ad analizzare brevemente cosa sono questi “contratti intelligenti” e perché stanno diventando così importanti ed utilizzati nei più svariati contesti.

Uno Smart Contract è un programma, scritto in un particolare linguaggio di programmazione ( Turing-completo o no ), che viene eseguito come programmato, senza possibilità di censura o manipolazione, dove il codice è legge e con l’obiettivo di facilitare operazioni tra persone ed istituzioni.

Si trovano Smart Contract in molti ambienti.

come funzionano gli smart contract

Esempi di Smart Contract su diverse piattaforme.

Per esempio, Bitcoin utilizza Script, un linguaggio di programmazione molto semplice che trae ispirazione da Forth – altro linguaggio di programmazione sviluppato negli anni ‘60 – scritto attraverso una notazione polacca inversa, basato su stack e processato da sinistra verso destra. Uno Smart Contract in Script è semplicemente una lista di istruzioni Opcodes registrate per ogni transazione. Tuttavia, sebbene gli Smart Contract di Bitcoin siano funzionali rispetto agli obiettivi posti, essi non sono utilizzati così ampiamente. Un motivo potrebbe essere legato al fatto che Script non è un linguaggio Turing-completo, senza possibilità di avere dei cicli nel codice, portandolo ad essere abbastanza limitato.

Attualmente, gli Smart Contract più conosciuti sono quelli di Ethereum, i quali saranno l’obiettivo principale di questa breve discussione. Essi possono essere scritti in vari linguaggi di programmazione quali Solidity, Serpent e LLL. Solidity, il più popolare tra essi, è un linguaggio ad alto livello, influenzato da C++, Python e Javascript. È stato progettato per essere in grado di parlare con la Ethereum Virtual Machine, l’ambiente di esecuzione del byte-code di Ethereum che ogni nodo esegue per essere in grado di inviare e ricevere transazioni.

Uno Smart Contract in Solidity è di questa forma

pragma solidity ^0.4.21;
contract Coin {

// “public” rende le variabili
// accessibili dall’esterno
address public minter;
mapping (address => uint) public balances;

// Gli eventi permettono ai client di
// visualizzare i cambianti nella Blockchain
//  in maniera efficiente
event Sent(address from, address to, uint amount);

// Costruttore che viene eseguito
// solamente quando il contratto viene creato
function Coin() public {
minter = msg.sender;
}

function mint(address receiver, uint amount) public {
// msg.sender è l’indirizzo di colui che fa la transazione
if (msg.sender != minter) return;
balances += amount;
}

function send(address receiver, uint amount) public {
if (balances < amount) return;
balances -= amount;
balances += amount;
emit Sent(msg.sender, receiver, amount);
}

}

Solidity è un linguaggio di programmazione orientato ai contratti. Questo significa che esistono delle parole chiave dedicate, per esempio, a chi esegue transazioni, agli ether inviati e ricevuti ed a molto altro. Non approfondiremo ulteriormente i dettagli tecnici riguardanti la sintassi. Una guida completa si può trovare qui.

Con uno Smart Contract è possibile programmare vari tipi di scenari, da una semplice memorizzazione di dati, all’esecuzione di certe operazioni dopo la ricezione di denaro, da applicazioni decentralizzate (Dapps) a giochi decentralizzati.

come funzionano gli smart contract

CryptoKitties è uno dei primi giochi a livello mondiale a essere basato sulla tecnologia blockchain.

Come tutte le transazioni all’interno di una Blockchain, anche gli Smart Contract sono salvati permanentemente senza alcuna possibilità di poter essere modificati. Questo significa che una volta inviati nella rete e memorizzati, non è più possibile alterarli. Per questo motivo la sicurezza negli Smart Contract è di importanza fondamentale. Basti pensare che essi possono gestire gli ether e quindi anche solo un piccolo errore logico nella loro programmazione può comportare grosse perdite economiche.

Un “famoso” esempio è il dramma di DAO, dove errori implementativi di una parte del codice hanno portato a perdite di milioni di dollari/ether.

Sviluppare gli Smart Contract non è un compito facile. Per aiutare in ciò, esistono alcune best practices che permettono ad un programmatore di sapere come non impostare un contratto, prevenendo così potenziali danni. Ci sono inoltre numerosi strumenti di supporto, come per esempio Truffle nel caso di Ethereum, che permettono di programmare in sicurezza in un ambiente locale in modo da poter testare in tutti i modi possibili gli Smart Contract prima della memorizzazione finale sulla Blockchain.

Gli Smart Contract possono essere uno strumento molto potente in grado sia di creare valore, sicurezza ed efficienza sia di creare caos persino da semplici errori. A tal proposito, è bene prestare particolare attenzione durante la fase di programmazione e di invio sulla rete principale, soprattutto nel caso in cui essi gestiscano dati sensibili o denaro.

TI È PIACIUTO QUESTO ARTICOLO? LEGGI ANCHE:

Trakti: Blockchain al servizio degli Smart Contracts
La Blockchain permissionless e il Bitcoin
Autenticazione: SCRAM-SHA256 feat. DH Key Exchange

Ultimi articoli

AI, MACHINE LEARNING, IOT. LA MIA ESPERIENZA A AWS SUMMIT 2023

AI, MACHINE LEARNING, IOT. LA MIA ESPERIENZA A AWS SUMMIT 2023

Giovedì 22 giugno ero al Milano Convention Center in occasione dell'evento annuale organizzato da Amazon Web Services per promuovere i propri servizi Cloud in continua evoluzione: AWS SUMMIT. In mezzo a un mare di IoT, di Servitization, di Cloud Computing sopra le...

TECNOLOGIA E SOSTENIBILITÀ: DUE PAROLE CON ERIC EZECHIELI

TECNOLOGIA E SOSTENIBILITÀ: DUE PAROLE CON ERIC EZECHIELI

Sostenibilità non può essere solo una parola che fa parte del nostro vocabolario quotidiano, ma vuota nei suoi effetti. La tecnologia ha un ruolo di propulsione in questo senso e può aiutare le aziende a raggiungere obiettivi più sostenibili. Abbiamo fatto una lunga...

RAPPORTO CLUSIT 2023: PRESSIONE ALTISSIMA SULLE REALTÀ INDUSTRIALI

RAPPORTO CLUSIT 2023: PRESSIONE ALTISSIMA SULLE REALTÀ INDUSTRIALI

L’Associazione Italiana per la Sicurezza informatica Clusit, ha presentato nei giorni scorsi l’annuale Report degli incidenti di sicurezza più significativi avvenuti a livello globale (Italia inclusa) nel 2022. Il documento è realizzato con la collaborazione di un...