El libro “Creación de contratos inteligentes de Solidity para la cadena de bloques Ethereum. Guía práctica"

El libro “Creación de contratos inteligentes de Solidity para la cadena de bloques Ethereum. Guía práctica"
Durante más de un año he estado trabajando en el libro “Creación de contratos inteligentes de solidez para Ethereum Blockchain. Guía Práctica", y ahora este trabajo está completo, y el libro publicado y disponible en Litros.

Espero que mi libro le ayude a empezar rápidamente a crear contactos inteligentes de Solidity y DApps distribuidas para la cadena de bloques Ethereum. Consta de 12 lecciones con tareas prácticas. Una vez completados, el lector podrá crear sus propios nodos locales de Ethereum, publicar contratos inteligentes y llamar a sus métodos, intercambiar datos entre el mundo real y los contratos inteligentes mediante oráculos y trabajar con la red de depuración de pruebas de Rinkeby.

El libro está dirigido a todos los que estén interesados ​​en tecnologías avanzadas en el campo de las cadenas de bloques y quieran adquirir rápidamente conocimientos que les permitan realizar un trabajo interesante y prometedor.

A continuación encontrará el índice y el primer capítulo del libro (también en litros fragmentos del libro están disponibles). Espero recibir feedback, comentarios y sugerencias. Intentaré tener todo esto en cuenta a la hora de preparar la próxima edición del libro.

tabla de contenidosintroducciónNuestro libro está destinado a aquellos que desean no solo comprender los principios de la cadena de bloques Ethereum, sino también adquirir habilidades prácticas en la creación de DApps distribuidas en el lenguaje de programación Solidity para esta red.

Es mejor no simplemente leer este libro, sino trabajar con él, completando las tareas prácticas descritas en las lecciones. Para trabajar, necesitará una computadora local, un servidor virtual o en la nube con el sistema operativo Debian o Ubuntu instalado. También puedes utilizar Raspberry Pi para realizar muchas tareas.

en la primera lección Analizaremos los principios operativos de la cadena de bloques Ethereum y la terminología básica, y también hablaremos sobre dónde se puede utilizar esta cadena de bloques.

objetivo segunda lección — cree un nodo privado de blockchain Ethereum para seguir trabajando dentro de este curso en un servidor Ubuntu y Debian. Consideraremos las características de la instalación de utilidades básicas, como geth, que garantiza el funcionamiento de nuestro nodo blockchain, así como el demonio de almacenamiento de datos descentralizado enjambre.

Tercera lección le enseñará cómo experimentar con Ethereum en una microcomputadora Raspberry Pi económica. Instalará el sistema operativo (SO) Rasberian en Raspberry Pi, la utilidad Geth que alimenta el nodo blockchain y el demonio de almacenamiento de datos descentralizado Swarm.

Lección cuatro está dedicado a cuentas y unidades de criptomonedas en la red Ethereum, así como a formas de transferir fondos de una cuenta a otra desde la consola Geth. Aprenderá cómo crear cuentas, iniciar transacciones de transferencia de fondos y obtener el estado y el recibo de las transacciones.

En la quinta lección Se familiarizará con los contratos inteligentes en la red Ethereum y aprenderá sobre su ejecución mediante la máquina virtual Ethereum.

Crearás y publicarás tu primer contrato inteligente en la red privada Ethereum y aprenderás a llamar a sus funciones. Para hacer esto, utilizará el IDE de Remix Solidity. También aprenderá a instalar y utilizar el compilador por lotes solc.
También hablaremos sobre la llamada Interfaz Binaria de Aplicaciones (ABI) y le enseñaremos cómo utilizarla.

Sexta lección se dedica a crear scripts JavaScript ejecutando Node.js y realizar operaciones con contratos inteligentes de Solidity.

Instalará Node.js en Ubuntu, Debian y Rasberian OS, escribirá scripts para publicar un contrato inteligente en la red local Ethereum y llamará a sus funciones.

Además, aprenderá a transferir fondos entre cuentas normales mediante scripts, así como a acreditarlos en cuentas de contratos inteligentes.

En la séptima lección Aprenderá cómo instalar y utilizar el marco Truffle, popular entre los desarrolladores de contratos inteligentes de Solidity. Aprenderá cómo crear scripts JavaScript que llamen a funciones de contrato usando el módulo de contrato de trufa y probará su contrato inteligente usando Truffle.

