El concepto de programación criptográfica
En resumen, la programación criptográfica es el desarrollo de software que utiliza tecnologías de blockchain, así como su combinación con marcos y lenguajes más familiares como React y C++.
Las criptomonedas y el desarrollo de blockchain tienen cada vez más demanda. Este es un trabajo con grandes salarios, un número infinito de vacantes y un potencial ilimitado para el futuro. Es un gran trabajo preliminar para el futuro lo que hace que estas tecnologías avancen mucho más.
El punto es que las criptomonedas y blockchain formarán la base de la economía del futuro, donde los sistemas financieros descentralizados gobernarán la pelota. Y la propia tecnología blockchain resultó ser lo suficientemente universal como para ser útil no solo en cuestiones estrictamente financieras (inversiones, subastas, relaciones comerciales, etc.) sino también en otras esferas de la actividad humana.
Al elegir la programación criptográfica, harás programas como otros desarrolladores, pero bajo el capó de tus proyectos, siempre estará el código directamente relacionado con las tecnologías más avanzadas existentes.
¿Qué es un desarrollador de criptomonedas?
Un desarrollador de criptomonedas es una persona que no solo está cerca de las computadoras y sabe cómo crear una página o un código, sino un desarrollador que conoce bien las tecnologías de las finanzas descentralizadas. En el mejor de los casos, tener experiencia trabajando con el componente de back-end de los programas y, en el peor de los casos, al menos comprender cómo escribir el código del programa en principio.
Dicho desarrollador se dedica a crear código back-end para aplicaciones descentralizadas, que se denominan Dapps. Suelen existir en la red Ethereum (Ethereum) y no son más que contratos inteligentes.
¿Qué es «Ethereum»?
Ethereum es un entorno completo de blockchain que permite a todos ejecutar programas en un entorno confiable respaldado por contratos inteligentes.
A diferencia de Bitcoin, la plataforma Ethereum le permite interactuar no solo con criptomonedas sino también con otros datos.
Los programas correspondientes se ejecutan en un entorno llamado EVM (Ethereum Virtual Machine). Le permite convertir el código escrito por personas en un conjunto de caracteres que es digerible para la cadena de bloques y admite contratos inteligentes creados para realizar ciertas tareas dentro de blockchain. También utiliza su propia moneda, llamada Ether.
Este es el sistema más grande de su tipo y al mismo tiempo el más popular. En la mayoría de los casos, los empleadores buscan programadores de cifrado para crear software que se implementará en la interfaz del proyecto Ethereum.
Contratos inteligentes
Este es un código que se ejecuta en un entorno EVM y es capaz de procesar los datos que se le transmiten, Ether o cualquier lógica. Para los contratos inteligentes, se escriben funciones que permiten manipular la información que se les transmite. Puede compartir datos con otros contratos inteligentes o, en función de la información recibida, transmitirlos entre usuarios de contratos inteligentes.
Un contrato inteligente le permite excluir a un tercero de cualquier transacción. El código del programa será responsable de la justicia: abierto, incorruptible y funcionando correctamente.
Los criptoprogramadores se dedican a la creación de contactos inteligentes, lo que permite a los habitantes de la red blockchain realizar transacciones relacionadas con Ether.
¿Qué lenguajes y bibliotecas se utilizan en la programación criptográfica?
Para crear contratos inteligentes y otros componentes de la red de criptomonedas, se utilizan lenguajes tradicionales de propósito general y nuevos creados específicamente para trabajar con Ethereum o sus análogos.
Los cuatro más populares incluyen:
- Solidity. Es un líder en el campo. El primer idioma que vale la pena aprender es comenzar a crear DApps y contratos inteligentes. El lenguaje se basa en la sintaxis de JavaScript y C++. Tiene una escritura estricta y un umbral de entrada bastante bajo para principiantes. Hablaremos sobre el lenguaje de desarrollo de Solidity Ethereum más adelante en este artículo.
- Java. Una poderosa plataforma que ha demostrado su eficacia en docenas de áreas de desarrollo, incluida la creación de software para sistemas operativos móviles. Tiene demanda en el entorno de la cadena de bloques debido al estricto cumplimiento de los principios de OOP y la abundancia de bibliotecas necesarias cuando se trabaja con criptomonedas.
- Vyper. Un lenguaje de programación seguro y funcional con sintaxis tomada de Python. Está enfocado en trabajar con EVM y crear contratos inteligentes.
- Python. Python en sí mismo tampoco pudo pasar de esta cima. Uno de los lenguajes más universales y ubicuos también ha encontrado su lugar en el mundo real de blockchain.
¿Cómo comenzar una carrera en programación criptográfica?
El umbral para entrar en la profesión es imposible. Debido a la gran demanda, los requisitos no son particularmente estrictos, pero el mero entusiasmo no es suficiente. Es necesario adquirir conocimientos básicos y profundizar en el estudio de los lenguajes de programación blockchain.
¿Qué necesito aprender y qué necesito saber?
Para empezar, vale la pena leer sobre blockchain en general. Necesitamos entender cómo funciona todo el sistema en términos generales. La familiaridad con las características técnicas de la implementación es opcional, al menos en las primeras etapas.
Después de eso, debe decidir el idioma. Para principiantes, se recomienda Solidity, ya que es más fácil de entender. La siguiente etapa debe ser un estudio en profundidad de la documentación con práctica independiente constante o una visita a los cursos apropiados.
En cuanto al equipamiento, no necesitas nada. Basta con abrir un IDE web llamado Remix y escribir su primer contrato inteligente de acuerdo con las instrucciones en el sitio web oficial de Solidity.
¿Qué entorno en Remix Ide se puede usar para conectar una red de prueba privada?
Puede acceder al IDE de Remix de varias maneras: a través de Internet, a través de un navegador web como Chrome, desde una copia local o desde Mist (el navegador Ethereum Dapp).
Usando el Ide Remix In-Browser
Puede acceder al IDE de Remix desde su navegador web sin ninguna instalación especial. Visite https://remix.ethereum.org y se le presentará un IDE completo con un editor de código y varios paneles para compilar, ejecutar y depurar sus contratos inteligentes. Tendrá un contrato de ejemplo con un boletín predeterminado con el que podrá jugar.
Remix IDE
Después de Solidity, tendrá que aprender los marcos utilizados: Truffle para simplificar la creación de contratos inteligentes, Ganache para probar el software en una red blockchain virtual, Web3.js para conectar el componente backend de su creación con la parte frontal (puede ser Reaccionar o Vue).
En los cursos en línea, se le educará en todos los aspectos a la vez. Muchos desarrolladores activos de Solidity entraron en la profesión inmediatamente después de los cursos. El tiempo medio de formación dura menos de seis meses.
Perspectivas y futuro
La programación criptográfica es una nueva etapa de la profesión de desarrollador, que está ganando popularidad constantemente. Si está interesado en un trabajo prometedor y monetario, debe prestar atención al desarrollo de blockchain.
Una guía práctica para el desarrollo de Ethereum. Programación de contratos inteligentes de Solidity.
Si está creando una DApp basada en Ethereum o un token ERC20, debe aprender el lenguaje Solidity. Aunque blockchain son independientes del idioma y muchos de los idiomas existentes son utilizados por ingenieros de blockchain, hay algunas tareas que no pueden implementarse convenientemente con las existentes. Ha abierto la demanda de nuevas opciones cripto-específicas. Uno de estos lenguajes es la Solidity.
Independientemente de que seas un desarrollador experimentado o te estés iniciando en la criptografía, sería una buena idea comenzar a estudiar Solidity porque los contratos inteligentes se han convertido en una parte importante del ecosistema blockchain. Además de la implementación activa de dApps, se integran activamente en blockchain a nivel de infraestructura e incluso en bitcoins a través de proveedores como RSK. Al saber cómo crear contratos inteligentes, puede rastrear la forma en que trabajan los programadores de blockchain y podrá tener mejores soluciones.
Documentación de Solidity.
Conceptos básicos de los contratos inteligentes
Como parte del desarrollo, el contrato inteligente consta de tres secciones: saldo, almacenamiento y códigos. El saldo representa cuánto Ethereum tiene un contrato inteligente. El almacenamiento contiene datos, como cadenas y matrices, que son específicos de todas y cada una de las aplicaciones. La sección de código contiene código de máquina sin procesar que se compila a partir de lo que escribimos en Solidity.
A diferencia de las cuentas de usuario, las cuentas de contrato inteligente no son externas a las respectivas redes. En otras palabras, puede usar su billetera en varias redes como Kovan y Ropsten, pero no puede hacerlo con un contrato inteligente. Los contratos inteligentes son internos.
Cada contrato inteligente tiene una fuente que se almacena en el dispositivo del autor e instancias que se almacenan en blockchain. Para crear una instancia (cuenta) de un contrato inteligente, debemos implementarlo en la red. Es muy similar a la relación entre clases e instancias en la programación orientada a objetos (POO) tradicional y los lenguajes que la representan (JS, Ruby). Para brindarle una representación más visual, creamos una clase Bike y agreguemos una instancia de ella.
Escribiremos una definición de contrato, que luego se ejecutará a través de un compilador que creará dos archivos: un código de bytes y una interfaz de aplicación binaria (ABI). El código de bytes es lo que realmente se pasará al EVM, y la ABI es la capa entre el código de bytes y el código JavaScript normal que le permite crear una interfaz de usuario (UI).
Elegir una versión de Ide y Solidity
Antes de comenzar, necesitamos un entorno de desarrollo integrado (IDE) adecuado. En otras palabras, necesitamos una terminal conveniente con las herramientas necesarias para escribir nuestro código. A los efectos de esta guía, elegiremos Remix, un IDE creado por la Fundación Ethereum que le permite escribir, probar, depurar, ejecutar contratos inteligentes y mucho más. Puede usarlo directamente en el navegador o descargarlo localmente si lo desea.
Después de ejecutar Remix, verá un editor de código en el centro, un administrador de archivos a la izquierda y un compilador a la derecha.
Ventana de remezcla inicial
Habrá un código escrito previamente, no lo necesitaremos. Para crear el primer contrato inteligente único, hagamos clic en el ícono más en la esquina superior izquierda de la terminal y asígnele un nombre.
Creando un nuevo proyecto en Remix
Porque tenemos un documento vacío. sol, tenemos que especificar la versión de Solidity que ejecutará el compilador. Al momento de escribir esta guía, la última versión era 0.5.7. Si no está seguro de qué versión usar, puede especificar un rango de versiones.
2 tipos de especificación de la versión Solidity
Démosle un nombre a nuestro contrato inteligente, seguido de paréntesis.
Nombrando el contrato
Escribir su primer contrato inteligente
Una vez que tengamos el lienzo listo, es hora de definir los principales componentes básicos: las variables. Aunque los desarrolladores de software experimentados no tendrán problemas para comprender este concepto, lo presentaremos brevemente a los principiantes. Las variables son marcadores de posición para porciones de información a las que posteriormente hace referencia el programa que las ejecuta.
Vamos a crear un par de variables: una cadena (una secuencia de caracteres) y un número entero (un número). En el caso de Ethereum, las variables se almacenan en blockchain junto con el resto de contratos y, por tanto, se puede acceder a ellas y actualizarlas desde cualquier lugar. Otra característica clave de las variables de Solidity es que puede hacerlas privadas escribiendo «privado» junto a las variables. Finalmente, para los números enteros, Solidity tiene dos tipos: con signo (puede ser positivo y negativo) y sin signo (sólo puede ser positivo). Para especificar una variable sin signo, simplemente debemos poner ‘u’ delante de ella.
Una cadena privada y un entero
Cuando tenemos un nombre variable, necesitamos escribir los métodos de configuración y recepción. Esto es similar a la función JS. Recuerda que Solidity tiene tipado estático, por lo que tenemos que definir los tipos de variables. Ahora cualquier valor que pongamos en ‘setName’ definirá la cadena ‘name’. Para obtenerlo, usaremos getName y especificaremos qué variable esperamos ver. Ahora es el momento de hacer lo mismo con la variable edad. El método se construye de manera similar a getName.
Establecedores y captadores de nombre/edad
Echemos un vistazo a nuestro pequeño fragmento de código. Vaya a la pestaña «Ejecutar» del compilador y haga clic en «Implementar» debajo del nombre de su contrato. En la parte inferior del compilador, verá la sección «Contratos implementados», donde están disponibles nuestros métodos. Para pasar el nombre al valor “Newname”, debemos asegurarnos de que nuestra cadena esté escrita en JSON. De lo contrario, «getName» no devolverá nada. Para «setAge», simplemente especifique su edad sin comillas. Como puede ver, ahora podemos configurar y recibir las variables de nombre y edad a través de nuestro contrato inteligente.
Compilador, nombre y antigüedad
¿Qué son Wei y Gas?
Una de las características más notables de los contratos inteligentes es que para implementarlos en la red Ethereum, deberá iniciar una transacción que cuesta una cierta cantidad de dinero, que se paga en Ether. Es extremadamente importante comprender cómo se utilizan las tarifas en el sistema, ya que se deducirán cada vez que interactúe con EVM.
¿Qué es Wei?
Supongamos que mientras lee nuestra lección, ha usado Bitcoin al menos una vez. Probablemente hiciste una pequeña transacción que costó menos de 1 BTC. En este caso, usaste Satoshi, algo así como centavos por dólar. Wei es similar a Satoshi: es la parte más pequeña de 1 Ether. Si lo pensamos desde una perspectiva de programación, este es el entero sin signo más bajo de la red. Al interactuar con la red, la mayoría de las veces te encuentras con Gwei, que pertenece a Gigawee y equivale a mil millones de Wei.
¿Qué es el gas?
El gas es una parte integral del mecanismo de ejecución de contratos inteligentes. Tiene dos valores para cada transacción: el Gas consumido y su precio. Vale la pena señalar que el usuario que inicia la transacción determina estos valores por sí mismo. Sin embargo, si el valor de Gas establecido no es suficiente para realizar una determinada operación, se consumirá Gas, pero la transacción no se ejecutará. Además, si el precio del gas se establece demasiado bajo para la red en un momento dado, los nodos no procesarán la transacción, lo que finalmente hará que no tenga éxito. Existen varios servicios para verificar los valores óptimos para sus transacciones, uno de los cuales es ethgasstation.info. Para comprender mejor Gas y por qué cuesta algo de dinero, comencemos a codificar algunos de ellos nosotros mismos.
Vuelva a la ventana Remix y cree un nuevo archivo. En nuestro ejemplo, lo llamaremos “Gas” y crearemos un contrato con el mismo nombre. Tenga en cuenta que cuantos más datos necesitemos almacenar en blockchain, más gas necesitaremos. Al mismo tiempo, para los fines de esta lección, crearemos un contrato barato; Cuanto más le agregue, mayor será la tarifa.
Hay una función que devuelve un número entero que es la suma de dos entradas. Para hacerlo lo más fácil posible, indicaremos que nuestro contrato no almacenará nada en la cadena de bloques, y para ello, agregaremos “puro” al lado de la función.
Contrato barato
Ahora puede expandirlo en el compilador e ingresar dos números cualesquiera para obtener el entero «c». Para comprobar el precio de nuestra transacción, tenemos que fijarnos en el terminal que se encuentra debajo del apartado de códigos. Hay un costo de transacción y un costo de ejecución. El primero se refiere a cuántos datos tiene la transacción. El segundo se refiere a cuánta energía EVM se requirió para la transacción.
Esta es una transacción muy simple que no le cuesta casi nada a la red. Al escribir contratos inteligentes significativos, agrega más detalles, lo que aumentará su peso y, en consecuencia, las tarifas de transacción.
Creación e implementación de su propio token Erc20. Emisión de Token y Creación de Ico.
Seamos realistas, la mayoría de los desarrolladores de blockchain que recién comienzan tienden a jugar en grande y crean sus propios blockchain y tokens. Aunque este es un tema extremadamente complejo que ha atraído a algunos de los mejores desarrolladores de software de otros campos, crear un token ERC20 básico no es una tarea difícil.
Primero, necesitamos crear otro archivo en Remix y cargar la interfaz ERC20, a saber:
Estándar ERC20
La función totalSupply nos permite ver cuántos tokens tenemos en total. La función balanceOf se usa para obtener la cantidad de tokens en ciertas direcciones. La función de transferencia permite a los usuarios realizar transacciones entre ellos. Las funciones «transferir desde», «permitir» y «aprobar» permiten a los usuarios permitir que otros usuarios inicien transacciones en su nombre. Los eventos son herramientas de registro para el libro mayor.
Además de la interfaz en sí, necesitaremos un archivo separado. sol para nuestro nuevo token. Aquí importamos la interfaz ERC20 y especificamos el símbolo, el nombre y los números decimales de nuestro token.
uToday token
Antes de compilarlo, necesitamos especificar las restricciones.
- Comencemos con una oración general: esta es una variable entera constante, que haremos privada. El stock total de nuestros tokens será de 1 millón. También escribiremos una función para devolver este valor.
- En segundo lugar, necesitamos almacenar nuestros tokens en algún lugar. Para hacer esto, necesitaremos especificar una asignación que devolverá el saldo para cualquier dirección especificada.
- En tercer lugar, debe haber una función para transferir tokens, que esencialmente tendrá la dirección del destinatario y la cantidad de tokens transferidos. Esta función también debería poder verificar si el remitente tiene suficientes tokens en su saldo, lo que se puede implementar mediante una declaración simple si/entonces. Además, estableceremos condiciones para ‘_value’ para que los usuarios no puedan enviar transacciones con tokens «0», ya que esto conducirá a la obstrucción de la red con basura diversa.
- Cuarto, necesitamos crear un mapeo para el resto de las funciones, que es un mapeo de enteros.
- Luego especificaremos varias comprobaciones en las funciones «aprobar» y «permitir» y estableceremos las condiciones para ‘transferFrom’.
- Finalmente, no todos los tokens estarán disponibles en el mercado. Algunos de los tokens suelen estar reservados para equipos, fundaciones, consultores y otros fines. Por lo tanto, es importante que aclaremos cuántos tokens están circulando en el sistema. Cuando creamos los tokens, la oferta negociable es igual a nuestro saldo.
Restricciones del token de uToday
El código está listo, así que vamos a comprobarlo. Vaya a la pestaña «Ejecutar» del compilador y expanda nuestro contrato de token. Verás que tenemos los datos del token, así como la oferta general, saldos y recargos. Felicitaciones, ha creado su primer token.
Para que nuestro token realmente funcione en la red, debemos implementar un contrato inteligente (tenga en cuenta que esto es diferente de implementarlo para probarlo en Remix). Para este tutorial, usaremos Remix y Metamask, pero hay otras formas de hacerlo. Metamask es un programa de billetera Ethereum simple pero efectivo con una interfaz de usuario agradable que se integra como una extensión en algunos de los navegadores más populares. En nuestro caso, utilizaremos Opera. Primero, ve a metamask.io y descarga la extensión. Una vez hecho esto, verá el icono del zorro en la esquina superior derecha de su navegador.
Haga clic en el icono y siga las instrucciones sugeridas para crear una billetera. ¡No olvides guardar la frase secreta! Cuando tenga una billetera, haga clic en el icono de Metamask y cambie la red a «Ropsten» porque no queremos meternos con la red principal de Ethereum.
El último paso es crear algo de Ether (desafortunadamente, no podrá usarlo para compras reales, pero son necesarios para las pruebas). Vaya a faucet.metamask.io y solicite 1 éter.
Ahora lo tienes todo listo. Vuelva a la ventana Remix y cambie el entorno a «Inyectado Web3» en el compilador. Además, eche un vistazo a la pestaña de la cuenta: su dirección debe coincidir con la dirección que creó en Metamask. Seleccione el contrato inteligente que desea implementar, que es su contrato de token, pero no la interfaz ERC20, y haga clic en el botón correspondiente. Aparecerá una ventana de Metamask con la transacción, sus detalles y opciones para interactuar con ella. Envíe una transacción y nuestro token cobrará vida.
Ahora puedes jugar con todas las características que mencionamos anteriormente. Miremos nuestro contrato desde el otro lado para asegurarnos de que funciona correctamente. Como cualquier otro blockchain, Ethereum tiene varios exploradores de bloques que cumplen el propósito principal de monitorear lo que sucede en la red. En nuestro caso, usaremos etherscan, aunque hay varias otras excelentes alternativas. Tenga en cuenta que si inicia sesión en etherscan, verá la red principal. Dado que necesitamos ver la red de Ropsten, deberá colocar «ropsten» antes de la dirección del sitio. Busque su dirección y verá dos transacciones: una para el Ether gratuito que recibió y la otra para la implementación del contrato.
Para encontrar la dirección de su contrato, haga clic en TxHash y vaya al campo «Para». Aquí puede consultar las transacciones, el código y los eventos de su contrato inteligente. Por el momento necesitamos revisar y publicar nuestro contrato. Vaya a la sección «Código» y haga clic en el enlace «Verificar y publicar» «Verificar y publicar». Aquí deberá especificar el nombre de su token nuevamente, la versión del compilador (en nuestro caso, la última versión de Solidity que usamos fue 0.5.7, por lo que nos ceñiremos a la versión del compilador correspondiente). Ahora debe copiar el código del contrato inteligente del token junto con el código de la interfaz ERC20 desde la ventana de Remix a etherscan y hacer clic en «Confirmar y publicar» «Verificar y publicar» en la parte inferior de la pantalla.
Verificación de contrato inteligente
Es hora de volver a la dirección de su contrato. El código en la pestaña «Código» ahora estará sujeto a verificación. Además, ahora tendrás dos pestañas más: «Leer contrato» y «Escribir contrato» ‘Leer contrato’ & ‘Escribir contrato’. En la sección de lectura podemos comprobar la funcionalidad de nuestro token. Ingrese su dirección (no la dirección del contrato) en el campo ‘balanceOf’ para ver cuántos tokens tiene; debería mostrar 1 millón, que codificamos como stock total y transferimos a nuestra billetera. Esto significa que nuestro token ahora funciona correctamente en la red de prueba.
Si desea comenzar la carrera de desarrollador en la industria de la criptografía, debe comprender que, a pesar de su relativa simplicidad en el núcleo, blockchain tiene una flexibilidad y una funcionalidad increíbles. Desde 2017, blockchain ha evolucionado significativamente y sus casos de uso han ido más allá de las transacciones financieras. Con la llegada de Ethereum, ha aparecido una nueva capa de redes que alberga varias aplicaciones dApps y soluciones basadas en blockchain. La herramienta de esta evolución fue un contrato inteligente, y si desea expandir su experiencia, hacerla más valiosa y orientada al futuro, necesita saber cómo funciona.
Si puede codificar contratos inteligentes usando otros idiomas, Solidity aún es más adecuado para estos fines. Además, si desea convertirse en desarrollador de Ethereum o crear tokens ICO/ERC20 para su proyecto, esta es definitivamente su elección. Si tiene algo de experiencia con C++ o JavaScript, la codificación en Solidity debería ser relativamente fácil para usted. Sin embargo, deberá comprender algunas de las diferencias entre los modelos de inicio de software cliente-servidor y descentralizado. Gracias a la Fundación Ethereum y algunas organizaciones de terceros, los desarrolladores cuentan con un conjunto de herramientas convenientes, como Remix y Etherscan, para codificar e implementar contratos inteligentes.
Esperamos que nuestro tutorial lo haya ayudado a comprender la mayoría de los conceptos de Solidity para comenzar un emocionante viaje de aprendizaje de la tecnología blockchain. Recuerda que siempre puedes consultar la última documentación de Solidity.