O libro "Creando contratos intelixentes de Solidity para a cadea de bloques de Ethereum. guía práctica"

O libro "Creando contratos intelixentes de Solidity para a cadea de bloques de Ethereum. guía práctica"
Hai máis dun ano que estiven traballando no libro "Creando contratos intelixentes de solidez para a cadea de bloques de Ethereum. Guía práctica”, e agora está rematado este traballo, e o libro publicado e dispoñible en Litros.

Espero que o meu libro che axude a comezar rapidamente a crear contactos intelixentes de Solidity e DApps distribuídas para a cadea de bloques de Ethereum. Consta de 12 leccións con tarefas prácticas. Unha vez completados, o lector poderá crear os seus propios nodos locais de Ethereum, publicar contratos intelixentes e chamar aos seus métodos, intercambiar datos entre o mundo real e contratos intelixentes mediante oráculos e traballar coa rede de depuración de probas de Rinkeby.

O libro está dirixido a todos os que estean interesados ​​en tecnoloxías avanzadas no campo das cadeas de bloques e queiran adquirir rapidamente coñecementos que lles permitan realizar traballos interesantes e prometedores.

A continuación atoparás a táboa de contidos e o primeiro capítulo do libro (tamén Litre fragmentos do libro están dispoñibles). Espero recibir comentarios, comentarios e suxestións. Tratarei de ter en conta todo isto á hora de preparar a próxima edición do libro.

Índice analíticoIntroduciónO noso libro está destinado a aqueles que queren non só comprender os principios da cadea de bloques Ethereum, senón tamén adquirir habilidades prácticas na creación de DApps distribuídas na linguaxe de programación Solidity para esta rede.

É mellor non só ler este libro, senón traballar con el, realizando tarefas prácticas descritas nas leccións. Para funcionar, necesitarás un ordenador local, un servidor virtual ou na nube co sistema operativo Debian ou Ubuntu instalado. Tamén podes usar Raspberry Pi para realizar moitas tarefas.

Na primeira lección Observaremos os principios de funcionamento da cadea de bloques de Ethereum e a terminoloxía básica, e tamén falaremos de onde se pode usar esta cadea de bloques.

Meta segunda lección — cree un nodo de cadea de bloques Ethereum privado para seguir traballando neste curso nun servidor Ubuntu e Debian. Observaremos as características da instalación de utilidades básicas, como geth, que garante o funcionamento do noso nodo blockchain, así como o daemon de almacenamento de datos descentralizado do enxame.

Terceira lección ensinarache como experimentar con Ethereum nun microordenador Raspberry Pi económico. Instalará o sistema operativo (SO) Rasberian no Raspberry Pi, a utilidade Geth que alimenta o nodo blockchain e o daemon de almacenamento de datos descentralizado Swarm.

Lección catro está dedicado a contas e unidades de criptomoneda na rede Ethereum, así como a formas de transferir fondos dunha conta a outra desde a consola Geth. Aprenderá a crear contas, iniciar transaccións de transferencia de fondos e obter o estado e o recibo da transacción.

Na quinta lección Coñecerás os contratos intelixentes na rede Ethereum e coñecerás a súa execución pola máquina virtual Ethereum.

Crearás e publicarás o teu primeiro contrato intelixente na rede privada de Ethereum e aprenderás a chamar as súas funcións. Para iso, empregará o IDE Remix Solidity. Tamén aprenderá a instalar e utilizar o compilador de lotes solc.
Tamén falaremos da denominada Application Binary Interface (ABI) e ensinaremos como usala.

Sexta lección dedícase a crear scripts JavaScript executando Node.js e a realizar operacións con contratos intelixentes de Solidity.

Instalará Node.js en Ubuntu, Debian e Rasberian OS, escribirá scripts para publicar un contrato intelixente na rede local de Ethereum e chamará ás súas funcións.

Ademais, aprenderá a transferir fondos entre contas habituais mediante scripts, así como a acreditalos a contas de contrato intelixente.

Na sétima lección Aprenderás a instalar e utilizar o marco Truffle, popular entre os desenvolvedores de contratos intelixentes de Solidity. Aprenderás a crear scripts JavaScript que chaman a funcións de contrato mediante o módulo truffle-contract e probarás o teu contrato intelixente usando Truffle.

