El llibre "Crear contractes intel·ligents Solidity per a la cadena de blocs Ethereum. Guia pràctica"

El llibre "Crear contractes intel·ligents Solidity per a la cadena de blocs Ethereum. Guia pràctica"
Fa més d'un any que estic treballant en el llibre "Creating Solidity Smart Contracts for the Ethereum Blockchain. Guia pràctica”, i ara s'ha acabat aquest treball, i el llibre publicat i disponible en Litres.

Espero que el meu llibre us ajudi a començar ràpidament a crear contactes intel·ligents de Solidity i DApps distribuïdes per a la cadena de blocs Ethereum. Consta de 12 lliçons amb tasques pràctiques. Després d'haver-los completat, el lector podrà crear els seus propis nodes locals d'Ethereum, publicar contractes intel·ligents i trucar als seus mètodes, intercanviar dades entre el món real i contractes intel·ligents mitjançant oracles i treballar amb la xarxa de depuració de proves de Rinkeby.

El llibre s'adreça a tothom que estigui interessat en tecnologies avançades en l'àmbit de les cadenes de blocs i vulgui adquirir ràpidament coneixements que els permetin fer treballs interessants i prometedors.

A continuació trobareu la taula de continguts i el primer capítol del llibre (també Litres fragments del llibre estan disponibles). Espero rebre comentaris, comentaris i suggeriments. Intentaré tenir-ho en compte a l'hora de preparar la propera edició del llibre.

Taula de contingutsIntroduccióEl nostre llibre està pensat per a aquells que volen no només entendre els principis de la cadena de blocs Ethereum, sinó també adquirir habilitats pràctiques per crear DApps distribuïdes en el llenguatge de programació Solidity per a aquesta xarxa.

És millor no només llegir aquest llibre, sinó treballar-hi, completant les tasques pràctiques descrites a les lliçons. Per funcionar, necessitareu un ordinador local, un servidor virtual o al núvol amb el sistema operatiu Debian o Ubuntu instal·lat. També podeu utilitzar Raspberry Pi per realitzar moltes tasques.

A la primera lliçó Veurem els principis de funcionament de la cadena de blocs d'Ethereum i la terminologia bàsica, i també parlarem d'on es pot utilitzar aquesta cadena de blocs.

Objectiu segona lliçó — creeu un node de cadena de blocs d'Ethereum privat per treballar més en aquest curs en un servidor Ubuntu i Debian. Veurem les característiques d'instal·lació d'utilitats bàsiques, com ara geth, que garanteix el funcionament del nostre node blockchain, així com el dimoni d'emmagatzematge de dades descentralitzat d'eixam.

Tercera lliçó us ensenyarà com experimentar amb Ethereum en un microordinador Raspberry Pi de baix cost. Instal·laràs el sistema operatiu (SO) Rasberian al Raspberry Pi, la utilitat Geth que alimenta el node blockchain i el dimoni d'emmagatzematge de dades descentralitzat Swarm.

Lliçó quatre està dedicat als comptes i unitats de criptomoneda a la xarxa Ethereum, així com a maneres de transferir fons d'un compte a un altre des de la consola Geth. Aprendràs a crear comptes, iniciar transaccions de transferència de fons i obtenir l'estat i el rebut de la transacció.

A la cinquena lliçó Coneixeràs els contractes intel·ligents a la xarxa Ethereum i coneixeràs la seva execució per la màquina virtual Ethereum.

Crearàs i publicaràs el teu primer contracte intel·ligent a la xarxa privada Ethereum i aprendràs a trucar a les seves funcions. Per fer-ho, utilitzareu l'IDE Remix Solidity. També aprendràs a instal·lar i utilitzar el compilador de lots solc.
També parlarem de l'anomenada Application Binary Interface (ABI) i t'ensenyarem com utilitzar-la.

Sisena lliçó es dedica a crear scripts JavaScript amb Node.js i realitzar operacions amb contractes intel·ligents de Solidity.

