Il libro “Creazione di contratti intelligenti di solidità per la blockchain di Ethereum. Guida pratica"

Il libro “Creazione di contratti intelligenti di solidità per la blockchain di Ethereum. Guida pratica"
Da più di un anno sto lavorando al libro “Creating Solidity Smart Contracts for the Ethereum Blockchain. Guida pratica", e ora questo lavoro è completato, e il libro pubblicato e disponibile in Litri.

Spero che il mio libro ti aiuti a iniziare rapidamente a creare contatti intelligenti Solidity e DApp distribuite per la blockchain di Ethereum. Si compone di 12 lezioni con compiti pratici. Dopo averli completati, il lettore sarà in grado di creare i propri nodi Ethereum locali, pubblicare contratti intelligenti e chiamare i loro metodi, scambiare dati tra il mondo reale e contratti intelligenti utilizzando oracoli e lavorare con la rete di debug di test Rinkeby.

Il libro è rivolto a tutti coloro che sono interessati alle tecnologie avanzate nel campo delle blockchain e vogliono acquisire rapidamente conoscenze che consentano loro di svolgere un lavoro interessante e promettente.

Di seguito troverete il sommario e il primo capitolo del libro (anche su Litrese sono disponibili frammenti del libro). Spero di ricevere feedback, commenti e suggerimenti. Cercherò di tenere conto di tutto questo nella preparazione della prossima edizione del libro.

SommarioIntroduzioneIl nostro libro è destinato a coloro che vogliono non solo comprendere i principi della blockchain di Ethereum, ma anche acquisire competenze pratiche nella creazione di DApp distribuite nel linguaggio di programmazione Solidity per questa rete.

È meglio non solo leggere questo libro, ma lavorarci, eseguendo i compiti pratici descritti nelle lezioni. Per funzionare, avrai bisogno di un computer locale, un server virtuale o cloud con il sistema operativo Debian o Ubuntu installato. Puoi anche utilizzare Raspberry Pi per eseguire molte attività.

Alla prima lezione Esamineremo i principi operativi della blockchain di Ethereum e la terminologia di base, e parleremo anche di dove può essere utilizzata questa blockchain.

bersaglio seconda lezione - crea un nodo blockchain Ethereum privato per ulteriori lavori all'interno di questo corso su un server Ubuntu e Debian. Esamineremo le funzionalità dell'installazione di utilità di base, come geth, che garantisce il funzionamento del nostro nodo blockchain, nonché il demone di archiviazione decentralizzata dei dati swarm.

Terza lezione ti insegnerà come sperimentare Ethereum su un microcomputer Raspberry Pi economico. Installerai il sistema operativo (OS) Rasberian sul Raspberry Pi, l'utilità Geth che alimenta il nodo blockchain e il demone di archiviazione decentralizzata dei dati Swarm.

Lezione quattro è dedicato ai conti e alle unità di criptovaluta sulla rete Ethereum, nonché ai modi per trasferire fondi da un conto all'altro dalla console Geth. Imparerai come creare conti, avviare transazioni di trasferimento fondi e ottenere lo stato e la ricevuta della transazione.

Nella quinta lezione Potrai conoscere i contratti intelligenti sulla rete Ethereum e conoscere la loro esecuzione da parte della macchina virtuale Ethereum.

Creerai e pubblicherai il tuo primo contratto intelligente sulla rete privata Ethereum e imparerai come richiamare le sue funzioni. Per fare ciò, utilizzerai Remix Solidity IDE. Imparerai anche come installare e utilizzare il compilatore batch solc.
Parleremo anche della cosiddetta Application Binary Interface (ABI) e ti insegneremo come usarla.

Sesta lezione è dedicato alla creazione di script JavaScript che eseguono Node.js e all'esecuzione di operazioni con contratti intelligenti Solidity.

Installerai Node.js su Ubuntu, Debian e Rasberian OS, scriverai script per pubblicare uno smart contract sulla rete locale Ethereum e chiamerai le sue funzioni.

Inoltre, imparerai come trasferire fondi tra conti normali utilizzando script, nonché accreditarli su conti con contratto intelligente.

