Ethereum, Smart contract e dApp

non solo finanza e speculazione

Gian Marco Toso

Software Engineer, The Pirate I Was Meant To Be

Gian Marco Toso

@gianmarcotoso

gianmarcotoso

gianmarcotoso.com

polarityb.it

Laurea Magistrale in Ing. Informatica al Politecnico di Torino

Ingegnere del Software, Software Architect e Sviluppatore

🍔 Il Mio Stack 🍔

Docker

PHP/Laravel

"It was working on my machine!"

The monolith is here to stay

NodeJS/TypeScript

Seriously, it's awesome!

React + Redux

The Flux Capacitor!

Ethereum

  • Infrastruttura di calcolo decentralizzata
  • Completamente open source
  • Esegue programmi chiamati smart contracts
  • Sincronizzazione e salvataggio basato su blockchain

Blockchain

  • Macchina a stati Peer to Peer
  • Transizioni di stato rappresentate come transazioni
  • Regole di consenso per validare le transazioni
  • Transazioni inserite in blocchi concatenati
  • Schema di incentivi basato sulla game theory

Bitcoin vs Ethereum

  • Bitcoin è una macchina a stati distribuita
  • Ogni transazione cambia lo stato, che rappresenta la proprietà dei coin
  • Le transazioni sono inserite in blocchi, creati dai partecipanti alla rete secondo regole di consenso prestabilite.

Bitcoin vs Ethereum

  • Ethereum è una macchina a stati distribuita
  • Ogni transazione cambia lo stato, che rappresenta il contenuto di una memoria di archiviazione dati
  • Le transazioni sono inserite in blocchi, creati dai partecipanti alla rete secondo regole di consenso prestabilite.

Data Storage

  • Dati generici (dizionario chiave/valore)
  • Programmi eseguibili (smart contracts)
  • Ogni variazione dei dati salvati sulla blockchain è rappresentato attraverso transazioni
  • Le transazioni sono inserite in blocchi concatenati e sequenziali

Smart Contract

  • Programmi scritti in linguaggi di alto livello (Solidity)
  • Compilati in codice eseguibile e pubblicati sulla blockchain
  • Eseguiti all'interno della Ethereum Virtual Machine, presente su ogni nodo che partecipa alla rete.
  • Turing Complete

Turing Completeness

  • Non è matematicamente possibile determinare se un programma arbitrario, dati i suoi input, terminerà la sua esecuzione (halting problem)
  • Un sistema di esecuzione distribuito turing complete come Ethereum può essere bloccato con un programma che non termina mai

Ether

  • La moneta di scambio usata su Ethereum è l'Ether (ETH)
  • L'unità più piccola di ETH è il Wei
  • Il Gigawei (gwei) è rappresentato da 1 miliardo di Wei (10^9 wei)
  • 1 ETH è rappresentato da 10^18 Wei

GAS

  • Ogni operazione effettuata all'interno di uno Smart Contract ha un costo fisso in Gas.
  • Il costo di esecuzione totale in Gas di uno Smart Contract è dato dalla somma delle operazioni da esso effettuate

GAS

Per chiamare uno contratto è necessario specificare

  • Il costo (in Wei) che si vuole spendere per ciascuna unità di Gas
  • La quantità massima di Gas che si è disposti ad utilizzare per la chiamata la contratto

GAS

  • Al termine dell'esecuzione del contratto, il costo in eccesso viene restituito
  • Se l'esecuzione del contratto fallisce, il Gas utilizzato è comunque consumato

dApps

  • Una dApp è un'applicazione decentralizzata
  • Una dApp è composta da almeno uno Smart Contract e un'interfaccia (web) che permette di interagire con il contratto