Instal·laràs Node.js al sistema operatiu Ubuntu, Debian i Rasberian, escriuràs scripts per publicar un contracte intel·ligent a la xarxa local Ethereum i trucaràs a les seves funcions.

A més, aprendràs a transferir fons entre comptes normals mitjançant scripts, així com a acreditar-los a comptes de contracte intel·ligent.

A la setena lliçó Aprendràs a instal·lar i utilitzar el marc Truffle, popular entre els desenvolupadors de contractes intel·ligents de Solidity. Aprendràs a crear scripts de JavaScript que criden a funcions de contracte mitjançant el mòdul truffle-contract i provaràs el teu contracte intel·ligent amb Truffle.

Vuitena lliçó dedicat als tipus de dades Solidity. Escriuràs contractes intel·ligents que funcionin amb tipus de dades, com ara nombres enters signats i sense signe, nombres signats, cadenes, adreces, variables complexes, matrius, enumeracions, estructures i diccionaris.

A la novena lliçó Estareu un pas més a prop de crear contractes intel·ligents per a la xarxa principal d'Ethereum. Aprendràs a publicar contractes mitjançant Truffle a la xarxa privada Geth, així com a la xarxa de prova de Rinkeby. Depurar un contracte intel·ligent a la xarxa Rinkeby és molt útil abans de publicar-lo a la xarxa principal: gairebé tot és real allà, però de manera gratuïta.

Com a part de la lliçó, creareu un node de xarxa de prova de Rinkeby, el finançareu amb fons i publicareu un contracte intel·ligent.

Lliçó 10 dedicat a l'emmagatzematge de dades distribuïts d'Ethereum Swarm. En utilitzar l'emmagatzematge distribuït, estalvieu emmagatzemar grans quantitats de dades a la cadena de blocs d'Ethereum.

En aquest tutorial, creareu un emmagatzematge Swarm local, operacions d'escriptura i lectura en fitxers i directoris de fitxers. A continuació, aprendràs a treballar amb la passarel·la pública Swarm, escriure scripts per accedir a Swarm des de Node.js, així com a utilitzar el mòdul Perl Net::Ethereum::Swarm.

Objectiu de la lliçó 11 — mestre treballant amb contractes intel·ligents Solidity utilitzant el popular llenguatge de programació Python i el marc Web3.py. Instal·lareu el marc, escriureu scripts per compilar i publicar el contracte intel·ligent i cridareu les seves funcions. En aquest cas, Web3.py s'utilitzarà tant sol com conjuntament amb l'entorn de desenvolupament integrat Truffle.

A la lliçó 12 aprendràs a transferir dades entre contractes intel·ligents i el món real mitjançant oracles. Això us serà útil per rebre dades de llocs web, dispositius IoT, diversos dispositius i sensors i enviar dades de contractes intel·ligents a aquests dispositius. A la part pràctica de la lliçó, creareu un oracle i un contracte intel·ligent que rep el tipus de canvi actual entre USD i rubles del lloc web del Banc Central de la Federació Russa.

Lliçó 1. Breument sobre la cadena de blocs i la xarxa EthereumPropòsit de la lliçó: familiaritzar-se amb els principis de funcionament de la cadena de blocs Ethereum, les seves àrees d'aplicació i la terminologia bàsica.
Tasques pràctiques: no tractat en aquesta lliçó.

Avui dia gairebé no hi ha un desenvolupador de programari que no hagi escoltat res sobre la tecnologia blockchain (Blockchain), criptomonedes (Cryptocurrency o Crypto Currency), Bitcoin (Bitcoin), oferta inicial de monedes (ICO, oferta inicial de monedes), contractes intel·ligents (Smart Contract), així com altres conceptes i termes relacionats amb blockchain.

La tecnologia Blockchain obre nous mercats i crea llocs de treball per als programadors. Si enteneu totes les complexitats de les tecnologies de criptomoneda i les tecnologies de contracte intel·ligent, no hauríeu de tenir problemes per aplicar aquests coneixements a la pràctica.

