Cómo convertirse en un desarrollador de blockchain – Blockgeeks

Como sugiere el título, en esta guía, le mostraremos cómo convertirse en un desarrollador de blockchain. Como verá pronto, el desarrollo de blockchain no es muy diferente al desarrollo web regular. Para facilitarle las cosas, hemos escrito esta guía para ayudarle a aprender sobre el desarrollo de blockchain y darle pasos de acción al final de cada sección.

El alcance del desarrollo de la cadena de bloques de Bitcoin fue un poco limitado. Sin embargo, el juego cambió por completo con la llegada de Ethereum, que fue la primera cadena de bloques programable del mundo. Los desarrolladores de todo el mundo finalmente tuvieron la oportunidad de crear aplicaciones sobre una cadena de bloques. Esta es la razón por la que aprender el desarrollo de blockchain se ha convertido en una habilidad tan candente.

No hace falta decir que vivimos en la “era de la cadena de bloques”. El impacto que puede tener en nuestro futuro es realmente aterrador y magnánimo. Entonces, ¿cómo se puede obtener una parte de esa “acción de blockchain”? Si va a convertirse en un desarrollador de blockchain, hay ciertos pasos que debe seguir.

Con suerte, al final de la guía, tendrá las herramientas necesarias para comenzar su viaje. Si realmente quieres convertirte en desarrollador, necesitamos establecer algunas expectativas para ti. En primer lugar, llevará tiempo y deberá dedicar su tiempo y recursos a su educación (puede continuar su curso de desarrollo de blockchain tomando nuestras clases en línea). En segundo lugar, no espere resultados inmediatos, convertirse en desarrollador de blockchain no es una píldora mágica.

Entonces, habiendo dicho eso, comencemos su viaje.

Conviértase en un desarrollador de Blockchain – Hito n. ° 1: Comprender los conceptos básicos

Herramientas de desarrollo de blockchain

Uno de los mayores obstáculos con cualquier cosa tan nueva y revolucionaria, como la tecnología blockchain, es familiarizarse con varios conceptos que son parte integral del sistema.

Si eres un principiante, hay ciertos términos con los que debes estar familiarizado:

Aprenda la tecnología Blockchain

  • Blockchain: Blockchain es una cadena de bloques donde cada bloque contiene datos de valor sin ninguna supervisión central. Es criptográficamente seguro e inmutable.
  • Descentralizado: Se dice que Blockchain está descentralizado porque no hay una autoridad central que supervise nada.
  • Mecanismo de consenso: mecanismo mediante el cual una red descentralizada llega a un consenso sobre ciertos asuntos.
  • Mineros: usuarios que usan su poder computacional para extraer bloques.

Podría ser recomendable conocer más sobre estos términos que se utilizan ampliamente en la criptoesfera. Se recomienda encarecidamente que consulte nuestro completo glosario. Es importante aprender estos términos básicos, de lo contrario, se perderá mucho en su educación. Ahora, a continuación, es hora de informarse un poco más sobre los aspectos técnicos de la cadena de bloques.

Si está interesado en los aspectos técnicos de cómo crear una aplicación de tecnología avanzada en la parte superior de Blockchain, definitivamente debería aprender los entresijos de la criptoeconomía. La mayoría de los desarrolladores suelen estar bien versados ​​en la parte “cripto” de la ecuación, pero su conocimiento de la parte “económica” es extremadamente escaso.

Esta diferencia en el conocimiento es extremadamente evidente cuando estudias algunas de estas ICO que flotan por ahí. Es muy obvio ver que el lado económico de sus ICO no está bien pensado.

Entonces, a la luz de eso, puede ser una buena idea leer un poco sobre economía y tener una idea general de ella. Si desea aprender sobre criptoeconomía en general, puede consultar nuestro artículo aquí.

Si está intrigado específicamente por la criptografía y desea saber cómo funcionan las firmas y qué significa la criptografía de clave pública, lea esto.

Después de eso, es muy recomendable que comprenda cómo funciona bitcoin. Bitcoin es la aplicación más extendida, fina y elegante de la tecnología blockchain. Incluso puede llamarlo el mejor ejemplo de lo que la tecnología blockchain puede lograr simplemente por el impacto que ha tenido.

Por lo tanto, es recomendable que lea el documento técnico de bitcoin de Satoshi Nakamoto. Puedes encontrarlo aquí. Ahora eso completa el primer hito.

