fbpx

INTRODUZIONE AGLI SMART CONTRACT DI ETHEREUM

Insight

INTRODUZIONE AGLI SMART CONTRACT DI ETHEREUM

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[receiver] += amount;
}

function send(address receiver, uint amount) public {
if (balances[msg.sender] < amount) return;
balances[msg.sender] -= amount;
balances[receiver] += 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.

2018-05-03T16:41:57+00:00 Scritto da |Categories: Insight|Tags: , |

About the Author:

ULTIMI ARTICOLI

Scritto da | dicembre 12, 2018|

GLI SCENARI FINTECH DEL FUTURO PROSSIMO RACCONTATI DA ENZO SISTI

Leggi di più

Scritto da | novembre 30, 2018|

ENTERPRISE SERVICE BUS: COME UTILIZZARLO

Leggi di più

Scritto da | novembre 26, 2018|

WEB SUMMIT 2018

Leggi di più