Il linguaggio di programmazione di Ethereum: Solidity

Solidity: Il linguaggio di programmazione di Ethereum

Solidity è il linguaggio di programmazione con cui vengono sviluppati gli smart contract su Ethereum. E’ stato sviluppato nel 2014 da Gavin Wood, uno dei co-fondatori di Ethereum.
L’intento era di fornire un linguaggio di programmazione adatto alla scrittura di smart contract, cioè programmi autoeseguibili che operano su blockchain.

Non hai bene idea di che cosa sia un linguaggio di programmazione, uno smart contract e nemmeno come Ethereum esegua i suoi smart contract? Non preoccuparti, siamo qui proprio per questo. Andiamo!

Indice argomenti

1. Che cosa è un linguaggio di programmazione?

Un linguaggio di programmazione è un insieme di regole e istruzioni che permettono agli sviluppatori di scrivere programmi per computer. È simile a un linguaggio umano, ma con regole specifiche. I computer elaborano le informazioni in sistema binario, utilizzando solo 0 e 1. Prima che i programmi diventino questi 0 e 1, vengono convertiti attraverso vari passaggi, tra cui l’uso di un linguaggio di programmazione. Il linguaggio di programmazione funge da intermediario fra il programmatore ed il computer, permettendo all’uomo di comprendere e farsi comprendere dalla macchina.
Per capire meglio, immagina di voler dare delle istruzioni a un bimbo. Se vuoi che il bimbo prenda un bicchiere d’acqua senza combinare guai, dovresti spiegargli passo dopo passo cosa fare, come ad esempio:

  • Vai in cucina
  • Prendi una sedia su cui salire per raggiungere lo scaffale
  • Trova un bicchiere sullo scaffale
  • Posalo sul banco della cucina
  • Scendi con attenzione dalla sedia
  • Prendi il bicchiere e riempilo d’acqua
  • Porta il bicchiere al tavolo facendo attenzione a tenerlo diritto

Queste istruzioni sono precise e specifiche, proprio come le istruzioni in un linguaggio di programmazione. Se qualche passaggio è omesso o non è chiaro, il bimbo non riuscirà a completare il compito correttamente e si bloccherà ad un certo punto, trovandosi in difficoltà. Allo stesso modo, un linguaggio di programmazione deve dare istruzioni complete e coerenti, che seguano precise logiche, al fine che tutto funzioni come desiderato.

Il linguaggio di programmazione come l'insieme delle note musicali

Immagina un linguaggio di programmazione come l’insieme di tutte le note musicali. Avere tutte le note ti consente di inserirle nei righi con precise istruzioni su come devono essere suonate. Mettendo assieme tutte le note, ottieni una partitura: essa contiene tutte le note e le istruzioni che i musicisti possono utilizzare per eseguire un pezzo musicale, che potresti pensare come un programma. Ogni strumento ha la sua linea di note e indicazioni su quando e come suonare, proprio come ogni componente hardware di un computer ha le sue funzioni da svolgere.
Allo stesso modo, un linguaggio di programmazione è un insieme di istruzioni precise che dicono al computer cosa fare. Proprio come una partitura utilizza simboli musicali e termini tecnici che i musicisti devono comprendere, un linguaggio di programmazione utilizza una sintassi e un vocabolario specifici che il computer può interpretare ed eseguire.