Nella settima lezione Imparerai come installare e utilizzare il framework Truffle, popolare tra gli sviluppatori di contratti intelligenti Solidity. Imparerai come creare script JavaScript che richiamano le funzioni del contratto utilizzando il modulo tartufo-contratto e testare il tuo contratto intelligente utilizzando Truffle.

Ottava lezione dedicato ai tipi di dati Solidity. Scriverai contratti intelligenti che funzionano con tipi di dati come numeri interi con e senza segno, numeri con segno, stringhe, indirizzi, variabili complesse, array, enumerazioni, strutture e dizionari.

Nella nona lezione Sarai un passo avanti verso la creazione di contratti intelligenti per la rete principale di Ethereum. Imparerai come pubblicare contratti utilizzando Truffle sulla rete privata Geth e sul testnet di Rinkeby. È molto utile eseguire il debug di un contratto intelligente sulla rete Rinkeby prima di pubblicarlo sulla rete principale: lì quasi tutto è reale, ma gratuitamente.

Come parte della lezione, creerai un nodo di rete di test Rinkeby, lo finanzierai con fondi e pubblicherai un contratto intelligente.

Lezione 10 dedicato all'archiviazione distribuita dei dati di Ethereum Swarm. Utilizzando lo storage distribuito, risparmi sulla memorizzazione di grandi quantità di dati sulla blockchain di Ethereum.

In questo tutorial creerai un archivio Swarm locale, scriverai e leggerai operazioni su file e directory di file. Successivamente, imparerai come lavorare con il gateway Swarm pubblico, scrivere script per accedere a Swarm da Node.js e utilizzare il modulo Perl Net::Ethereum::Swarm.

Obiettivo della lezione 11 - padroneggia il lavoro con i contratti intelligenti Solidity utilizzando il popolare linguaggio di programmazione Python e il framework Web3.py. Installerai il framework, scriverai script per compilare e pubblicare il contratto intelligente e chiamerai le sue funzioni. In questo caso, Web3.py verrà utilizzato sia da solo che insieme all'ambiente di sviluppo integrato Truffle.

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

Lezione 1. Brevemente sulla blockchain e sulla rete EthereumLo scopo della lezione: conoscere i principi di funzionamento della blockchain di Ethereum, le sue aree di applicazione e la terminologia di base.
Compiti pratici: non incluso in questa lezione.

Non c'è quasi nessuno sviluppatore di software oggi che non abbia sentito parlare di tecnologia blockchain (Blockchain), criptovalute (Criptovaluta o Criptovaluta), Bitcoin (Bitcoin), offerta iniziale di monete (ICO, offerta iniziale di monete), contratti intelligenti (Smart Contract), così come altri concetti e termini relativi alla blockchain.

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

C’è da dire che attorno alle criptovalute e alla blockchain si fa molta speculazione. Lasceremo da parte le discussioni sui cambiamenti nei tassi di criptovaluta, sulla creazione di piramidi, sulle complessità della legislazione sulle criptovalute, ecc. Nel nostro percorso formativo ci concentreremo principalmente sugli aspetti tecnici dell'applicazione degli smart contract della blockchain di Ethereum (Ethereum, Ether) e sullo sviluppo delle cosiddette applicazioni decentralizzate (Distributed Application, DApp).

Cos'è la 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, che viene chiamato blocco primario (blocco genesi) o blocco genesi. Segue il secondo, poi il terzo e così via.

Tutti questi blocchi di dati vengono automaticamente duplicati su numerosi nodi della rete blockchain. Ciò garantisce l’archiviazione decentralizzata dei dati blockchain.
Puoi pensare a un sistema blockchain come a un gran numero di nodi (server fisici o virtuali) collegati in una rete e che replicano tutti i cambiamenti nella catena di blocchi di dati. È come un gigantesco computer multi-server e i nodi di tale computer (server) possono essere sparsi in tutto il mondo. E anche tu puoi aggiungere il tuo computer alla rete blockchain.

Base di dati distribuita