Veamos los pasos de acción que debe seguir aquí:

  • Familiarícese con los distintos términos y léxicos.
  • Lea sobre los aspectos más técnicos de blockchain.
  • Lea el documento técnico de bitcoin.

Conviértase en un desarrollador de Blockchain – Hito n. ° 2: Aprenda el proceso

Es bastante sorprendente ver cuántos “desarrolladores” en ciernes no han tenido ninguna experiencia de primera mano en el mundo real con las criptomonedas. ¿Cómo es posible innovar y mejorar una plataforma si no la ha utilizado ni una sola vez?

Se recomienda encarecidamente que empiece a familiarizarse con el sistema hoy mismo.

Vaya a Coinbase o cualquier otro intercambio con el que se sienta cómodo o al que pueda acceder en su país y compre algunas monedas. No es necesario que cree una cartera extensa de inmediato, solo compre algunas monedas y vea cómo funciona todo el proceso.

Es extremadamente sencillo. Dado que no va a comprar muchas monedas, simplemente use una billetera en línea básica.

Estas carteras son las más fáciles de usar entre todas. La creación es muy simple porque básicamente consiste en crear su propia cuenta en cualquiera de los servicios de intercambio. Además, puede acceder a esta billetera desde cualquier servidor o cualquier dispositivo del mundo siempre que esté conectado a la red. Dicho esto, existe un gran problema cuando se trata de carteras en línea. Su clave privada se guardará en otro servidor. Esto es básicamente como entregar su clave a los piratas informáticos en bandeja de plata. NO use billeteras en línea para almacenar grandes cantidades de su dinero. Almacene lo mínimo que necesita para fines de intercambio.

A medida que crea una cartera extensa, debe aprender a utilizar billeteras frías para almacenar su dinero. Puedes aprender cómo hacerlo aquí. Más adelante, si crea su ICO, DEBE saber cómo funcionan las billeteras y, en particular, las billeteras multi-sig.

Estamos cerrando esta sección aquí, la parte difícil comienza desde el siguiente hito.

Sus pasos de acción están aquí:

  • Aprenda cómo funcionan los intercambios.
  • Familiarízate con las carteras.

Conviértase en un desarrollador de Blockchain – Hito n. ° 3: ¡Comencemos a programar!

Como desarrollador de blockchain, enfrentará toneladas de desafíos en el back-end. Crear y mantener una cadena de bloques pública no es fácil por varias razones.

(Antes de continuar, un gran reconocimiento a David Schwartz por su discurso de apertura sobre el uso de C ++ en el desarrollo de software blockchain en CPPCON 2016).

Razón n. ° 1: seguridad

Las cadenas de bloques, como dice David Schwartz, deberían ser fortalezas. En primer lugar, el código es público y está abierto para que todos lo vean. Cualquiera puede mirar el código y buscar errores y vulnerabilidades. Sin embargo, a diferencia de otros recursos de código abierto, la desventaja de encontrar vulnerabilidades en el código blockchain es enorme. Cualquier programador puede piratear y salirse con la suya potencialmente con millones y millones de dólares. Debido a estas preocupaciones de seguridad legítimas, el desarrollo en la cadena de bloques suele ser muy lento.

Razón # 2: Gestión de recursos

Es importante seguir el ritmo de la red. No puede quedarse atrás y no mantenerse al día con todas las demandas de la red. Debe estar bien equipado para manejar consultas locales y remotas.

Razón # 3: Rendimiento

La cadena de bloques siempre debe funcionar con sus capacidades más altas posibles, pero para que eso suceda, el lenguaje elegido debe ser extremadamente versátil. El caso es que hay ciertas tareas en la cadena de bloques que son paralelizables, mientras que hay algunas tareas que no se pueden hacer en paralelo.

Un buen ejemplo de una tarea “paralelizable” es la verificación de firma digital. Todo lo que necesita para la verificación de la firma es la clave, la transacción y la firma. Con solo tres datos, puede realizar verificaciones de manera paralela.

Sin embargo, no todas las funciones en una cadena de bloques deben realizarse de esa manera. Piense en la ejecución de la transacción en sí. No se pueden ejecutar varias transacciones en paralelo; debe hacerse uno a la vez para evitar errores como gastos dobles. Algunos lenguajes son buenos para operaciones paralelas, mientras que otros son buenos para operaciones no paralelas.

Razón # 4: Aislamiento

¿Qué es el comportamiento determinista?

