Libro «Creazione di smart contract Solidity per blockchain Ethereum. Guida pratica»

Libro «Creazione di smart contract Solidity per 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 a creare smart contract Solidity e applicazioni decentralizzate DApp per la blockchain Ethereum. Si compone di 12 lezioni con esercizi pratici. Completandoli, il lettore sarà in grado di 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 di debug Rinkeby.

Il libro è rivolto a tutti coloro che sono interessati alle tecnologie avanzate nel campo delle blockchain e desiderano acquisire rapidamente le conoscenze necessarie per svolgere un lavoro interessante e promettente.

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

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

Questo libro è meglio non solo leggerlo, ma anche lavorarci, eseguendo gli esercizi pratici descritti nelle lezioni. Per lavorare avrai bisogno di un computer locale, di un server virtuale o cloud con sistema operativo Debian o Ubuntu installato. Inoltre, per svolgere molti degli esercizi, puoi utilizzare Raspberry Pi.

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

Obiettivo nella seconda lezione dovremo creare un nodo di blockchain Ethereum privato per ulteriori lavori all'interno di questo corso su server Ubuntu e Debian. Esamineremo le peculiarità dell'installazione delle utilità principali, come geth, che gestisce il nodo della nostra blockchain, e il demone dello storage decentralizzato swarm.

Nella terza lezione ti insegnerà a condurre esperimenti con Ethereum su un economico microcomputer Raspberry Pi. Installerai il sistema operativo (OS) Rasberian su Raspberry Pi, l'utilità Geth, che consente il funzionamento di un nodo blockchain, e il demone di archiviazione decentralizzata Swarm.

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

Nella quinta lezione verrai introdotto ai contratti intelligenti nella rete Ethereum e scoprirai come vengono eseguiti dalla macchina virtuale Ethereum.

Creerai e pubblicherai nella rete privata Ethereum il tuo primo contratto intelligente e imparerai a invocare le sue funzioni. Per fare ciò utilizzerai l'ambiente di sviluppo Remix Solidity IDE. Inoltre, imparerai a installare e utilizzare il compilatore batch solc.
Inoltre, parleremo del cosiddetto Interfaccia Binaria dell'Applicazione (ABI) e ti insegneremo a usarla.

Sesta lezione è dedicata alla creazione di script JavaScript che funzionano sotto Node.js ed eseguono operazioni con contratti intelligenti Solidity.

Installerai Node.js su OS Ubuntu, Debian e Rasberian, scriverai script per pubblicare un contratto intelligente nella rete locale Ethereum e invocare le sue funzioni.

Inoltre, imparerai a trasferire fondi tra account normali utilizzando script, così come a accreditare i fondi sugli account dei contratti intelligenti.

Nella settima lezione imparerai a installare e utilizzare il popolare ambiente integrato Truffle, utilizzato tra gli sviluppatori di contratti intelligenti Solidity. Imparerai a creare script JavaScript che invocano funzioni dei contratti utilizzando il modulo truffle-contract e testerai il tuo contratto intelligente con gli strumenti di Truffle.

Ottava lezione è dedicata ai tipi di dati Solidity. Scriverai contratti intelligenti che lavorano con tipi di dati come numeri interi con segno e senza segno, numeri decimali, stringhe, indirizzi, variabili di tipo complesso, array, enumerazioni, strutture e dizionari.

Nella nona lezione Ti avvicinerai un passo ulteriore alla creazione di smart contract per la rete principale di Ethereum. Imparerai a pubblicare contratti utilizzando Truffle in una rete privata Geth, così come nella rete di test Rinkeby. Il debugging di uno smart contract nella rete Rinkeby è molto utile prima della sua pubblicazione sulla rete principale: lì tutto è quasi reale, ma gratuito.

Nel corso della lezione creerai un nodo della rete di test Rinkeby, lo finanzierai e pubblicherai uno smart contract.

