{"id":39018,"date":"2019-10-31T22:27:25","date_gmt":"2019-10-31T19:27:25","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kniga-sozdanie-smart-kontraktov-solidity-dlya-blokchejna-ethereum-prakticheskoe-rukovodstvo\/"},"modified":"2019-10-31T22:27:25","modified_gmt":"2019-10-31T19:27:25","slug":"kniga-sozdanie-smart-kontraktov-solidity-dlya-blokchejna-ethereum-prakticheskoe-rukovodstvo","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/novosti-interneta\/kniga-sozdanie-smart-kontraktov-solidity-dlya-blokchejna-ethereum-prakticheskoe-rukovodstvo","title":{"rendered":"Il libro \u00abCreazione di smart contract Solidity per il blockchain Ethereum. Guida pratica\u00bb","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Il libro \u00abCreazione di smart contract Solidity per il blockchain Ethereum. Guida pratica\u00bb\" src=\"\/wp-content\/uploads\/2019\/10\/9549e708e99fef6892045ff854231fa7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nPer oltre un anno ho lavorato al libro \"Creazione di smart contract Solidity per la blockchain Ethereum. Guida pratica\", e ora questo lavoro \u00e8 completato, e il libro <noindex><a rel=\"nofollow\" href=\"https:\/\/www.litres.ru\/aleksandr-frolov-198\/sozdanie-smart-kontraktov-solidity-dlya-blokcheyna-et\/\">\u00e8 pubblicato ed \u00e8 disponibile su Litres<\/a><\/noindex>.<\/p>\n<p>Spero che il mio libro aiuti a iniziare rapidamente la creazione di smart contract Solidity e applicazioni decentralizzate DApp per la blockchain Ethereum. \u00c8 composto da 12 lezioni con esercizi pratici. Completandoli, il lettore potr\u00e0 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. <\/p>\n<p>Il libro \u00e8 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.<\/p>\n<p>Di seguito troverai il sommario e il primo capitolo del libro (anche su <noindex><a rel=\"nofollow\" href=\"https:\/\/www.litres.ru\/aleksandr-frolov-198\/sozdanie-smart-kontraktov-solidity-dlya-blokcheyna-et\/\">Litres<\/a><\/noindex> sono disponibili estratti del libro). Spero di ricevere feedback, commenti e suggerimenti. Tenter\u00f2 di tenerne conto nella preparazione della prossima edizione del libro.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<b class=\"spoiler_title\">Indice<\/b><b class=\"spoiler_title\">Introduzione<\/b>Il nostro libro \u00e8 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.<\/p>\n<p>\u00c8 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, \u00e8 possibile utilizzare un Raspberry Pi.<\/p>\n<p><b>Nella prima lezione <\/b>esamineremo i principi di funzionamento della blockchain di Ethereum e la terminologia fondamentale, oltre a discutere dove \u00e8 possibile utilizzare questa blockchain. <\/p>\n<p>Obiettivo <b>nella seconda lezione<\/b> creeremo un nodo di una blockchain di Ethereum privata per attivit\u00e0 future durante questo corso su un server Ubuntu e Debian. Esamineremo le peculiarit\u00e0 dell'installazione degli strumenti principali, come geth, che permette il funzionamento del nodo della nostra blockchain, e il demone di storage decentralizzato swarm.<\/p>\n<p><b>Terza lezione<\/b> ti insegner\u00e0 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.<\/p>\n<p><b>Quarto lezione<\/b> \u00e8 dedicata agli account e alle unit\u00e0 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.<\/p>\n<p><b>Nella quinta lezione<\/b> imparerai a conoscere i contratti intelligenti nella rete Ethereum, scoprirai come vengono eseguiti dalla macchina virtuale Ethereum. <\/p>\n<p>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.<br \/>\nParleremo anche del cosiddetto Application Binary Interface (ABI) e ti insegneremo ad usarlo.<\/p>\n<p><b>Sesta lezione<\/b> dedicato alla creazione di script JavaScript che operano sotto Node.js e gestiscono operazioni con contratti smart in Solidity.<\/p>\n<p>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. <\/p>\n<p>Inoltre, imparerete a trasferire fondi tra account normali e a depositarli su account di contratti smart tramite script.<\/p>\n<p><b>Nella settima lezione<\/b> 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.<\/p>\n<p><b>L'ottava lezione<\/b> \u00e8 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.<\/p>\n<p><b>Nella nona lezione<\/b> Ti avvicinerai un passo in pi\u00f9 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 \u00e8 molto utile prima della pubblicazione sulla rete principale: qui tutto \u00e8 quasi reale, ma gratuito.<\/p>\n<p>Durante la lezione creerai un nodo sulla rete di test Rinkeby, lo rifornirai di fondi e pubblicherai uno smart contract.<\/p>\n<p><b>Lezione 10<\/b> \u00e8 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. <\/p>\n<p>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.<\/p>\n<p><b>L'obiettivo della lezione 11<\/b> \u2014 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\u00e9 per l'invocazione delle sue funzioni. Web3.py verr\u00e0 utilizzato sia in modo autonomo che insieme all'ambiente di sviluppo integrato Truffle.<\/p>\n<p><b>Nella lezione 12<\/b> imparerai a trasferire dati tra contratti intelligenti e il mondo reale utilizzando gli oracoli. Questo ti sar\u00e0 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.<\/p>\n<p><b class=\"spoiler_title\">Lezione 1. Introduzione alla blockchain e alla rete Ethereum<\/b><b>Obiettivo della lezione:<\/b> conoscere i principi di funzionamento della blockchain Ethereum, le sue aree di applicazione e la terminologia di base.<br \/>\n<b>Attivit\u00e0 pratiche:<\/b> non sono previste in questa lezione.<\/p>\n<p>Oggi \u00e8 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.<\/p>\n<p>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.<\/p>\n<p>\u00c8 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\u00e0 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).<\/p>\n<h3>Che cos'\u00e8 la blockchain<\/h3>\n<p>\nLa blockchain \u00e8 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\u00ec via.<\/p>\n<p>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. <br \/>\nPuoi 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. \u00c8 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. <\/p>\n<h4>Database distribuito<\/h4>\n<p>\nLa blockchain pu\u00f2 essere vista come un database distribuito, replicato su tutti i nodi della rete blockchain. In teoria, la blockchain rimarr\u00e0 funzionante finch\u00e9 c'\u00e8 almeno un nodo attivo che conserva tutti i blocchi della blockchain.<\/p>\n<h4>Registro dei dati distribuito<\/h4>\n<p>\nLa blockchain pu\u00f2 essere vista come un registro distribuito di dati e operazioni (transazioni). Un altro termine per questo registro \u00e8 libro mastro. <\/p>\n<p>In un registro distribuito si possono aggiungere dati, ma non \u00e8 possibile modificarli o eliminarli. Questa impossibilit\u00e0 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.<\/p>\n<p>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.<\/p>\n<h4>Transazioni<\/h4>\n<p>\nLa blockchain memorizza informazioni sulle operazioni (transazioni) all'interno di blocchi. Le transazioni vecchie, gi\u00e0 completate, non possono essere annullate o modificate. Le nuove transazioni vengono memorizzate in nuovi blocchi aggiunti.<\/p>\n<p>In questo modo, nella blockchain pu\u00f2 essere registrata inalterata l'intera storia delle transazioni. Pertanto, la blockchain pu\u00f2 essere utilizzata, ad esempio, per la conservazione sicura delle operazioni bancarie, delle informazioni sui diritti d'autore, e della storia dei cambi di propriet\u00e0 degli immobili, ecc.<\/p>\n<p>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.<\/p>\n<h4>Blockchain pubblici e privati<\/h4>\n<p>\n\u00c8 importante notare che quanto detto \u00e8 vero solo per le cosiddette reti pubbliche blockchain, che non possono essere controllate da alcun soggetto fisico o giuridico, organi statali o governi. <br \/>\nLe cosiddette reti private blockchain sono sotto il pieno controllo dei loro creatori, e qui \u00e8 possibile tutto, ad esempio la completa sostituzione di tutti i blocchi della catena.<\/p>\n<h4>Applicazioni pratiche della blockchain<\/h4>\n<p>\nA cosa pu\u00f2 servire la blockchain?<\/p>\n<p>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 \u00e8 possibile creare, ad esempio, registri distribuiti affidabili di vari tipi di documenti.<\/p>\n<p>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).<br \/>\nLa blockchain garantisce la conservazione e l'immutabilit\u00e0 delle transazioni registrate nei blocchi, motivo per cui pu\u00f2 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.<\/p>\n<p>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\u00e0 del proprietario dell'attivo crittografico. <\/p>\n<p>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 \u00e8 particolarmente efficace se il pagamento viene effettuato in criptovaluta Ether.<\/p>\n<p>La blockchain di Ethereum e gli smart contract di Ethereum, scritti nel linguaggio di programmazione Solidity, possono essere utilizzati, ad esempio, in settori come:<\/p>\n<ul>\n<li>un'alternativa alla notarizzazione dei documenti;<\/li>\n<li>conservazione del registro degli immobili e delle informazioni sulle operazioni immobiliari;<\/li>\n<li>conservazione delle informazioni sui diritti d'autore per le opere di propriet\u00e0 intellettuale (libri, immagini, opere musicali, ecc.);<\/li>\n<li>creazione di sistemi di voto indipendenti;<\/li>\n<li>settore finanziario e attivit\u00e0 bancaria;<\/li>\n<li>logistica su scala internazionale, monitoraggio del movimento delle merci;<\/li>\n<li>conservazione dei dati personali come equivalente ai sistemi di identit\u00e0;<\/li>\n<li>transazioni sicure nel campo commerciale;<\/li>\n<li>archiviazione dei risultati di esami medici, nonch\u00e9 della storia delle procedure assegnate;<\/li>\n<\/ul>\n<p><\/p>\n<h4>Problemi con la blockchain<\/h4>\n<p>\nMa, naturalmente, non \u00e8 tutto cos\u00ec semplice come potrebbe sembrare! <\/p>\n<p>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\u00e0 di utilizzare metodi di ingegneria sociale per rubare l'accesso ai portafogli di criptovalute, ecc.<\/p>\n<p>Ancora una volta, se si parla di un blockchain privato di propriet\u00e0 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\u00e0 al massimo pari al livello di fiducia in quella persona o organizzazione.<\/p>\n<p>\u00c8 inoltre importante considerare che i dati registrati sulla blockchain diventano accessibili a tutti. In questo senso, la blockchain (soprattutto quella pubblica) non \u00e8 adatta per memorizzare informazioni riservate. Tuttavia, il fatto che le informazioni sulla blockchain non possano essere modificate pu\u00f2 aiutare a prevenire o indagare vari tipi di frodi.<\/p>\n<p>Le applicazioni decentralizzate di Ethereum saranno pi\u00f9 comode se si paga per il loro utilizzo con criptovaluta. Pi\u00f9 persone possiedono criptovalute o sono disposte ad acquistarle, maggiore sar\u00e0 la popolarit\u00e0 delle applicazioni DApp e dei contratti intelligenti.<\/p>\n<p>Tra i problemi comuni della blockchain che ostacolano la sua applicazione pratica, si possono menzionare la limitata velocit\u00e0 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.<\/p>\n<p>Un altro problema \u00e8 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\u00f2 leggere i dati da siti web o dispositivi fisici (sensori, contatti, ecc.), n\u00e9 pu\u00f2 inviare dati a dispositivi esterni. Discuteremo di questo problema e dei modi per risolverlo in una lezione dedicata ai cosiddetti Oracoli \u2014 intermediari informativi dei contratti intelligenti.<\/p>\n<p>Ci sono anche delle restrizioni legali. In alcuni paesi, ad esempio, \u00e8 vietato utilizzare le criptovalute come mezzo di pagamento, ma \u00e8 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, \u00e8 necessario familiarizzare con la legislazione del paese sotto la cui giurisdizione rientra il vostro progetto.<\/p>\n<h3>Come si forma la catena di blocchi<\/h3>\n<p>\nCome gi\u00e0 accennato, la blockchain \u00e8 una semplice catena di blocchi di dati. Prima si forma il primo blocco di questa catena, poi si aggiunge il secondo e cos\u00ec via. Si presume che i dati delle transazioni siano memorizzati nei blocchi e aggiunti all'ultimo blocco.<\/p>\n<p>Nella Fig. 1.1 abbiamo mostrato la variante pi\u00f9 semplice della sequenza di blocchi, dove il primo blocco fa riferimento al successivo. <\/p>\n<p><img decoding=\"async\" alt=\"Il libro \u00abCreazione di smart contract Solidity per il blockchain Ethereum. Guida pratica\u00bb\" src=\"\/wp-content\/uploads\/2019\/10\/23ca04ba2c8914334032523d01bf8b80.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 1.1. Sequenza semplice di blocchi<\/i><\/p>\n<p>In questa modalit\u00e0, tuttavia, \u00e8 molto facile falsificare il contenuto di qualsiasi blocco della catena, poich\u00e9 i blocchi non contengono alcuna informazione per proteggere contro le modifiche. Considerando che la blockchain \u00e8 destinata a essere utilizzata da individui e aziende che non si fidano l'uno dell'altro, si pu\u00f2 concludere che questo metodo di archiviazione dei dati non sia adatto per una blockchain.<\/p>\n<p>Impegniamoci a proteggere i blocchi dalla falsificazione. Nella prima fase proveremo a proteggere ogni blocco con un checksum (fig. 1.2).<\/p>\n<p><img decoding=\"async\" alt=\"Il libro \u00abCreazione di smart contract Solidity per il blockchain Ethereum. Guida pratica\u00bb\" src=\"\/wp-content\/uploads\/2019\/10\/141502accec14e868a9382c612cfc791.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 1.2. Aggiungiamo la protezione dei dati dei blocchi con un checksum<\/i><\/p>\n<p>Ora un malintenzionato non pu\u00f2 semplicemente modificare un blocco, poich\u00e9 contiene un checksum dei dati del blocco. Il controllo del checksum mostrer\u00e0 che i dati sono stati modificati.<\/p>\n<p>Per calcolare il checksum, \u00e8 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. <\/p>\n<p>Anche con una piccola modifica del contenuto di un blocco dati, il valore della funzione hash cambier\u00e0. Analizzando il valore della funzione hash, non \u00e8 possibile ricostruire il blocco dati per il quale \u00e8 stata calcolata.<\/p>\n<p>Sar\u00e0 sufficiente questa protezione? Purtroppo, no.<\/p>\n<p>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\u00f2 facilmente sostituire il contenuto di un blocco. Inoltre, nulla gli impedirebbe di rimuovere blocchi dalla catena o di aggiungerne di nuovi.<\/p>\n<p>Per proteggere l'intera catena nel suo complesso, \u00e8 possibile memorizzare in ogni blocco, insieme ai dati, anche l'hash dei dati del blocco precedente (fig. 1.3).<\/p>\n<p><img decoding=\"async\" alt=\"Il libro \u00abCreazione di smart contract Solidity per il blockchain Ethereum. Guida pratica\u00bb\" src=\"\/wp-content\/uploads\/2019\/10\/f414ab67dbabc763c537a430e01ed065.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 1.3. Aggiungiamo nel blocco dati l'hash del blocco precedente<\/i><\/p>\n<p>In questo schema, per modificare un qualsiasi blocco, \u00e8 necessario ricalcolare le funzioni hash di tutti i blocchi successivi. Apparentemente, qual \u00e8 il problema?<\/p>\n<p>Nei veri blockchain, sono create ulteriori difficolt\u00e0 per l'aggiunta di nuovi blocchi: vengono utilizzati algoritmi che richiedono molte risorse computazionali. Considerando che per apportare modifiche a un blocco \u00e8 necessario ricalcolare non solo quel blocco, ma tutti quelli successivi, diventa estremamente difficile.<\/p>\n<p>Ricordiamo anche che i dati del blockchain vengono memorizzati (duplicati) su numerosi nodi della rete, cio\u00e8 viene utilizzato uno storage decentralizzato. Questo complica notevolmente la falsificazione di un blocco, poich\u00e9 le modifiche devono essere apportate a tutti i nodi della rete.<\/p>\n<p>Poich\u00e9 i blocchi memorizzano informazioni sul blocco precedente, \u00e8 possibile verificare il contenuto di tutti i blocchi della catena.<\/p>\n<h3>Blockchain Ethereum<\/h3>\n<p>\nLa blockchain Ethereum \u00e8 una piattaforma sulla quale \u00e8 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.<\/p>\n<p>Questa piattaforma \u00e8 stata creata nel 2013 da Vitalik Buterin, fondatore della rivista Bitcoin Magazine, e lanciata nel 2015. Tutto ci\u00f2 che esploreremo o faremo nel nostro corso di formazione riguarda specificamente la blockchain di Ethereum e i contratti smart in Solidity.<\/p>\n<h3>Mining o come vengono creati i blocchi<\/h3>\n<p>\nIl mining (mining) \u00e8 un processo piuttosto complesso e dispendioso in termini di risorse per aggiungere nuovi blocchi alla catena della blockchain, e non \u00e8 affatto \"estrazione di criptovalute\". Il mining garantisce il funzionamento della blockchain, poich\u00e9 \u00e8 proprio questo processo a responsabile dell'aggiunta delle transazioni alla blockchain di Ethereum.<\/p>\n<p>Le persone e le organizzazioni che si occupano di aggiungere blocchi sono chiamate miner (miner).<br \/>\nIl 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. <\/p>\n<p>Se il nodo miner ha trovato il valore corretto del Nonce, ci\u00f2 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 \u00e8 di 5 Ether, ma nel tempo questa verr\u00e0 ridotta.<\/p>\n<p>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.<\/p>\n<h3>Conclusioni della lezione<\/h3>\n<p>\nNella 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\u00e0 registrati non pu\u00f2 essere modificato, poich\u00e9 ci\u00f2 richiederebbe di ricalcolare tutti i blocchi successivi su molti nodi della rete, il che richiede molte risorse e tempo.<\/p>\n<p>La blockchain pu\u00f2 essere utilizzata per la registrazione dei risultati delle transazioni. Il suo scopo principale \u00e8 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\u00e0, la documentazione e altro.<\/p>\n<p>Hai anche appreso che nell'uso della blockchain possono sorgere vari problemi. Questi includono problemi di verifica delle informazioni aggiunte alla blockchain, la velocit\u00e0 di funzionamento della blockchain, i costi delle transazioni, il problema dello scambio di dati tra contratti smart e il mondo reale, nonch\u00e9 potenziali attacchi di malintenzionati mirati a rubare fondi in criptovaluta dagli account degli utenti.<\/p>\n<p>Inoltre, abbiamo fornito una breve panoramica del mining come processo di aggiunta di nuovi blocchi alla blockchain. Il mining \u00e8 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.<\/p>\n<p><b class=\"spoiler_title\">Lezione 2. Preparazione dell'ambiente di lavoro nei sistemi operativi Ubuntu e Debian<\/b>Scelta del sistema operativo<br \/>\nInstallazione degli strumenti necessari<br \/>\nInstallazione di Geth e Swarm su Ubuntu<br \/>\nInstallazione di Geth e Swarm su Debian<br \/>\nPreparazione preliminare<br \/>\nDownload della distribuzione di Go<br \/>\nImpostazione delle variabili d'ambiente<br \/>\nVerifica della versione di Go<br \/>\nInstallazione di Geth e Swarm<br \/>\nCreazione di una blockchain privata<br \/>\n\u0413\u043e\u0442\u043e\u0432\u0438\u043c \u0444\u0430\u0439\u043b genesis.json<br \/>\nCreazione di una directory di lavoro<br \/>\nCreazione di un account<br \/>\nAvvio dell'inizializzazione del nodo<br \/>\nParametri di avvio del nodo<br \/>\nColleghiamoci al nostro nodo<br \/>\nGestione del mining e verifica del saldo<br \/>\nChiusura della console di Geth<br \/>\nConclusioni della lezione<\/p>\n<p><b class=\"spoiler_title\">Lezione 3. Preparazione dell'ambiente di lavoro su Raspberry Pi 3<\/b>Preparazione di Raspberry Pi 3 al lavoro<br \/>\nInstallazione di Raspbian<br \/>\nInstallazione degli aggiornamenti<br \/>\nAbilitazione dell'accesso SSH<br \/>\nImpostazione di un indirizzo IP statico<br \/>\nInstallazione degli strumenti necessari<br \/>\nInstallazione di Go<br \/>\nDownload della distribuzione di Go<br \/>\nImpostazione delle variabili d'ambiente<br \/>\nVerifica della versione di Go<br \/>\nInstallazione di Geth e Swarm<br \/>\nCreazione di una blockchain privata<br \/>\nVerifica dell'account e del saldo<br \/>\nConclusioni della lezione<\/p>\n<p><b class=\"spoiler_title\">Lezione 4. Account e trasferimento di fondi tra account<\/b>Visualizzazione e aggiunta di account<br \/>\nVisualizzazione dell'elenco degli account<br \/>\nAggiunta di un account<br \/>\nParametri del comando geth account<br \/>\nPassword degli account<br \/>\nCriptovaluta in Ethereum<br \/>\nUnit\u00e0 monetarie di Ethereum<br \/>\nDeterminazione del saldo attuale dei nostri account<br \/>\nTrasferimento di fondi da un account all'altro<br \/>\nMetodo eth.sendTransaction<br \/>\nVisualizzazione dello stato della transazione<br \/>\nRicevuta della transazione<br \/>\nConclusioni della lezione<\/p>\n<p><b class=\"spoiler_title\">Lezione 5. Pubblicazione del primo contratto<\/b>Smart contract su Ethereum<br \/>\nEsecuzione del contratto smart<br \/>\nMacchina virtuale Ethereum<br \/>\nAmbiente di sviluppo integrato Remix Solidity IDE<br \/>\nAvvio della compilazione<br \/>\nChiamata delle funzioni del contratto<br \/>\nPubblicazione del contratto in una rete privata<br \/>\nOttenere la definizione ABI e il codice binario del contratto<br \/>\nPubblicazione del contratto<br \/>\nVerifica dello stato della transazione di pubblicazione del contratto<br \/>\nChiamata delle funzioni del contratto<br \/>\nCompilatore batch solc<br \/>\nInstallazione di solc su Ubuntu<br \/>\nInstallazione di solc su Debian<br \/>\nCompilazione del contratto HelloSol<br \/>\nPubblicazione del contratto<br \/>\nInstallazione di solc su Rasberian<br \/>\nConclusioni della lezione<\/p>\n<p><b class=\"spoiler_title\">\u0423\u0440\u043e\u043a 6. \u0421\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b \u0438 Node.js<\/b>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Node.js<br \/>\nInstallazione su Ubuntu<br \/>\nInstallazione su Debian<br \/>\nInstallazione e avvio di Ganache-cli<br \/>\nInstallazione di Web3<br \/>\nInstallazione di solc<br \/>\nInstallazione di Node.js su Rasberian<br \/>\nScript per ottenere l'elenco degli account nella console<br \/>\nScript per la pubblicazione del contratto smart<br \/>\nAvvio e ottenimento dei parametri<br \/>\nOttenere i parametri di avvio<br \/>\nCompilazione del contratto<br \/>\nSblocco dell'account<br \/>\nCaricamento dell'ABI e del codice binario del contratto<br \/>\nValutazione della quantit\u00e0 di gas necessaria<br \/>\nCreazione dell'oggetto e avvio della pubblicazione del contratto<br \/>\nAvvio dello script di pubblicazione del contratto<br \/>\nChiamata delle funzioni del contratto smart<br \/>\n\u00c8 possibile aggiornare un contratto smart pubblicato?<br \/>\nLavorare con Web3 versione 1.0.x<br \/>\nOttenere l'elenco degli account<br \/>\nPubblicazione del contratto<br \/>\nChiamata delle funzioni del contratto<br \/>\nTrasferimento di fondi da un account all'altro<br \/>\nTrasferimento di fondi su un account contratto<br \/>\nAggiorniamo il contratto intelligente HelloSol<br \/>\nCreiamo uno script per visualizzare il saldo dell'account<br \/>\n\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 getBalance \u0432 \u0441\u043a\u0440\u0438\u043f\u0442 call_contract_get_promise.js<br \/>\nRicarichiamo il saldo del contratto intelligente<br \/>\nConclusioni della lezione<\/p>\n<p><b class=\"spoiler_title\">Lezione 7. Introduzione a Truffle<\/b>Installazione di Truffle<br \/>\nCreiamo il progetto HelloSol<br \/>\nCreazione della cartella e dei file del progetto<br \/>\nCartella contracts<br \/>\nCartella migrations<br \/>\nCartella test<br \/>\n\u0424\u0430\u0439\u043b truffle-config.js<br \/>\nCompilazione del contratto HelloSol<br \/>\nAvvio della pubblicazione del contratto<br \/>\nChiamata delle funzioni del contratto HelloSol nel prompt di Truffle<br \/>\n\u0412\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 HelloSol \u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 JavaScript \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c Node.js<br \/>\nInstallazione del modulo truffle-contract<br \/>\nChiamata delle funzioni del contratto getValue e getString<br \/>\nChiamata delle funzioni del contratto setValue e setString<br \/>\nModifica del contratto e ripubblicazione<br \/>\nLavorare con Web3 versione 1.0.x<br \/>\nEffettuiamo modifiche al contratto intelligente HelloSol<br \/>\nScript per chiamare i metodi del contratto<br \/>\nTesting in Truffle<br \/>\nTest in Solidity<br \/>\nTest in JavaScript<br \/>\nConclusioni della lezione<\/p>\n<p><b class=\"spoiler_title\">Lezione 8. Tipi di dati in Solidity<\/b>Contratto per lo studio dei tipi di dati<br \/>\nTipi di dati logici<br \/>\nNumeri interi senza segno e interi con segno<br \/>\nNumeri a punto fisso<br \/>\nIndirizzo<br \/>\nVariabili di tipi complessi<br \/>\nArray di dimensione fissa<br \/>\nArray dinamici<br \/>\nElenco<br \/>\nStrutture<br \/>\nDizionari mapping<br \/>\nConclusioni della lezione<\/p>\n<p><b class=\"spoiler_title\">Lezione 9. Migrazione dei contratti in una rete privata e nella rete Rinkeby<\/b>Pubblicazione del contratto da Truffle in una rete privata Geth<br \/>\nPreparazione del nodo della rete privata<br \/>\nPreparazione del contratto per il funzionamento<br \/>\nCompilazione e migrazione del contratto nella rete Truffle<br \/>\nAvvio della migrazione nella rete locale geth<br \/>\nEstrazione degli artifact Truffle<br \/>\nPubblicazione del contratto da Truffle nella rete di test Rinkeby<br \/>\nPreparazione del nodo Geth per lavorare con Rinkeby<br \/>\nSincronizzazione del nodo<br \/>\nAggiunta di account<br \/>\nRifornimento dell'account Rinkeby con Ether<br \/>\nAvvio della migrazione del contratto nella rete Rinkeby<br \/>\nVisualizzazione delle informazioni sul contratto nella rete Rinkeby<br \/>\nConsole Truffle per la rete Rinkeby<br \/>\nUn modo pi\u00f9 semplice per chiamare le funzioni del contratto<br \/>\n\u0412\u044b\u0437\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 Node.js<br \/>\nTrasferimento di fondi tra account nella console Truffle per Rinkeby<br \/>\nConclusioni della lezione<\/p>\n<p><b class=\"spoiler_title\">Lezione 10. Storage decentralizzato Ethereum Swarm<\/b>Come funziona Ethereum Swarm<br \/>\nInstallazione e avvio di Swarm<br \/>\nOperazioni con file e directory<br \/>\nCaricamento di file in Ethereum Swarm<br \/>\nLettura di file da Ethereum Swarm<br \/>\nVisualizzazione del manifesto del file caricato<br \/>\nCaricamento di directory con sottodirectory<br \/>\nLettura di file dalla directory caricata<br \/>\nUtilizzo di un gateway pubblico di Swarm<br \/>\n\u041e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a Swarm \u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 Node.js<br \/>\nModulo Perl Net::Ethereum::Swarm<br \/>\nInstallazione del modulo Net::Ethereum::Swarm<br \/>\nScrittura e lettura dei dati<br \/>\nConclusioni della lezione<\/p>\n<p><b class=\"spoiler_title\">Lezione 11. Framework Web3.py per lavorare con Ethereum in Python<\/b>Installazione di Web3.py<br \/>\nAggiornamento e installazione dei pacchetti necessari<br \/>\nInstallazione del modulo easysolc<br \/>\nPubblicazione del contratto tramite Web3.py<br \/>\nCompilazione del contratto<br \/>\nConnessione al provider<br \/>\nEsecuzione della pubblicazione del contratto<br \/>\nSalvataggio dell'indirizzo del contratto e di ABI in un file<br \/>\nAvvio dello script di pubblicazione del contratto<br \/>\nChiamata dei metodi del contratto<br \/>\nLettura dell'indirizzo e di ABI del contratto da un file JSON<br \/>\nConnessione al provider<br \/>\nCreazione di un oggetto contratto<br \/>\nChiamata dei metodi del contratto<br \/>\nTruffle e Web3.py<br \/>\nConclusioni della lezione<\/p>\n<p><b class=\"spoiler_title\">Lezione 12. Oracle<\/b>Pu\u00f2 un contratto intelligente fidarsi dei dati dal mondo esterno?<br \/>\nOracle come intermediari informativi della blockchain<br \/>\nFonte dei dati<br \/>\nCodice per rappresentare i dati dalla fonte<br \/>\nOracle per registrare il tasso di cambio nella blockchain<br \/>\nContratto USDRateOracle<br \/>\nAggiornamento del tasso di cambio nel contratto intelligente<br \/>\nUtilizzo di un provider Web Socket<br \/>\nAttesa dell'evento RateUpdate<br \/>\nGestione dell'evento RateUpdate<br \/>\nInizio dell'aggiornamento dei dati nel contratto intelligente<br \/>\nConclusioni della lezione<\/p>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/467347\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0411\u043e\u043b\u044c\u0448\u0435 \u0433\u043e\u0434\u0430 \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0430\u0434 \u043a\u043d\u0438\u0433\u043e\u0439 \u00ab\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 Solidity \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 Ethereum. \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u00bb, \u0438 \u0432\u043e\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430, \u0430 \u043a\u043d\u0438\u0433\u0430 \u0438\u0437\u0434\u0430\u043d\u0430 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 \u041b\u0438\u0442\u0440\u0435\u0441\u0435. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u043c\u043e\u044f \u043a\u043d\u0438\u0433\u0430 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 Solidity \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 DApp \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 Ethereum. \u041e\u043d\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 12 \u0443\u0440\u043e\u043a\u043e\u0432 \u0441 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0437\u0430\u0434\u0430\u043d\u0438\u044f\u043c\u0438. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0438\u0445, \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29275,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-39018","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-novosti-interneta"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0411\u043e\u043b\u044c\u0448\u0435 \u0433\u043e\u0434\u0430 \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0430\u0434 \u043a\u043d\u0438\u0433\u043e\u0439 \u00ab\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 Solidity \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 Ethereum. \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u00bb, \u0438 \u0432\u043e\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430, \u0430 \u043a\u043d\u0438\u0433\u0430 \u0438\u0437\u0434\u0430\u043d\u0430 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 \u041b\u0438\u0442\u0440\u0435\u0441\u0435. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u043c\u043e\u044f \u043a\u043d\u0438\u0433\u0430 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 Solidity \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 DApp \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 Ethereum. \u041e\u043d\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 12 \u0443\u0440\u043e\u043a\u043e\u0432 \u0441 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0437\u0430\u0434\u0430\u043d\u0438\u044f\u043c\u0438. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0438\u0445, \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/novosti-interneta\/kniga-sozdanie-smart-kontraktov-solidity-dlya-blokchejna-ethereum-prakticheskoe-rukovodstvo\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u043d\u0438\u0433\u0430 \u00ab\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 Solidity \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 Ethereum. \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u00bb | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0411\u043e\u043b\u044c\u0448\u0435 \u0433\u043e\u0434\u0430 \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0430\u0434 \u043a\u043d\u0438\u0433\u043e\u0439 \u00ab\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 Solidity \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 Ethereum. \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u00bb, \u0438 \u0432\u043e\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430, \u0430 \u043a\u043d\u0438\u0433\u0430 \u0438\u0437\u0434\u0430\u043d\u0430 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 \u041b\u0438\u0442\u0440\u0435\u0441\u0435. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u043c\u043e\u044f \u043a\u043d\u0438\u0433\u0430 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 Solidity \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 DApp \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 Ethereum. \u041e\u043d\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 12 \u0443\u0440\u043e\u043a\u043e\u0432 \u0441 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0437\u0430\u0434\u0430\u043d\u0438\u044f\u043c\u0438. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0438\u0445, \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/novosti-interneta\/kniga-sozdanie-smart-kontraktov-solidity-dlya-blokchejna-ethereum-prakticheskoe-rukovodstvo\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:27:25+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:27:25+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Libro \"Creazione di contratti intelligenti Solidity per il blockchain Ethereum. Guida pratica\" | ProHoster","description":"Per oltre un anno ho lavorato al libro \"Creazione di smart contract Solidity per la blockchain Ethereum. Guida pratica\", e ora questo lavoro \u00e8 completato, e il libro \u00e8 pubblicato e disponibile su Litres. Spero che il mio libro possa aiutare a iniziare rapidamente a creare smart contract Solidity e applicazioni distribuite DApp per la blockchain Ethereum. Consiste in 12 lezioni con esercizi pratici. Completandoli, il lettore","canonical_url":"https:\/\/prohoster.info\/it\/blog\/novosti-interneta\/kniga-sozdanie-smart-kontraktov-solidity-dlya-blokchejna-ethereum-prakticheskoe-rukovodstvo","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u043d\u0438\u0433\u0430 \u00ab\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 Solidity \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 Ethereum. \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u00bb | ProHoster","og:description":"\u0411\u043e\u043b\u044c\u0448\u0435 \u0433\u043e\u0434\u0430 \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0430\u0434 \u043a\u043d\u0438\u0433\u043e\u0439 \u00ab\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 Solidity \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 Ethereum. \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u00bb, \u0438 \u0432\u043e\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430, \u0430 \u043a\u043d\u0438\u0433\u0430 \u0438\u0437\u0434\u0430\u043d\u0430 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 \u041b\u0438\u0442\u0440\u0435\u0441\u0435. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u043c\u043e\u044f \u043a\u043d\u0438\u0433\u0430 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 Solidity \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 DApp \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 Ethereum. \u041e\u043d\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 12 \u0443\u0440\u043e\u043a\u043e\u0432 \u0441 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0437\u0430\u0434\u0430\u043d\u0438\u044f\u043c\u0438. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0438\u0445, \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c","og:url":"https:\/\/prohoster.info\/it\/blog\/novosti-interneta\/kniga-sozdanie-smart-kontraktov-solidity-dlya-blokchejna-ethereum-prakticheskoe-rukovodstvo","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:27:25+00:00","article:modified_time":"2019-10-31T19:27:25+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"39018","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 00:24:24","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:58:39","updated":"2026-01-24 00:24:24"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/39018","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=39018"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/39018\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/29275"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=39018"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=39018"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=39018"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}