Cal dir que hi ha molta especulació al voltant de les criptomonedes i les cadenes de blocs. Deixarem de banda els debats sobre els canvis en els tipus de criptomoneda, la creació de piràmides, les complexitats de la legislació sobre criptomoneda, etc. En el nostre curs de formació ens centrarem principalment en els aspectes tècnics de l'aplicació dels contractes intel·ligents de la cadena de blocs Ethereum (Ethereum, Ether) i el desenvolupament de les anomenades aplicacions descentralitzades (Aplicació Distribuïda, DApp).

Què és blockchain

Blockchain (Block Chain) és una cadena de blocs de dades connectats entre si d'una determinada manera. Al principi de la cadena hi ha el primer bloc, que s'anomena bloc primari (bloc de gènesi) o bloc de gènesi. El segueix el segon, després el tercer i així successivament.

Tots aquests blocs de dades es dupliquen automàticament en nombrosos nodes de la xarxa blockchain. Això garanteix l'emmagatzematge descentralitzat de dades de blockchain.
Podeu pensar en un sistema blockchain com un gran nombre de nodes (servidors físics o virtuals) connectats en una xarxa i que reprodueixen tots els canvis de la cadena de blocs de dades. Això és com un ordinador gegant multiservidor, i els nodes d'aquest ordinador (servidors) es poden dispersar per tot el món. I tu també pots afegir el teu ordinador a la xarxa blockchain.

Base de dades distribuïda

Una cadena de blocs es pot considerar com una base de dades distribuïda que es replica a tots els nodes de la xarxa de cadena de blocs. En teoria, la cadena de blocs estarà operativa sempre que almenys un node funcioni, emmagatzemant tots els blocs de la cadena de blocs.

Registre de dades distribuïts

La cadena de blocs es pot considerar com un registre distribuït de dades i operacions (transaccions). Un altre nom per a aquest registre és un llibre major.

Les dades es poden afegir a un registre distribuït, però no es poden canviar ni suprimir. Aquesta impossibilitat s'aconsegueix, en particular, mitjançant l'ús d'algoritmes criptogràfics, algorismes especials per afegir blocs a la cadena i emmagatzematge descentralitzat de dades.

Quan s'afegeixen blocs i es realitzen operacions (transaccions), s'utilitzen claus privades i públiques. Restringeixen els usuaris de blockchain només donant-los accés als seus propis blocs de dades.

Transaccions

Blockchain emmagatzema informació sobre operacions (transaccions) en blocs. Al mateix temps, les transaccions antigues i ja realitzades no es poden revertir ni canviar. Les noves transaccions s'emmagatzemen en blocs nous i afegits.

D'aquesta manera, tot l'historial de transaccions es pot registrar sense canvis a la cadena de blocs. Per tant, blockchain es pot utilitzar, per exemple, per emmagatzemar de manera segura transaccions bancàries, informació sobre drets d'autor, historial de canvis en els propietaris, etc.

La cadena de blocs Ethereum conté els anomenats estats del sistema. A mesura que s'executen les transaccions, l'estat canvia de l'estat inicial a l'estat actual. Les transaccions es registren en blocs.

Blockchains públics i privats

Cal assenyalar aquí que tot el que s'ha dit és cert només per a les anomenades xarxes de blockchain públiques, que no poden ser controlades per cap persona física o jurídica, agència governamental o govern.
Les anomenades xarxes de blockchain privades estan sota el control total dels seus creadors, i tot és possible, per exemple, una substitució completa de tots els blocs de la cadena.

Aplicacions pràctiques de blockchain

Per a què pot ser útil la cadena de blocs?

En resum, la cadena de blocs permet realitzar transaccions (transaccions) de manera segura entre persones o empreses que no confien entre elles. Les dades registrades a la cadena de blocs (transaccions, dades personals, documents, certificats, contractes, factures, etc.) no es poden falsificar ni substituir després del registre. Per tant, a partir de la cadena de blocs, és possible crear, per exemple, registres distribuïts de confiança de diversos tipus de documents.

