El propósito de la lección: familiarizarse con los principios de la cadena de bloques Ethereum, sus áreas de aplicación y terminología básica.
Ejercicios
prácticos : no provistos en esta lección.
Apenas hay un desarrollador de software hoy que no haya escuchado nada sobre la tecnología Blockchain, las criptomonedas (criptomonedas o criptomonedas), Bitcoins (Bitcoin), oferta inicial de monedas (ICO, oferta inicial de monedas), contratos inteligentes (Contrato inteligente), así como otros conceptos y términos relacionados con la cadena de bloques.
La tecnología Blockchain abre nuevos mercados y crea empleos para programadores. Si comprende todas las complejidades de las tecnologías de criptomonedas y las tecnologías de contrato inteligente, entonces no debería tener problemas para aplicar este conocimiento en la práctica.
Debo decir que hay mucha especulación sobre las criptomonedas y blockchains. Dejaremos de lado las discusiones sobre los cambios en las tasas de criptomonedas, sobre la creación de pirámides, sobre las complejidades de la legislación sobre criptomonedas, etc. En nuestro curso de capacitación, nos centraremos principalmente en los aspectos técnicos de la aplicación de los contratos inteligentes de blockchain de Ethereum (Ethereum, ether) y el desarrollo de la denominada Aplicación Distribuida (DApp).
¿Qué es blockchain?
Blockchain (Blockchain, Block Chain) es una cadena de bloques de datos conectados de cierta manera. Al comienzo de la cadena se encuentra el primer bloque llamado bloque de génesis o bloque de génesis. Le sigue un segundo, luego un 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 imaginar el sistema blockchain como una gran cantidad de nodos (servidores físicos o virtuales), conectados en red y replicando todos los cambios en la cadena de bloques de datos. Esto es como una computadora multiservidor gigante, 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
Blockchain se puede imaginar como una base de datos distribuida replicada a todos los nodos de la red blockchain. En teoría, la cadena de bloques estará operativa mientras funcione al menos un nodo que almacene todos los bloques de la cadena de bloques.
Registro de datos distribuidos
Blockchain se puede imaginar como un registro distribuido de datos y operaciones (transacciones). Otro nombre para dicho registro es ledger.
Puede agregar datos a un registro distribuido, pero no puede cambiarlos ni eliminarlos. Tal 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 privadas y públicas. Restringen a los usuarios de blockchain al darles acceso solo a sus bloques de datos.
Transacciones
La cadena de bloques almacena información sobre operaciones (transacciones) en bloques. Al mismo tiempo, las transacciones antiguas ya completadas no se pueden revertir ni modificar. Las nuevas transacciones se almacenan en nuevos bloques agregados.
Por lo tanto, todo el historial de transacciones se puede registrar sin cambios en la cadena de bloques. Por lo tanto, la cadena de bloques se puede usar, por ejemplo, para almacenar de forma segura las operaciones bancarias, la información de derechos de autor, un historial de cambios en la propiedad de bienes inmuebles, etc.
La cadena de bloques Ethereum contiene los llamados estados del sistema. A medida que se completan las transacciones, el estado cambia de inicial a actual. Las transacciones se escriben en bloques.
Blockchains públicos y privados
Cabe señalar que todo lo anterior es cierto solo para las llamadas redes públicas de blockchain, que no pueden ser controladas por individuos o entidades legales, organismos estatales o gobiernos.
Las llamadas redes privadas de blockchain están bajo el control total de sus creadores, y todo es posible allí, por ejemplo, el reemplazo completo de todos los bloques de la cadena.
Aplicaciones prácticas de blockchain
¿Para qué puede venir blockchain?
En resumen, blockchain le permite realizar transacciones (transacciones) de manera segura entre personas que no confían entre sí o en las empresas. Los datos registrados en blockchain (transacciones, datos personales, documentos, certificados, contratos, facturas, etc.) no pueden falsificarse ni reemplazarse después de la grabación. Por lo tanto, sobre la base de blockchain, puede crear, por ejemplo, registros distribuidos confiables de varios tipos de documentos.
Por supuesto, usted sabe que los sistemas de criptomonedas se crean sobre la base de blockchains, diseñados para reemplazar el papel moneda ordinario. El papel moneda también se llama dinero fiduciario (de Fiat Money).
Blockchain proporciona almacenamiento e inmutabilidad de transacciones registradas en bloques, por lo tanto, también se puede usar 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 la criptomoneda e intercambiarla por dinero fiduciario generalmente conduce a la divulgación de la identidad del propietario del activo de la criptomoneda.
Los llamados contratos inteligentes, que son software que se ejecuta en la red Ethereum, automatizan el proceso de cerrar acuerdos y controlar su ejecución. Esto es especialmente efectivo si el pago de la transacción se realiza con la criptomoneda Ether.
Los contratos inteligentes Ethereum blockchain y Ethereum escritos en el lenguaje de programación Solidity se pueden usar, por ejemplo, en las siguientes áreas:
- alternativa a la notarización de documentos;
- almacenamiento del registro de bienes inmuebles e información sobre transacciones con bienes inmuebles;
- almacenamiento de información de copyright sobre propiedad intelectual (libros, imágenes, música, etc.);
- creación de sistemas de votación independientes;
- finanzas y banca;
- logística internacional, seguimiento del movimiento de mercancías;
- almacenamiento de datos personales como un análogo de un sistema de tarjeta de identidad;
- transacciones seguras en el campo comercial;
- almacenamiento de los resultados de los exámenes médicos, así como el historial de los procedimientos prescritos
Problemas de blockchain
Pero, por supuesto, ¡no todo es tan simple como parece!
Hay problemas para verificar los datos antes de agregarlos a la cadena de bloques (por ejemplo, ¿no son falsos?), Problemas en la seguridad del sistema y el software de aplicación utilizado para trabajar con la cadena de bloques, problemas con la capacidad de utilizar métodos de ingeniería social para robar el acceso a las billeteras de criptomonedas, etc. .p.
Nuevamente, si no se trata de una cadena de bloques pública, cuyos nodos se encuentran dispersos por todo el mundo, sino de una cadena de bloques privada propiedad de una persona u organización, entonces el nivel de confianza aquí no será más alto que el nivel de confianza en esta persona o esta organización.
También se debe tener en cuenta que los datos grabados en la cadena de bloques están disponibles para todos. En este sentido, la cadena de bloques (especialmente la pública) no es adecuada para almacenar información confidencial. Sin embargo, el hecho de que la información en blockchain no se pueda cambiar puede ayudar a prevenir o investigar todo tipo de actividades fraudulentas.
Las aplicaciones de Ethereum descentralizadas serán convenientes si paga por su uso con criptomonedas. Cuantas más personas posean una criptomoneda o estén listas para comprarla, más populares serán las aplicaciones DApp y los contratos inteligentes.
Entre los problemas comunes de la cadena de bloques que impiden su aplicación práctica, se puede mencionar la velocidad limitada de agregar nuevos bloques y el costo relativamente alto de las transacciones. Pero las tecnologías en esta área se están desarrollando activamente, y hay esperanzas de que los problemas técnicos se resuelvan con el tiempo.
Otro problema es que los contratos inteligentes de blockchain de Ethereum funcionan en un entorno de máquina virtual aislado 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.), ni puede enviar datos a ningún dispositivo externo. Discutiremos este problema y los métodos para resolverlo en una lección dedicada a los llamados Oráculos: intermediarios de información de contratos inteligentes.
También hay restricciones legales. En algunos países, por ejemplo, está prohibido usar la criptomoneda como medio de pago, pero puede poseerla como un tipo de activo digital, como los valores. Dichos activos se pueden comprar y vender en la bolsa de valores. En cualquier caso, al crear un proyecto que funcione con criptomonedas, debe familiarizarse con la legislación del país bajo cuya jurisdicción cae su proyecto.
¿Cómo se forma la 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 bloque, y así sucesivamente. Se supone que los datos de la transacción se almacenan en bloques y se agregan al último bloque.
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.
Fig. 1.1. Secuencia simple de bloquesEn esta realización, sin embargo, es muy fácil falsificar el contenido de cualquier bloque de la cadena, ya que los bloques no contienen ninguna información para proteger contra los cambios. Dado que blockchain está destinado al uso de personas y empresas entre las cuales no hay confianza, podemos concluir que este método de almacenamiento de datos para blockchain no es adecuado.
Protejamos los bloques de la falsificación. En la primera etapa, intentaremos proteger cada bloque con una suma de comprobación (Fig. 1.2).
Fig. 1.2. Agregue protección de bloque de datos con una suma de verificaciónAhora, un atacante no puede simplemente cambiar un bloque porque contiene una suma de verificación de los datos del bloque. La comprobación de la suma de comprobación mostrará que los datos han cambiado.
Para calcular la suma de verificación, puede usar una de las funciones hash, como MD-5, SHA-1, SHA-256, etc. Las funciones hash calculan un cierto valor (por ejemplo, como una cadena de texto de longitud constante) como resultado de realizar operaciones irreversibles en un bloque de datos. Las operaciones dependen del tipo de función hash.
Incluso con un pequeño cambio en el contenido del bloque de datos, el valor de la función hash también cambiará. Al analizar el valor de la función hash, es imposible restaurar el bloque de datos para el que se calculó.
¿Sería suficiente esa protección? Lamentablemente no.
En este esquema, la suma de comprobación (función hash) protege solo bloques individuales, pero no toda la cadena de bloques. Conociendo el algoritmo de cálculo de 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 agregar nuevos.
Para proteger toda la cadena en su conjunto, es posible almacenar un hash de datos del bloque anterior en cada bloque junto con los datos (Fig. 1.3).
Fig. 1.3. Agregue el hash del bloque anterior al bloque de datosEn este esquema, para cambiar un bloque, debe volver a calcular las funciones hash de todos los bloques posteriores. Parecería, ¿cuál es el problema?
En las cadenas de bloques reales, también se crean dificultades artificiales para agregar nuevos bloques: se utilizan algoritmos que requieren muchos recursos informáticos. Dado que para realizar cambios en un bloque, no solo se debe contar un bloque, sino todos los posteriores, será extremadamente difícil hacerlo.
Recuerde también que los datos de blockchain se almacenan (duplican) en numerosos nodos de red, es decir, . , .. .
, .
Ethereum
Ethereum , DApp. , Ethereum (-, smart contracts), Solidity.
2013 , Bitcoin Magazine, 2015 . , , Ethereum - Solidity.
(mining) , « ». , .. Ethereum.
, , (miner).
(), , Nonce, -, . Ethash, Ethereum, Nonce .
Nonce, (PoW, Proof-of-work). , Ethereum, — Ether. 5 Ether, .
, Ethereum , , . , Solidity DApp Ethereum.
, . , , .
. — ( ), . , Ethereum - Solidity. , , ..
, . , , , , - , , .
. . , , .