Componenti della metafora musicale:

  1. Note musicali: le note musicali sono come le singole istruzioni di un programma. Ogni nota indica un’azione specifica che un musicista deve compiere, come suonare un certo tasto o pizzicare una corda. Analogamente, ogni riga di codice in un linguaggio di programmazione rappresenta un’operazione specifica che il computer deve eseguire.
  2. Strumenti musicali: gli strumenti musicali sono paragonabili ai componenti hardware o ai moduli software del computer. Ogni strumento in un’orchestra ha un ruolo specifico e produce suoni unici, proprio come ogni componente hardware o software ha una funzione specifica nel sistema informatico.
  3. Compositore: il compositore rappresenta il programmatore. Il compositore scrive la partitura coordinando i diversi strumenti per creare una sinfonia armoniosa. Allo stesso modo, il programmatore scrive il codice e coordina le diverse parti del programma per far sì che funzionino insieme correttamente, assicurandosi che tutte le istruzioni siano scritte nell’ordine e nel modo giusto.
  4. Partitura: la partitura nel suo insieme è come il codice sorgente completo di un programma. Contiene tutte le istruzioni necessarie per eseguire il pezzo musicale, comprese le note per ciascun strumento e le indicazioni per il direttore d’orchestra. Analogamente, il codice sorgente di un programma contiene tutte le istruzioni che il computer deve eseguire per compiere un compito specifico.
  5. Direttore d’orchestra: il direttore d’orchestra è rappresentato dal processore, che ha il compito di eseguire la partitura. Il processore, come il direttore, deve essere in grado di comprendere il “linguaggio” della partitura e tradurlo in azioni precise e sincronizzate, garantendo che il risultato finale sia esattamente quello previsto dal compositore.

Se vuoi creare una sinfonia con un’orchestra, devi scrivere una partitura chiara e dettagliata che i musicisti possano seguire. Ogni nota, ogni strumento e ogni direttiva devono essere accuratamente definiti per garantire che il risultato finale sia armonioso e coerente: questi elementi corrispondono nella nostra metafora al linguaggio di programmazione stesso. Allo stesso modo, se vuoi creare un programma che funzioni correttamente, devi scrivere un codice chiaro e dettagliato in un linguaggio di programmazione che il computer possa eseguire. Ogni istruzione deve essere precisa e comprensibile per assicurare che tutte le parti del programma operino insieme senza intoppi, creando un risultato finale funzionante e privo di errori.

2. Gli smart contract

Più che di “contratto” sarebbe giusto parlare in realtà di “programma”.
Infatti, uno smart contract è un programma salvato ed eseguito su una blockchain. Quando si verificano determinate condizioni, questo programma aggiorna e modifica le informazioni salvate sul registro distribuito, eseguendo transazioni e cambiando lo “stato” della blockchain.
Per vedere qualche esempio e capire nel dettaglio a cosa ci riferiamo quando parliamo di smart contract, ti consigliamo di leggere questo nostro articolo scritto ad hoc. Per ora, tutto ciò che ci interessa sapere è che gli smart contract, in quanto codice informatico, sono scritti con linguaggi di programmazione. Per Ethereum e tutte le blockchain EVM (Ethereum Virtual Machine) il linguaggio utilizzato è Solidity. Ethereum dunque usa un proprio linguaggio specifico, introdotto dagli sviluppatori di Ethereum stesso.

Il linguaggio degli smart contract

Esistono altri linguaggi di programmazione utilizzati per scrivere smart contract su altre blockchain. Facciamo qualche esempio:

  • Solana usa il linguaggio Rust
  • Cardano usa Plutus
  • Aptos usa Move
  • Sui usa Move

Mentre, come dicevamo prima, tutte le blockchain EVM compatibili utilizzano Solidity. In questa lista troviamo la BNB Chain, Avalanche, Fantom, Polygon ma anche tutti i Layer2 come Arbitrum, Optimism e ZkSync.

Come ti sarai reso conto, la maggior parte delle blockchain che conosci utilizza Solidity che possiamo affermare essere il linguaggio di programmazione più utilizzato per sviluppare prodotti su blockchain. Questo è il motivo per cui abbiamo deciso di scrivere questo articolo: al momento, è l’ingrediente essenziale (riprendendo la metafora culinaria) con cui poter preparare la grande maggioranza delle dApp.


Per concludere, è sulle blockchain e negli smart contract sviluppati in Solidity che viene gestita la maggior parte del valore in DeFi (dove c’è dunque il maggior TVL – total value locked) e questo conferisce al linguaggio anche una maggiore importanza dal punto di vista della fiducia nel riporre valore in questi ecosistemi.
Se desideri esplorare un contratto scritto in Solidity, ti proponiamo di utilizzare EtherScan. EtherScan è l’interfaccia più utilizzata per visualizzare le attività sulla blockchain, comprese le transazioni, i blocchi e i contratti. Gli Smart Contract verificati sono stati caricati direttamente in bytecode sulla blockchain e sono consultabili da chiunque. Su EtherScan ne troverai tantissimi!