Octava lección dedicado a los tipos de datos de Solidity. Escribirá contratos inteligentes que funcionen con tipos de datos como enteros con y sin signo, números con signo, cadenas, direcciones, variables complejas, matrices, enumeraciones, estructuras y diccionarios.

En la novena lección Estarás un paso más cerca de crear contratos inteligentes para la red principal de Ethereum. Aprenderá cómo publicar contratos usando Truffle en la red privada Geth, así como en la red de pruebas Rinkeby. Depurar un contrato inteligente en la red Rinkeby es muy útil antes de publicarlo en la red principal; casi todo es real allí, pero de forma gratuita.

Como parte de la lección, creará un nodo de red de prueba de Rinkeby, lo financiará con fondos y publicará un contrato inteligente.

Lección de 10 dedicado al almacenamiento de datos distribuidos Ethereum Swarm. Al utilizar el almacenamiento distribuido, ahorra en el almacenamiento de grandes cantidades de datos en la cadena de bloques Ethereum.

En este tutorial, creará un almacenamiento Swarm local, escribirá y leerá operaciones en archivos y directorios de archivos. A continuación, aprenderá a trabajar con la puerta de enlace pública de Swarm, a escribir scripts para acceder a Swarm desde Node.js y a utilizar el módulo Perl Net::Ethereum::Swarm.

Objetivo de la lección 11 — dominar el trabajo con contratos inteligentes de Solidity utilizando el popular lenguaje de programación Python y el marco Web3.py. Instalarás el marco, escribirás scripts para compilar y publicar el contrato inteligente y llamarás a sus funciones. En este caso, Web3.py se utilizará solo y junto con el entorno de desarrollo integrado Truffle.

En la lección 12 Aprenderá a transferir datos entre contratos inteligentes y el mundo real utilizando oráculos. Esto le resultará útil para recibir datos de sitios web, dispositivos IoT, diversos dispositivos y sensores, y enviar datos de contratos inteligentes a estos dispositivos. En la parte práctica de la lección, crearás un oráculo y un contrato inteligente que recibe el tipo de cambio actual entre USD y rublos del sitio web del Banco Central de la Federación Rusa.

Lección 1. Brevemente sobre blockchain y la red EthereumEl propósito de la lección: familiarizarse con los principios operativos de la cadena de bloques Ethereum, sus áreas de aplicación y terminología básica.
Tareas prácticas: no se trata en esta lección.

Difícilmente existe hoy en día un desarrollador de software que no haya oído hablar de la tecnología blockchain (Blockchain), las criptomonedas (Cryptocurrency o Cryptocurrency), Bitcoin (Bitcoin), la oferta inicial de monedas (ICO, Initial Coin Offer), los contratos inteligentes (Smart Contract), así como otros conceptos y términos relacionados con blockchain.

La tecnología Blockchain abre nuevos mercados y crea puestos de trabajo para programadores. Si comprende todas las complejidades de las tecnologías de criptomonedas y de contratos inteligentes, entonces no debería tener problemas para aplicar este conocimiento en la práctica.

Hay que decir que hay mucha especulación en torno a las criptomonedas y blockchains. Dejaremos de lado las discusiones sobre los cambios en los precios de las criptomonedas, la creación de pirámides, las complejidades de la legislación sobre criptomonedas, etc. En nuestro curso de formación nos centraremos principalmente en los aspectos técnicos de la aplicación de contratos inteligentes de la blockchain Ethereum (Ethereum, Ether) y el desarrollo de las llamadas aplicaciones descentralizadas (Distributed Application, DApp).

Que es blockchain

Blockchain (Block Chain) es una cadena de bloques de datos conectados entre sí de cierta manera. Al inicio de la cadena se encuentra el primer bloque, que se denomina bloque primario (bloque génesis) o bloque génesis. Le sigue el segundo, luego el tercero y así sucesivamente.

Todos estos bloques de datos se duplican automáticamente en numerosos nodos de la red blockchain. Esto garantiza el almacenamiento descentralizado de datos de blockchain.
Puede pensar en un sistema blockchain como una gran cantidad de nodos (servidores físicos o virtuales) conectados en una red y replicando todos los cambios en la cadena de bloques de datos. Esto es como una computadora gigante con múltiples servidores, y los nodos de dicha computadora (servidores) pueden estar dispersos por todo el mundo. Y usted también puede agregar su computadora a la red blockchain.