Si A + B = C, entonces no importa cuáles sean las circunstancias, A + B siempre será igual a C. Eso se llama comportamiento determinista.

Las funciones hash son deterministas, lo que significa que el hash de A siempre será H (A).

Entonces, en el desarrollo de blockchain, todas las operaciones de transacción deben ser deterministas. No puede tener una transacción que se comporte de una manera y luego se comporte de otra al día siguiente. Del mismo modo, no puede tener contratos inteligentes que funcionen de dos formas diferentes en dos máquinas diferentes.

La única solución a esto es el aislamiento. Básicamente, aísla sus contratos y transacciones inteligentes de elementos no deterministas.

Hay algunos idiomas que satisfacen la mayoría de estas necesidades. Si eres un desarrollador de blockchain, definitivamente necesitas tener algunos conocimientos básicos de C ++ y JavaScript.

Si bien C ++ puede parecer un poco desactualizado, la verdad es que satisface maravillosamente todas las funcionalidades que hemos descrito anteriormente. De hecho, Satoshi Nakamoto escribió el código fuente de bitcoin en C ++.

Junto con HTML y CSS, es una de las tres tecnologías centrales en la producción de contenido World Wide Web. Javascript se usa generalmente para crear páginas web altamente interactivas.

Entonces, ahora veremos cómo crear una cadena de bloques muy simple usando Javascript.

Enorme agradecimiento a savjee.be por el contenido a continuación.

¿Cómo hacemos un bloque? ¿En qué consiste un bloque simple? En nuestra moneda criptográfica simple que vamos a hacer (llamémosla “BlockGeeksCoin”), cada bloque tendrá la siguiente información:

  • Índice: Para conocer el número de bloque.
  • Marca de tiempo: Para conocer el momento de la creación.
  • Datos: los datos dentro del bloque.
  • Hash anterior: el hash del bloque anterior.
  • Hash: el hash del bloque actual.

Antes de continuar. Debe comprender ciertos términos que usaremos en nuestro programa:

  • Esto: la palabra clave “this” se invoca dentro de una función y le permite acceder a los valores dentro de un objeto específico que llama a esa función en particular.
  • Constructor: un constructor es una función especial que puede ayudar a crear e inicializar un objeto dentro de una clase. Cada clase está restringida a un solo constructor.
  • Ahora que está hecho, comencemos a hacer nuestro bloqueo.

Creando el Bloque

Análisis de código

Ok, esto de aquí está fuera de un bloque. Entonces, en la primera línea del código, llamamos a la biblioteca crypto-js porque la función hash sha256 no está disponible en JavaScript.

A continuación, invocamos un constructor dentro de la clase para llamar a objetos que tendrán ciertos valores. Lo que probablemente te llame la atención es la función calculateHash (). Veamos qué está haciendo exactamente.

En un bloque, tomamos todos los contenidos y los hash para obtener el hash de ese bloque en particular. Estamos usando la función JSON.stringify para convertir los datos del bloque en una cadena para hacer un hash.

Ok, tenemos el bloque listo y listo. Ahora conectemos los bloques en una cadena de bloques.

Creación de la cadena de bloques: convertirse en un ingeniero de cadenas de bloques

Análisis de código

Ok, muchas cosas están sucediendo en la cadena anterior, vamos a dividirla en secciones.

Sección 1: El bloque Génesis

¿Qué es el bloqueo génesis?

El bloque de génesis es el primer bloque de la cadena de bloques, y la razón por la que es especial es que, si bien cada bock apunta al bloque anterior, el bloque de génesis no apunta a nada. Entonces, en el momento en que se crea una nueva cadena, el bloque de génesis se invoca inmediatamente.

Además, puede ver una función “createGenesisBlock ()” en la que hemos proporcionado los datos del bloque manualmente:

Sección 2: Agregar los bloques

En primer lugar, necesitaremos saber cuál es actualmente el último bloque de la cadena de bloques. Para eso usamos la función getLatestBlock ().

¿Entonces, Que esta pasando aquí? ¿Cómo agregamos los bloques? ¿Cómo comprobamos si el bloque dado es válido o no?

¿Recuerdas el contenido de un bloque? Un bloque tiene el hash del bloque anterior, ¿verdad?

Entonces, lo que vamos a hacer aquí es simple. Compare el valor hash anterior del nuevo bloque con el valor hash del último bloque.

Cortesía de imagen: artículo mediano de Lauri Hartikka