Per descomptat, ja sabeu que els sistemes de criptomoneda s'estan creant a partir de blockchains, dissenyats per substituir el paper moneda ordinari. El paper moneda també s'anomena fiat (de Fiat Money).
Blockchain garanteix l'emmagatzematge i la immutabilitat de les transaccions registrades en blocs, per això es pot utilitzar per crear sistemes de criptomoneda. Conté tot l'historial de la transferència de fons criptogràfics entre diferents usuaris (comptes) i es pot fer un seguiment de qualsevol operació.

Tot i que les transaccions dins dels sistemes de criptomoneda poden ser anònimes, retirar la criptomoneda i intercanviar-la per diners fiduciaris sol donar lloc a revelar la identitat del propietari de l'actiu de criptomoneda.

Els anomenats contractes intel·ligents, que són programari que s'executa a la xarxa Ethereum, permeten automatitzar el procés de conclusió de transaccions i supervisar-ne la implementació. Això és especialment efectiu si el pagament de la transacció es realitza amb la criptomoneda Ether.

La cadena de blocs d'Ethereum i els contractes intel·ligents d'Ethereum escrits en el llenguatge de programació Solidity es poden utilitzar, per exemple, a les àrees següents:

  • una alternativa a la notarització de documents;
  • emmagatzematge d'un registre d'objectes immobiliaris i informació sobre transaccions amb objectes immobiliaris;
  • emmagatzematge d'informació de drets d'autor sobre propietat intel·lectual (llibres, imatges, obres musicals, etc.);
  • creació de sistemes de votació independents;
  • finances i banca;
  • logística a escala internacional, seguiment del moviment de mercaderies;
  • emmagatzematge de dades personals com a anàleg a un sistema de targeta d'identitat;
  • transaccions segures en l'àmbit comercial;
  • emmagatzemar els resultats dels exàmens mèdics, així com la història dels procediments prescrits

Problemes amb blockchain

Però, per descomptat, no tot és tan senzill com podria semblar!

Hi ha problemes per verificar les dades abans d'afegir-les a la cadena de blocs (per exemple, són falses?), problemes amb la seguretat del sistema i el programari d'aplicació utilitzat per treballar amb la cadena de blocs, problemes amb la possibilitat d'utilitzar mètodes d'enginyeria social per robar l'accés. a carteres de criptomoneda, etc. .P.

De nou, si no estem parlant d'una cadena de blocs pública, els nodes de la qual es troben dispersos per tot el món, sinó d'una cadena de blocs privada que pertany a una persona o organització, el nivell de confiança aquí no serà superior al nivell de confiança. en aquesta persona o en aquesta organització.

També s'ha de tenir en compte que les dades registrades a la cadena de blocs estan disponibles per a tothom. En aquest sentit, blockchain (sobretot públic) no és adequat per emmagatzemar informació confidencial. Tanmateix, el fet que la informació de la cadena de blocs no es pugui canviar pot ajudar a prevenir o investigar diversos tipus d'activitats fraudulentes.

Les aplicacions descentralitzades d'Ethereum seran convenients si pagueu pel seu ús amb criptomoneda. Com més persones tinguin criptomoneda o estiguin disposades a comprar-la, més populars seran les DApps i els contractes intel·ligents.

Els problemes habituals de la cadena de blocs que dificulten la seva aplicació pràctica inclouen la velocitat limitada amb què es poden afegir nous blocs i el cost relativament elevat de les transaccions. Però la tecnologia en aquesta àrea s'està desenvolupant activament i s'espera que els problemes tècnics es resolguin amb el temps.

Un altre problema és que els contractes intel·ligents de la cadena de blocs Ethereum operen en un entorn aïllat de màquines virtuals i no tenen accés a dades del món real. En particular, el programa de contracte intel·ligent no pot llegir dades de llocs o dispositius físics (sensors, contactes, etc.) i tampoc no pot enviar dades a cap dispositiu extern. Parlarem d'aquest problema i de les maneres de resoldre'l en una lliçó dedicada als anomenats Oracles, intermediaris d'informació dels contractes intel·ligents.

