¿Qué es Ethereum? Una guía para principiantes sobre el desarrollo de Ethereum
¿Qué es Ethereum? Una guía introductoria al desarrollo de Ethereum
Muchos estudiantes ya están ansiosos por unirse al equipo de desarrollo de blockchain, pero se sienten incapaces de comenzar. Este artículo se basará en. Plataforma Ethereum, presenta varios conceptos oscuros involucrados en el desarrollo de Ethereum de una manera popular y guía fácilmente a todos para comenzar.
Qué es Ethereum
Ethereum es una plataforma de aplicaciones descentralizada construida sobre tecnología blockchain. Permite a cualquier persona crear y utilizar aplicaciones descentralizadas que se ejecutan en tecnología blockchain dentro de la plataforma.
Para los estudiantes que no entienden esta oración, pueden comprender temporalmente que Ethereum es Android en la cadena de bloques. Es una plataforma de desarrollo que nos permite basarnos en la tecnología blockchain como el marco de escritura de Android. aplicaciones.
Antes de que existiera Ethereum, escribir aplicaciones blockchain era así: copiar una copia del código Bitcoin y luego cambiar el código subyacente, como el algoritmo de cifrado, el mecanismo de autenticación, el protocolo de red, etc. (muchos esto es qué son las altcoins, si las cambias saldrá una moneda nueva).
La plataforma Ethereum encapsula la tecnología blockchain subyacente, lo que permite a los desarrolladores de aplicaciones blockchain desarrollar directamente basándose en la plataforma Ethereum. Los desarrolladores solo necesitan centrarse en el desarrollo de la aplicación en sí, lo que reduce en gran medida el costo de la dificultad.
En la actualidad, se ha formado un ecosistema de desarrollo relativamente completo en torno a Ethereum: con el apoyo de la comunidad, hay muchos marcos de desarrollo y herramientas para elegir.
Contrato inteligente
¿Qué es un contrato inteligente?
El programa en Ethereum se llama contrato inteligente y es una colección de código y datos (estado).
Los contratos inteligentes pueden entenderse como contratos (transacciones especiales) escritos en código que pueden ejecutarse automáticamente en la cadena de bloques (impulsados por eventos).
En Bitcoin Script hemos mencionado que las transacciones de Bitcoin se pueden programar, pero Bitcoin Script tiene muchas restricciones y los programas que se pueden escribir también son limitados, mientras que Ethereum es más completo (en términos informáticos, se llama "Turing completo"), lo que nos permite escribir programas (contratos inteligentes) que pueden hacer casi cualquier cosa como cualquier lenguaje de alto nivel.
Los contratos inteligentes son muy adecuados para escenarios de aplicaciones que requieren alta confianza, seguridad y durabilidad, tales como: moneda digital, activos digitales, votación, seguros, aplicaciones financieras, mercados de predicción, gestión de propiedad, Internet de las cosas. , Comercio entre pares y más.
En la actualidad, además de la moneda digital, no hay muchas aplicaciones de la vida real (al igual que la plataforma móvil acaba de comenzar a aparecer, creo que dentro de 1 a 3 años, varios asesinos aparecerán lentamente). aparecer.
Lenguaje de programación: Solidity
El lenguaje de programación predeterminado para contratos inteligentes es Solidity y la extensión del archivo termina en .sol.
Solidity es un lenguaje similar a JavaScript que se utiliza para desarrollar contratos y compilarlos en el código de bytes de la máquina virtual Ethereum.
También existe un lenguaje de desarrollo de contratos inteligentes que se parece a Python: Serpent, pero se recomienda seguir usando Solidity.
Browser-Solidity es un IDE de Solidity para navegadores. Puede hacer clic para echar un vistazo. Presentaremos más artículos sobre el lenguaje Solidity en el futuro.
Entorno operativo: EVM
EVM (Ethereum Virtual Machine) Ethereum Virtual Machine es el entorno operativo de los contratos inteligentes en Ethereum.
La solidez es para EVM igual que para JVM, por lo que será fácil de entender para todos.
La Máquina Virtual Ethereum es un entorno aislado y el código que se ejecuta dentro de la EVM no puede tener ningún contacto con el exterior.
El EVM se ejecuta en el nodo Ethereum. Cuando implementamos el contrato en la red Ethereum, el contrato se puede ejecutar en la red Ethereum.
Compilación del contrato
La máquina virtual Ethereum ejecuta el formato de código de bytes del contrato. Necesitamos compilar el contrato antes de la implementación. Puede elegir el IDE web Browser-Solidity o el compilador solc.
Implementación de contratos
Al desarrollar aplicaciones en Ethereum, a menudo se utiliza el cliente (billetera) de Ethereum. Por lo general, cuando estamos desarrollando, generalmente no entramos en contacto con el concepto de cliente o billetera. ¿Qué es?
Cliente Ethereum (billetera)
Cliente Ethereum, de hecho, podemos entenderlo como una herramienta de desarrollo que proporciona funciones de implementación y ejecución de contratos inteligentes, minería, transferencia y administración de cuentas. .
EVM es proporcionado por el cliente Ethereum.
Geth es un cliente típico que se utiliza al desarrollar Ethereum y se desarrolla en base al lenguaje Go. Geth proporciona una consola de comandos interactiva, que contiene varias funciones (API) de Ethereum a través de la consola de comandos. Presentaremos el uso de Geth en un artículo más adelante, pero aquí todos tienen un concepto.
La consola Geth es similar a la consola de las herramientas de desarrollo del navegador Chrome, pero se ejecuta en la terminal.
En comparación con Geth, Mist es un cliente Ethereum con una interfaz gráfica de operación.
Cómo implementar
La implementación de contratos inteligentes se refiere a publicar el código de bytes del contrato en la cadena de bloques y usar una dirección específica para marcar el contrato. Esta dirección se denomina cuenta de contrato.
Existen dos tipos de cuentas en Ethereum:
· Cuentas externas
Este tipo de cuenta está controlada por una clave privada (controlada por una persona) y no está asociado con ningún código.
·Cuenta de Contrato
Este tipo de cuenta está controlada por su código de contrato y tiene un código asociado.
A diferencia del diseño UTXO de Bitcoin, Ethereum utiliza un concepto de cuenta más simple.
Ambos tipos de cuentas son iguales para EVM.
La diferencia y relación entre cuentas externas y cuentas de contrato es la siguiente: una cuenta externa puede enviar mensajes a otra cuenta externa o cuenta de contrato creando y firmando transacciones con su propia clave privada.
Enviar un mensaje entre dos cuentas externas es el proceso de transferencia de valor. Pero los mensajes de la cuenta externa a la cuenta del contrato activan el código de la cuenta del contrato, permitiéndole realizar diversas acciones (como transferir tokens, escribir en el almacenamiento interno, extraer un nuevo token, realizar algunas operaciones, crear un nuevo contrato, etc. . esperar).
Sólo cuando la cuenta externa dé instrucciones, la cuenta del contrato realizará la operación correspondiente.
La implementación del contrato consiste en implementar el código de bytes del contrato compilado en la cadena de bloques Ethereum en forma de envío de transacciones a través de una cuenta externa (la implementación real es exitosa solo después de que el minero real produce el bloque).
Ejecutar
Una vez implementado el contrato, cuando necesite llamar al método de este contrato inteligente, solo necesita enviar un mensaje (transacción) a esta cuenta de contrato. del contrato inteligente es activado por el mensaje. Se ejecutará en el EVM.
Gas
Al igual que la computación en la nube, ocupar recursos de blockchain (ya sea una simple transacción de transferencia o el despliegue y ejecución de un contrato) también requiere tarifas correspondientes (nada en el mundo). Almuerzo gratis, ¿verdad?).
El mecanismo de gas se utiliza para la facturación en Ethereum. El gas también se puede considerar como una unidad de carga de trabajo. Cuanto más complejo sea el contrato inteligente (el número y tipo de pasos de cálculo, la memoria ocupada, etc.), cuanto más tiempo se tarda en completar la operación, más gas se necesita.
La cantidad de Gas necesaria para ejecutar el contrato para cualquier contrato específico es fija y está determinada por la complejidad del contrato.
El precio del Gas lo estipula la persona que ejecuta el contrato al enviar una solicitud para ejecutar el contrato para determinar la tarifa que está dispuesto a pagar por esta transacción: Precio del Gas (denominado en Ethereum) * Gas cantidad.
El propósito de Gas es limitar la cantidad de trabajo requerido para ejecutar una transacción mientras se paga por la ejecución.
Cuando EVM ejecuta una transacción, el gas se consumirá gradualmente de acuerdo con reglas específicas, sin importar dónde se ejecute, una vez que se agote el gas, se activará una excepción. Todas las modificaciones de estado realizadas en el marco de llamada actual se revertirán. Si queda Gas al final de la ejecución, este Gas se devolverá a la cuenta emisora.
Sin esta restricción, alguien escribiría un contrato que no se puede detener (como un bucle infinito) para bloquear la red.
Entonces, en realidad (para reunir el contenido anterior), necesitamos una cuenta externa con un saldo de Ethereum para iniciar una transacción (transacción ordinaria o implementar y ejecutar un contrato. Cuando se ejecuta, el minero recopila la carga de trabajo correspondiente). cargos.
Red Ethereum
Algunos estudiantes ansiosos pueden querer preguntar: ¿cómo podemos desarrollar contratos inteligentes sin Ethereum? Puede elegir los siguientes métodos:
Seleccione la red de prueba del sitio web oficial de Ethereum Testnet
En la red de prueba, podemos obtener fácilmente monedas Ether gratuitas. La desventaja es que lleva mucho tiempo. Es hora de inicializar el nodo.
Usa una cadena privada
Crea tu propia red de prueba privada de Ethereum, a menudo también llamada cadena privada, que podemos usar como entorno de prueba para desarrollar, depurar y probar contratos inteligentes.
Con el Geth mencionado anteriormente, es fácil crear tu propia red de prueba. Puedes extraer tanto Ethereum como quieras sin tener que sincronizar todos los datos de blockchain de la red oficial.
Uso de la red de desarrollador (modo)
En comparación con la cadena privada, en la red de desarrollador (modo), se asignará automáticamente una cuenta de desarrollador con un saldo grande para que la usemos. .
Usar un entorno de simulación
Otra forma de crear una red de prueba es utilizar testrpc es un entorno de Ethereum simulado localmente usando memoria. Es más conveniente y rápido para el desarrollo y la depuración. . Y testrpc puede ayudarnos a crear 10 cuentas de prueba con fondos al inicio.
Al desarrollar un contrato, puede probarlo en testrpc y luego implementarlo en el nodo Geth.
Actualización: testrpc ahora se ha integrado en el marco de desarrollo de Truffle y ahora se llama Ganache CLI.
Dapp: Aplicación Descentralizada
La comunidad Ethereum llama aplicaciones descentralizadas a las aplicaciones basadas en contratos inteligentes (DecentralizedApp). Si entendemos la cadena de bloques como una base de datos que no puede ser manipulada y los contratos inteligentes como programas que manejan la base de datos, entonces es fácil entender que una Dapp no solo tiene contratos inteligentes, sino que también necesita una interfaz de usuario amigable y algo. demás.
Truffle
Truffle es un marco de desarrollo de Dapp. Puede ayudarnos a lidiar con muchas cosas triviales, permitiéndonos comenzar rápidamente a escribir código, compilar, implementar, probar y empaquetar DApp. Este proceso.
Resumen
Resumamos ahora. Ethereum es una plataforma que nos permite usar fácilmente la tecnología blockchain para desarrollar aplicaciones descentralizadas. En esta aplicación, Solidity se usa para escribir contratos inteligentes que interactúan. blockchain. Una vez escrito el contrato, necesitamos usar el cliente Ethereum para implementar y ejecutar el contrato con una cuenta con saldo (usar el marco Truffle puede ayudarnos mejor a hacer estas cosas). Para facilitar el desarrollo, podemos usar Geth o testrpc para construir una red de prueba.
Nota: Para que sea más fácil de entender para todos, este artículo hace analogías con algunos conceptos, algunos de ellos no son estrictamente precisos. Sin embargo, también creo que para los principiantes no es necesario. Domine cada concepto en detalle y con precisión. El aprendizaje es un proceso gradual y profundo. Muchas veces encontraremos que después de un período de tiempo, tendremos diferentes comprensiones de lo mismo.