Lezione 10 è dedicata ai data store distribuiti di Ethereum Swarm. Utilizzando i data store distribuiti, risparmi sui costi di archiviazione dei dati di grandi dimensioni sulla blockchain di Ethereum.

In questa lezione creerai un archivio locale Swarm, eseguirai operazioni di scrittura e lettura di file, oltre a directory con file. Successivamente imparerai a lavorare con il gateway pubblico di Swarm, scriverai script per interagire con Swarm da Node.js e anche utilizzando il modulo Perl Net::Ethereum::Swarm.

L'obiettivo della lezione 11 è padroneggiare il lavoro con gli smart contract Solidity utilizzando il popolare linguaggio di programmazione Python e il framework Web3.py. Installerai questo framework, scriverai script per compilare e pubblicare uno smart contract, così come per invocare le sue funzioni. In questo caso, Web3.py sarà utilizzato sia da solo sia in combinazione con l'ambiente di sviluppo integrato Truffle.

Nella lezione 12 imparerai a trasmettere dati tra smart contract 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 da smart contract a questi dispositivi. Nella parte pratica della lezione, creerai un oracolo e uno smart contract che riceve il tasso di cambio attuale USD in rubli dal sito della Banca Centrale della Federazione Russa.

Lezione 1. Breve introduzione alla blockchain e alla rete EthereumObiettivo della lezione: familiarizzare con i principi del funzionamento della blockchain di Ethereum, i suoi ambiti di applicazione e la terminologia di base.
Attività pratiche: in questa lezione non sono previste.

Oggi è difficile trovare uno sviluppatore di software che non abbia mai sentito parlare della tecnologia blockchain, delle criptovalute, di Bitcoin, dell'ICO (offerta iniziale di monete), degli smart contract e di altri concetti e termini relativi alla blockchain.

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

Va detto che ci sono molte speculazioni attorno alle criptovalute e ai blockchain. Lasceremo da parte le discussioni sui cambiamenti dei corsi delle criptovalute, sulla creazione di piramidi, sulle complessità della legislazione delle criptovalute, e così via. Nel nostro corso di formazione ci concentreremo principalmente sugli aspetti tecnici dell'applicazione dei contratti intelligenti nel blockchain di Ethereum (Ether) e nello sviluppo delle cosiddette applicazioni decentralizzate (Distributed Application, DApp).

Che cos'è il blockchain

Il blockchain (Blockchain, Block Chain) è una catena di blocchi di dati collegati tra loro in un certo modo. All'inizio della catena c'è il primo blocco, chiamato blocco primario (genesis block) o blocco di genesi. Segue il secondo, poi il terzo e così via.

Tutti questi blocchi di dati vengono automaticamente duplicati su numerosi nodi della rete blockchain. In questo modo si garantisce un'archiviazione decentralizzata dei dati del blockchain.
Puoi immaginare il sistema blockchain come un gran numero di nodi (server fisici o virtuali) connessi in rete che replicano tutte le modifiche nella catena di blocchi di dati. È come un gigantesco computer multi-server, in cui i nodi di questo computer (server) possono essere sparsi in tutto il mondo. E anche tu puoi aggiungere il tuo computer alla rete blockchain.

Database distribuito

Il blockchain può essere visto come un database distribuito, replicato su tutti i nodi della rete blockchain. In teoria, il blockchain sarà operante finché almeno un nodo, che memorizza tutti i blocchi del blockchain, è attivo.

Registro dei dati distribuito

Il blockchain può essere visto come un registro distribuito di dati e operazioni (transazioni). Un altro nome per questo registro è libro mastro.

Nel registro distribuito è possibile aggiungere dati, ma non è possibile modificarli o eliminarli. Questa impossibilità è raggiunta, in particolare, attraverso l'applicazione di algoritmi crittografici, algoritmi speciali per l'aggiunta di blocchi nella catena e la memorizzazione decentralizzata dei dati.

