Il libro «Creazione di smart contract Solidity per il blockchain Ethereum. Guida pratica»

Il libro «Creazione di smart contract Solidity per il blockchain Ethereum. Guida pratica»
Per oltre un anno ho lavorato al libro "Creazione di smart contract Solidity per la blockchain Ethereum. Guida pratica", e ora questo lavoro è completato, e il libro è pubblicato ed è disponibile su Litres.

Spero che il mio libro aiuti a iniziare rapidamente la creazione di smart contract Solidity e applicazioni decentralizzate DApp per la blockchain Ethereum. È composto da 12 lezioni con esercizi pratici. Completandoli, il lettore potrà creare i propri nodi locali Ethereum, pubblicare smart contract e invocare i loro metodi, scambiare dati tra il mondo reale e gli smart contract tramite oracoli, e lavorare con la rete di test Rinkeby.

Il libro è destinato a chiunque sia interessato alle tecnologie avanzate nel campo delle blockchain e voglia acquisire rapidamente conoscenze che permettano di intraprendere lavori interessanti e promettenti.

Di seguito troverai il sommario e il primo capitolo del libro (anche su Litres sono disponibili estratti del libro). Spero di ricevere feedback, commenti e suggerimenti. Tenterò di tenerne conto nella preparazione della prossima edizione del libro.

IndiceIntroduzioneIl nostro libro è destinato a coloro che vogliono non solo comprendere i principi del funzionamento della blockchain di Ethereum, ma anche acquisire competenze pratiche nella creazione di applicazioni decentralizzate DApp utilizzando il linguaggio di programmazione Solidity per questa rete.

È meglio non limitarsi a leggere questo libro, ma lavorarci, svolgendo i compiti pratici descritti nelle lezioni. Per lavorare avrete bisogno di un computer locale, di un server virtuale o cloud con sistema operativo Debian o Ubuntu installato. Inoltre, per completare molti esercizi, è possibile utilizzare un Raspberry Pi.

Nella prima lezione esamineremo i principi di funzionamento della blockchain di Ethereum e la terminologia fondamentale, oltre a discutere dove è possibile utilizzare questa blockchain.

Obiettivo nella seconda lezione creeremo un nodo di una blockchain di Ethereum privata per attività future durante questo corso su un server Ubuntu e Debian. Esamineremo le peculiarità dell'installazione degli strumenti principali, come geth, che permette il funzionamento del nodo della nostra blockchain, e il demone di storage decentralizzato swarm.

Terza lezione ti insegnerà a fare esperimenti con Ethereum su un economico microcomputer Raspberry Pi. Installerai il sistema operativo (OS) Raspbian sul Raspberry Pi, l'utility Geth, che consente il funzionamento di un nodo della blockchain, e anche il demone di archiviazione decentralizzata Swarm.

Quarto lezione è dedicata agli account e alle unità di criptovaluta nella rete Ethereum, oltre ai modi di trasferire fondi da un account all'altro tramite la console Geth. Imparerai a creare account, avviare transazioni di trasferimento fondi, ottenere lo stato della transazione e la sua ricevuta.

Nella quinta lezione imparerai a conoscere i contratti intelligenti nella rete Ethereum, scoprirai come vengono eseguiti dalla macchina virtuale Ethereum.

Creerai e pubblicherai nella rete Ethereum privata il tuo primo contratto intelligente e imparerai a chiamarne le funzioni. Per questo utilizzerai l'ambiente di sviluppo Remix Solidity IDE. Inoltre, imparerai a installare e utilizzare il compilatore batch solc.
Parleremo anche del cosiddetto Application Binary Interface (ABI) e ti insegneremo ad usarlo.

Sesta lezione dedicato alla creazione di script JavaScript che operano sotto Node.js e gestiscono operazioni con contratti smart in Solidity.

Installerete Node.js su sistemi operativi Ubuntu, Debian e Rasberian, scriverete script per pubblicare contratti smart su una rete Ethereum locale e chiamare le sue funzioni.