També hi ha restriccions legals. En alguns països, per exemple, està prohibit utilitzar la criptomoneda com a mitjà de pagament, però podeu tenir-la com una mena d'actiu digital, com ara valors. Aquests actius es poden comprar i vendre a la borsa. En qualsevol cas, quan creeu un projecte que funcioni amb criptomonedes, cal que us familiaritzeu amb la legislació del país sota la jurisdicció del qual recau el vostre projecte.

Com es forma una cadena de blocs

Com ja hem dit, blockchain és una simple cadena de blocs de dades. Primer, es forma el primer bloc d'aquesta cadena, després s'hi afegeix el segon, i així successivament. Se suposa que les dades de transacció s'emmagatzemen en blocs i s'afegeixen al bloc més recent.

A la Fig. 1.1 vam mostrar la versió més senzilla d'una seqüència de blocs, on el primer bloc fa referència al següent.

El llibre "Crear contractes intel·ligents Solidity per a la cadena de blocs Ethereum. Guia pràctica"
Arròs. 1.1. Seqüència simple de blocs

Amb aquesta opció, però, és molt fàcil manipular el contingut de qualsevol bloc de la cadena, ja que els blocs no contenen cap informació per protegir-se dels canvis. Tenint en compte que la cadena de blocs està pensada per ser utilitzada per persones i empreses entre les quals no hi ha confiança, podem concloure que aquest mètode d'emmagatzematge de dades no és adequat per a la cadena de blocs.

Comencem a protegir els blocs de la falsificació. En la primera etapa, intentarem protegir cada bloc amb una suma de control (Fig. 1.2).

El llibre "Crear contractes intel·ligents Solidity per a la cadena de blocs Ethereum. Guia pràctica"
Arròs. 1.2. Afegir protecció per a aquests blocs amb una suma de control

Ara un atacant no pot canviar simplement el bloc, ja que conté la suma de control de les dades del bloc. Comprovar la suma de comprovació mostrarà que les dades s'han canviat.

Per calcular la suma de comprovació, podeu utilitzar una de les funcions hash com ara MD-5, SHA-1, SHA-256, etc. Les funcions hash calculen un valor (per exemple, una cadena de text de longitud constant) realitzant operacions irreversibles en un bloc de dades. Les operacions depenen del tipus de funció hash.

Fins i tot si el contingut del bloc de dades canvia lleugerament, el valor hash també canviarà. Mitjançant l'anàlisi del valor de la funció hash, és impossible reconstruir el bloc de dades per al qual es va calcular.

Serà suficient aquesta protecció? Lamentablement no.

En aquest esquema, la suma de verificació (funció hash) només protegeix blocs individuals, però no tota la cadena de blocs. Coneixent l'algorisme per calcular la funció hash, un atacant pot substituir fàcilment el contingut d'un bloc. A més, res li impedirà treure blocs de la cadena o afegir-ne de nous.

Per protegir tota la cadena en el seu conjunt, també podeu emmagatzemar en cada bloc, juntament amb les dades, un hash de les dades del bloc anterior (Fig. 1.3).

El llibre "Crear contractes intel·ligents Solidity per a la cadena de blocs Ethereum. Guia pràctica"
Arròs. 1.3. Afegiu el hash del bloc anterior al bloc de dades

En aquest esquema, per canviar un bloc, cal tornar a calcular les funcions hash de tots els blocs posteriors. Sembla, quin és el problema?

A les cadenes de blocs reals, també es creen dificultats artificials per afegir nous blocs; s'utilitzen algorismes que requereixen molts recursos informàtics. Tenint en compte que per fer canvis en un bloc, cal tornar a calcular no només aquest bloc, sinó tots els següents, això serà molt difícil de fer.

