Entendiendo Blockchain y Smart Contracts

Antes de comprender los fundamentos y profundizar en entendiendo Blockchain y Smart Contracts, comprendamos algunas de las terminologías comunes utilizadas. Algunos términos como Merkle Trees, Proof-Of-Stake y sistemas Proof-Of-Work  requerirán publicaciones de blog separadas. Planeo cubrirlos en el futuro 🙂

blockchain

Entendiendo Blockchain y Smart Contracts

  • Cryptographic Hash: Una función hash criptográfica (CHF) es un algoritmo matemático que asigna datos de tamaño arbitrario (a menudo llamado «mensaje») a una matriz de bits de un tamaño fijo (el «valor hash», «hash» o «resumen del mensaje»).  Es una función unidireccional, es decir, una función para la cual es prácticamente inviable invertir o invertir el cómputo. Idealmente, la única forma de encontrar un mensaje que produzca un hash dado es intentar una búsqueda de fuerza bruta de posibles entradas para ver si producen una coincidencia. A menudo usamos la función hash SHA-256 para generar claves privadas y públicas para SSH. Es una función hash criptográfica patentada que genera un valor de 256 bits de longitud.
  • Merkle Tree: Un árbol hash o árbol Merkle es un árbol en el que cada «hoja» (nodo) está etiquetado con el hash criptográfico de un bloque de datos, y cada nodo que no es una hoja (llamado rama, nodo interno o inodo) está etiquetado con el hash criptográfico de las etiquetas de sus nodos hijo. Un árbol hash permite una verificación eficiente y segura del contenido de una gran estructura de datos. Un árbol hash es una lista hash y una generalización de cadena hash.
  • Peer To Peer Network: Una red peer-to-peer es una arquitectura de sistema distribuida en la que las particiones funcionan entre diferentes nodos (estaciones de trabajo) dentro de la red. Los nodos representan servidores o estaciones de trabajo y los bordes representan los canales de comunicación.
  • Distributed Ledger: Es una base de datos descentralizada en la que los datos se replican digitalmente entre nodos distribuidos geográficamente. Los nodos participan en asegurar la validez de los datos utilizando un algoritmo de consenso. Los datos generalmente se replican, sincronizan y comparten mediante algoritmos computacionales.
  • Proof-Of-Work System: La prueba de trabajo (PoW) es una forma de prueba criptográfica en la que una parte (el probador) demuestra a los demás (los verificadores) que se ha gastado una cierta cantidad de un esfuerzo computacional específico. Los verificadores pueden posteriormente confirmar este gasto con un mínimo esfuerzo de su parte. Una forma sencilla de entender un sistema de prueba de trabajo sería la siguiente:
    • Se le pide a un probador que calcule la suma de todos los números naturales de 1 a 1 billón sin el conocimiento de una fórmula para ello (es decir, la suma es [n(n+1)]/2, donde n es el número de números naturales)
    • Un verificador puede verificar fácilmente la salida usando la fórmula. El esfuerzo requerido en el extremo del probador y el verificador es asimétrico y aún verificable.
  • Block Time: El tiempo de bloque es el tiempo que tarda una red en crear un bloque adicional en la cadena de bloques (blockchain). El proceso requiere que la red asegure que los datos en el nuevo bloque sean verificables y consistentes con las restricciones de la red (por ejemplo, la firma digital en el nuevo bloque no debe tener un formato incorrecto). Para la cadena de bloques de Ethereum, el tiempo de bloqueo es de entre 14 y 15 segundos, mientras que el tiempo de bloqueo promedio para bitcoin es de 10 minutos.

Blockchain

¿Qué es  una cadena de bloques o blockchain?

Como su nombre lo indica, una cadena de bloques está descentralizada y es un bloque de registros distribuidos (distributed ledger) que contiene información. Es una lista creciente de registros, llamados bloques, unidos entre sí por criptografía. Cada bloque contiene un hash criptográfico del bloque anterior, una marca de tiempo y datos de transacción (generalmente representados por un Merkle Tree).