Oitava lección dedicado a tipos de datos Solidity. Escribirá contratos intelixentes que funcionen con tipos de datos como números enteiros asinados e sen asinar, números asinados, cadeas, enderezos, variables complexas, matrices, enumeracións, estruturas e dicionarios.

Na novena lección Estarás un paso máis preto de crear contratos intelixentes para a rede principal de Ethereum. Aprenderás a publicar contratos usando Truffle na rede privada Geth, así como na proba de Rinkeby. Depurar un contrato intelixente na rede Rinkeby é moi útil antes de publicalo na rede principal: case todo é real alí, pero de balde.

Como parte da lección, creará un nodo de rede de proba de Rinkeby, financiará con fondos e publicará un contrato intelixente.

Lección 10 dedicado ao almacenamento de datos distribuídos de Ethereum Swarm. Ao usar o almacenamento distribuído, aforra no almacenamento de grandes cantidades de datos na cadea de bloques de Ethereum.

Neste tutorial, creará un almacenamento Swarm local, operacións de escritura e lectura en ficheiros e directorios de ficheiros. A continuación, aprenderá a traballar coa pasarela pública Swarm, escribir scripts para acceder a Swarm desde Node.js, así como a usar o módulo Perl Net::Ethereum::Swarm.

Obxectivo da lección 11 — domina o traballo con contratos intelixentes de Solidity usando a popular linguaxe de programación Python e o marco Web3.py. Instalará o marco, escribirá scripts para compilar e publicar o contrato intelixente e chamará ás súas funcións. Neste caso, Web3.py empregarase tanto por si só como en conxunto co contorno de desenvolvemento integrado Truffle.

Na lección 12 aprenderás a transferir datos entre contratos intelixentes e o mundo real usando oráculos. Isto será útil para recibir datos de sitios web, dispositivos IoT, varios dispositivos e sensores e enviar datos de contratos intelixentes a estes dispositivos. Na parte práctica da lección, crearás un oráculo e un contrato intelixente que recibe o tipo de cambio actual entre USD e rublos desde o sitio web do Banco Central da Federación Rusa.

Lección 1. Brevemente sobre a cadea de bloques e a rede EthereumFinalidade da lección: familiarizarse cos principios de funcionamento da cadea de bloques Ethereum, as súas áreas de aplicación e a terminoloxía básica.
Tarefas prácticas: non tratadas nesta lección.

Apenas hai un desenvolvedor de software hoxe que non escoitou nada sobre tecnoloxía blockchain (Blockchain), criptomoedas (Cryptocurrency ou Crypto Currency), Bitcoin (Bitcoin), oferta inicial de moedas (ICO, oferta inicial de moedas), contratos intelixentes (Smart Contract), así como outros conceptos e termos relacionados coa cadea de bloques.

A tecnoloxía Blockchain abre novos mercados e crea emprego para programadores. Se entendes todas as complejidades das tecnoloxías de criptomoeda e das tecnoloxías de contrato intelixente, non deberías ter problemas para aplicar estes coñecementos na práctica.

Hai que dicir que hai moita especulación sobre as criptomoedas e as cadeas de bloques. Deixaremos de lado as discusións sobre os cambios nas taxas de criptomoeda, a creación de pirámides, as complejidades da lexislación sobre criptomoedas, etc. No noso curso de formación centrarémonos principalmente nos aspectos técnicos do uso de contratos intelixentes na cadea de bloques de Ethereum e no desenvolvemento das chamadas aplicacións descentralizadas (DApps).

Que é blockchain

A cadea de bloques (Block Chain) é unha cadea de bloques de datos conectados entre si dun xeito determinado. Ao comezo da cadea está o primeiro bloque, que se denomina bloque primario (bloque de xénese) ou bloque de xénese. Séguelle o segundo, despois o terceiro e así sucesivamente.

Todos estes bloques de datos duplícanse automaticamente en numerosos nodos da rede blockchain. Isto garante o almacenamento descentralizado de datos da cadea de bloques.
Podes pensar nun sistema blockchain como un gran número de nodos (servidores físicos ou virtuais) conectados nunha rede e que replican todos os cambios na cadea de bloques de datos. Isto é como un ordenador multiservidor xigante, e os nodos de tal ordenador (servidores) poden estar espallados por todo o mundo. E ti tamén podes engadir o teu ordenador á rede blockchain.