Inoltre, imparerete a trasferire fondi tra account normali e a depositarli su account di contratti smart tramite script.

Nella settima lezione imparerete a installare e utilizzare l'ambiente integrato Truffle, molto popolare tra gli sviluppatori di contratti smart Solidity. Creerete script JavaScript che chiamano le funzioni dei contratti utilizzando il modulo truffle-contract e testerete il vostro contratto smart con Truffle.

L'ottava lezione è dedicata ai tipi di dati di Solidity. Scriverete contratti smart che operano con tipi di dati come numeri interi firmati e non firmati, numeri con segno, stringhe, indirizzi, variabili di tipi complessi, array, enumerazioni, strutture e dizionari.

Nella nona lezione Ti avvicinerai un passo in più alla creazione di smart contract per la rete principale di Ethereum. Imparerai a pubblicare contratti utilizzando Truffle su una rete privata Geth e sulla rete di test Rinkeby. Il debugging di uno smart contract sulla rete Rinkeby è molto utile prima della pubblicazione sulla rete principale: qui tutto è quasi reale, ma gratuito.

Durante la lezione creerai un nodo sulla rete di test Rinkeby, lo rifornirai di fondi e pubblicherai uno smart contract.

Lezione 10 è dedicata agli archivi distribuiti di dati Ethereum Swarm. Utilizzando archivi distribuiti, risparmi sui costi di storage di grandi volumi di dati nella blockchain di Ethereum.

In questa lezione creerai un archivio Swarm locale, eseguirai operazioni di scrittura e lettura di file e cataloghi di file. Inoltre, imparerai a lavorare con il gateway pubblico Swarm, scriverai script per accedere a Swarm da Node.js e utilizzerai il modulo Perl Net::Ethereum::Swarm.

L'obiettivo della lezione 11 — imparare a lavorare con i contratti intelligenti Solidity utilizzando il popolare linguaggio di programmazione Python e il framework Web3.py. Installerai questo framework, scriverai script per la compilazione e la pubblicazione di un contratto intelligente, nonché per l'invocazione delle sue funzioni. Web3.py verrà utilizzato sia in modo autonomo che insieme all'ambiente di sviluppo integrato Truffle.

Nella lezione 12 imparerai a trasferire dati tra contratti intelligenti e il mondo reale utilizzando gli oracoli. Questo ti sarà utile per ottenere dati da siti web, dispositivi IoT, vari strumenti e sensori, e inviare dati dai contratti intelligenti a questi dispositivi. Nella parte pratica della lezione creerai un oracolo e un contratto intelligente che riceve il tasso di cambio attuale USD in rubli dal sito della Banca Centrale della Federazione Russa.

Lezione 1. Introduzione alla blockchain e alla rete EthereumObiettivo della lezione: conoscere i principi di funzionamento della blockchain Ethereum, le sue aree di applicazione e la terminologia di base.
Attività pratiche: non sono previste in questa lezione.

Oggi è difficile trovare uno sviluppatore software che non abbia mai sentito parlare della tecnologia blockchain, delle criptovalute, del bitcoin, delle ICO (offerte iniziali di monete), dei contratti smart e di altri concetti e termini connessi al blockchain.

La tecnologia blockchain apre nuovi mercati e crea posti di lavoro per i programmatori. Se padroneggerai tutte le sfumature delle tecnologie delle criptovalute e dei contratti smart, non dovresti avere problemi ad applicare queste conoscenze nella pratica.

È importante dire che intorno alle criptovalute e ai blockchain ci sono molte speculazioni. Lasceremo da parte le discussioni sui cambiamenti dei tassi delle criptovalute, sulla creazione di schemi piramidali e sulle complessità della legislazione delle criptovalute. Nel nostro corso di formazione ci concentreremo principalmente sugli aspetti tecnici dell'applicazione dei contratti smart sulla blockchain di Ethereum e nello sviluppo di cosiddette applicazioni decentralizzate (DApp).