Si estos dos valores coinciden, esto significa que el nuevo bloque es legítimo y se agrega a la cadena de bloques.

Sección 3: Validación de la cadena

Ahora, debemos verificar que nadie haya estado jugando con nuestra cadena de bloques y que todo esté estable.

Estamos usando el ciclo “for” para ir del bloque 1 al último bloque. El bloque Génesis es el bloque 0.

Si el “hash anterior” del bloque actual no es igual al “hash” del bloque anterior, esta función devolverá False, de lo contrario, devolverá True.

Usando la cadena de bloques

Ahora, finalmente usaremos la cadena de bloques para crear nuestra BlockGeeksCoin.

Entonces, ¿qué pasó aquí?

Creamos una nueva criptomoneda basada en la cadena de bloques y la llamamos BlockGeeksCoin. Al invocar este nuevo objeto, activé el constructor, que a su vez creó el bloque Génesis automáticamente.

Simplemente le agregamos dos bloques más y les dimos algunos datos.

Es así de simple.

(Gracias savjee.be por la asombrosa y sencilla explicación).

Eso es todo por este hito. Veamos los pasos a seguir. Es muy simple pero definitivamente no es fácil:

  • Edúquese en uno de los muchos lenguajes compatibles con blockchain como C ++, Javascript, C #, Go, etc.

Conviértase en un desarrollador de Blockchain – Hito n. ° 4: Infórmese sobre los contratos inteligentes

¿Cómo se define un contrato inteligente?

Según Wikipedia, un contrato inteligente es “un protocolo informático destinado a facilitar, verificar o hacer cumplir la negociación o ejecución de un contrato”. Si bien fue propuesto por primera vez por el criptógrafo estadounidense Nick Szabo en 1996, a menudo se le atribuye a Ethereum la popularización del concepto y su generalización.

Puede obtener más información sobre los contratos inteligentes en nuestra guía detallada aquí.

Entonces, ¿cuáles son las propiedades deseables que queremos en nuestro contrato inteligente?

Todo lo que se ejecuta en una cadena de bloques debe ser inmutable y debe tener la capacidad de ejecutarse a través de múltiples nodos sin comprometer su integridad. Como resultado de lo cual, la funcionalidad del contrato inteligente debe ser tres cosas:

  • Determinista.
  • Terminable.
  • Aislado.

Característica # 1: determinista

Un programa es determinista si da la misma salida a una entrada determinada cada vez. P.ej. Si 3 + 1 = 4, entonces 3 + 1 SIEMPRE será 4 (asumiendo la misma base). Entonces, cuando un programa da la misma salida al mismo conjunto de entradas en diferentes computadoras, el programa se llama determinista.

Hay varios momentos en los que un programa puede actuar de manera no determinista:

  • Llamar a funciones del sistema no deterministas: cuando un programador llama a una función no determinista en su programa.
  • Recursos de datos no deterministas: si un programa adquiere datos durante el tiempo de ejecución y esa fuente de datos no es determinista, entonces el programa se vuelve no determinista. P.ej. Suponga un programa que adquiere las 10 principales búsquedas de Google de una consulta en particular. La lista puede seguir cambiando.
  • Llamadas dinámicas: cuando un programa llama al segundo programa, se denomina llamada dinámica. Dado que el destino de la llamada se determina solo durante la ejecución, no es de naturaleza determinista.

Característica # 2: Terminable

En lógica matemática, tenemos un error llamado “problema de detención”. Básicamente, establece que existe una incapacidad para saber si un programa dado puede ejecutar su función en un límite de tiempo. En 1936, Alan Turing dedujo, utilizando el problema diagonal de Cantor, que no hay forma de saber si un programa dado puede terminar en un límite de tiempo o no.

Obviamente, esto es un problema con los contratos inteligentes porque, los contratos por definición, deben poder rescindirse dentro de un límite de tiempo determinado. Se han tomado algunas medidas para garantizar que exista una forma de “matar” externamente el contrato y no entrar en un bucle sin fin que agote los recursos:

  • Turing incompleto: una cadena de bloques Turing incompleta tendrá una funcionalidad limitada y no será capaz de hacer saltos y / o bucles. Por tanto, no pueden entrar en un bucle sin fin.
  • Medidor de pasos y tarifas: un programa simplemente puede realizar un seguimiento del número de “pasos” que ha realizado, es decir, el número de instrucciones que ha ejecutado, y luego finalizar una vez que se ha ejecutado un recuento de pasos en particular. Otro método es el medidor de tarifas. Aquí los contratos se ejecutan con una tarifa prepaga. Cada ejecución de instrucción requiere una tarifa particular. Si la tarifa gastada excede la tarifa prepaga, el contrato se rescinde.
  • Temporizador: Aquí se mantiene un temporizador predeterminado. Si la ejecución del contrato excede el límite de tiempo, se cancela externamente.