Base de datos distribuída

Unha cadea de bloques pódese pensar como unha base de datos distribuída que se replica en todos os nodos da rede de cadeas de bloques. En teoría, a cadea de bloques estará operativa mentres polo menos un nodo estea funcionando, almacenando todos os bloques da cadea de bloques.

Rexistro de datos distribuídos

Blockchain pódese pensar como un libro de contas distribuídos de datos e operacións (transaccións). Outro nome para tal rexistro é un libro de contas.

Os datos pódense engadir a un rexistro distribuído, pero non se poden cambiar nin eliminar. Esta imposibilidade conséguese, en particular, mediante o uso de algoritmos criptográficos, algoritmos especiais para engadir bloques á cadea e almacenamento de datos descentralizado.

Ao engadir bloques e realizar operacións (transaccións), utilízanse chaves privadas e públicas. Eles restrinxen os usuarios de blockchain só dándolles acceso aos seus propios bloques de datos.

Transaccións

Blockchain almacena información sobre operacións (transaccións) en bloques. Ao mesmo tempo, as transaccións antigas xa completadas non se poden revertir nin modificar. As novas transaccións almacénanse en bloques novos e engadidos.

Deste xeito, todo o historial de transaccións pódese rexistrar sen cambios na cadea de bloques. Polo tanto, a cadea de bloques pódese usar, por exemplo, para almacenar de forma segura transaccións bancarias, información sobre dereitos de autor, historial de cambios nos propietarios, etc.

A cadea de bloques de Ethereum contén os chamados estados do sistema. A medida que se executan as transaccións, o estado cambia do estado inicial ao estado actual. As transaccións rexístranse en bloques.

Blockchains públicos e privados

Cómpre sinalar aquí que todo o dito é certo só para as chamadas redes públicas de cadea de bloques, que non poden ser controladas por ningunha persoa física ou xurídica, axencia gobernamental ou goberno.
As chamadas redes privadas de cadea de bloques están baixo o control total dos seus creadores, e todo é posible alí, por exemplo, unha substitución completa de todos os bloques da cadea.

Aplicacións prácticas de blockchain

Para que pode ser útil a cadea de bloques?

En resumo, a cadea de bloques permite realizar transaccións (transaccións) de forma segura entre persoas ou empresas que non confían entre si. Os datos rexistrados na cadea de bloques (transaccións, datos persoais, documentos, certificados, contratos, facturas, etc.) non poden ser falsificados nin substituídos despois da gravación. Polo tanto, baseándose na cadea de bloques, é posible crear, por exemplo, rexistros distribuídos de confianza de varios tipos de documentos.

Por suposto, sabes que os sistemas de criptomoeda están a ser creados sobre a base de cadeas de bloques, deseñadas para substituír o papel moeda común. O diñeiro en papel tamén se denomina fiat (de Fiat Money).
Blockchain garante o almacenamento e a inmutabilidade das transaccións rexistradas en bloques, polo que se pode usar para crear sistemas de criptomoeda. Contén todo o historial da transferencia de fondos criptográficos entre diferentes usuarios (contas) e pódese seguir calquera operación.

Aínda que as transaccións dentro dos sistemas de criptomoeda poden ser anónimas, a retirada de criptomoeda e o cambio por diñeiro fiduciario adoita revelar a identidade do propietario do activo criptográfico.

Os chamados contratos intelixentes, que son software que se executa na rede Ethereum, permítenche automatizar o proceso de conclusión de transaccións e supervisar a súa implementación. Isto é especialmente efectivo se o pago da transacción se realiza mediante a moeda criptográfica Ether.

A cadea de bloques de Ethereum e os contratos intelixentes de Ethereum escritos na linguaxe de programación Solidity pódense utilizar, por exemplo, nas seguintes áreas:

  • unha alternativa á legalización de documentos;
  • almacenamento dun rexistro de obxectos inmobiliarios e información sobre transaccións con obxectos inmobiliarios;
  • almacenamento de información de dereitos de autor sobre propiedade intelectual (libros, imaxes, obras musicais, etc.);
  • creación de sistemas de votación independentes;
  • finanzas e banca;
  • loxística a escala internacional, seguimento do movemento de mercadorías;
  • almacenamento de datos persoais como análogo a un sistema de tarxeta de identidade;
  • transaccións seguras no ámbito comercial;
  • almacenando os resultados dos exames médicos, así como o historial dos procedementos prescritos