Recordem també que les dades de la cadena de blocs s'emmagatzemen (duplican) en nombrosos nodes de xarxa, és a dir. S'utilitza l'emmagatzematge descentralitzat. I això fa que sigui molt més difícil falsificar un bloc, perquè s'han de fer canvis a tots els nodes de la xarxa.

Com que els blocs emmagatzemen informació sobre el bloc anterior, és possible comprovar el contingut de tots els blocs de la cadena.

Blockchain d'Ethereum

La cadena de blocs Ethereum és una plataforma en la qual es poden crear DApps distribuïdes. A diferència d'altres plataformes, Ethereum permet l'ús dels anomenats contractes intel·ligents (smart contracts), escrits en el llenguatge de programació Solidity.

Aquesta plataforma va ser creada el 2013 per Vitalik Buterin, fundador de Bitcoin Magazine, i llançada el 2015. Tot el que estudiarem o farem al nostre curs de formació es relaciona específicament amb la cadena de blocs d'Ethereum i els contractes intel·ligents Solidity.

La mineria o com es creen els blocs

La mineria és un procés força complex i intensiu en recursos per afegir nous blocs a la cadena de blocs, i no en absolut "mineria de criptomoneda". La mineria assegura la funcionalitat de la cadena de blocs, perquè és aquest procés el que s'encarrega d'afegir transaccions a la cadena de blocs d'Ethereum.

Les persones i organitzacions implicades en afegir blocs s'anomenen miners.
El programari que s'executa als nodes miners intenta trobar un paràmetre hash anomenat Nonce per a l'últim bloc per obtenir un valor hash específic especificat per la xarxa. L'algorisme de hash Ethash utilitzat a Ethereum us permet obtenir el valor Nonce només mitjançant la cerca seqüencial.

Si el node miner troba el valor de Nonce correcte, aquesta és l'anomenada prova de treball (PoW, Proof-of-work). En aquest cas, si s'afegeix un bloc a la xarxa Ethereum, el miner rep una certa recompensa en la moneda de la xarxa: Ether. En el moment d'escriure, la recompensa és 5 Ether, però això es reduirà amb el temps.

Així, els miners d'Ethereum asseguren el funcionament de la xarxa afegint blocs i reben diners de criptomoneda per això. Hi ha molta informació a Internet sobre els miners i la mineria, però ens centrarem a crear contractes Solidity i DApps a la xarxa Ethereum.

Resum de la lliçó

A la primera lliçó, us vau familiaritzar amb la cadena de blocs i vau aprendre que és una seqüència de blocs especialment composta. El contingut dels blocs gravats anteriorment no es pot canviar, ja que això requeriria recalcular tots els blocs posteriors en molts nodes de xarxa, la qual cosa requereix molts recursos i temps.

La cadena de blocs es pot utilitzar per emmagatzemar els resultats de les transaccions. La seva finalitat principal és organitzar transaccions segures entre parts (persones i organitzacions) entre les quals no hi ha confiança. Heu après en quines àrees específiques del negoci i en quines àrees es poden utilitzar la cadena de blocs Ethereum i els contractes intel·ligents Solidity. Es tracta del sector bancari, registre de drets de propietat, documents, etc.

També heu après que poden sorgir diversos problemes quan utilitzeu blockchain. Es tracta de problemes de verificació de la informació afegida a la cadena de blocs, la velocitat de la cadena de blocs, el cost de les transaccions, el problema de l'intercanvi de dades entre els contractes intel·ligents i el món real, així com els possibles atacs d'atacants destinats a robar fons de criptomoneda dels comptes d'usuari. .

També vam parlar breument de la mineria com el procés d'afegir nous blocs a la cadena de blocs. La mineria és necessària per completar les transaccions. Els implicats en la mineria asseguren el funcionament de la cadena de blocs i reben una recompensa en criptomoneda per això.