Base de datos distribuida

Se puede considerar una cadena de bloques como una base de datos distribuida que se replica en todos los nodos de la red de la cadena de bloques. En teoría, la cadena de bloques estará operativa siempre que al menos un nodo esté funcionando, almacenando todos los bloques de la cadena de bloques.

Registro de datos distribuidos

Se puede considerar Blockchain como un libro de contabilidad distribuido de datos y operaciones (transacciones). Otro nombre para dicho registro es libro mayor.

Los datos se pueden agregar a un libro mayor distribuido, pero no se pueden cambiar ni eliminar. Esta imposibilidad se logra, en particular, mediante el uso de algoritmos criptográficos, algoritmos especiales para agregar bloques a la cadena y almacenamiento de datos descentralizado.

Al agregar bloques y realizar operaciones (transacciones), se utilizan claves públicas y privadas. Restringen a los usuarios de blockchain dándoles acceso únicamente a sus propios bloques de datos.

Transacciones

Blockchain almacena información sobre operaciones (transacciones) en bloques. Al mismo tiempo, las transacciones antiguas que ya se han completado no se pueden revertir ni modificar. Las nuevas transacciones se almacenan en bloques nuevos y agregados.

De esta manera, todo el historial de transacciones se puede registrar sin cambios en la cadena de bloques. Por lo tanto, blockchain se puede utilizar, por ejemplo, para almacenar de forma segura transacciones bancarias, información de derechos de autor, historial de cambios de propietarios, etc.

La cadena de bloques Ethereum contiene los llamados estados del sistema. A medida que se ejecutan las transacciones, el estado cambia del estado inicial al estado actual. Las transacciones se registran en bloques.

Cadenas de bloques públicas y privadas

Cabe señalar aquí que todo lo dicho es cierto sólo para las llamadas redes públicas blockchain, que no pueden ser controladas por ninguna persona física o jurídica, agencia gubernamental o gobierno.
Las llamadas redes blockchain privadas están bajo el control total de sus creadores y allí todo es posible, por ejemplo, la sustitución completa de todos los bloques de la cadena.

Aplicaciones prácticas de blockchain

¿Para qué puede ser útil blockchain?

En resumen, blockchain permite realizar transacciones (transacciones) de forma segura entre personas o empresas que no confían entre sí. Los datos registrados en blockchain (transacciones, datos personales, documentos, certificados, contratos, facturas, etc.) no pueden ser falsificados ni reemplazados después del registro. Por lo tanto, basándose en blockchain, es posible crear, por ejemplo, registros distribuidos confiables de varios tipos de documentos.

Por supuesto, usted sabe que los sistemas de criptomonedas se están creando sobre la base de blockchains, diseñados para reemplazar el papel moneda común. El papel moneda también se llama fiat (de Fiat Money).
Blockchain garantiza el almacenamiento y la inmutabilidad de las transacciones registradas en bloques, por lo que puede utilizarse para crear sistemas de criptomonedas. Contiene el historial completo de la transferencia de fondos criptográficos entre diferentes usuarios (cuentas) y se puede rastrear cualquier operación.

Aunque las transacciones dentro de los sistemas de criptomonedas pueden ser anónimas, retirar criptomonedas e intercambiarlas por dinero fiduciario generalmente resulta en la revelación de la identidad del propietario del activo de criptomonedas.

Los llamados contratos inteligentes, que son software que se ejecutan en la red Ethereum, permiten automatizar el proceso de conclusión de transacciones y monitorear su implementación. Esto es especialmente efectivo si el pago de la transacción se realiza utilizando la criptomoneda Ether.

La cadena de bloques Ethereum y los contratos inteligentes de Ethereum escritos en el lenguaje de programación Solidity se pueden utilizar, por ejemplo, en las siguientes áreas:

  • una alternativa a la certificación notarial de documentos;
  • almacenamiento de un registro de objetos inmobiliarios e información sobre transacciones con objetos inmobiliarios;
  • almacenamiento de información sobre derechos de autor sobre propiedad intelectual (libros, imágenes, obras musicales, etc.);
  • creación de sistemas de votación independientes;
  • finanzas y banca;
  • logística a escala internacional, seguimiento del movimiento de mercancías;
  • almacenamiento de datos personales como sistema análogo a un documento de identidad;
  • transacciones seguras en el ámbito comercial;
  • almacenar los resultados de los exámenes médicos, así como el historial de los procedimientos prescritos