Una blockchain può essere pensata come un database distribuito che viene replicato su tutti i nodi della rete blockchain. In teoria, la blockchain sarà operativa finché almeno un nodo funzionerà, memorizzando tutti i blocchi della blockchain.

Registro dati distribuito

La Blockchain può essere pensata come un registro distribuito di dati e operazioni (transazioni). Un altro nome per tale registro è un libro mastro.

I dati possono essere aggiunti a un registro distribuito, ma non possono essere modificati o eliminati. Questa impossibilità è raggiunta, in particolare, attraverso l'uso di algoritmi crittografici, algoritmi speciali per l'aggiunta di blocchi alla catena e archiviazione decentralizzata dei dati.

Quando si aggiungono blocchi ed si eseguono operazioni (transazioni), vengono utilizzate chiavi private e pubbliche. Limitano gli utenti blockchain dando loro l’accesso solo ai propri blocchi di dati.

Operazioni

Blockchain memorizza le informazioni sulle operazioni (transazioni) in blocchi. Allo stesso tempo, le transazioni vecchie e già completate non possono essere ripristinate o modificate. Le nuove transazioni vengono archiviate in nuovi blocchi aggiunti.

In questo modo l’intera cronologia delle transazioni può essere registrata invariata sulla blockchain. Pertanto, la blockchain può essere utilizzata, ad esempio, per archiviare in modo sicuro transazioni bancarie, informazioni sui diritti d’autore, cronologia dei cambiamenti nei proprietari di immobili, ecc.

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

Blockchain pubbliche e private

Va notato qui che tutto quanto detto è vero solo per le cosiddette reti blockchain pubbliche, che non possono essere controllate da nessuna persona fisica o giuridica, agenzia governativa o governo.
Le cosiddette reti blockchain private sono sotto il pieno controllo dei loro creatori e lì tutto è possibile, ad esempio la sostituzione completa di tutti i blocchi della catena.

Applicazioni pratiche della blockchain

A cosa può essere utile la blockchain?

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

Naturalmente sapete che i sistemi di criptovaluta vengono creati sulla base delle blockchain, progettati per sostituire la normale moneta cartacea. La carta moneta è anche chiamata fiat (da Fiat Money).
La Blockchain garantisce la conservazione e l'immutabilità delle transazioni registrate in blocchi, motivo per cui può essere utilizzata per creare sistemi di criptovaluta. Contiene l'intera cronologia del trasferimento di fondi crittografici tra diversi utenti (conti) e qualsiasi operazione può essere tracciata.

Sebbene le transazioni all’interno dei sistemi di criptovaluta possano essere anonime, ritirare la criptovaluta e scambiarla con denaro fiat di solito comporta la rivelazione dell’identità del proprietario dell’asset di criptovaluta.

I cosiddetti contratti intelligenti, che sono software in esecuzione sulla rete Ethereum, consentono di automatizzare il processo di conclusione delle transazioni e di monitorarne l'attuazione. Ciò è particolarmente efficace se il pagamento della transazione viene effettuato utilizzando la criptovaluta Ether.

La blockchain di Ethereum e i contratti intelligenti di Ethereum scritti nel linguaggio di programmazione Solidity possono essere utilizzati, ad esempio, nei seguenti ambiti:

  • un'alternativa all'autenticazione dei documenti;
  • archiviazione di un registro di oggetti immobiliari e informazioni sulle transazioni con oggetti immobiliari;
  • archiviazione delle informazioni di copyright sulla proprietà intellettuale (libri, immagini, opere musicali, ecc.);
  • creazione di sistemi di voto indipendenti;
  • finanza e banche;
  • logistica su scala internazionale, tracciando la circolazione delle merci;
  • archiviazione dei dati personali come analogo a un sistema di carte d'identità;
  • transazioni sicure in ambito commerciale;
  • memorizzare i risultati degli esami medici, nonché la cronologia delle procedure prescritte

Problemi con la blockchain

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

Ci sono problemi con la verifica dei dati prima di aggiungerli alla blockchain (ad esempio, sono falsi?), problemi con la sicurezza del 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 criptovaluta, ecc. .P.