Un linguaggio per sviluppare programmi open source

Una delle caratteristiche distintive di Solidity è il suo ruolo nel promuovere lo sviluppo di programmi open source. Ma cosa significa esattamente?
Un software è open source quando il suo codice sorgente è reso disponibile pubblicamente, permettendo a chiunque di esaminarlo, modificarlo e distribuirlo. Questa trasparenza e questa accessibilità favoriscono la collaborazione e l’innovazione, poiché sviluppatori di tutto il mondo possono contribuire al miglioramento del programma in questione.
Solidity è un linguaggio open-source, quindi il suo codice sorgente è disponibile a tutti. Anche JavaScript e Python sono linguaggi open-source. Ma la peculiarità di Solidity non si ferma qui: è anche uno strumento per creare a sua volta programmi open source.
Grazie alla natura ed alla filosofia di Solidity, gli sviluppatori possono scrivere smart contract trasparenti e verificabili da tutti. Su EtherScan, come hai visto se hai cliccato il link, è possibile leggere l’intero codice di uno smart contract verificato.
Questo è cruciale per la fiducia e la sicurezza nelle applicazioni decentralizzate (dApp) su Ethereum, e rende Solidity un linguaggio open-source per sviluppare a sua volta programmi open-source. Con queste informazioni è evidente come il fondamento base di Ethereum, ovvero il suo linguaggio di programmazione, rispetti in toto le caratteristiche della blockchain, e quindi di Ethereum stesso. Se vuoi fare un passo indietro e capire bene cosa sia la blockchain, puoi leggere questo articolo.

3. Per chi vorrebbe imparare Solidity

Questo articolo è stato scritto rivolgendosi a chi ha sentito poche volte parlare di Solidity, blockchain e smart contract ma ci teniamo a fornire alcune informazioni in più anche per chi vuole approfondire l’argomento.

Come il linguaggio stesso, anche il suo studio ed il suo approccio sono “open source”. Troverai diverse community di sviluppatori e fonti da cui poter studiare l’intero linguaggio dal punto di vista tecnico. Sicuramente, la fonte più affidabile ed attendibile è Ethereum stessa. A questo link troverai nel menu anche la voce “BUILD”, dedicata agli sviluppatori. Ci sono risorse dedicate a chi approccia per la prima volta il linguaggio, manuali scritti da sviluppatori per sviluppatori e la documentazione completa per comprendere il linguaggio e la sua applicazione alla blockchain. Puoi trovare anche tantissime informazioni sul sito ufficiale di Solidity, che puoi trovare qui. Inoltre, tantissimi blog, communities e sviluppatori ti stanno aspettando per unirti alla famiglia di builders su Ethereum!

Vuoi esplorare le potenzialità di Solidity e capire come gli smart contract possono rivoluzionare il tuo business? KNOBS è il partner ideale per guidarti in questo percorso. Con la nostra ampia esperienza in Web3 e sistemi blockchain, siamo pronti a supportarti nello sviluppo e nell’implementazione di soluzioni su Ethereum. Contattaci per una consulenza gratuita e inizia a trasformare le tue idee in realtà concrete. 

Al prossimo articolo!

Vuoi scoprire di più sulla tecnologia blockchain
e su come puo' far crescere il tuo business?

Oppure iscriviti alla newsletter qui sotto!

|   Chi siamo

KNOBS è una società di sviluppo software specializzata in tecnologia blockchain. Dal 2014.

Logo KNOBS S.r.l. a part of SG Company SB

|   KNOBS srl

Via Cechov, 48
20151 Milano (MI) – Italia
info@knobs.it
knobs@legalmail.it
P. IVA 08560240965
SDI SVXEWK3

|   Orari di apertura

Dal lunedì al venerdì 9.00 – 18.00

|   Newsletter

Iscriviti alla newsletter e ricevi il nostro PDF Blockchain for beginners.

|   Seguici

|   Certificazioni