Problemas con la cadena de bloques

Pero claro, ¡no todo es tan sencillo como parece!

Hay problemas con la verificación de datos antes de agregarlos a la cadena de bloques (por ejemplo, ¿son falsos?), problemas con la seguridad del sistema y el software de aplicación utilizado para trabajar con la cadena de bloques, problemas con la posibilidad de utilizar métodos de ingeniería social para robar el acceso. a billeteras de criptomonedas, etc. .P.

Nuevamente, si no estamos hablando de una cadena de bloques pública, cuyos nodos están dispersos por todo el mundo, sino de una cadena de bloques privada que pertenece a una persona u organización, entonces el nivel de confianza aquí no será mayor que el nivel de confianza. en esta persona o en esta organización.

También hay que tener en cuenta que los datos registrados en la cadena de bloques pasan a estar disponibles para todos. En este sentido, blockchain (especialmente la pública) no es adecuada para almacenar información confidencial. Sin embargo, el hecho de que la información en la cadena de bloques no se pueda cambiar puede ayudar a prevenir o investigar varios tipos de actividades fraudulentas.

Las aplicaciones descentralizadas de Ethereum serán convenientes si paga por su uso con criptomonedas. Cuantas más personas posean criptomonedas o estén dispuestas a comprarlas, más populares se volverán las DApps y los contratos inteligentes.

Los problemas comunes con blockchain que obstaculizan su aplicación práctica incluyen la velocidad limitada a la que se pueden agregar nuevos bloques y el costo relativamente alto de las transacciones. Pero la tecnología en esta área se está desarrollando activamente y hay esperanzas de que los problemas técnicos se resuelvan con el tiempo.

Otro problema es que los contratos inteligentes en la cadena de bloques Ethereum operan en un entorno aislado de máquinas virtuales y no tienen acceso a datos del mundo real. En particular, el programa de contrato inteligente no puede leer datos de sitios o dispositivos físicos (sensores, contactos, etc.) y tampoco puede enviar datos a ningún dispositivo externo. Discutiremos este problema y las formas de resolverlo en una lección dedicada a los llamados Oráculos, intermediarios de información de contratos inteligentes.

También existen restricciones legales. En algunos países, por ejemplo, está prohibido utilizar criptomonedas como medio de pago, pero puedes poseerlas como una especie de activo digital, como valores. Estos activos se pueden comprar y vender en la bolsa. En cualquier caso, al crear un proyecto que funcione con criptomonedas, es necesario familiarizarse con la legislación del país bajo cuya jurisdicción se encuentra su proyecto.

Cómo se forma una cadena blockchain

Como ya hemos dicho, blockchain es una simple cadena de bloques de datos. Primero, se forma el primer bloque de esta cadena, luego se le agrega el segundo y así sucesivamente. Se supone que los datos de la transacción se almacenan en bloques y se agregan al bloque más reciente.

En la Fig. 1.1 mostramos la versión más simple de una secuencia de bloques, donde el primer bloque se refiere al siguiente.

El libro “Creación de contratos inteligentes de Solidity para la cadena de bloques Ethereum. Guía práctica"
Arroz. 1.1. Secuencia simple de bloques.

Sin embargo, con esta opción es muy fácil alterar el contenido de cualquier bloque de la cadena, ya que los bloques no contienen ninguna información que los proteja contra cambios. Teniendo en cuenta que blockchain está destinado a ser utilizado por personas y empresas entre las que no existe confianza, podemos concluir que este método de almacenamiento de datos no es adecuado para blockchain.

Empecemos a proteger los bloques de la falsificación. En la primera etapa, intentaremos proteger cada bloque con una suma de verificación (Fig. 1.2).

El libro “Creación de contratos inteligentes de Solidity para la cadena de bloques Ethereum. Guía práctica"
Arroz. 1.2. Agregar protección para estos bloques con una suma de verificación

Ahora un atacante no puede simplemente cambiar el bloque, ya que contiene la suma de comprobación de los datos del bloque. Verificar la suma de verificación mostrará que los datos han sido modificados.