Ancora una volta, se non stiamo parlando di una blockchain pubblica, i cui nodi sono sparsi in tutto il mondo, ma di una blockchain privata appartenente a una persona o organizzazione, allora il livello di fiducia qui non sarà superiore al livello di fiducia in questa persona o questa organizzazione.

Va inoltre tenuto presente che i dati registrati nella blockchain diventano disponibili a tutti. In questo senso la blockchain (soprattutto pubblica) non è adatta a conservare informazioni riservate. Tuttavia, il fatto che le informazioni sulla blockchain non possano essere modificate può aiutare a prevenire o indagare su vari tipi di attività fraudolente.

Le applicazioni decentralizzate di Ethereum saranno convenienti se paghi il loro utilizzo con criptovaluta. Più persone possiedono criptovaluta o sono disposte ad acquistarla, più popolari diventeranno le DApp e i contratti intelligenti.

I problemi comuni con la blockchain che ne ostacolano l’applicazione pratica includono la velocità limitata con cui possono essere aggiunti nuovi blocchi e il costo relativamente elevato delle transazioni. Ma la tecnologia in questo settore si sta sviluppando attivamente e si spera che i problemi tecnici vengano risolti nel tempo.

Un altro problema è che i contratti intelligenti sulla blockchain di Ethereum operano in un ambiente isolato di macchine virtuali e non hanno accesso ai dati del mondo reale. In particolare, il programma smart contract non può leggere da solo i dati dai siti o da qualsiasi dispositivo fisico (sensori, contatti, ecc.) e inoltre non può inviare dati a dispositivi esterni. Discuteremo di questo problema e dei modi per risolverlo in una lezione dedicata ai cosiddetti Oracoli, intermediari dell'informazione dei contratti intelligenti.

Ci sono anche restrizioni legali. In alcuni paesi, ad esempio, è vietato utilizzare la criptovaluta come mezzo di pagamento, ma è possibile possederla come una sorta di risorsa digitale, come i titoli. Tali attività possono essere acquistate e vendute in borsa. In ogni caso, quando crei un progetto che funziona con le criptovalute, devi familiarizzare con la legislazione del paese sotto la cui giurisdizione rientra il tuo progetto.

Come si forma una catena blockchain

Come abbiamo già detto, la blockchain è una semplice catena di blocchi di dati. Innanzitutto, viene formato il primo blocco di questa catena, quindi viene aggiunto il secondo e così via. Si presuppone che i dati delle transazioni siano archiviati in blocchi e vengano aggiunti al blocco più recente.

Nella fig. 1.1 abbiamo mostrato la versione più semplice di una sequenza di blocchi, dove il primo blocco fa riferimento a quello successivo.

Il libro “Creazione di contratti intelligenti di solidità per la blockchain di Ethereum. Guida pratica"
Riso. 1.1. Sequenza semplice di blocchi

Con questa opzione, però, è molto facile manomettere il contenuto di qualsiasi blocco della catena, poiché i blocchi non contengono alcuna informazione da proteggere da eventuali modifiche. Considerando che la blockchain è destinata ad essere utilizzata da persone e aziende tra le quali non esiste fiducia, possiamo concludere che questo metodo di archiviazione dei dati non è adatto alla blockchain.

Iniziamo a proteggere i blocchi dalla contraffazione. Nella prima fase cercheremo di proteggere ciascun blocco con un checksum (Fig. 1.2).

Il libro “Creazione di contratti intelligenti di solidità per la blockchain di Ethereum. Guida pratica"
Riso. 1.2. Aggiunta protezione per questi blocchi con un checksum

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

Per calcolare il checksum, puoi utilizzare una delle funzioni di hashing come MD-5, SHA-1, SHA-256, ecc. Le funzioni hash calcolano un valore (ad esempio, una stringa di testo di lunghezza costante) eseguendo operazioni irreversibili su un blocco di dati. Le operazioni dipendono dal tipo di funzione hash.

Anche se il contenuto del blocco dati cambia leggermente, cambierà anche il valore hash. Analizzando il valore della funzione hash non è possibile ricostruire il blocco dati per il quale è stata calcolata.