dApps

  • L'interazione tra il browser e il contratto avviene attraverso librerie dedicate, come web3.js o ethers.js
  • È necessario avere un Wallet per interagire con la rete Ethereum
  • Il Wallet più usato è MetaMask (ma non è l'unico)

Wallet

  • Un Wallet permette di disporre dei propri fondi (ETH o Tokens) su Ethereum
  • I fondi non sono contenuti nel wallet
  • Il wallet utilizza la chiave pubblica del nostro account per mostrarci i nostri ETH o Tokens
  • Il wallet è in grado di utilizzare la chiave privata legata al nostro account per firmare le transazioni

Tokens

  • Molte dApp emettono dei Token, ovvero delle unità di scambio dedicate a quella specifica dApp
  • I Token funzionano secondo le regole specificate nel contratto, e possono solitamente essere scambiati da un account all'altro
  • I tipi di token più comune sono i Token Fungibili (ERC20) e Non Fungibili (ERC721)

Le dApps oggi

  • Decentralized Finance (DeFi)
  • NFT Marketplaces
  • Videogames

Le dApps domani

  • Supply Chain e Anticontraffazione
  • Organizzazioni Autonome

Anticontraffazione

  • Pear Electronics produce lo smartphone xPhone
  • Gli xPhone vengono assemblati nelle fabbriche di un loro fornitore in Asia
  • Numerosi xPhone vengono rubati dopo la fase di imballaggio e rivenduti sul mercato nero

Esempio ispirato dal progetto vincitore della Blockathon 2018

Anticontraffazione

  • Gli xPhone contraffatti transitano come quelli originali, a volte anche negli stessi container, su pallet differenti
  • Le dogane e gli spedizionieri non hanno modo di distinguerli se non controllando individualmente i pallet uno ad uno

Esempio ispirato dal progetto vincitore della Blockathon 2018

Anticontraffazione

  • La quantità di container che transitano è talmente alta che un controllo puntuale è impossibile.
  • Come si può risolvere il problema grazie ad una dApp?

Esempio ispirato dal progetto vincitore della Blockathon 2018

Anticontraffazione

  • Pear Electronics crea un NFT associato a ciascun telefono prodotto, contenente un digital twin
  • Ad ogni passaggio, il trasportatore o la dogana ricevono gli NFT corrispondenti ai telefoni in transito
  • In assenza di un NFT, il prodotto può considerarsi contraffatto

Esempio ispirato dal progetto vincitore della Blockathon 2018

Anticontraffazione

  • Un digital twin non è falsificabile, in quanto firmato digitalmente dal produttore
  • Gli NFT possono essere trasferiti da un passaggio all'altro attraverso una dApp integrata con il sistema di spedizione o gestione doganale

Esempio ispirato dal progetto vincitore della Blockathon 2018

DAO

  • MyGoodFood è un sistema autonomo che permette di ordinare cibo e bevande da locali e ristoranti e riceverli a domicilio
  • Gli attori che partecipano all'ordine sono il cliente, il ristorante ed il rider. Non sono presenti intermediari.

Esempio ispirato dall'intervista ad Andreas Antonopoulos The Future of Money

DAO

  • Il ristorante si iscrive interagendo con una dApp, che gli permette di inserire le sue informazioni anagrafiche ed il suo menu
  • Il cliente apre una dApp che gli mostra i ristoranti vicini alla sua posizione, ne seleziona uno ed effettua un ordine

Esempio ispirato dall'intervista ad Andreas Antonopoulos The Future of Money

DAO

  • Il cliente assegna l'ordine ad un rider disponibile nei pressi del ristorante, che espone la sua tariffa
  • Il cliente paga tramite dApp l'ordine e la consegna, inviando il denaro allo Smart Contract
  • Il ristorante produce l'ordine e lo consegna al rider

Esempio ispirato dall'intervista ad Andreas Antonopoulos The Future of Money

DAO

  • Il ristorante viene pagato dallo Smart Contract
  • Il rider consegna l'ordine al cliente, il quale conferma la ricezione
  • Il rider viene pagato dallo Smart Contract

Esempio ispirato dall'intervista ad Andreas Antonopoulos The Future of Money

Considerazioni

In un sistema centralizzato

  • È presente un attore centrale che controlla per intero il sistema
  • È necessario avere fiducia nell'attore centrale
  • L'attore centrale può derimere controversie secondo il suo giudizio

Considerazioni

In un sistema decentralizzato

  • Non sono presenti intermediari
  • Si opera in un sistema trustless, completamente trasparente
  • La risoluzione delle controversie non è possibile senza l'intervento di attori aggiuntivi e un sistema di incentivi

Sicurezza

Pubblicare una dApp espone a dei rischi:

  • Una volta pubblicato, il codice è immutabile
  • Servono strategie per migrare a nuove versioni della dApp, per risolvere bug o aggiungere feature
  • Una vulnerabilità mette potenzialmente a rischio i fondi degli utenti della dApp

Sicurezza

Possedere un Wallet richiede molta attenzione:

  • La chiave privata è l'unico modo per accedere ai fondi. Se si perde, i fondi non sono recuperabili, in nessun modo, da nessuno
  • Se la chiave privata viene rubata, i fondi sono persi e non c'è modo di recuperarli

Sicurezza

NON BISOGNA MAI, PER NESSUN MOTIVO, SENZA NESSUNA ECCEZIONE, COMUNICARE A TERZI LA PROPRIA CHIAVE PRIVATA.

NON BISOGNA MAI INTERAGIRE CON NESSUN CONTRATTO SE NON SI È CERTI DI QUELLO CHE SI STA FACENDO.

Scalabilità

Le dApp, oggi, hanno problemi di scalabilità:

  • Il costo del Gas è proporzionale al costo di ETH (molto alto)
  • La piattaforma può processare un numero limitato di transazioni al secondo
  • L'utilizzo di un Wallet è piuttosto complesso e presenta notevoli rischi per gli utenti finali

Scalabilità

  • Per ridurre il costo del Gas e processare più transazioni, stanno venendo sviluppate piattaforme di secondo livello (L2 Platforms)
  • Le piattaforme L2 implementano dei contratti bridge che permettono agli utenti di scambiare ETH con Token da utilizzare su una piattaforma esterna ad ETH

Scalabilità

Le piattaforme L2:

  • possono essere o meno basate su Blockchain
  • possono essere o meno decentralizzate
  • possono implementare sistemi di onboarding di più semplice utilizzo

Il Futuro

  • Ethereum è in continua evoluzione
  • Nel 2022 sarà rilasciato Ethereum V2, che introdurrà numerose evoluzioni tra cui il passaggio ad un algoritmo di mining basato sul Proof of Stake

Il Futuro

  • Stanno anche venendo sviluppate piattaforme alternative simili (come Cardano) o con filosofie differenti (come PolkaDot)

Il Futuro

  • La tecnologia è ancora acerba, ma sta maturando in fretta e sta venendo esplorata e in taluni casi utilizzata da numerosi attori in diversi settori dell'industria

Grazie! :)

Domande?

Made with Slides.com