La marca de tiempo prueba que los datos de la transacción existían cuando se publicó el bloque para ingresar a su hash. Como cada bloque contiene información sobre el bloque anterior, forman una cadena, y cada bloque adicional refuerza a los anteriores. Las redes punto a punto generalmente administran cadenas de bloques para usarlas como un libro de contabilidad distribuido públicamente.

Entendiendo Blockchain y Smart Contracts

Historia del blockchain

En su disertación de 1982 «Sistemas informáticos establecidos, mantenidos y confiables por grupos mutuamente sospechosos», el criptógrafo David Chaum propuso por primera vez un protocolo similar a una cadena de bloques. [1] Sin embargo, no se popularizó hasta que Satoshi Nakamoto escribió un libro blanco sobre el diseño y la implementación de la tecnología blockchain: Bitcoin.

Estructura de blockchain

Una cadena de bloques se puede visualizar como una colección de bloques distribuidos que se ejecutan en una red de igual a igual. El ledger es descentralizado, distribuido y público y consta de bloques que están conectados a través de una serie de hash (o firmas) que se calculan a través de una función criptográfica.

Lógicamente, se puede considerar que una cadena de bloques consta de varias capas:

  • Infraestructura (hardware)
  • Redes (descubrimiento de nodos, propagación de información y verificación)
  • Consenso (prueba de trabajo, prueba de participación)
  • Datos (bloques, transacciones)
  • Aplicación (contratos inteligentes/aplicaciones descentralizadas, si corresponde)

En los artículos teóricos, me centraré principalmente en discutir la capa de aplicación y qué elementos son necesarios para que usted desarrolle casos de uso emocionantes en la cadena de bloques.

Estructura de un bloque (block)

Los bloques contienen lotes de transacciones válidas cifradas y codificadas en un Merkle Tree. Cada bloque contiene el hash criptográfico del bloque anterior que une a los dos. Los bloques enlazados forman una cadena. El proceso iterativo asegura la integridad del bloque anterior, hasta el bloque inicial, que se denomina bloque génesis. Para garantizar la integridad de cada bloque, generalmente se firma digitalmente.

Por lo general, un bloque consta de la siguiente información (en la cadena de bloques de bitcoin):

  • Información del remitente
  • Información del receptor
  • Información del monto transado
  • Un hash criptográfico de este bloque específico
  • Un hash criptográfico del bloque anterior

Blockchain Security

¿Cómo garantiza la seguridad una cadena de bloques?

Esta sección analiza algunas de las técnicas con las que una cadena de bloques garantiza que se mantenga la validez de los bloques en la cadena de bloques.

Proof-Of-Work: Prueba de trabajo

Para garantizar que el bloque recién generado sea seguro y creado por una entidad confiable, blockchain emplea un mecanismo llamado prueba de trabajo o Proof-Of-Work.

La prueba de trabajo (PoW) es una forma de prueba criptográfica en la que una parte (el probador) demuestra a los demás (los verificadores) que se ha gastado una cierta cantidad de un esfuerzo computacional específico. Los verificadores pueden posteriormente confirmar este gasto con un mínimo esfuerzo de su parte.

Una de las características críticas del algoritmo de prueba de trabajo es que debe haber un requisito de trabajo asimétrico por parte del probador y el verificador, es decir, el trabajo requerido por el probador debe ser computacionalmente alto. Por el contrario, el trabajo requerido por el verificador debe ser computacionalmente ligero.

El propósito de los algoritmos de prueba de trabajo no es probar que se realizó cierto trabajo o que se «resolvió» un rompecabezas computacional, sino impedir la manipulación de datos al establecer requisitos considerables de energía y control de hardware para poder hacerlo. Los ecologistas han criticado los sistemas de prueba de trabajo por su consumo de energía.

En la siguiente sección, analicemos una aplicación de la cadena de bloques: los contratos inteligentes.

Smart Contracts: Contratos inteligentes

En 1997, Nick Szabo, científico informático, erudito en derecho y criptógrafo, utilizó por primera vez el término Smart Contract. Uno puede entender los contratos inteligentes como contratos simples además de transacciones en el mundo real, con la única diferencia de que son digitales. Un contrato inteligente se abstrae como un programa de computadora almacenado dentro de una cadena de bloques.

Kickstarter: un ejemplo de Smart Contract