Che cos'è la blockchain

La blockchain è una catena di blocchi di dati collegati tra loro in un modo specifico. All'inizio della catena si trova il primo blocco, chiamato blocco primario (genesis block) o blocco di genesi. Seguono il secondo, il terzo e così via.

Tutti questi blocchi di dati vengono automaticamente duplicati su numerosi nodi della rete blockchain. In questo modo, viene garantito un storage decentralizzato dei dati della blockchain.
Puoi immaginare un sistema blockchain come un gran numero di nodi (server fisici o virtuali) connessi in rete e che replicano tutte le modifiche nella catena di blocchi di dati. È come un gigantesco computer multiservitore, dove i nodi di quel computer (server) possono essere distribuiti in tutto il mondo. E anche tu puoi aggiungere il tuo computer alla rete blockchain.

Database distribuito

La blockchain può essere vista come un database distribuito, replicato su tutti i nodi della rete blockchain. In teoria, la blockchain rimarrà funzionante finché c'è almeno un nodo attivo che conserva tutti i blocchi della blockchain.

Registro dei dati distribuito

La blockchain può essere vista come un registro distribuito di dati e operazioni (transazioni). Un altro termine per questo registro è libro mastro.

In un registro distribuito si possono aggiungere dati, ma non è possibile modificarli o eliminarli. Questa impossibilità si raggiunge, tra l'altro, con l'uso di algoritmi crittografici, di algoritmi specifici per l'aggiunta di blocchi alla catena e di memorizzazione decentralizzata dei dati.

Quando si aggiungono blocchi e si svolgono operazioni (transazioni) vengono utilizzate chiavi private e pubbliche. Queste limitano gli utenti della blockchain, fornendo loro accesso solo ai propri blocchi di dati.

Transazioni

La blockchain memorizza informazioni sulle operazioni (transazioni) all'interno di blocchi. Le transazioni vecchie, già completate, non possono essere annullate o modificate. Le nuove transazioni vengono memorizzate in nuovi blocchi aggiunti.

In questo modo, nella blockchain può essere registrata inalterata l'intera storia delle transazioni. Pertanto, la blockchain può essere utilizzata, ad esempio, per la conservazione sicura delle operazioni bancarie, delle informazioni sui diritti d'autore, e della storia dei cambi di proprietà degli immobili, ecc.

La blockchain di Ethereum contiene i cosiddetti stati del sistema. Durante l'esecuzione delle transazioni, lo stato cambia dallo iniziale a quello attuale. Le transazioni vengono registrate nei blocchi.

Blockchain pubblici e privati

È importante notare che quanto detto è vero solo per le cosiddette reti pubbliche blockchain, che non possono essere controllate da alcun soggetto fisico o giuridico, organi statali o governi.
Le cosiddette reti private blockchain sono sotto il pieno controllo dei loro creatori, e qui è possibile tutto, ad esempio la completa sostituzione di tutti i blocchi della catena.

Applicazioni pratiche della blockchain

A cosa può servire la blockchain?

In breve, la blockchain consente di effettuare operazioni (transazioni) in modo sicuro tra persone o aziende che non si fidano l'una dell'altra. I dati registrati nella blockchain (transazioni, dati personali, documenti, attestati, contratti, fatture, ecc.) non possono essere falsificati o modificati dopo la registrazione. Pertanto, sulla base della blockchain è possibile creare, ad esempio, registri distribuiti affidabili di vari tipi di documenti.

Certo, sai che i sistemi di criptovaluta sono costruiti sulla base della tecnologia blockchain, destinati a sostituire le tradizionali monete cartacee. Le monete cartacee vengono anche definite fiat (da Fiat Money).
La blockchain garantisce la conservazione e l'immutabilità delle transazioni registrate nei blocchi, motivo per cui può essere utilizzata per creare sistemi di criptovaluta. Essa contiene l'intera cronologia dei trasferimenti di fondi crittografici tra diversi utenti (account), con ogni operazione tracciabile.