Durante l'aggiunta di blocchi e l'esecuzione di operazioni (transazioni) vengono utilizzate chiavi private e pubbliche. Queste limitano gli utenti della blockchain, concedendo loro accesso solo ai propri blocchi di dati.

Transazioni

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

In questo modo, tutta la cronologia delle transazioni può essere registrata inalterata nella blockchain. Pertanto, la blockchain può essere utilizzata, ad esempio, per una memorizzazione sicura delle operazioni bancarie, delle informazioni sul copyright, della storia delle modifiche dei proprietari di beni immobili, ecc.

La blockchain di Ethereum contiene i cosiddetti stati del sistema. Man mano che vengono eseguite le transazioni, lo stato cambia dallo stato iniziale a quello attuale. Le transazioni vengono registrate in blocchi.

Blockchain pubbliche e private

È importante notare che quanto appena detto è vero solo per le cosiddette reti blockchain pubbliche, che non possono essere controllate da singole persone fisiche o giuridiche, organizzazioni governative o stati.
Le cosiddette reti blockchain private sono sotto il completo controllo dei loro creatori, e qui è possibile fare di tutto, ad esempio, sostituire completamente tutti i blocchi della catena.

Applicazioni pratiche della blockchain

A cosa può servire la blockchain?

In breve, la blockchain consente di eseguire 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 sostituiti dopo la registrazione. Pertanto, sulla base della blockchain è possibile creare, ad esempio, registri distribuiti affidabili di vari documenti.

Certo, sapete che le criptovalute sono sistemi basati su blockchain progettati per sostituire il denaro cartaceo. Il denaro cartaceo è anche chiamato denaro 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. Contiene la cronologia completa del trasferimento di crypto-fondi tra diversi utenti (account), ed ogni operazione può essere tracciata.

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

I cosiddetti smart contract, che sono software che operano sulla rete Ethereum, consentono di automatizzare il processo di conclusione degli affari e di monitorarne l'esecuzione. Questo è particolarmente efficace quando il pagamento per l'affare avviene in criptovaluta Ether.

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

  • alternativa alla notarizzazione dei documenti;
  • conservazione del registro degli immobili e delle informazioni sulle operazioni immobiliari;
  • conservazione delle informazioni sui diritti d'autore riguardanti le opere di proprietà intellettuale (libri, immagini, opere musicali, ecc.);
  • creazione di sistemi di votazione indipendente;
  • settore finanziario e bancario;
  • logistica su scala internazionale, tracciamento del movimento delle merci;
  • conservazione dei dati personali come alternativa al sistema di identificazione;
  • transazioni sicure nel settore commerciale;
  • conservazione dei risultati degli esami medici e della storia delle procedure prescritte.

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 del software di sistema e applicativo utilizzato per lavorare con la blockchain, problemi relativi alla possibilità di utilizzare metodi di ingegneria sociale per rubare l'accesso ai portafogli di criptovaluta e così via.

Ancora una volta, se parliamo non di una blockchain pubblica, i cui nodi sono distribuiti in tutto il mondo, ma di una blockchain privata, di proprietà di una persona o di un'organizzazione, il livello di fiducia qui non sarà superiore al livello di fiducia in quella persona o organizzazione.

Bisogna anche considerare che i dati registrati nella 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 nella blockchain non possano essere modificate può aiutare a prevenire o indagare vari tipi di frodi.

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

Tra i problemi generali della blockchain che ostacolano la sua applicazione pratica si possono citare la limitata velocità di aggiunta di nuovi blocchi e il costo relativamente elevato delle transazioni. Ma le tecnologie in questo campo stanno evolvendo attivamente, e ci sono speranze che i problemi tecnici vengano risolti nel tempo.

Un altro problema è che i contratti smart della blockchain di Ethereum operano in un ambiente isolato di macchine virtuali e non hanno accesso ai dati del mondo reale. In particolare, il programma del contratto smart non può leggere autonomamente i dati da siti internet o da dispositivi fisici (sensori, contatti, ecc.), né può inviare dati a dispositivi esterni. Questo problema e le modalità per risolverlo saranno affrontati nella lezione dedicata ai cosiddetti Oracoli — intermediari informativi dei contratti smart.