Kickstarter es un excelente ejemplo de una aplicación que se puede construir usando un contrato inteligente.

La aplicación típica de una campaña de Kickstarter es la siguiente: digamos que tiene un proyecto en mente; tal vez quiera desarrollar una herramienta de productividad para ingenieros de software y necesite reunir algo de capital para construirla. Puede ir a Kickstarter y compartir la idea, solicitar una cantidad específica de capital que necesite, y las personas en Internet pueden votar por el proyecto y pagarlo.

Una de las restricciones del sistema es la siguiente:

“Cualquier proyecto que no esté completamente financiado se va a la nulidad, y el dinero que aportan los usuarios tiene que ser devuelto”.

Por lo tanto, suponga que desea recaudar 100,000 € en su proyecto de kickstarter para construir una herramienta para ingenieros de software. Si solo puede recaudar 90,000 €, entonces el proyecto se anula y el dinero debe devolverse a los contribuyentes. Sin embargo, digamos que puede recaudar 100,000 € o 200,000 €… en este caso el dinero será transferido a su cuenta bancaria y podrá usarlo para construir el sistema.

Actualmente, Kickstarter actúa como intermediario (un tercero) entre el desarrollador del proyecto y los contribuyentes para garantizar que se cumplan las restricciones del sistema. Sin embargo, se puede argumentar que puede suceder que el tercero se vuelva deshonesto en el futuro.

Ciertamente puede suceder. ¿Cómo nos aseguramos de que el sistema permanezca infalible en ese escenario? Ahí es donde entran en escena los contratos inteligentes o smart contracts.

Kickstarter: Con Smart Contracts

Con la ayuda de una cadena de bloques, el desarrollador del proyecto puede escribir un contrato inteligente en el que se puede cumplir la siguiente restricción (de una manera totalmente distribuida y digital):

«Permita que el dinero se transfiera a la billetera del desarrollador del proyecto solo si el dinero excede el monto objetivo».

Estos son los pasos que ocurren cuando el proyecto se financia mediante un contrato inteligente:

  1. El propietario del proyecto crea el contrato inteligente que se encuentra en medio de los contribuyentes y el propietario del proyecto.
  2. Las personas que financian ponen dinero en el contrato inteligente que se encuentra en el registro distribuido (ledger) entre estos y el propietario del proyecto.
  3. El contrato inteligente mantendrá todos los fondos recibidos en una cuenta de depósito en garantía hasta que se alcance la meta. La cuenta de depósito en garantía puede ser una billetera criptográfica (crypto wallet).
  4. Si la cantidad de dinero aportada supera la meta, el contrato tiene éxito y el dinero se transfiere a la cuenta del propietario del proyecto.
  5. Si se excede el límite de tiempo establecido para las recaudaciones de fondos, el dinero se devuelve a la cuenta del contribuyente individual y se anula el contrato.

¿Por qué podemos confiar en el Smart Contract?

Un contrato inteligente exhibe las siguientes propiedades por las que se puede confiar en él:

  • Inmutable: Ser inmutable garantiza que nunca se pueda volver a cambiar una vez que se crea un contrato inteligente. Recuerde que esto se deriva de la restricción de diseño de que los bloques en una cadena de bloques son inmutables. Una vez que se ha construido un bloque en una cadena de bloques, nunca se puede manipular, sin cambiar su función hash. En caso de que se altere la función hash de un bloque determinado. Da como resultado la invalidez de la cadena de bloques completa ya que la cadena de bloques está protegida.
  • Distribuido: La salida del contrato es validada por todos en la red. Digamos que aunque algunas entidades de la red se vean comprometidas y digamos que el contrato se cumple aunque no se haya transferido suficiente dinero (caso de fraude). En ese escenario, el voto de la mayoría cuenta y, a menos que la mayoría de los usuarios se vea comprometida, el contrato inteligente sigue siendo válido.

En resumen, podemos decir que una cadena de bloques permanece segura y, por lo tanto, un contrato inteligente es bastante seguro, y la manipulación de contratos inteligentes es casi imposible.

Espero que el artículo «Entendiendo Blockchain y Smart Contracts» te haya sido de ayuda ❤️

Compartir:

Deja un comentario