Lliçó 2. Preparació d'un entorn de treball a Ubuntu i Debian OSSelecció d'un sistema operatiu
Instal·lació de les utilitats necessàries
Instal·lant Geth i Swarm a Ubuntu
Instal·lant Geth i Swarm a Debian
Preparació preliminar
Descàrrega de la distribució Go
Establiment de variables d'entorn
Comprovant la versió Go
Instal·lació de Geth i Swarm
Creació d'una cadena de blocs privada
Preparant el fitxer genesis.json
Crea un directori per treballar
Crear un compte
Inici de la inicialització del node
Opcions de llançament de nodes
Connecteu-vos al nostre node
Gestió de mineria i control de balanços
Tancant la consola Geth
Resum de la lliçó

Lliçó 3. Preparació de l'entorn de treball a Raspberry Pi 3Preparant el Raspberry Pi 3 per treballar
Instal·lació de Rasberian
Instal·lació d'actualitzacions
Habilitació de l'accés SSH
Configuració d'una adreça IP estàtica
Instal·lació de les utilitats necessàries
Instal·lant Go
Descàrrega de la distribució Go
Establiment de variables d'entorn
Comprovant la versió Go
Instal·lació de Geth i Swarm
Creació d'una cadena de blocs privada
Comproveu el vostre compte i saldo
Resum de la lliçó

Lliçó 4. Comptes i transferència de fons entre comptesVeure i afegir comptes
Veure una llista de comptes
Afegint un compte
opcions d'ordres del compte geth
Contrasenyes del compte
Criptomoneda a Ethereum
Unitats de divises Ethereum
Determinem el saldo actual dels nostres comptes
Transfereix fons d'un compte a un altre
Mètode eth.sendTransaction
Veure l'estat de la transacció
Rebut de transacció
Resum de la lliçó

Lliçó 5. Publicació del teu primer contracteContractes intel·ligents a Ethereum
Execució de contracte intel·ligent
Màquina virtual Ethereum
Entorn de desenvolupament integrat Remix Solidity IDE
En execució de la compilació
Convocatòria de funcions del contracte
Publicació d'un contracte en una xarxa privada
Obtenció de la definició ABI i el codi binari del contracte
Publicació del contracte
Comprovació de l'estat de la transacció de publicació del contracte
Convocatòria de funcions del contracte
compilador de lots solc
Instal·lant solc a Ubuntu
Instal·lant solc a Debian
Elaboració del contracte HelloSol
Publicació del contracte
Instal·lant solc a Rasberian
Resum de la lliçó

Lliçó 6. Contractes intel·ligents i Node.jsInstal·lant Node.js
Instal·lació a Ubuntu
Instal·lació a Debian
Instal·lació i execució de Ganache-cli
Instal·lació Web3
Instal·lació de solc
Instal·lació de Node.js a Rasberian
Script per obtenir una llista de comptes a la consola
Script per publicar un contracte intel·ligent
Inicieu i obteniu paràmetres
Obtenció d'opcions de llançament
Elaboració de contractes
Desbloqueig del teu compte
Carregant codi binari ABI i contracte
Estimació de la quantitat de gas necessària
Creeu un objecte i comenceu a publicar un contracte
Execució del guió de publicació del contracte
Trucada a funcions de contracte intel·ligent
És possible actualitzar un contracte intel·ligent publicat?
Treballant amb Web3 versió 1.0.x
Obtenció d'una llista de comptes
Publicació del contracte
Convocatòria de funcions del contracte
Transfereix fons d'un compte a un altre
Transferir fons al compte del contracte
Actualització del contracte intel·ligent HelloSol
Creeu un script per veure el saldo del vostre compte
Afegiu una trucada a la funció getBalance a l'script call_contract_get_promise.js
Recarreguem el compte de contracte intel·ligent
Resum de la lliçó