Ci sono anche limitazioni legislative. In alcuni paesi, ad esempio, è vietato utilizzare la criptovaluta come mezzo di pagamento, ma è possibile possederla come un certo attivo digitale, simile a titoli. Tali attivi possono essere comprati e venduti in borsa. In ogni caso, quando si crea un progetto che lavora con criptovalute, è necessario informarsi sulla legislazione del paese sotto la cui giurisdizione rientra il proprio progetto.

Come si forma una catena di blockchain

Come abbiamo già detto, la blockchain è una semplice catena di blocchi di dati. Prima viene formato il primo blocco di questa catena, poi ad esso viene aggiunto 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 il più semplice esempio di sequenza di blocchi, in cui il primo blocco fa riferimento al successivo.

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

Tuttavia, in questo caso, è molto facile falsificare il contenuto di qualsiasi blocco della catena, poiché i blocchi non contengono alcuna informazione per proteggere dalle modifiche. Considerando che la blockchain è destinata a essere utilizzata da persone e aziende che non si fidano l'una dell'altra, si può concludere che questo modo di memorizzare i dati non è adatto per la blockchain.

Occupiamoci ora della protezione dei blocchi dalla falsificazione. Nella prima fase, tenteremo di proteggere ogni blocco con un checksum (Fig. 1.2).

Libro «Creazione di smart contract Solidity per blockchain Ethereum. Guida pratica»
Fig. 1.2. Aggiunta di 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 hashing, come MD-5, SHA-1, SHA-256, ecc. Le funzioni di hash calcolano un certo valore (ad esempio, sotto forma di stringa di testo di lunghezza fissa) a seguito di operazioni irreversibili sui dati del blocco. Le operazioni dipendono dal tipo di funzione di hash.

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

Sarà sufficiente tale protezione? Sfortunatamente, no.

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

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

Libro «Creazione di smart contract Solidity per blockchain Ethereum. Guida pratica»
Fig. 1.3. Aggiunta all'interno del blocco dei dati dell'hash del blocco precedente

In this scheme, to change any block, it is necessary to recalculate the hash functions of all subsequent blocks. It might seem, what’s the problem?

In real blockchains, additional artificial difficulties have been created for adding new blocks — algorithms that require a lot of computational resources are used. Considering that to make changes to a block, it is necessary to recalculate not just that block but all subsequent ones, doing so will be extremely difficult.

Let's also remember that blockchain data is stored (duplicated) on numerous nodes of the network, i.e., decentralized storage is used. This significantly complicates the forgery of a block, as changes must be made to all nodes in the network.

Since blocks store information about the previous block, it is possible to check the contents of all blocks in the chain.

Blockchain Ethereum

Ethereum blockchain is a platform on which distributed applications (DApps) can be created. Unlike other platforms, Ethereum allows the use of so-called smart contracts, written in the programming language Solidity.

This platform was created in 2013 by Vitalik Buterin, the founder of Bitcoin Magazine, and launched in 2015. Everything we will study or do in our course is related specifically to the Ethereum blockchain and Solidity smart contracts.

Mining or how blocks are created

Mining represents a rather complex and resource-intensive process of adding new blocks to the blockchain, rather than 'extracting cryptocurrencies.' Mining ensures the operability of the blockchain, as this process is responsible for adding transactions to the Ethereum blockchain.

People and organizations engaged in adding blocks are called miners.
The software operating on miners' nodes tries to find a hashing parameter called Nonce for the last block to achieve a specific value of the hash function specified by the network. The hash algorithm Ethash, used in Ethereum, allows obtaining the Nonce value only through sequential brute force.

