Ethereum es uno de los proyectos más fascinantes e impactantes en el espacio criptográfico. Al incorporar la idea de las cadenas de bloques programables, Ethereum prácticamente marcó el comienzo de la era de las plataformas de contratos inteligentes. Ahora que Ethereum 2.0 está a la vuelta de la esquina, familiaricémonos con el código Ethereum.
Ethereum Code: los entresijos de los contratos inteligentes de Ethereum
¿En qué código está escrito Ethereum? ¿Cómo codificar contratos inteligentes de Ethereum? ¿Qué son los tokens ERC-20? Respondamos todas estas preguntas en esta guía.
¿En qué código está escrito Ethereum?
Vitalik Buterin, un prodigio de la programación ruso-canadiense, lanzó por primera vez el documento técnico de Ethereum en 2013, describiéndolo como una plataforma que puede acomodar aplicaciones descentralizadas (Apps). Ethereum tiene una larga lista de cofundadores y fue codificado usando Go, Rust, C #, C ++, Java y Python.
Sin embargo, al aprender sobre el código Ethereum, esta no es la información principal que buscan la mayoría de los desarrolladores. El aspecto verdaderamente fascinante del código Ethereum radica en los contratos inteligentes.
¿Cómo codificar contratos inteligentes de Ethereum?
Finalmente, entremos en los contratos inteligentes. Los contratos inteligentes son acuerdos autoejecutables, automatizados y programables entre dos partes. La idea central es conectar directamente a dos partes entre sí sin tener que pasar por un tercero o un intermediario. Entonces, ¿cómo se codifican exactamente estos contratos inteligentes?
Código Ethereum: Solidez
Solidity es un lenguaje deliberadamente adelgazado y de tipos sueltos con una sintaxis muy similar a JavaScript. Los contratos inteligentes codificados por solidez se pueden ejecutar fácilmente en la máquina virtual Ethereum o en el EVM.
Cada línea de código en estos contratos cuesta una cierta cantidad de recurso computacional llamado “gas”. Antes de la ejecución, el contrato viene con un límite de gas preestablecido, que es la cantidad máxima de gas que consumirá el contrato para su implementación. Después de escribir su código, lo compilará usando el compilador “solc”.
Tipos de datos de solidez
Los tipos de datos permiten que un programa especifique y clasifique todos los datos que están usando dentro del código. Estos son los diferentes tipos de datos dentro de Solidity:
- Enteros con signo o “int” que van de -128 a 127
- Entero sin signo “uint” que va de 0 a 255 y no almacena ningún valor negativo
- Los tipos de datos booleanos o “bool” pueden almacenar solo dos valores, “verdadero” o “falso”.
- Almacene una matriz de bytes que va de 1 a 32 caracteres en el tipo de datos “bytes”.
- Almacene una matriz de valores en el tipo de datos “cadena”.
- Puede utilizar “enum” para crear tipos de datos personalizables.
Programa de Solidez Básico # 1: Hola Mundo
Lo que tenemos aquí es el programa estándar “Hello World”. En el momento en que llame a este contrato, se imprimirá “Hola mundo”.
Programa de Solidez Básico # 2: Nombre y Edad
Ahora, en cambio, echemos un vistazo a un programa más complejo.
Muy bien, ahora tenemos un programa considerablemente más largo. Como puede ver, lo hemos dividido en tres secciones: Sección 1, Sección 2 y Sección 3.
- Sección 1: Hemos definido el contrato inteligente y sus tipos de datos. Tiene una cadena (nombre) y un entero sin signo (edad).
- Sección 2: En esta sección, obtenemos el nombre de nuestro usuario.
- Sección 3: En esta sección, obtenemos su edad.
- Una vez más, es un código muy simple. Sin embargo, este es exactamente el tipo de programa que necesita dominar antes de lidiar con contratos inteligentes más sofisticados.
Proceso de implementación del código Ethereum
El flujo de trabajo para la implementación adecuada de contratos inteligentes se parece a esto:
- Configura tu nodo Ethereum. “Geth” es un cliente de Ethereum bastante popular.
- Crea y compila tu contrato de solidez.
- Implementar el contrato en la red estableciendo un límite de gas
- Si desea comenzar a codificar contratos, las siguientes herramientas serán muy útiles.
Herramienta de código Ethereum n. ° 1: trufa y embarque
Truffle y Embark son dos herramientas muy útiles que pueden ayudarte enormemente al principio. Truffle simplifica algunos de los procesos más mundanos y complicados para usted. Embark, por otro lado, proporciona una gran plataforma de zona de pruebas para que juegues con tu dApp.
Herramienta de código Ethereum: IDE n. ° 2
Remix IDE es una poderosa herramienta de código abierto que fue desarrollada por la Fundación Ethereum. Está codificado en JavaScript y le permite probar sus contratos de solidez en el navegador.
La pantalla de Remix se parece a esto:
So, what’s going on here? Let’s move from left to right.
This section has all the smart contracts that you are currently working on. In this case its ballot and ballot_test.
Up next you have this:
Este es el editor donde realmente va a codificar. De forma predeterminada, la interfaz de usuario Remix tiene el contrato inteligente de la boleta que puede ignorar por ahora. No hay necesidad de entrar en esto.
Justo debajo de esta sección, puede ver esta pantalla:
Esta es la sección de registro del programa que registra todos los errores que cometió durante la ejecución del contrato.
En el lado derecho tienes:
La “pestaña Ejecutar” es donde va a hacer la mayor parte del trabajo.
Hay cuatro campos aquí que debemos analizar:
- Entorno: hay tres entornos en los que puede ejecutar sus contratos inteligentes: JavaScript VM, Injected Web3 y Web3 Provider.
- Cuenta: hay cinco direcciones de cuenta que puede utilizar como propietario de este contrato. Cada dirección tiene 100 tokens de prueba de éter adjuntos.
- Límite de gas: el límite de gas total que se asigna para la ejecución de este contrato inteligente.
- Valor: la cantidad de tokens Ether que desea proporcionar para sus transacciones.
Alternativa al código Ethereum: Vyper
Al igual que Solidity, Vyper también es un lenguaje de contrato inteligente que es compatible con EVM. Sin embargo, en lugar de emular Javascript, Vyper se inspira en gran medida en la filosofía de diseño de Python. Los contratos de solidez terminan en “.sol”. Por otro lado, los contratos de Vyper terminan con “.vy”.
Hay dos principios a los que vyper se adhiere estrictamente: simplicidad y seguridad.
1 Simplicidad
Vyper enfatiza la simplicidad del código por encima de todo lo demás. Lo hace eliminando ciertas construcciones tradicionales como la herencia de clases, la sobrecarga de funciones, la sobrecarga de operadores y la recursividad. Estas construcciones aumentan la complejidad y pueden ser puntos vulnerables durante la ejecución del contrato. Además, ninguno de ellos es necesario para la ejecución completa del contrato de Turing.
2 seguridad
Junto con la simplicidad, Vyper enfatiza la seguridad. Vyper nunca fue diseñado para ser un sustituto de la solidez. Es un lenguaje alternativo que los desarrolladores pueden usar cuando la seguridad es primordial.
Diseño de token ERC-20
Cada dApp construida sobre Ethereum puede tener su propio token nativo. Sin embargo, esos tokens se rigen por un conjunto de principios. Según Wikipedia, ERC-20 es:
Una lista de reglas que debe integrar un token basado en Ethereum.
Un conjunto de pautas que el desarrollador debe seguir al crear su contrato.
Es fácil de implementar e interoperable con otros estándares de tokens de Ethereum.
¿Por qué estandarizar el diseño?
Entonces, ¿por qué hemos estandarizado estos diseños de tokens? Bueno, imagina que vives en un país que usa cinco tipos diferentes de monedas. Algunas tiendas solo usan la moneda 1, mientras que otras solo usan la moneda 3, y así sucesivamente. ¿Te imaginas la pesadilla que será vivir en ese país?
Puede extender la misma lógica a Ethereum dApps.
En el apogeo de las ICO, todos y cada uno de los proyectos intentaban hacer algo innovador y diferente con sus tokens. Sin embargo, esto redujo drásticamente la interoperabilidad. Para crear un ecosistema saludable sobre Ethereum, las dApps deberían poder interactuar sin problemas entre sí.
El 19 de noviembre de 2015, Fabian Vogelsteller tuvo una solución a este importante problema.
ERC-20: ¿Qué es?
Como mencionamos anteriormente, ERC-20 es una lista de reglas y regulaciones que los desarrolladores deben usar para crear sus tokens. Analicemos el nombre en sí. “ERC” significa Solicitud de comentarios de Ethereum, mientras que “20” es el número asignado a esta solicitud. ERC-20 consta de tres reglas opcionales y seis reglas obligatorias.
Las seis reglas obligatorias:
- totalSupply
- equilibrio de
- transferir
- Transferido de
- aprobar
- tolerancia
- Las tres reglas opcionales
- Nombre del token
- Símbolo
- Decimal (hasta 18)
ERC-20: Tres reglas opcionales
- Nombre del token: si bien no es necesario nombrar sus tokens, debe hacerlo para darle cierta identidad.
- OMG, COMP, etc. son todos símbolos que a menudo son más conocidos que el proyecto principal en sí (OmiseGo y Compound, en este caso).
- Los tokens ERC-20 se pueden hacer divisibles gracias a la regla del punto decimal. El punto decimal “3” significa que el valor más bajo en el que el token es divisible es 3. La cantidad máxima de divisibilidad permitida es 18.
ERC-20: Seis reglas obligatorias
Regla 1: suministro total
El suministro total del token nativo en el ecosistema. El código se ve así:
Regla 2: balanceOf
Devuelve el número total de tokens que el propietario del contrato tiene en su cuenta. El código tiene este aspecto:
Regla 3: aprobar ()
La función de aprobación () se activa para permitir a los usuarios recolectar tokens de la dirección del contrato. Veamos cómo se ve esta función:
Regla 4: transferir ()
Muy bien, entonces el contrato verificó el saldo y aprobó la transacción. El siguiente paso es transferir estos tokens con la función transfer (). El propietario del contrato puede enviar los tokens como una transacción de criptomoneda convencional. Así es como se ve el código:
Regla 5: transferFrom ()
Esta función es bastante similar a transfer (), pero hay una pequeña diferencia. Imagina esta situación:
Usted es propietario de un restaurante y tiene un acuerdo semanal con su pescadería local. En este caso, en lugar de pagarles todo el tiempo como un reloj, simplemente puede configurar un sistema entre su cuenta bancaria y la de ellos. Su cuenta ejecutó un pago de forma rutinaria y automática.
Como puede imaginar, esto reduce los gastos generales en una gran cantidad. Esto es exactamente lo que podemos lograr con transferFrom (). Veamos el código:
Regla 6: subsidio ()
Cuando lo piensa, ¿cuál es la necesidad principal de una transacción? Solo puedes enviar una transacción si tienes el saldo mínimo en tu cuenta para hacerlo, ¿verdad? Es por eso que los contratos ERC-20 tienen la función allowance () para hacer esta misma verificación. Ahora, echemos un vistazo al código:
PUNTO A NOTA
El GNT de Golem es uno de los tokens más conocidos que existen. Sin embargo, carece de las funciones aprobar () y transferFrom (). Es por eso que GNT no se considera compatible con ERC-20.
Código Ethereum: Conclusión
¡Ahí tienes! Ethereum es uno de los proyectos más emocionantes del mundo debido a su naturaleza programable y personalizable. Aprender a codificar contratos inteligentes y crear tokens ERC-20 puede abrirle una vía completamente nueva. Intentamos darle una base sólida en el artículo mostrándole:
- ¿Cómo codificar contratos inteligentes de Ethereum?
- ¿En qué código está escrito Ethereum?
- ¿Qué es ERC-20?
¿Quieres profundizar más?
En caso afirmativo, consulte nuestros cursos de educación blockchain de fama mundial en Ivan on Tech Academy. Expertos de todo el mundo han seleccionado cuidadosamente estos cursos. ¿Entonces, Qué esperas? ¡Ven y regístrate!