Il quadro generale dello sviluppo di Solidity, Ethereum e Blockchain nel 2021
Panoramica delle tecnologie, dei servizi e degli strumenti più importanti che devi conoscere
Ricordo che quando ho iniziato con lo sviluppo di Solidity ero molto confuso da tutti gli strumenti e servizi e da come essi funzionassero in connessione tra loro. Se sei come me, questa panoramica ti aiuterà a capire il quadro generale attuale dello sviluppo di Solidity. Mentre esamineremo i vari aspetti dello sviluppo di Solidity, saranno richieste alcune conoscenze di base del web e della blockchain.
Tecnologie
Se sei un nuovo sviluppatore o non hai affatto familiarità con lo sviluppo web, potresti essere confuso sul modo in cui Solidity funziona in una Dapp (applicazione decentralizzata). Dapp è un’acronimo che deriva da “Decentralised” e “app” e indica un’applicazione che fa uso di tecnologia decentralizzata, nel nostro caso la blockchain Ethereum.
Backend
Il backend è il cuore della tua Dapp. Una Dapp completamente decentralizzata sarà composta solo dai tuoi smart contract Solidity (e molte volte un’interfaccia utente hostata su IPFS o un altro servizio di storage decentralizzato. Quindi il codice che è stato salvato su blockchain funge fondamentalmente da server, immutabile e sempre disponibile.
Solidity
Tecnicamente Solidity o qualche altro linguaggio EVM è l’unica vera tecnologia richiesta per scrivere un Dapp per Ethereum. Scrivi la tua logica in Solidity, distribuisci il contratto sulla blockchain di Ethereum e il gioco è fatto. Facile, veloce… e super scomodo per gli utenti. Ed è per questo che abbiamo bisogno di tutte le altre “parti”. Interagire con un contratto intelligente può essere un problema, tuttavia una buon Dapp può mitigare il problema e anzi rendere l’esperienza piacevole e ripetibile.
Server o IFPS
Anche se hai i tuoi contratti intelligenti come backend, spesso un Dapp avrà ancora un server tradizionale aggiuntivo in esecuzione. Non sempre, ma probabilmente più spesso di quanto pensi. Ci sono molte ragioni per eseguire un server di backend aggiuntivo e dipenderà dal contesto. Un motivo potrebbe essere solo la gestione dei dati degli utenti. In generale, se puoi evitare di avere un server di backend, fallo. Non solo è più facile da gestire, ma è anche la soluzione veramente decentralizzata. Il rovescio della medaglia, potrebbe essere piuttosto costoso archiviare tutti i dati in un contratto intelligente e potresti richiedere funzionalità disponibili solo su un server di backend tradizionale.
Frontend (Interfaccia)
Il frontend è la parte della tua applicazione che viene effettivamente eseguita dal lato dell’utente, in genere un browser web. Consentirà all’utente di interagire con i tuoi contratti intelligenti in modo conveniente.
HTML e CSS
HTML sta per Hypertext Markup Language. Crea la struttura di un sito web, mentre CSS sta per Cascading Stylesheets. Ti consente di rendere più bello un sito web. Se non hai familiarità con i concetti, dai un’occhiata a questa spiegazione.
Javascript
Il codice per scrivere la parte del software che verrà eseguita come frontend è scritto in JavaScript. Tale linguaggio può essere utilizzato anche nel backend con Node.js. Ed è anche il linguaggio più utilizzato per gli strumenti di sviluppo di Solidity, vedi sotto per i dettagli.
Web3
Web3 è una libreria che puoi utilizzare in JavaScript che ti consente di comunicare con i tuoi contratti intelligenti distribuiti. Generalmente utilizzato nel frontend, ma tecnicamente è possibile utilizzarlo anche nel backend. In alternativa, puoi usare ethers.js. Nel frontend gli utenti firmano una nuova transazione con un portafoglio come MetaMask (vedi sotto), mentre nel backend avrai bisogno di una sorta di gestione della chiave privata e poi firmarla tramite ethereumjs-tx.
Tools
Node.js
Avrai bisogno di Node.js come strumento anche se non hai bisogno di un server di backend Node.js. Ti consentirà di eseguire il codice JavaScript senza un browser e molti strumenti per lo sviluppo del codice Solidity sono scritti in JavaScript.
Gestore di pacchetti NPM
Npm sarà assolutamente essenziale per lo sviluppo di Solidity. Ti consente di gestire le dipendenze, installare/aggiornare/rimuovere altri pacchetti (librerie) di cui hai bisogno. Puoi cercare su https://www.npmjs.com/ i pacchetti disponibili. Npm viene già fornito con l’installazione di node.js.
React
React è una libreria JavaScript per la creazione di interfacce utente. Non è affatto l’unica disponibile, ma la più utilizzata nello spazio Ethereum. Rende molto semplice la creazione di interfacce utente interattive. Puoi progettare viste semplici per ogni stato nella tua applicazione e React aggiornerà in modo efficiente solo le parti giuste quando i tuoi dati cambiano. Inoltre, puoi utilizzare il fantastico strumento create-eth-app per iniziare con un’applicazione React funzionante. Insieme a create-eth-app arriva un’integrazione Subgraph che è estremamente utile per interrogare molti dati dai tuoi contratti intelligenti.
Truffle Suite
Lo strumento più importante per la compilazione, la gestione delle distribuzioni dei contratti e l’esecuzione di test automatizzati è sicuramente Truffle. Viene fornito con varie “box” per farti partire e imparare che sono alternative alla create-eth-app, ma includono un’integrazione di Truffle. In generale, ci sono tre modi per farlo:
- Puoi avere repository separati per il tuo backend Solidity e il tuo frontend JavaScript. Per il backend useresti Truffle e per il frontend inizieresti con create-eth-app.
- Puoi avere entrambe le parti in un repository per comodità e ad esempio iniziare con il box Truffle React.
- Puoi concentrarti solo sulla parte di backend, o perché vuoi solo imparare la parte di Solidity o perché in realtà non hai bisogno di un frontend.
Ganache
Fa parte della suite Truffle anche Ganache. Ti consentirà di eseguire una blockchain locale sul tuo computer per test veloci. Come regola generale, se vuoi testare manualmente il tuo Dapp, usa l’applicazione GUI. Se vuoi eseguire test automatici con Truffle, usa la versione ganache-cli e configurala per l’esecuzione automatica prima dei test.
MetaMask
MetaMask è un portafoglio per il tuo browser. Esistono alcune alternative soprattutto per le applicazioni di portafoglio mobile. Tuttavia, per i desktop MetaMask è ancora lo strumento numero 1. Consentirà agli utenti di archiviare i propri account Ethereum, comprese le chiavi private, in modo sicuro all’interno del browser. Quando le tue applicazioni frontend richiedono l’interazione con uno smart contract, userai MetaMask per firmare una transazione e MetaMask inoltrerà la richiesta all’utente per la conferma. Dopo la conferma dell’utente, viene trasmessa una transazione utilizzando il servizio Infura (vedi sotto per Infura). Se vuoi supportare più di MetaMask, puoi integrare Web3Modal.
Etherscan
Etherscan è un sito Web per il monitoraggio delle transazioni Ethereum. È molto utile durante il test per verificare i tuoi contratti. In seguito avrai un modo semplice per comunicare con i tuoi contratti e avere una bella panoramica di ciò che sta accadendo.
Remix
Remix è un IDE basato su browser e può essere utile per provare velocemente del codice usando la VM JavaScript, chiamare, distribuire e testare i contratti in una testnet (o anche mainnet), eseguire debug delle transazioni utilizzando il debugger integrato (funziona meglio nella VM JavaScript)
Buidler
Buidler è uno strumento molto specifico, non essenziale e quindi quasi non ce l’ha fatta in questa lista. Tuttavia, avere tracce di stack complete e un console.log all’interno dei tuoi contratti è semplicemente troppo utile per non essere menzionato qui.
OpenZeppelin
Oltre agli audit di sicurezza, OpenZeppelin offre contratti di riferimento, un SDK e kit di partenza.
Contratti: consiglio vivamente di dare un’occhiata ai contratti. Sono di alta qualità e troverai implementazioni comunemente richieste di cose come token ERC-20 e SafeMath. Ottengono anche revisioni occasionali per tutti i contratti e sono generalmente prudenti anteponendo la sicurezza alla convenienza.
OpenZeppelin SDK: Utile se vuoi avere e gestire contratti aggiornabili. Per avviare il tuo sviluppo, puoi utilizzare uno starter kit simile alle box di Truffle sopra menzionate o create-eth-app, ma offre un’integrazione SDK aggiuntiva.
Servizi
Infura
Infura è un servizio che collega la tua applicazione con una blockchain pubblica (mainnet o testnet). Dopo aver creato un account sul sito Web di Infura e aver aggiunto un progetto, puoi verificare le chiavi API per connettere Web3 e Truffle sulla loro dashboard. In alternativa, puoi eseguire il tuo nodo e connetterti a quello, ma questo può essere costoso, dispendioso in termini di tempo e dovrai preoccuparti della disponibilità del nodo da solo. Tuttavia, questa sarebbe la soluzione preferita per un vero decentramento del network.
Alternative? Sì, uno di questi è QuikNode o Alchemy. Offrono un accesso professionale e affidabile a prezzi economici. Più provider significano anche più decentralizzazione, quindi non usiamo tutti Infura.
Testnet
Puoi eseguire contratti intelligenti localmente con Ganache oppure puoi utilizzare una blockchain pubblica. Se vuoi usare la blockchain principale, sarebbe piuttosto costoso fare i tuoi test qui. Qualsiasi transazione ti costerà gas che dovrai pagare con ETH reale. Ecco perché sono disponibili diversi testnet pubblici:
- Rinkeby
- Kovan
- Ropsten
- Goerli
Il futuro
Sebbene gli strumenti menzionati facciano ancora parte delle configurazioni più comuni, alcune persone stanno già andando verso altre strade. Siamo solo agli inizi dello sviluppo per Dapps e Smart Contracts, gli standard e i workflow cambieranno e si consolideranno nei decenni a venire. Stay tuned!
Bonus: Aziende
Consensys è probabilmente la più grande azienda blockchain in circolazione. Fondata da Joseph Lubin, l’azienda ha investito e accelerato fortemente la blockchain di Ethereum.
Ethereum Foundation è una fondazione svizzera senza scopo di lucro che gestisce fondi per accelerare lo sviluppo e la crscita dello spazio Ethereum.
Web3 Foundation è una fondazione senza scopo di lucro simile, ma con più collegamenti a Parity.
Parity è una società blockchain fondata da Gavin Wood, l’inventore di Solidity. Da allora ha costruito uno dei popolari client Ethereum e ora sta costruendo la prossima generazione di blockchain con Substrate e Polkadot.
Bonus 2: Eventi
Sfortunatamente, a causa dell’attuale situazione COVID-19, sono piuttosto limitati e per lo più virtuali. Speriamo che questo non duri ancora a lungo.
Devcon: la conferenza più grande e migliore per lo spazio Ethereum. Diversi giorni, grandi quantità di grandi eventi collaterali e pieni di persone creative e interessanti.
Edcon: Praticamente come un Devcon più piccolo. L’ultimo all’inizio di aprile di quest’anno ha dovuto essere annullato.
ETH.global: ospita diversi grandi hackathon in tutto il mondo, o in questi giorni uno virtuale, guarda il prossimo evento virtuale HackMoney.
Bonus 3: risorse per l’apprendimento
Ethereum Studio: IDE basato sul Web con tutorial e risorse di aiuto.
ChainShot: diversi corsi online per l’apprendimento della blockchain.
CryptoZombies: una guida interattiva per imparare a programmare Solidity un gioco Zombie.
Ethernauts: Un’altra guida per programmare un gioco di guerra.
Week In Ethereum News: Newsletter settimanale per tenersi aggiornati con lo spazio Ethereum.
Mastering Ethereum Book: Un po’ datato ormai, ma comunque utile per imparare molti concetti.
Bonus 4: comunità di sviluppatori
Ethereum Stackexchange: Community per porre domande agli sviluppatori.
/r/ethdev: il subreddit più grande per gli sviluppatori di Ethereum.
/r/Solidity: subreddit più piccolo, ma più specifico esclusivamente per Solidity.
Gitter: chat room di Gitter di solidità attiva.
SolidityDevelopers: gruppo chat di Telegram per sviluppatori Solidity.
solidity-dev: canale Discord dello sviluppatore Solidity.
Solidity Developers: gruppo Facebook per sviluppatori Solidity.
Sviluppatori Ethereum: gruppo Facebook per sviluppatori Ethereum.
OpenZeppelin Forum: Forum online per tutte le discussioni relative ai contratti OpenZeppelin, SDK o Solidity in generale.
Bonus 5: Lavori
I lavori vengono spesso pubblicati su AngelList, LinkedIn, anzi, Crypto Jobs List, Blocktribe e Gitcoin, ma puoi anche sempre guardare direttamente i siti Web delle aziende o anche Reddit. Il mercato del lavoro è in crescita e ben pagato.
Cos’altro?
C’è ancora molto da dire sulle tecnologie di scalabilità su Layer 2, portafogli mobili, DAO, DAI e altro, molto altro ancora. Il mio obiettivo qui era quello di fornirvi le basi che compongono il quadro generale dello sviluppo di Solidity. Nei seguenti post tratterò molti altri strumenti per aiutarti a diventare un maestro sviluppatore di Solidity. Rimani sintonizzato!
Fammi sapere quali sono gli strumenti più importanti che usi! Se ritieni che qui manchino aspetti importanti, per favore fammelo sapere.
Se hai apprezzato il mio lavoro non mi offrire una birra o altro, fai una donazione a https://www.monasterio.it/ricerca-e-innovazione/sostieni-la-fondazione/ ne sarò sicuramente più felice :)
Stay safe, stay crypto