Se un nodo minerario trova il valore corretto del Nonce, ciò costituisce la cosiddetta prova di lavoro (PoW, Proof-of-work). In tal caso, se il blocco viene aggiunto alla rete Ethereum, il minerario riceve una ricompensa in valuta di rete — Ether. Al momento della preparazione del nostro libro, la ricompensa è di 5 Ether, tuttavia nel tempo verrà ridotta.

In questo modo, i minerari di Ethereum garantiscono il funzionamento della rete, aggiungendo blocchi e ricevendo in cambio denaro in criptovaluta. In internet puoi trovare molte informazioni sui miner e sul mining, mentre noi ci concentreremo sulla creazione di contratti Solidity e applicazioni decentralizzate DApp nella rete Ethereum.

Sommario della lezione

Nella prima lezione hai conosciuto la blockchain e hai scoperto che si tratta di una sequenza di blocchi organizzatasi in un modo particolare. Il contenuto dei blocchi registrati in precedenza non può essere modificato, poiché per farlo sarebbe necessario ricalcolare tutti i blocchi successivi su molti nodi della rete, richiedendo un enorme capitale di risorse e tempo.

La blockchain può essere utilizzata per memorizzare i risultati delle transazioni. La sua funzione principale è quella di organizzare l'esecuzione sicura delle transazioni tra le parti (persone e organizzazioni) tra cui non esiste fiducia. Hai appreso in quali settori specifici delle attività commerciali e in quali ambiti si può utilizzare la blockchain Ethereum e i contratti intelligenti Solidity. Questi includono il settore bancario, la registrazione dei diritti di proprietà, dei documenti, ecc.

Hai anche appreso che possono sorgere vari problemi nell'uso della blockchain. 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 intelligenti e il mondo reale, nonché potenziali attacchi di hacker diretti al furto di criptovalute dagli account degli utenti.

Abbiamo anche discusso brevemente del mining come processo per aggiungere nuovi blocchi alla blockchain. Il mining è necessario per l'esecuzione delle transazioni. Coloro che praticano il mining assicurano la funzionalità della blockchain e ricevono in cambio una ricompensa in criptovaluta.

Lezione 2. Preparazione dell'ambiente di lavoro su OS 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
Caricamento del pacchetto Go
Impostazione delle variabili d'ambiente
Controllo della versione di Go
Installazione di Geth e Swarm
Creiamo una blockchain privata
Готовим файл genesis.json
Creiamo una cartella per lavorare
Creiamo un account
Avviamo l'inizializzazione del nodo
Opzioni di avvio del nodo
Colleghiamoci al nostro nodo
Gestione del mining e controllo del saldo
Termina la console Geth
Sommario della lezione

Lezione 3. Preparazione dell'ambiente di lavoro su Raspberry Pi 3Preparazione del Raspberry Pi 3 per il lavoro
Installazione di Raspbian
Installazione degli aggiornamenti
Abilitazione dell'accesso SSH
Impostazione di un indirizzo IP statico
Installazione degli strumenti necessari
Installazione di Go
Caricamento del pacchetto Go
Impostazione delle variabili d'ambiente
Controllo della versione di Go
Installazione di Geth e Swarm
Creiamo una blockchain privata
Verifica dell'account e del saldo
Sommario della lezione

Lezione 4. Account e trasferimenti di fondi tra accountVisualizzazione e aggiunta di account
Visualizzazione dell'elenco degli account
Aggiunta di un account
Opzioni del comando geth account
Credenziali degli account
Criptovaluta in Ethereum
Unità monetarie di Ethereum
Determiniamo il saldo corrente dei nostri account
Trasferimento di fondi da un account a un altro
Metodo eth.sendTransaction
Visualizzazione dello stato della transazione
Ricevuta della transazione
Sommario della lezione

Lezione 5. Pubblicazione del primo contrattoSmart contract in Ethereum
Esecuzione di uno smart contract
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 in batch solc
Installazione di solc in Ubuntu
Installazione di solc in Debian
Compilazione del contratto HelloSol
Pubblicazione del contratto
Installazione di solc su Raspbian
Sommario della lezione