Tale protezione sarà sufficiente? Sfortunatamente no.

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

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

Il libro “Creazione di contratti intelligenti di solidità per la blockchain di Ethereum. Guida pratica"
Riso. 1.3. Aggiungi l'hash del blocco precedente al blocco dati

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

Nelle blockchain reali vengono inoltre create difficoltà artificiali per aggiungere nuovi blocchi: vengono utilizzati algoritmi che richiedono molte risorse di calcolo. Considerando che per apportare modifiche a un blocco è necessario ricalcolare non solo questo blocco, ma tutti quelli successivi, sarà estremamente difficile farlo.

Ricordiamo inoltre che i dati blockchain vengono archiviati (duplicati) su numerosi nodi della rete, ovvero Viene utilizzato lo storage decentralizzato. E questo rende molto più difficile falsificare un blocco, perché le modifiche devono essere apportate a tutti i nodi della rete.

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

Blockchain di Ethereum

La blockchain di Ethereum è una piattaforma su cui è possibile creare DApp distribuite. A differenza di altre piattaforme, Ethereum consente l'utilizzo dei cosiddetti smart contract (contratti intelligenti), scritti nel linguaggio di programmazione Solidity.

Questa piattaforma è stata creata nel 2013 da Vitalik Buterin, fondatore di Bitcoin Magazine, e lanciata nel 2015. Tutto quello che studieremo o faremo nel nostro percorso formativo riguarda specificatamente la blockchain di Ethereum e gli smart contract Solidity.

Mining o come vengono creati i blocchi

Il mining è un processo piuttosto complesso e dispendioso in termini di risorse per l'aggiunta di nuovi blocchi alla catena blockchain, e non è affatto un "mining di criptovaluta". Il mining garantisce la funzionalità della blockchain, perché è questo processo che è responsabile dell’aggiunta di transazioni alla blockchain di Ethereum.

Le persone e le organizzazioni coinvolte nell'aggiunta di blocchi sono chiamate minatori.
Il software in esecuzione sui nodi minatori tenta di trovare un parametro di hashing chiamato Nonce per l'ultimo blocco per ottenere un valore hash specifico specificato dalla rete. L'algoritmo di hashing Ethash utilizzato in Ethereum consente di ottenere il valore Nonce solo tramite ricerca sequenziale.

Se il nodo miner trova il valore Nonce corretto, allora questa è la cosiddetta prova di lavoro (PoW, Proof-of-work). In questo caso, se un blocco viene aggiunto alla rete Ethereum, il minatore riceve una certa ricompensa nella valuta della rete: Ether. Al momento in cui scriviamo la ricompensa è di 5 Ether, ma questa verrà ridotta nel tempo.

Pertanto, i minatori di Ethereum garantiscono il funzionamento della rete aggiungendo blocchi e ricevono denaro in criptovaluta per questo. Troverai molte informazioni su internet su miner e mining, ma noi ci concentreremo sulla creazione di contratti Solidity e DApp sulla rete Ethereum.

Riepilogo della lezione

Nella prima lezione hai conosciuto la blockchain e hai imparato che si tratta di una sequenza di blocchi appositamente composta. Il contenuto dei blocchi precedentemente registrati non può essere modificato, poiché ciò richiederebbe il ricalcolo di tutti i blocchi successivi su molti nodi della rete, il che richiede molte risorse e tempo.

La Blockchain può essere utilizzata per archiviare i risultati delle transazioni. Il suo scopo principale è organizzare transazioni sicure tra parti (persone e organizzazioni) tra le quali non esiste fiducia. Hai imparato in quali aree specifiche di business e in quali ambiti possono essere utilizzati la blockchain di Ethereum e i contratti intelligenti Solidity. Questo è il settore bancario, la registrazione dei diritti di proprietà, i documenti, ecc.

Hai anche imparato che possono sorgere vari problemi quando si utilizza la blockchain. Si tratta di problemi di verifica delle informazioni aggiunte alla blockchain, della velocità della blockchain, del costo delle transazioni, del problema dello scambio di dati tra contratti intelligenti e mondo reale, nonché potenziali attacchi da parte di aggressori volti a rubare fondi in criptovaluta dai conti degli utenti .