Problemas coa cadea de bloques

Pero, por suposto, non todo é tan sinxelo como parece!

Hai problemas para verificar os datos antes de engadilos á cadea de bloques (por exemplo, son falsos?), problemas coa seguridade do sistema e software de aplicación utilizados para traballar coa cadea de bloques, problemas coa posibilidade de utilizar métodos de enxeñería social para roubar o acceso. ás carteiras de criptomonedas, etc. .P.

De novo, se non falamos dunha cadea de bloques pública, cuxos nodos están espallados por todo o mundo, senón dunha cadea de bloques privada pertencente a unha persoa ou organización, entón o nivel de confianza aquí non será superior ao nivel de confianza. nesta persoa ou nesta organización.

Tamén hai que ter en conta que os datos rexistrados na cadea de bloques están dispoñibles para todos. Neste sentido, a cadea de bloques (especialmente pública) non é adecuada para almacenar información confidencial. Non obstante, o feito de que a información sobre a cadea de bloques non se poida cambiar pode axudar a previr ou investigar varios tipos de actividades fraudulentas.

As aplicacións descentralizadas de Ethereum serán convenientes se pagas polo seu uso con moeda criptográfica. Cantas máis persoas posúan criptomonedas ou estean dispostas a comprala, máis populares serán as DApps e os contratos intelixentes.

Os problemas comúns coa cadea de bloques que dificultan a súa aplicación práctica inclúen a velocidade limitada á que se poden engadir novos bloques e o custo relativamente alto das transaccións. Pero a tecnoloxía nesta área está a desenvolverse activamente e hai esperanzas de que os problemas técnicos se resolvan co paso do tempo.

Outro problema é que os contratos intelixentes na cadea de bloques de Ethereum operan nun ambiente illado de máquinas virtuais e non teñen acceso a datos do mundo real. En particular, o programa de contrato intelixente non pode ler por si mesmo datos de sitios ou dispositivos físicos (sensores, contactos, etc.) e tampouco pode enviar datos a ningún dispositivo externo. Discutiremos este problema e as formas de solucionalo nunha lección dedicada aos chamados Oracles - intermediarios de información dos contratos intelixentes.

Tamén hai restricións legais. Nalgúns países, por exemplo, está prohibido usar criptomoeda como medio de pago, pero pode posuílo como unha especie de activo dixital, como títulos. Estes activos pódense comprar e vender na bolsa. En calquera caso, ao crear un proxecto que funcione con criptomoedas, cómpre familiarizarse coa lexislación do país baixo cuxa xurisdición se atopa o seu proxecto.

Como se forma unha cadea de bloques

Como xa dixemos, blockchain é unha simple cadea de bloques de datos. En primeiro lugar, fórmase o primeiro bloque desta cadea, despois engádese o segundo, etc. Suponse que os datos das transaccións se almacenan en bloques e engádense ao bloque máis recente.

Na Fig. 1.1 mostramos a versión máis sinxela dunha secuencia de bloques, onde o primeiro bloque fai referencia ao seguinte.

O libro "Creando contratos intelixentes de Solidity para a cadea de bloques de Ethereum. guía práctica"
Arroz. 1.1. Secuencia sinxela de bloques

Con esta opción, non obstante, é moi sinxelo manipular o contido de calquera bloque da cadea, xa que os bloques non conteñen ningunha información para protexerse contra os cambios. Tendo en conta que a cadea de bloques está pensada para ser utilizada por persoas e empresas entre as que non hai confianza, podemos concluír que este método de almacenamento de datos non é axeitado para a cadea de bloques.

Comecemos a protexer os bloques da falsificación. Na primeira fase, tentaremos protexer cada bloque cunha suma de verificación (Fig. 1.2).

O libro "Creando contratos intelixentes de Solidity para a cadea de bloques de Ethereum. guía práctica"
Arroz. 1.2. Engadindo protección para estes bloques cunha suma de verificación

Agora un atacante non pode simplemente cambiar o bloque, xa que contén a suma de verificación dos datos do bloque. A comprobación da suma de verificación mostrará que os datos foron modificados.