Урок 6. Смарт-контракты и Node.jsУстановка Node.js
Installazione in Ubuntu
Installazione in Debian
Installazione e avvio di Ganache-cli
Installazione di Web3
Installazione di solc
Installazione di Node.js su Raspbian
Script per ottenere l'elenco degli account nella console
Script per pubblicare uno smart contract
Avvio e ottenimento delle opzioni
Ottenimento delle opzioni di avvio
Compilazione del contratto
Sblocco dell'account
Caricamento di ABI e codice binario del contratto
Stima del gas necessario
Creazione dell'oggetto e avvio della pubblicazione del contratto
Avvio dello script di pubblicazione del contratto
Chiamata delle funzioni dello smart contract
È possibile aggiornare uno smart contract 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 a un altro
Trasferimento di fondi all'account del contratto
Aggiorniamo lo smart contract HelloSol
Creiamo uno script per visualizzare il saldo dell'account
Добавляем вызов функции getBalance в скрипт call_contract_get_promise.js
Ricarichiamo il saldo dello smart contract
Sommario della lezione

Lezione 7. Introduzione a TruffleInstallazione di Truffle
Creiamo il progetto HelloSol
Creazione della cartella e dei file di progetto
Catalogo contratti
Catalogo migrazioni
Catalogo test
Файл truffle-config.js
Compilazione del contratto HelloSol
Avvio della pubblicazione del contratto
Chiamata delle funzioni del contratto HelloSol nell'invito 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
Apportiamo modifiche al contratto intelligente HelloSol
Script per chiamare i metodi del contratto
Testing in Truffle
Test su Solidity
Test su JavaScript
Sommario della lezione

Lezione 8. Tipi di dati SolidityContratto per lo studio dei tipi di dati
Tipi di dati logici
Numeri interi senza segno e numeri interi con segno
Numeri con virgola fissa
Indirizzo
Variabili di tipi complessi
Array di dimensione fissa
Array dinamici
Elenco
Strutture
Dizionari mapping
Sommario 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 artefatti Truffle
Pubblicazione del contratto da Truffle nella rete di test Rinkeby
Preparazione del nodo Geth per il funzionamento con Rinkeby
Sincronizzazione del nodo
Aggiunta di account
Ricarica 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
Sommario della lezione

Lezione 10. Archivio dati decentralizzato Ethereum SwarmCome funziona Ethereum Swarm
Installazione e avvio di Swarm
Operazioni con file e directory
Caricamento del file in Ethereum Swarm
Lettura del file da Ethereum Swarm
Visualizzazione del manifesto del file caricato
Caricamento di directory con sottodirectory
Lettura del file dalla directory caricata
Utilizzo di un gateway pubblico Swarm
Обращение к Swarm из скриптов Node.js
Modulo Perl Net::Ethereum::Swarm
Installazione del modulo Net::Ethereum::Swarm
Scrittura e lettura dei dati
Sommario 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 con Web3.py
Compilazione del contratto
Connessione al provider
Esecuzione della pubblicazione del contratto
Salvataggio dell'indirizzo del contratto e di abi nel file
Avvio dello script di pubblicazione del contratto
Chiamata dei metodi del contratto
Lettura dell'indirizzo e di abi del contratto dal file JSON
Connessione al provider
Creazione dell'oggetto contratto
Chiamata dei metodi del contratto
Truffle e Web3.py
Sommario della lezione

Lezione 12. OracoliUn contratto intelligente può fidarsi dei dati del mondo esterno
Gli oracoli come intermediari informativi della blockchain
Fonte dei dati
Codice per la rappresentazione dei dati dalla fonte
Oracolo per registrare il tasso di cambio nella blockchain
Contratto USDRateOracle
Aggiornamento del tasso di cambio nel contratto intelligente
Utilizzo del provider Web Socket
Attesa dell'evento RateUpdate
Elaborazione dell'evento RateUpdate
Inizio dell'aggiornamento dei dati nel contratto intelligente
Sommario 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