Característica # 3: Aislado

En una cadena de bloques, cualquiera y todos pueden cargar un contrato inteligente. Sin embargo, debido a esto, los contratos pueden, a sabiendas y sin saberlo, contener virus y errores. Si el contrato no es aislado, esto puede obstaculizar todo el sistema. Por lo tanto, es fundamental que un contrato se mantenga aislado en una caja de arena para salvar a todo el ecosistema de cualquier efecto negativo.

Ahora que hemos visto estas funciones, es importante saber cómo se ejecutan. Por lo general, los contratos inteligentes se ejecutan utilizando uno de los dos sistemas:

  • Máquinas virtuales: Ethereum usa esto.
  • Docker: Fabric usa esto.

Comparemos estos dos y determinemos cuál es el mejor ecosistema. En aras de la simplicidad, vamos a comparar Ethereum (máquina virtual) con Fabric (Docker).

Si está interesado en el desarrollo de Ethereum específicamente, es importante que también aprenda solidez.

Para cualquiera que quiera aprender a hacer DAPP (aplicaciones descentralizadas) o entrar en el juego de las ICO, aprender Solidity es una necesidad absoluta. Ya tenemos una guía detallada que puede leer aquí. Sin embargo, aquí le daremos una descripción básica. Solidity fue desarrollado por Gavin Wood, Christian Reitwiessner, Alex Beregszaszi, Yoichi Hirai y varios ex colaboradores principales de Ethereum para permitir la escritura de contratos inteligentes en plataformas blockchain como Ethereum.

Solidity es un lenguaje deliberadamente reducido y escrito libremente con una sintaxis muy similar a ECMAScript (Javascript). Hay algunos puntos clave para recordar del documento Ethereum Design Rationale, a saber, que estamos trabajando en un modelo de pila y memoria con un tamaño de palabra de instrucción de 32 bytes, la EVM (Ethereum Virtual Machine) nos da acceso al programa ” pila ”que es como un espacio de registro donde también podemos pegar direcciones de memoria para hacer que el Contador de Programa se repita / salte (para el control secuencial del programa), una“ memoria ”temporal expandible y un“ almacenamiento ”más permanente que en realidad se escribe en el blockchain, y lo más importante, el EVM requiere un determinismo total dentro de los contratos inteligentes.

Si está interesado en aprender solidez, puede consultar nuestra clase en profundidad aquí.

Entonces, veamos los pasos de acción ahora:

  • Comprenda cómo funcionan los contratos inteligentes.
  • (Opcional para desarrolladores de Ethereum) Aprenda Solidez.

Conviértase en un desarrollador de blockchain – Hito n. ° 5: ingrese a una empresa de desarrollo de blockchain

Una de las cosas más importantes que puede hacer como desarrollador en ciernes es permanecer constantemente en la mezcla.

Vaya y únase a los foros de Reddit, las páginas de Gitbub y StackExchange y conéctese con otros desarrolladores y esté siempre atento a cualquier noticia relacionada con la tecnología.

Junto con eso, será útil para usted saber qué buscan las personas en los desarrolladores de blockchain. ¿Qué cualidades buscan las empresas a la hora de contratar? Puedes encontrar esa información aquí.

Esta información puede ser muy útil para afinar sus habilidades lo suficiente como para atraer a las empresas.

Camino para convertirse en un desarrollador o ingeniero de Blockchain: Conclusión

Por lo tanto, esta es una hoja de ruta aproximada para usted y su viaje para convertirse en un desarrollador de blockchain. Esto por sí solo no será suficiente, por supuesto, tendrá que mostrar su propia iniciativa y estar siempre en la mezcla.

Si está buscando un recurso de información sobre el desarrollo de blockchain, haga clic aquí.

¡Le deseamos todo lo mejor en su viaje!

CriptoMundo

CriptoMundo.com es un medio digital independiente que difunde noticias y contenido sobre criptomonedas y tendencias emergentes de tecnologías financieras. Ofrece noticias, guías, artículos de opinión y gráficos en tiempo real.

Monedas

Bitcoin

Ethereum