Sebbene le operazioni all'interno dei sistemi di criptovaluta possano essere anonime, il prelievo di criptovaluta e il suo scambio in denaro fiat portano generalmente alla rivelazione dell'identità del proprietario dell'attivo crittografico.

I cosiddetti smart contract, che rappresentano un software funzionante sulla rete Ethereum, consentono di automatizzare il processo di conclusione di contratti e la supervisione del loro adempimento. Questo è particolarmente efficace se il pagamento viene effettuato in criptovaluta Ether.

La blockchain di Ethereum e gli smart contract di Ethereum, scritti nel linguaggio di programmazione Solidity, possono essere utilizzati, ad esempio, in settori come:

  • un'alternativa alla notarizzazione dei documenti;
  • conservazione del registro degli immobili e delle informazioni sulle operazioni immobiliari;
  • conservazione delle informazioni sui diritti d'autore per le opere di proprietà intellettuale (libri, immagini, opere musicali, ecc.);
  • creazione di sistemi di voto indipendenti;
  • settore finanziario e attività bancaria;
  • logistica su scala internazionale, monitoraggio del movimento delle merci;
  • conservazione dei dati personali come equivalente ai sistemi di identità;
  • transazioni sicure nel campo commerciale;
  • archiviazione dei risultati di esami medici, nonché della storia delle procedure assegnate;

Problemi con la blockchain

Ma, naturalmente, non è tutto così semplice come potrebbe sembrare!

Ci sono problemi con la verifica dei dati prima della loro aggiunta alla blockchain (ad esempio, sono autentici?), problemi di sicurezza nel software di sistema e applicativo utilizzato per lavorare con la blockchain, problemi con la possibilità di utilizzare metodi di ingegneria sociale per rubare l'accesso ai portafogli di criptovalute, ecc.

Ancora una volta, se si parla di un blockchain privato di proprietà di una persona o di un'organizzazione, piuttosto che di un blockchain pubblico con nodi sparsi in tutto il mondo, il livello di fiducia sarà al massimo pari al livello di fiducia in quella persona o organizzazione.

È inoltre importante considerare che i dati registrati sulla blockchain diventano accessibili a tutti. In questo senso, la blockchain (soprattutto quella pubblica) non è adatta per memorizzare informazioni riservate. Tuttavia, il fatto che le informazioni sulla blockchain non possano essere modificate può aiutare a prevenire o indagare vari tipi di frodi.

Le applicazioni decentralizzate di Ethereum saranno più comode se si paga per il loro utilizzo con criptovaluta. Più persone possiedono criptovalute o sono disposte ad acquistarle, maggiore sarà la popolarità delle applicazioni DApp e dei contratti intelligenti.

Tra i problemi comuni della blockchain che ostacolano la sua applicazione pratica, si possono menzionare la limitata velocità di aggiunta di nuovi blocchi e il costo relativamente alto delle transazioni. Tuttavia, la tecnologia in questo ambito sta progredendo attivamente e ci sono speranze che i problemi tecnici verranno risolti nel tempo.

Un altro problema è che i contratti intelligenti della blockchain Ethereum operano in un ambiente isolato di macchine virtuali e non hanno accesso ai dati del mondo reale. In particolare, il programma del contratto intelligente non può leggere i dati da siti web o dispositivi fisici (sensori, contatti, ecc.), né può inviare dati a dispositivi esterni. Discuteremo di questo problema e dei modi per risolverlo in una lezione dedicata ai cosiddetti Oracoli — intermediari informativi dei contratti intelligenti.

Ci sono anche delle restrizioni legali. In alcuni paesi, ad esempio, è vietato utilizzare le criptovalute come mezzo di pagamento, ma è possibile possederle come un attivo digitale, simile ai titoli. Tali attivi possono essere acquistati e venduti in borsa. In ogni caso, quando si crea un progetto che lavora con le criptovalute, è necessario familiarizzare con la legislazione del paese sotto la cui giurisdizione rientra il vostro progetto.