Para calcular a suma de verificación, pode usar unha das funcións de hash como MD-5, SHA-1, SHA-256, etc. As funcións hash calculan un valor (por exemplo, unha cadea de texto de lonxitude constante) realizando operacións irreversibles nun bloque de datos. As operacións dependen do tipo de función hash.

Aínda que o contido do bloque de datos cambie lixeiramente, o valor hash tamén cambiará. Ao analizar o valor da función hash, é imposible reconstruír o bloque de datos para o que se calculou.

Será suficiente esa protección? Desgraciadamente non.

Neste esquema, a suma de verificación (función hash) só protexe bloques individuais, pero non toda a cadea de bloques. Coñecendo o algoritmo para calcular a función hash, un atacante pode substituír facilmente o contido dun bloque. Ademais, nada lle impedirá eliminar bloques da cadea ou engadir outros novos.

Para protexer toda a cadea no seu conxunto, tamén se pode almacenar en cada bloque, xunto cos datos, un hash dos datos do bloque anterior (Fig. 1.3).

O libro "Creando contratos intelixentes de Solidity para a cadea de bloques de Ethereum. guía práctica"
Arroz. 1.3. Engade o hash do bloque anterior ao bloque de datos

Neste esquema, para cambiar un bloque, cómpre recalcular as funcións hash de todos os bloques posteriores. Parece que cal é o problema?

Nas cadeas de bloques reais, créanse ademais dificultades artificiais para engadir novos bloques; utilízanse algoritmos que requiren moitos recursos informáticos. Tendo en conta que para facer cambios nun bloque, cómpre recalcular non só este bloque, senón todos os seguintes, isto será moi difícil de facer.

Lembremos tamén que os datos da cadea de bloques almacénanse (duplicados) en numerosos nodos de rede, é dicir. Utilízase almacenamento descentralizado. E isto dificulta moito a falsificación dun bloque, porque deben facerse cambios en todos os nodos da rede.

Dado que os bloques almacenan información sobre o bloque anterior, é posible comprobar o contido de todos os bloques da cadea.

Blockchain de Ethereum

A cadea de bloques de Ethereum é unha plataforma na que se poden crear DApps distribuídas. A diferenza doutras plataformas, Ethereum permite o uso dos chamados contratos intelixentes (smart contracts), escritos na linguaxe de programación Solidity.

Esta plataforma foi creada en 2013 por Vitalik Buterin, fundador da revista Bitcoin, e lanzada en 2015. Todo o que estudaremos ou faremos no noso curso de formación refírese especificamente á cadea de bloques de Ethereum e aos contratos intelixentes Solidity.

A minería ou como se crean os bloques

A minería é un proceso bastante complexo e intensivo en recursos para engadir novos bloques á cadea de bloques, e non para nada a "minería de criptomoedas". A minería garante a funcionalidade da cadea de bloques, porque é este proceso o que se encarga de engadir transaccións á cadea de bloques de Ethereum.

As persoas e organizacións implicadas na adición de bloques chámanse mineiros.
O software que se executa nos nodos mineiros tenta atopar un parámetro de hash chamado Nonce para que o último bloque obteña un valor hash específico especificado pola rede. O algoritmo de hash Ethash usado en Ethereum permítelle obter o valor Nonce só mediante a busca secuencial.

Se o nodo mineiro atopa o valor Nonce correcto, esta é a chamada proba de traballo (PoW, Proof-of-work). Neste caso, se se engade un bloque á rede Ethereum, o mineiro recibe unha certa recompensa na moeda da rede - Ether. No momento de escribir este artigo, a recompensa é 5 Ether, pero este reducirase co paso do tempo.

Así, os mineiros de Ethereum garanten o funcionamento da rede engadindo bloques e reciben diñeiro de criptomoneda para iso. Hai moita información en internet sobre mineiros e minería, pero centrarémonos na creación de contratos de Solidity e DApps na rede Ethereum.

Resumo da lección

Na primeira lección, coñeceches a cadea de bloques e aprendeches que é unha secuencia de bloques especialmente composta. Non se pode cambiar o contido dos bloques rexistrados previamente, xa que isto requiriría recalcular todos os bloques posteriores en moitos nodos da rede, o que require moitos recursos e tempo.