Lliçó 7. Introducció a la TòfonaInstal·lació de Truffle
Creeu un projecte HelloSol
Creació del directori i fitxers del projecte
Directori de contractes
Migracions de catàleg
Prova de directori
fitxer truffle-config.js
Elaboració del contracte HelloSol
Comença a publicar un contracte
Trucada a les funcions de contracte HelloSol en un missatge de trufa
Crida a funcions de contracte HelloSol des d'un script JavaScript que executa Node.js
Instal·lació del mòdul de contracte de tòfona
Crida a les funcions contractuals getValue i getString
Crida a les funcions de contracte setValue i setString
Modificació i republicació del contracte
Treballant amb Web3 versió 1.0.x
Realització de canvis al contracte intel·ligent HelloSol
Scripts per cridar mètodes de contracte
Prova en tòfona
Prova de solidesa
Prova de JavaScript
Resum de la lliçó

Lliçó 8. Tipus de dades de solidesaContracte per a tipus de dades d'aprenentatge
Tipus de dades booleans
Nombres enters sense signe i enters amb signe
Nombres de punt fix
Direcció
Variables de tipus complexos
Matrius de mida fixa
Arrays dinàmics
Enumeració
Estructures
Cartografia de diccionaris
Resum de la lliçó

Lliçó 9. Migració de contractes a la xarxa privada ia la xarxa RinkebyPublicació d'un contracte de Truffle a la xarxa privada Geth
Preparació d'un node de xarxa privada
Preparació d'un contracte de treball
Compilació i migració d'un contracte a la xarxa Truffle
S'està iniciant la migració de la xarxa local geth
Obtenció d'artefactes de tòfona
Publicació d'un contracte de Truffle a la xarxa de prova de Rinkeby
Preparant un node Geth per treballar amb Rinkeby
Sincronització de nodes
Afegir comptes
Recarrega el teu compte de Rinkeby amb ether
Llançament de la migració del contracte a la xarxa Rinkeby
Visualització de la informació del contracte a la xarxa Rinkeby
Truffle Console per a la xarxa Rinkeby
Una manera més fàcil de trucar a funcions de contracte
Trucar mètodes de contracte amb Node.js
Transfereix fons entre comptes a la consola Truffle per a Rinkby
Resum de la lliçó

Lliçó 10. Emmagatzematge de dades descentralitzat d'Ethereum SwarmCom funciona Ethereum Swarm?
Instal·lació i llançament de Swarm
Operacions amb fitxers i directoris
Càrrega d'un fitxer a Ethereum Swarm
Llegint un fitxer d'Ethereum Swarm
Veure el manifest d'un fitxer penjat
Carregant directoris amb subdirectoris
Llegint un fitxer d'un directori descarregat
Utilitzant una passarel·la pública de Swarm
Accés a Swarm des dels scripts Node.js
Perl Net::Ethereum::Mòdul Swarm
Instal·lació del mòdul Net::Ethereum::Swarm
Escriptura i lectura de dades
Resum de la lliçó

Lliçó 11. Marc Web3.py per treballar amb Ethereum a PythonS'està instal·lant Web3.py
Actualització i instal·lació dels paquets necessaris
Instal·lació del mòdul easysolc
Publicació d'un contracte mitjançant Web3.py
Elaboració de contractes
Connexió a un proveïdor
Executar la publicació del contracte
Desant l'adreça del contracte i abi en un fitxer
Execució del guió de publicació del contracte
Mètodes de contractació de convocatòria
Llegir l'adreça i l'abi d'un contracte des d'un fitxer JSON
Connexió a un proveïdor
Creació d'un objecte de contracte
Mètodes de contractació de convocatòria
Trufa i Web3.py
Resum de la lliçó

Lliçó 12. OraclesUn contracte intel·ligent pot confiar en dades del món exterior?
Oracles com a intermediaris d'informació blockchain
Font de dades
Codi per representar dades de la font
Oracle per registrar el tipus de canvi a la cadena de blocs
Contracte USDRate Oracle
Actualització del tipus de canvi en un contracte intel·ligent
Ús d'un proveïdor de socket web
S'està esperant l'esdeveniment RateUpdate
Gestió de l'esdeveniment RateUpdate
Iniciar una actualització de dades en un contracte intel·ligent
Resum de la lliçó

Font: www.habr.com

Afegeix comentari