Para calcular la suma de comprobación, puede utilizar una de las funciones hash como MD-5, SHA-1, SHA-256, etc. Las funciones hash calculan un valor (por ejemplo, una cadena de texto de longitud constante) realizando operaciones irreversibles en un bloque de datos. Las operaciones dependen del tipo de función hash.

Incluso si el contenido del bloque de datos cambia ligeramente, el valor hash también cambiará. Al analizar el valor de la función hash, es imposible reconstruir el bloque de datos para el cual se calculó.

¿Será suficiente esa protección? Lamentablemente no.

En este esquema, la suma de comprobación (función hash) sólo protege bloques individuales, pero no toda la cadena de bloques. Conociendo el algoritmo para calcular la función hash, un atacante puede reemplazar fácilmente el contenido de un bloque. Además, nada le impedirá eliminar bloques de la cadena o añadir otros nuevos.

Para proteger toda la cadena en su conjunto, también puede almacenar en cada bloque, junto con los datos, un hash de los datos del bloque anterior (Fig. 1.3).

El libro “Creación de contratos inteligentes de Solidity para la cadena de bloques Ethereum. Guía práctica"
Arroz. 1.3. Agrega el hash del bloque anterior al bloque de datos

En este esquema, para cambiar un bloque, es necesario volver a calcular las funciones hash de todos los bloques posteriores. Al parecer, ¿cuál es el problema?

En las cadenas de bloques reales, además se crean dificultades artificiales para agregar nuevos bloques: se utilizan algoritmos que requieren muchos recursos informáticos. Teniendo en cuenta que para realizar cambios en un bloque, es necesario recalcular no solo este bloque, sino todos los siguientes, esto será extremadamente difícil de hacer.

Recordemos también que los datos de blockchain se almacenan (duplican) en numerosos nodos de la red, es decir. Se utiliza almacenamiento descentralizado. Y esto hace que sea mucho más difícil falsificar un bloque, porque Se deben realizar cambios en todos los nodos de la red.

Dado que los bloques almacenan información sobre el bloque anterior, es posible comprobar el contenido de todos los bloques de la cadena.

cadena de bloques etéreo

La cadena de bloques Ethereum es una plataforma en la que se pueden crear DApps distribuidas. A diferencia de otras plataformas, Ethereum permite el uso de los llamados contratos inteligentes (contratos inteligentes), escritos en el lenguaje de programación Solidity.

Esta plataforma fue creada en 2013 por Vitalik Buterin, fundador de Bitcoin Magazine, y lanzada en 2015. Todo lo que estudiaremos o haremos en nuestro curso de formación se relaciona específicamente con la cadena de bloques Ethereum y los contratos inteligentes de Solidity.

Minería o cómo se crean los bloques

La minería es un proceso bastante complejo y que requiere muchos recursos para agregar nuevos bloques a la cadena blockchain, y nada de "minería de criptomonedas". La minería asegura la funcionalidad de la cadena de bloques, porque es este proceso el responsable de agregar transacciones a la cadena de bloques Ethereum.

Las personas y organizaciones involucradas en agregar bloques se llaman mineros.
El software que se ejecuta en los nodos mineros intenta encontrar un parámetro hash llamado Nonce para que el último bloque obtenga un valor hash específico especificado por la red. El algoritmo de hash Ethash utilizado en Ethereum le permite obtener el valor de Nonce solo mediante búsqueda secuencial.

Si el nodo minero encuentra el valor Nonce correcto, entonces esta es la llamada prueba de trabajo (PoW, Prueba de trabajo). En este caso, si se agrega un bloque a la red Ethereum, el minero recibe una determinada recompensa en la moneda de la red: Ether. Al momento de escribir este artículo, la recompensa es de 5 Ether, pero se reducirá con el tiempo.

De este modo, los mineros de Ethereum garantizan el funcionamiento de la red añadiendo bloques y reciben dinero en criptomonedas por ello. Encontrarás mucha información en Internet sobre mineros y minería, pero nos centraremos en crear contratos Solidity y DApps en la red Ethereum.

Resumen de la lección

En la primera lección, se familiarizó con la cadena de bloques y aprendió que es una secuencia de bloques especialmente compuesta. El contenido de los bloques grabados previamente no se puede cambiar, ya que esto requeriría volver a calcular todos los bloques posteriores en muchos nodos de la red, lo que requiere muchos recursos y tiempo.