Come si forma la catena di blocchi

Come già accennato, la blockchain è una semplice catena di blocchi di dati. Prima si forma il primo blocco di questa catena, poi si aggiunge il secondo e così via. Si presume che i dati delle transazioni siano memorizzati nei blocchi e aggiunti all'ultimo blocco.

Nella Fig. 1.1 abbiamo mostrato la variante più semplice della sequenza di blocchi, dove il primo blocco fa riferimento al successivo.

Il libro «Creazione di smart contract Solidity per il blockchain Ethereum. Guida pratica»
Fig. 1.1. Sequenza semplice di blocchi

In questa modalità, tuttavia, è molto facile falsificare il contenuto di qualsiasi blocco della catena, poiché i blocchi non contengono alcuna informazione per proteggere contro le modifiche. Considerando che la blockchain è destinata a essere utilizzata da individui e aziende che non si fidano l'uno dell'altro, si può concludere che questo metodo di archiviazione dei dati non sia adatto per una blockchain.

Impegniamoci a proteggere i blocchi dalla falsificazione. Nella prima fase proveremo a proteggere ogni blocco con un checksum (fig. 1.2).

Il libro «Creazione di smart contract Solidity per il blockchain Ethereum. Guida pratica»
Fig. 1.2. Aggiungiamo la protezione dei dati dei blocchi con un checksum

Ora un malintenzionato non può semplicemente modificare un blocco, poiché contiene un checksum dei dati del blocco. Il controllo del checksum mostrerà che i dati sono stati modificati.

Per calcolare il checksum, è possibile utilizzare una delle funzioni di hash, come MD-5, SHA-1, SHA-256, ecc. Le funzioni hash calcolano un certo valore (ad esempio, come stringa di testo di lunghezza fissa) in seguito all'esecuzione di operazioni irreversibili sul blocco di dati. Le operazioni dipendono dal tipo di funzione hash.

Anche con una piccola modifica del contenuto di un blocco dati, il valore della funzione hash cambierà. Analizzando il valore della funzione hash, non è possibile ricostruire il blocco dati per il quale è stata calcolata.

Sarà sufficiente questa protezione? Purtroppo, no.

In questo schema, il checksum (funzione hash) protegge solo i singoli blocchi, ma non l'intera catena di blocchi. Conoscendo l'algoritmo di calcolo della funzione hash, un malintenzionato può facilmente sostituire il contenuto di un blocco. Inoltre, nulla gli impedirebbe di rimuovere blocchi dalla catena o di aggiungerne di nuovi.

Per proteggere l'intera catena nel suo complesso, è possibile memorizzare in ogni blocco, insieme ai dati, anche l'hash dei dati del blocco precedente (fig. 1.3).

Il libro «Creazione di smart contract Solidity per il blockchain Ethereum. Guida pratica»
Fig. 1.3. Aggiungiamo nel blocco dati l'hash del blocco precedente

In questo schema, per modificare un qualsiasi blocco, è necessario ricalcolare le funzioni hash di tutti i blocchi successivi. Apparentemente, qual è il problema?

Nei veri blockchain, sono create ulteriori difficoltà per l'aggiunta di nuovi blocchi: vengono utilizzati algoritmi che richiedono molte risorse computazionali. Considerando che per apportare modifiche a un blocco è necessario ricalcolare non solo quel blocco, ma tutti quelli successivi, diventa estremamente difficile.

Ricordiamo anche che i dati del blockchain vengono memorizzati (duplicati) su numerosi nodi della rete, cioè viene utilizzato uno storage decentralizzato. Questo complica notevolmente la falsificazione di un blocco, poiché le modifiche devono essere apportate a tutti i nodi della rete.

Poiché i blocchi memorizzano informazioni sul blocco precedente, è possibile verificare il contenuto di tutti i blocchi della catena.

Blockchain Ethereum