Blockchain pódese usar para almacenar os resultados das transaccións. A súa finalidade principal é organizar transaccións seguras entre partes (persoas e organizacións) entre as que non existe confianza. Aprendeu en que áreas específicas de negocio e en que áreas se poden usar a cadea de bloques de Ethereum e os contratos intelixentes de Solidity. Trátase do sector bancario, rexistro de dereitos de propiedade, documentos, etc.

Tamén aprendeu que poden xurdir varios problemas ao usar a cadea de bloques. Trátase de problemas de verificación da información engadida á cadea de bloques, a velocidade da cadea de bloques, o custo das transaccións, o problema do intercambio de datos entre os contratos intelixentes e o mundo real, así como os posibles ataques de atacantes dirixidos a roubar fondos de criptomonedas das contas dos usuarios. .

Tamén falamos brevemente da minería como o proceso de engadir novos bloques á cadea de bloques. A minería é necesaria para completar transaccións. Os implicados na minería garanten o funcionamento da cadea de bloques e reciben unha recompensa en moeda criptográfica por iso.

Lección 2. Preparación dun ambiente de traballo en Ubuntu e Debian OSSelección dun sistema operativo
Instalación das utilidades necesarias
Instalando Geth e Swarm en Ubuntu
Instalando Geth e Swarm en Debian
Preparación previa
Descargando a distribución Go
Establecemento de variables de ambiente
Comprobando a versión de Go
Instalación de Geth e Swarm
Creación dunha cadea de bloques privada
Preparando o ficheiro genesis.json
Crea un directorio para traballar
Crear unha conta
Iniciando a inicialización do nodo
Opcións de lanzamento do nodo
Conéctate ao noso nodo
Xestión mineira e comprobación de saldos
Apagando a consola Geth
Resumo da lección

Lección 3. Preparando o ambiente de traballo en Raspberry Pi 3Preparando o Raspberry Pi 3 para o traballo
Instalación de Rasberian
Instalando actualizacións
Activando o acceso SSH
Establecer un enderezo IP estático
Instalación das utilidades necesarias
Instalando Go
Descargando a distribución Go
Establecemento de variables de ambiente
Comprobando a versión de Go
Instalación de Geth e Swarm
Creación dunha cadea de bloques privada
Comprobando a túa conta e saldo
Resumo da lección

Lección 4. Contas e transferencia de fondos entre contasVer e engadir contas
Ver unha lista de contas
Engadindo unha conta
opcións de comandos da conta geth
Contrasinais da conta
Criptomoeda en Ethereum
Unidades monetarias de Ethereum
Determinamos o saldo actual das nosas contas
Transferir fondos dunha conta a outra
Método eth.sendTransaction
Ver o estado da transacción
Recibo de transacción
Resumo da lección

Lección 5. Publicando o teu primeiro contratoContratos intelixentes en Ethereum
Execución de contrato intelixente
Máquina virtual Ethereum
Entorno de desenvolvemento integrado Remix Solidity IDE
Execución de compilación
Convocatoria de funcións do contrato
Publicación dun contrato nunha rede privada
Obtención da definición ABI e do código binario do contrato
Publicación do contrato
Comprobando o estado da transacción de publicación do contrato
Convocatoria de funcións do contrato
compilador por lotes solc
Instalando solc en Ubuntu
Instalando solc en Debian
Compilación do contrato HelloSol
Publicación do contrato
Instalando solc en Rasberian
Resumo da lección

Lección 6. Contratos intelixentes e Node.jsInstalando Node.js
Instalación en Ubuntu
Instalación en Debian
Instalación e execución de Ganache-cli
Instalación Web3
Instalación de solc
Instalando Node.js en Rasberian
Script para obter unha lista de contas na consola
Script para publicar un contrato intelixente
Iniciar e obter parámetros
Obtención de opcións de lanzamento
Compilación do contrato
Desbloqueando a túa conta
Cargando código binario ABI e contrato
Estimación da cantidade de gas necesaria
Crea un obxecto e comeza a publicar un contrato
Execución do guión de publicación do contrato
Chamar funcións de contrato intelixente
É posible actualizar un contrato intelixente publicado?
Traballando con Web3 versión 1.0.x
Obtención dunha lista de contas
Publicación do contrato
Convocatoria de funcións do contrato
Transferir fondos dunha conta a outra
Transferir fondos á conta do contrato
Actualizando o contrato intelixente HelloSol
Crea un script para ver o saldo da túa conta
Engade unha chamada á función getBalance ao script call_contract_get_promise.js
Recargamos a conta de contrato intelixente
Resumo da lección