Blockchain se puede utilizar para almacenar los resultados de las transacciones. Su objetivo principal es organizar transacciones seguras entre partes (personas y organizaciones) entre las que no existe confianza. Aprendió en qué áreas específicas de negocio y en qué áreas se pueden utilizar la cadena de bloques Ethereum y los contratos inteligentes Solidity. Este es el sector bancario, registro de derechos de propiedad, documentos, etc.

También aprendiste que pueden surgir varios problemas al usar blockchain. Se trata de problemas de verificación de la información agregada a la cadena de bloques, la velocidad de la cadena de bloques, el costo de las transacciones, el problema del intercambio de datos entre los contratos inteligentes y el mundo real, así como posibles ataques de atacantes destinados a robar fondos en criptomonedas de las cuentas de los usuarios. .

También hablamos brevemente sobre la minería como el proceso de agregar nuevos bloques a la cadena de bloques. La minería es necesaria para completar las transacciones. Quienes participan en la minería garantizan el funcionamiento de la cadena de bloques y reciben una recompensa en criptomonedas por ello.

Lección 2. Preparando un entorno de trabajo en Ubuntu y Debian OSSeleccionar un sistema operativo
Instalación de las utilidades necesarias
Instalación de Geth y Swarm en Ubuntu
Instalación de Geth y Swarm en Debian
Preparacion preliminar
Descargando la distribución Go
Configuración de variables de entorno
Comprobando la versión Go
Instalación de Geth y Swarm
Creando una cadena de bloques privada
Preparando el archivo genesis.json
Crear un directorio para el trabajo.
Crea una cuenta
Iniciando la inicialización del nodo
Opciones de lanzamiento de nodo
Conéctate a nuestro nodo
Gestión minera y control de saldos.
Apagar la consola Geth
Resumen de la lección

Lección 3. Preparando el entorno de trabajo en Raspberry Pi 3Preparando la Raspberry Pi 3 para el trabajo
Instalación de Rasberian
Instalando actualizaciones
Habilitar el acceso SSH
Configuración de una dirección IP estática
Instalación de las utilidades necesarias
Instalación de Go
Descargando la distribución Go
Configuración de variables de entorno
Comprobando la versión Go
Instalación de Geth y Swarm
Creando una cadena de bloques privada
Comprobación de su cuenta y saldo
Resumen de la lección

Lección 4. Cuentas y transferencia de fondos entre cuentasVer y agregar cuentas
Ver una lista de cuentas
Agregar una cuenta
opciones de comando de cuenta geth
Contraseñas de cuenta
Criptomoneda en Ethereum
Unidades monetarias de Ethereum
Determinamos el saldo actual de nuestras cuentas.
Transferir fondos de una cuenta a otra
Método eth.sendTransaction
Ver el estado de la transacción
Recibo de la transacción
Resumen de la lección

Lección 5. Publicar tu primer contratoContratos inteligentes en Ethereum
Ejecución de contratos inteligentes
Máquina virtual Ethereum
Entorno de desarrollo integrado Remix Solidity IDE
Compilación en ejecución
Llamar a funciones de contrato
Publicar un contrato en una red privada
Obtener la definición de ABI y el código binario del contrato
Publicación del contrato
Comprobación del estado de la transacción de publicación del contrato
Llamar a funciones de contrato
Compilador por lotes solc
Instalación de solc en Ubuntu
Instalación de solc en Debian
Compilando el contrato HelloSol
Publicación del contrato
Instalación de solc en Rasberian
Resumen de la lección

Lección 6. Contratos inteligentes y Node.jsInstalación de Node.js
Instalación en Ubuntu
Instalación en Debian
Instalación y ejecución de Ganache-cli
instalación web3
instalando solc
Instalación de Node.js en Rasberian
Script para obtener una lista de cuentas en la consola
Script para publicar un contrato inteligente
Iniciar y obtener parámetros
Obteniendo opciones de lanzamiento
Compilación de contratos
Desbloquear tu cuenta
Cargando ABI y contrato de código binario
Estimación de la cantidad necesaria de gas.
Crea un objeto y comienza a publicar un contrato.
Ejecutar el script de publicación del contrato
Llamar a funciones de contrato inteligente
¿Es posible actualizar un contrato inteligente publicado?
Trabajar con Web3 versión 1.0.x
Obtener una lista de cuentas
Publicación del contrato
Llamar a funciones de contrato
Transferir fondos de una cuenta a otra
Transferir fondos a la cuenta del contrato
Actualización del contrato inteligente HelloSol
Cree un script para ver el saldo de su cuenta
Agregue una llamada a la función getBalance al script call_contract_get_promise.js
Recargamos la cuenta del contrato inteligente
Resumen de la lección