La blockchain Ethereum è una piattaforma sulla quale è possibile creare applicazioni distribuite DApp. A differenza di altre piattaforme, Ethereum consente l'uso dei cosiddetti contratti intelligenti (smart contracts), scritti nel linguaggio di programmazione Solidity.

Questa piattaforma è stata creata nel 2013 da Vitalik Buterin, fondatore della rivista Bitcoin Magazine, e lanciata nel 2015. Tutto ciò che esploreremo o faremo nel nostro corso di formazione riguarda specificamente la blockchain di Ethereum e i contratti smart in Solidity.

Mining o come vengono creati i blocchi

Il mining (mining) è un processo piuttosto complesso e dispendioso in termini di risorse per aggiungere nuovi blocchi alla catena della blockchain, e non è affatto "estrazione di criptovalute". Il mining garantisce il funzionamento della blockchain, poiché è proprio questo processo a responsabile dell'aggiunta delle transazioni alla blockchain di Ethereum.

Le persone e le organizzazioni che si occupano di aggiungere blocchi sono chiamate miner (miner).
Il software (SO) che opera sui nodi dei miner cerca di trovare per l'ultimo blocco un parametro di hashing chiamato Nonce, in modo da ottenere un certo valore della funzione hash definito dalla rete. L'algoritmo di hashing Ethash, applicato in Ethereum, consente di ottenere il valore di Nonce solo attraverso una serie di tentativi sequenziali.

Se il nodo miner ha trovato il valore corretto del Nonce, ciò rappresenta la cosiddetta prova di lavoro (PoW, Proof-of-work). In tal caso, se il blocco viene aggiunto alla rete Ethereum, il miner riceve una ricompensa in valuta di rete: Ether. Al momento della stesura del nostro libro, la ricompensa è di 5 Ether, ma nel tempo questa verrà ridotta.

In questo modo, i miner di Ethereum garantiscono il funzionamento della rete aggiungendo blocchi e ricevendo in cambio criptovalute. Su internet troverete moltissime informazioni sui miner e il mining, mentre noi ci concentreremo sulla creazione di contratti Solidity e applicazioni decentralizzate DApp sulla rete Ethereum.

Conclusioni della lezione

Nella prima lezione avete familiarizzato con la blockchain e avete appreso che essa consiste in una sequenza di blocchi formata in modo particolare. Il contenuto dei blocchi già registrati non può essere modificato, poiché ciò richiederebbe di ricalcolare tutti i blocchi successivi su molti nodi della rete, il che richiede molte risorse e tempo.

La blockchain può essere utilizzata per la registrazione dei risultati delle transazioni. Il suo scopo principale è garantire un'esecuzione sicura delle transazioni tra le parti (persone e organizzazioni) che non si fidano l'uno dell'altro. Hai appreso in quali specifici ambiti commerciali e settori sia possibile utilizzare la blockchain di Ethereum e i contratti smart in Solidity. Questi includono il settore bancario, la registrazione della proprietà, la documentazione e altro.

Hai anche appreso che nell'uso della blockchain possono sorgere vari problemi. Questi includono problemi di verifica delle informazioni aggiunte alla blockchain, la velocità di funzionamento della blockchain, i costi delle transazioni, il problema dello scambio di dati tra contratti smart e il mondo reale, nonché potenziali attacchi di malintenzionati mirati a rubare fondi in criptovaluta dagli account degli utenti.

Inoltre, abbiamo fornito una breve panoramica del mining come processo di aggiunta di nuovi blocchi alla blockchain. Il mining è necessario per l'esecuzione delle transazioni. Coloro che si dedicano al mining garantiscono il funzionamento della blockchain e ricevono in cambio una ricompensa in criptovaluta.

