Codificación de cadena de bloques: ¡Los muchos lenguajes diferentes que necesitas!

    Rajarshi Mitra

    7 months ago
    Blockchain Coding: The Many different Languages You Need!
    en flag
    de flag

    La tecnología de cadena de bloques es increíblemente fascinante. No sería exagerado pensar en un futuro el cual esté completamente creado sobre esta. Entonces, ¿qué necesitas aprender para empezar a desarrollar en la cadena de bloques? ¿Qué lenguajes te darán una ventaja? En esta guía, pasaremos por los lenguajes más importantes. Y si solo estás empezando revisa nuestros cursos integrales de la cadena de bloques.

     

    Problemas con el desarrollo de software de cadena de bloques

    Antes de empezar, revisemos algunos de los desafíos a los que se enfrenta un desarrollador de cadena de bloques. Crear y mantener una cadena de bloques pública no es sencillo por varias razones.

     

    (Antes de continuar, se agradece públicamente a David Schwartz por su presentación con respecto al uso de C++ en el desarrollo de software de cadena de bloques en CPPCON 2016.)

    Codificación de cadena de bloques: ¡Los muchos lenguajes diferentes que necesitas!

     

    Razón #1: Seguridad

    Las cadenas de bloques, como .

    Razón #2: Gestión de recursos

    Es muy importante llevar un ritmo con la red. No puedes quedarte muy atrás y no estar al día con todas las demandas de la red. Debes estar bien equipado para manejar consultas remotas y locales.

    Razón #3: Rendimiento

    La cadena de bloques siempre debe funcionar en sus capacidades más altas posibles, pero para que esto ocurra el lenguaje elegido debe ser extremadamente versátil. El tema es que existen ciertas tareas en la cadena de bloques que pueden ser paralelizadas mientras hay algunas tareas que no pueden hacerse en paralelo.

    BGMEM v1

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

    Sin embargo, no todas las funciones en la cadena de bloques se deberían hacer de esa manera. Piensa en la ejecución misma de la transacción. No se pueden ejecutar múltiples transacciones en paralelo; necesita hacerse una a la vez para evitar errores como gastos dobles. Algunos lenguajes son buenos en operaciones paralelas mientras que otros lo son en operaciones no paralelas.

    Razón #4: Aislamiento

    ¿Qué es un comportamiento determinístico?

    • Si A + B = C, entonces sin importar las circunstancias, A+B siempre será igual a C. Eso se llama comportamiento determinístico.
    • Las funciones hash son determinísticas, lo que significa que el hash de A siempre será H(A).

     

    Entonces, en el desarrollo de cadena de bloques, todas las operaciones de transacciones deben ser determinísticas. No puedes tener una transacción que se comporta de una forma y luego de otra al día siguiente. De manera similar, no puedes tener contratos inteligentes que funcionan de dos maneras diferentes en dos máquinas diferentes.

    La única solución a esto es el aislamiento. Básicamente, aislar tus contratos inteligentes y transacciones de elementos no determinísticos.

    Así que, hemos discutido los problemas principales que los desarrolladores de cadena de bloques enfrentan. Ahora revisemos algunos de los lenguajes que los desarrolladores pueden usar para programar en la cadena de bloques.

     

    Lenguaje #1: C++

    Antes que nada, empecemos con el abuelo de todos, el