Lección 7. Introdución á TrufaInstalación de Truffle
Crea un proxecto HelloSol
Creación do directorio e ficheiros do proxecto
Directorio de contratos
Migracións de catálogo
Proba de directorio
ficheiro truffle-config.js
Compilación do contrato HelloSol
Comezar a publicar un contrato
Chamar as funcións do contrato de HelloSol nunha solicitude de trufa
Chamar as funcións contractuais de HelloSol desde un script JavaScript que executa Node.js
Instalación do módulo trufa-contrato
Chamar as funcións contractuais getValue e getString
Chamar as funcións de contrato setValue e setString
Modificación e republicación do contrato
Traballando con Web3 versión 1.0.x
Realizando cambios no contrato intelixente HelloSol
Scripts para chamar a métodos de contrato
Proba en trufa
Proba de solidez
Proba de JavaScript
Resumo da lección

Lección 8. Tipos de datos de solidezContrato de tipos de datos de aprendizaxe
Tipos de datos booleanos
Enteiros sen signo e enteiros con signo
Números de punto fixo
Enderezo
Variables de tipos complexos
Arrays de tamaño fixo
Arrays dinámicos
Enumeración
Estruturas
Cartografía de dicionarios
Resumo da lección

Tema 9. Migración de contratos á rede privada e á rede RinkebyPublicación dun contrato de Truffle á rede privada Geth
Preparando un nodo de rede privada
Elaboración dun contrato de traballo
Compilación e migración dun contrato á rede Truffle
Iniciando a migración da rede local geth
Obtención de artefactos de trufa
Publicación dun contrato de Truffle para a rede de proba de Rinkeby
Preparando un nodo Geth para traballar con Rinkeby
Sincronización de nodos
Engadindo contas
Recarga a túa conta de Rinkeby con éter
Lanzando a migración do contrato á rede Rinkeby
Visualización da información do contrato na rede Rinkeby
Truffle Console para Rinkeby Network
Forma máis sinxela de chamar a funcións do contrato
Chamar métodos de contrato usando Node.js
Transfire fondos entre contas na consola Truffle para Rinkby
Resumo da lección

Lección 10. Almacenamento de datos descentralizado de Ethereum SwarmComo funciona Ethereum Swarm?
Instalación e inicio de Swarm
Operacións con ficheiros e directorios
Cargando un ficheiro a Ethereum Swarm
Lendo un ficheiro de Ethereum Swarm
Consulta o manifesto dun ficheiro cargado
Cargando directorios con subdirectorios
Lendo un ficheiro desde un directorio descargado
Usando unha pasarela pública Swarm
Acceso a Swarm desde scripts Node.js
Perl Net::Ethereum::Módulo Swarm
Instalación do módulo Net::Ethereum::Swarm
Escritura e lectura de datos
Resumo da lección

Lección 11. Marco Web3.py para traballar con Ethereum en PythonInstalando Web3.py
Actualización e instalación dos paquetes necesarios
Instalación do módulo easysolc
Publicación dun contrato mediante Web3.py
Compilación do contrato
Conectando a un provedor
Executa a publicación do contrato
Gardando o enderezo do contrato e abi nun ficheiro
Execución do guión de publicación do contrato
Métodos de contratación de convocatoria
Lendo o enderezo e abi dun contrato desde un ficheiro JSON
Conectando a un provedor
Creación dun obxecto de contrato
Métodos de contratación de convocatoria
Trufa e Web3.py
Resumo da lección

Lección 12. OráculosPode un contrato intelixente confiar nos datos do mundo exterior?
Oráculos como intermediarios de información blockchain
Fonte de datos
Código para representar os datos da fonte
Oracle para rexistrar o tipo de cambio na cadea de bloques
Contrato USDRate Oracle
Actualizando o tipo de cambio nun contrato intelixente
Usando un provedor de Web Socket
Agardando polo evento RateUpdate
Xestionando o evento RateUpdate
Iniciar unha actualización de datos nun contrato intelixente
Resumo da lección

Fonte: www.habr.com

Engadir un comentario