Lezione 2. Preparazione dell'ambiente di lavoro nei sistemi operativi Ubuntu e DebianScelta del sistema operativo
Installazione degli strumenti necessari
Installazione di Geth e Swarm su Ubuntu
Installazione di Geth e Swarm su Debian
Preparazione preliminare
Download della distribuzione di Go
Impostazione delle variabili d'ambiente
Verifica della versione di Go
Installazione di Geth e Swarm
Creazione di una blockchain privata
Готовим файл genesis.json
Creazione di una directory di lavoro
Creazione di un account
Avvio dell'inizializzazione del nodo
Parametri di avvio del nodo
Colleghiamoci al nostro nodo
Gestione del mining e verifica del saldo
Chiusura della console di Geth
Conclusioni della lezione

Lezione 3. Preparazione dell'ambiente di lavoro su Raspberry Pi 3Preparazione di Raspberry Pi 3 al lavoro
Installazione di Raspbian
Installazione degli aggiornamenti
Abilitazione dell'accesso SSH
Impostazione di un indirizzo IP statico
Installazione degli strumenti necessari
Installazione di Go
Download della distribuzione di Go
Impostazione delle variabili d'ambiente
Verifica della versione di Go
Installazione di Geth e Swarm
Creazione di una blockchain privata
Verifica dell'account e del saldo
Conclusioni della lezione

Lezione 4. Account e trasferimento di fondi tra accountVisualizzazione e aggiunta di account
Visualizzazione dell'elenco degli account
Aggiunta di un account
Parametri del comando geth account
Password degli account
Criptovaluta in Ethereum
Unità monetarie di Ethereum
Determinazione del saldo attuale dei nostri account
Trasferimento di fondi da un account all'altro
Metodo eth.sendTransaction
Visualizzazione dello stato della transazione
Ricevuta della transazione
Conclusioni della lezione

Lezione 5. Pubblicazione del primo contrattoSmart contract su Ethereum
Esecuzione del contratto smart
Macchina virtuale Ethereum
Ambiente di sviluppo integrato Remix Solidity IDE
Avvio della compilazione
Chiamata delle funzioni del contratto
Pubblicazione del contratto in una rete privata
Ottenere la definizione ABI e il codice binario del contratto
Pubblicazione del contratto
Verifica dello stato della transazione di pubblicazione del contratto
Chiamata delle funzioni del contratto
Compilatore batch solc
Installazione di solc su Ubuntu
Installazione di solc su Debian
Compilazione del contratto HelloSol
Pubblicazione del contratto
Installazione di solc su Rasberian
Conclusioni della lezione

Урок 6. Смарт-контракты и Node.jsУстановка Node.js
Installazione su Ubuntu
Installazione su Debian
Installazione e avvio di Ganache-cli
Installazione di Web3
Installazione di solc
Installazione di Node.js su Rasberian
Script per ottenere l'elenco degli account nella console
Script per la pubblicazione del contratto smart
Avvio e ottenimento dei parametri
Ottenere i parametri di avvio
Compilazione del contratto
Sblocco dell'account
Caricamento dell'ABI e del codice binario del contratto
Valutazione della quantità di gas necessaria
Creazione dell'oggetto e avvio della pubblicazione del contratto
Avvio dello script di pubblicazione del contratto
Chiamata delle funzioni del contratto smart
È possibile aggiornare un contratto smart pubblicato?
Lavorare con Web3 versione 1.0.x
Ottenere l'elenco degli account
Pubblicazione del contratto
Chiamata delle funzioni del contratto
Trasferimento di fondi da un account all'altro
Trasferimento di fondi su un account contratto
Aggiorniamo il contratto intelligente HelloSol
Creiamo uno script per visualizzare il saldo dell'account
Добавляем вызов функции getBalance в скрипт call_contract_get_promise.js
Ricarichiamo il saldo del contratto intelligente
Conclusioni della lezione