Abbiamo anche parlato brevemente del mining come del processo di aggiunta di nuovi blocchi alla blockchain. Il mining è necessario per completare le transazioni. Coloro che sono coinvolti nel mining garantiscono il funzionamento della blockchain e ricevono per questo una ricompensa in criptovaluta.

Lezione 2. Preparazione di un ambiente di lavoro nei sistemi operativi Ubuntu e DebianSelezione di un sistema operativo
Installazione delle utilità necessarie
Installazione di Geth e Swarm su Ubuntu
Installazione di Geth e Swarm su Debian
Preparazione preliminare
Download della distribuzione Go
Impostazione delle variabili d'ambiente
Controllo della versione Go
Installazione di Geth e Swarm
Creare una blockchain privata
Preparazione del file genesis.json
Crea una directory per il lavoro
Creare un account
Avvio dell'inizializzazione del nodo
Opzioni di avvio del nodo
Connettiti al nostro nodo
Gestione mineraria e controllo del bilancio
Spegnimento della console Geth
Riepilogo della lezione

Lezione 3. Preparazione dell'ambiente di lavoro su Raspberry Pi 3Preparare il Raspberry Pi 3 per il lavoro
Installazione di Rasberian
Installazione degli aggiornamenti
Abilitazione dell'accesso SSH
Impostazione di un indirizzo IP statico
Installazione delle utilità necessarie
Installazione di Go
Download della distribuzione Go
Impostazione delle variabili d'ambiente
Controllo della versione Go
Installazione di Geth e Swarm
Creare una blockchain privata
Controllo del tuo conto e del tuo saldo
Riepilogo della lezione

Lezione 4. Conti e trasferimento di fondi tra contiVisualizza e aggiungi account
Visualizza un elenco di account
Aggiunta di un account
opzioni di comando dell'account geth
Password dell'account
Criptovaluta in Ethereum
Unità monetarie Ethereum
Determiniamo il saldo attuale dei nostri conti
Trasferisci fondi da un conto all'altro
Metodo eth.sendTransaction
Visualizza lo stato della transazione
Ricevuta della transazione
Riepilogo della lezione

Lezione 5. Pubblicazione del tuo primo contrattoContratti intelligenti su Ethereum
Esecuzione del contratto intelligente
Macchina virtuale Ethereum
Ambiente di sviluppo integrato Remix Solidity IDE
Compilazione in corso
Chiamata di funzioni contrattuali
Pubblicazione di un contratto su una rete privata
Ottenere la definizione ABI e il codice binario del contratto
Pubblicazione del contratto
Controllo dello stato della transazione di pubblicazione del contratto
Chiamata di funzioni contrattuali
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
Riepilogo della lezione

Lezione 6. Contratti intelligenti e Node.jsInstallazione di Node.js
Installazione su Ubuntu
Installazione su Debian
Installazione ed esecuzione di Ganache-cli
Installazione Web3
Installazione di solc
Installazione di Node.js su Rasberian
Script per ottenere un elenco di account nella console
Script per pubblicare uno smart contract
Avvia e ottieni i parametri
Ottenere le opzioni di lancio
Compilazione del contratto
Sblocco del tuo account
Caricamento ABI e codice binario del contratto
Stima della quantità di gas richiesta
Crea un oggetto e inizia a pubblicare un contratto
Esecuzione dello script di pubblicazione del contratto
Chiamare le funzioni del contratto intelligente
È possibile aggiornare uno smart contract pubblicato?
Funziona con Web3 versione 1.0.x
Ottenere un elenco di account
Pubblicazione del contratto
Chiamata di funzioni contrattuali
Trasferisci fondi da un conto all'altro
Trasferisci fondi sul conto del contratto
Aggiornamento del contratto intelligente HelloSol
Crea uno script per visualizzare il saldo del tuo account
Aggiungi una chiamata alla funzione getBalance allo script call_contract_get_promise.js
Ricarichiamo il conto del contratto intelligente
Riepilogo della lezione

Lezione 7. Introduzione al TartufoInstallazione del tartufo
Crea un progetto HelloSol
Creazione della directory e dei file del progetto
Elenco dei contratti
Migrazioni del catalogo
Prova di directory
file tartufo-config.js
Compilazione del contratto HelloSol
Inizia a pubblicare un contratto
Chiamata delle funzioni del contratto HelloSol in un prompt del tartufo
Chiamare le funzioni del contratto HelloSol da uno script JavaScript che esegue Node.js
Installazione del modulo contratto tartufo
Chiamando le funzioni di contratto getValue e getString
Chiamare le funzioni di contratto setValue e setString
Modifica e ripubblicazione del contratto
Funziona con Web3 versione 1.0.x
Apportare modifiche al contratto intelligente HelloSol
Script per chiamare metodi di contratto
Prova nel Tartufo
Prova di solidità
Prova JavaScript
Riepilogo della lezione

Lezione 8. Tipi di dati di soliditàContratto per l'apprendimento dei tipi di dati
Tipi di dati booleani
Interi senza segno e interi con segno
Numeri in virgola fissa
indirizzo
Variabili di tipo complesso
Array di dimensioni fisse
Array dinamici
Listing
Struttura
Mappatura dei dizionari
Riepilogo della lezione

Lezione 9. Migrazione dei contratti verso la rete privata e verso la rete RinkebyPubblicazione di un contratto da Truffle alla rete privata Geth
Preparazione di un nodo di rete privata
Preparazione di un contratto di lavoro
Compilazione e migrazione di un contratto alla rete Truffle
Avvio della migrazione della rete locale geth
Ottenere manufatti al tartufo
Pubblicazione di un contratto da Truffle al testnet Rinkeby
Stiamo preparando un nodo geth per lavorare con Rinkeby
Sincronizzazione dei nodi
Aggiunta di account
Ricaricare il tuo account Rinkeby con etere
Avvio della migrazione dei contratti sulla rete Rinkeby
Visualizzazione delle informazioni contrattuali sulla rete Rinkeby
Console del tartufo per la rete Rinkeby
Modo più semplice per chiamare le funzioni del contratto
Chiamare metodi di contratto utilizzando Node.js
Trasferisci fondi tra conti nella console Truffle per Rinkby
Riepilogo della lezione

Lezione 10. Archiviazione decentralizzata dei dati di Ethereum SwarmCome funziona Ethereum Swarm?
Installazione e avvio di Swarm
Operazioni con file e directory
Caricamento di un file su Ethereum Swarm
Lettura di un file da Ethereum Swarm
Visualizza il manifest di un file caricato
Caricamento di directory con sottodirectory
Lettura di un file da una directory scaricata
Utilizzando un gateway Swarm pubblico
Accesso a Swarm dagli script Node.js
Modulo Perl Net::Ethereum::Swarm
Installazione del modulo Net::Ethereum::Swarm
Scrittura e lettura dei dati
Riepilogo 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 di un contratto utilizzando Web3.py
Compilazione del contratto
Connessione a un fornitore
Eseguire la pubblicazione del contratto
Salvataggio dell'indirizzo del contratto e dell'abi in un file
Esecuzione dello script di pubblicazione del contratto
Metodi di chiamata del contratto
Lettura dell'indirizzo e dell'abi di un contratto da un file JSON
Connessione a un fornitore
Creazione di un oggetto contratto
Metodi di chiamata del contratto
Tartufo e Web3.py
Riepilogo della lezione

Lezione 12. OracoliUn contratto intelligente può fidarsi dei dati provenienti dal mondo esterno?
Oracoli come intermediari di informazioni blockchain
Fonte di dati
Codice per rappresentare i dati dall'origine
Oracle per la registrazione del tasso di cambio nella blockchain
USDRateContratto Oracle
Aggiornamento del tasso di cambio in un contratto intelligente
Utilizzo di un provider Web Socket
In attesa dell'evento RateUpdate
Gestione dell'evento RateUpdate
Avvio di un aggiornamento dei dati in un contratto intelligente
Riepilogo della lezione

Fonte: habr.com

Aggiungi un commento