Lección 7. Introducción a la TrufaInstalación de trufa
Crear un proyecto HelloSol
Crear el directorio y los archivos del proyecto
Directorio de contratos
Migraciones de catálogo
prueba de directorio
archivo trufa-config.js
Compilando el contrato HelloSol
Empezar a publicar un contrato
Llamar a las funciones del contrato HelloSol en un mensaje de Truffle
Llamar a funciones de contrato HelloSol desde un script JavaScript que ejecuta Node.js
Instalación del módulo de contrato de trufa
Llamar a las funciones de contrato getValue y getString
Llamar a las funciones de contrato setValue y setString
Modificación del contrato y reedición
Trabajar con Web3 versión 1.0.x
Realizar cambios en el contrato inteligente de HelloSol
Scripts para llamar a métodos de contrato
Pruebas en Trufa
Prueba de solidez
prueba de javascript
Resumen de la lección

Lección 8. Tipos de datos de solidezContrato para aprender tipos de datos.
tipos de datos booleanos
Enteros sin signo y enteros con signo
Números de punto fijo
dirección
Variables de tipos complejos.
Matrices de tamaño fijo
Matrices dinámicas
Listado
Estructuras
Mapeo de diccionarios
Resumen de la lección

Lección 9. Migración de contratos a la red privada y a la red RinkebyPublicar un contrato de Truffle en la red privada Geth
Preparando un nodo de red privada
Preparar un contrato de trabajo.
Compilación y migración de un contrato a la red Truffle
Iniciando la migración de la red local geth
Conseguir artefactos de trufa
Publicación de un contrato de Truffle en la red de prueba de Rinkeby
Preparando un nodo Geth para trabajar con Rinkeby
Sincronización de nodos
Agregar cuentas
Recargar tu cuenta Rinkeby con ether
Lanzamiento de la migración del contrato a la red Rinkeby
Ver información del contrato en la red Rinkeby
Consola Truffle para Rinkeby Network
Una forma más sencilla de llamar a funciones de contrato
Llamar a métodos de contrato usando Node.js
Transferir fondos entre cuentas en la consola Truffle para Rinkby
Resumen de la lección

Lección 10. Almacenamiento de datos descentralizado de Ethereum Swarm¿Cómo funciona Ethereum Swarm?
Instalación y lanzamiento de Swarm
Operaciones con archivos y directorios.
Subir un archivo a Ethereum Swarm
Leyendo un archivo de Ethereum Swarm
Ver el manifiesto de un archivo cargado
Cargando directorios con subdirectorios
Leer un archivo de un directorio descargado
Usando una puerta de enlace pública de Swarm
Accediendo a Swarm desde los scripts de Node.js
Perl Net::Ethereum::Módulo Swarm
Instalación del módulo Net::Ethereum::Swarm
Escribir y leer datos
Resumen de la lección

Lección 11. Marco Web3.py para trabajar con Ethereum en PythonInstalación de Web3.py
Actualización e instalación de paquetes necesarios
Instalación del módulo easysolc
Publicar un contrato usando Web3.py
Compilación de contratos
Conexión con un proveedor
Ejecutar publicación de contrato.
Guardar la dirección del contrato y abi en un archivo
Ejecutar el script de publicación del contrato
Llamar a métodos de contrato
Leer la dirección y abi de un contrato desde un archivo JSON
Conexión con un proveedor
Crear un objeto de contrato
Llamar a métodos de contrato
Trufa y Web3.py
Resumen de la lección

Lección 12. Oráculos¿Puede un contrato inteligente confiar en datos del mundo exterior?
Oráculos como intermediarios de información blockchain
Fuente de datos
Código para representar datos de la fuente.
Oracle para registrar el tipo de cambio en blockchain
USDTasaContrato Oracle
Actualización del tipo de cambio en un contrato inteligente
Utilizar un proveedor de sockets web
Esperando el evento RateUpdate
Manejando el evento RateUpdate
Iniciar una actualización de datos en un contrato inteligente
Resumen de la lección

Fuente: habr.com

Añadir un comentario