Lezione 7. Introduzione a TruffleInstallazione di Truffle
Creiamo il progetto HelloSol
Creazione della cartella e dei file del progetto
Cartella contracts
Cartella migrations
Cartella test
Файл truffle-config.js
Compilazione del contratto HelloSol
Avvio della pubblicazione del contratto
Chiamata delle funzioni del contratto HelloSol nel prompt di Truffle
Вызов функций контракта HelloSol из скрипта JavaScript под управлением Node.js
Installazione del modulo truffle-contract
Chiamata delle funzioni del contratto getValue e getString
Chiamata delle funzioni del contratto setValue e setString
Modifica del contratto e ripubblicazione
Lavorare con Web3 versione 1.0.x
Effettuiamo modifiche al contratto intelligente HelloSol
Script per chiamare i metodi del contratto
Testing in Truffle
Test in Solidity
Test in JavaScript
Conclusioni della lezione

Lezione 8. Tipi di dati in SolidityContratto per lo studio dei tipi di dati
Tipi di dati logici
Numeri interi senza segno e interi con segno
Numeri a punto fisso
Indirizzo
Variabili di tipi complessi
Array di dimensione fissa
Array dinamici
Elenco
Strutture
Dizionari mapping
Conclusioni della lezione

Lezione 9. Migrazione dei contratti in una rete privata e nella rete RinkebyPubblicazione del contratto da Truffle in una rete privata Geth
Preparazione del nodo della rete privata
Preparazione del contratto per il funzionamento
Compilazione e migrazione del contratto nella rete Truffle
Avvio della migrazione nella rete locale geth
Estrazione degli artifact Truffle
Pubblicazione del contratto da Truffle nella rete di test Rinkeby
Preparazione del nodo Geth per lavorare con Rinkeby
Sincronizzazione del nodo
Aggiunta di account
Rifornimento dell'account Rinkeby con Ether
Avvio della migrazione del contratto nella rete Rinkeby
Visualizzazione delle informazioni sul contratto nella rete Rinkeby
Console Truffle per la rete Rinkeby
Un modo più semplice per chiamare le funzioni del contratto
Вызов методов контракта при помощи Node.js
Trasferimento di fondi tra account nella console Truffle per Rinkeby
Conclusioni della lezione

Lezione 10. Storage decentralizzato Ethereum SwarmCome funziona Ethereum Swarm
Installazione e avvio di Swarm
Operazioni con file e directory
Caricamento di file in Ethereum Swarm
Lettura di file da Ethereum Swarm
Visualizzazione del manifesto del file caricato
Caricamento di directory con sottodirectory
Lettura di file dalla directory caricata
Utilizzo di un gateway pubblico di Swarm
Обращение к Swarm из скриптов Node.js
Modulo Perl Net::Ethereum::Swarm
Installazione del modulo Net::Ethereum::Swarm
Scrittura e lettura dei dati
Conclusioni della lezione

Lezione 11. Framework Web3.py per lavorare con Ethereum in PythonInstallazione di Web3.py
Aggiornamento e installazione dei pacchetti necessari
Installazione del modulo easysolc
Pubblicazione del contratto tramite Web3.py
Compilazione del contratto
Connessione al provider
Esecuzione della pubblicazione del contratto
Salvataggio dell'indirizzo del contratto e di ABI in un file
Avvio dello script di pubblicazione del contratto
Chiamata dei metodi del contratto
Lettura dell'indirizzo e di ABI del contratto da un file JSON
Connessione al provider
Creazione di un oggetto contratto
Chiamata dei metodi del contratto
Truffle e Web3.py
Conclusioni della lezione

Lezione 12. OraclePuò un contratto intelligente fidarsi dei dati dal mondo esterno?
Oracle come intermediari informativi della blockchain
Fonte dei dati
Codice per rappresentare i dati dalla fonte
Oracle per registrare il tasso di cambio nella blockchain
Contratto USDRateOracle
Aggiornamento del tasso di cambio nel contratto intelligente
Utilizzo di un provider Web Socket
Attesa dell'evento RateUpdate
Gestione dell'evento RateUpdate
Inizio dell'aggiornamento dei dati nel contratto intelligente
Conclusioni della lezione

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster