🇪🇸 Entienda las blockchains con 3 sencillas preguntas

Mientras trabajaba en crypto pensé de vez en cuando que sería interesante comprender cómo encajan todas las partes de blockchain. Así que durante el último mes, más o menos, estuve intentando crear un marco para entender las blockchain para mí mismo y, con suerte, para los demás.

Me propuse elegir unas cuantas propiedades fundamentales de las blockchain que explican lo que ocurre y marcan una diferencia observable para los usuarios finales.

Sólo espero que le resulte útil.

Introducción

Existen diferentes formas de explicar las blockchain. A unos prefieren describir los términos técnicos y profundizar en cada uno de ellos, a otros les gusta hacer analogías con ejemplos de la vida real y a otros les gusta empezar por los primeros principios de la economía y la informática y luego ir construyendo poco a poco su comprensión de las blockchains.

Mi modo preferido de concebir las blockchain es pensar en las propiedades que marcan diferencias observables para los usuarios finales. Por ello, busco propiedades que sean significativas para los usuarios finales pero que también expliquen lo que ocurre bajo el capó.

Tales propiedades son quién puede incluir transacciones en nombre del usuario final, cuándo las transacciones son definitivas y no pueden revertirse y si los usuarios pueden comprobar la blockchain utilizando sus ordenadores domésticos. A continuación examinaremos en detalle cada uno de ellos.

¿Quién puede incluir transacciones?

Un enjambre de nodos mantiene los sistemas blockchain. Los nodos son ordenadores conectados a Internet que gestionan lo que ocurre en la blockchain.

Mientras más nodos haya en una blockchain, mayor será la posibilidad de que las transacciones acaben incluidas en la cadena, ya que la inclusión de transacciones es voluntaria. El único incentivo de los nodos que crean bloques es recaudar tarifas, pero depende de ellos elegir qué transacciones incluirán en el bloque y en qué orden. Las blockchain con solo unos pocos nodos, tienen más posibilidades de que se elijan nodos deshonestos para crear el siguiente bloque.

No obstante, incluir una transacción en un bloque a veces no siempre es definitivo. En algunas blockchain como Ethereum los usuarios tienen que esperar ciertos bloques para tener la certeza de que la transacción es irreversible. En otras blockchain como Bitcoin las transacciones nunca son definitivas sino solo parcialmente definitivas (es decir, en Bitcoin después de 6 bloques hay un 99,98% de posibilidades y un 99,99988% después de 10 bloques una transacción es definitiva para un atacante con un 10% del hashrate).

¿Cuál es el mejor caso?

Validadores descentralizados: cuanto más descentralizada esté una blockchain menos censura de transacciones podría haber. Eso es porque la inclusión de las transacciones en los bloques la hacen voluntariamente los nodos a así que cuantos más nodos haya, mayor será la probabilidad de que un nodo actúe honestamente e incluya la transacción en el bloque. Por otra parte, como el nodo que crea el siguiente bloque es aleatorio, solo hay unos segundos de retraso hasta que el siguiente nodo incluya la transacción. Como observación al margen, la capa 2s es diferente a la capa 1 ya que tiene menos nodos. En las de capa 2, los nodos deben comprometerse con las transacciones que incluirán en el siguiente bloque y si se equivocan pagan una penalización.

  • Bajos requisitos de hardware: Es preferible tener nodos con bajos requisitos de hardware. Pero en la práctica tener más de ~1m de nodos crea problemas con la comunicación entre nodos y la mayoría de las blockchain ponen restricciones financieras a sus nodos para mantener el recuento de nodos por debajo de ese número. Además de participar en el consenso, también es bueno que los nodos con bajas especificaciones de hardware puedan verificar la blockchain. Aquellos nodos que no participen en el consenso pueden ejecutar las transacciones por sí mismos o utilizar clientes ligeros para comprobar el estado de la blockchain (con pruebas de almacenamiento para la disponibilidad de los datos y pruebas de conocimiento-cero para la validez de las transacciones).
  • Las transacciones son definitivas: En ciertas circunstancias en las que la mayoría de los nodos de una blockchain están fuera de línea debido a un ataque DDOS, problemas de red u otras blockchains tienen que tomar una decisión. Una de las opciones es detenerse hasta que suficientes nodos vuelvan a estar en línea, como Tendermint, y la otra es seguir produciendo bloques con menos nodos, como Bitcoin. Las blockchains que siguen produciendo bloques no pueden tener sus transacciones finalizadas porque los nodos que se desconectaron podrían volver más tarde y revelar que prefieren una versión diferente de la cadena, lo que podría hacer que se revirtieran algunas transacciones. Algunas blockchain pretenden obtener lo mejor de ambas palabras, como Ethereum, que se mantiene en línea incluso con muy pocos nodos, pero solo finaliza las transacciones cuando el 66% de la red vota a favor de ellas.

Qué puede fallar:

Doble gasto: Si algunos nodos tienen poder de control sobre una red, podrán destinar fondos a comprar cosas y luego revertir la cadena para recuperar sus fondos. A esto se le llama ataque de reorganización o ataque del 51%. En este escenario, el atacante tendría que puede generar bloques pero guardárselos para sí mismo y revelarlos todos juntos después de gastar sus fondos. Otros nodos verían una cadena más larga (y por tanto más válida) y cambiarían a esa cadena en su lugar.

  • Censura de transacciones: Aquellos nodos que participan en el consenso tienen cierto poder extra sobre una blockchain. A esos nodos les corresponde decidir qué transacciones se incluyen y en qué orden cuando les toca crear un bloque. En otras palabras, el nodo que crea un bloque tiene la opción de censurar transacciones específicas, o todas ellas. Eso es lo que ocurre con Tornado Cash y la lista de la OFAC, donde los nodos que quieren ser conformes excluyen las transacciones de Tornado Cash. Dicha censura no significa que las transacciones queden censuradas para siempre. Estas transacciones permanecen “pendientes” y finalmente se incluyen en un bloque si hay al menos un nodo no censurador.
  • Eclipse de datos: Otro de los vectores de ataque que suele pasarse por alto en crypto son las catástrofes naturales. Las blockchain necesitan tener acceso a los saldos de los usuarios y a los datos de los smart contract para poder funcionar. Si estos datos se pierden de todos los nodos, la blockchain se detendría para siempre. Este ataque es un problema mayor en blockchain con bajo número de nodos o concentradas en uno o dos centros de datos en la nube (por ejemplo, AWS o GCP).
  • Denegación de servicio: Las blockchain con bajo recuento de nodos también son más susceptibles de sufrir ataques directos a los nodos inundándolos de peticiones. Los sistemas que pertenecen a la familia de consenso BFT también son más vulnerables a este ataque, ya que requieren que >66% de su conjunto de validadores ponderado por estacas esté en línea. De hecho, Avalanche requiere que el 75% de sus nodos estén en línea y Algorand necesita el 80%.

Nota: El nombre técnico de los nodos que incluyen transacciones en bloques es “producción de bloques”.

¿Puedo comprobarlo?

Las blockchain permiten a los usuarios finales validarlas de varias formas diferentes.

Las blockchain convencionales como Bitcoin y Ethereum ( previas al EIP4844) requieren que todos los nodos procesen todas las transacciones. En realidad, cada nodo tiene que ejecutar todas las transacciones desde la génesis hasta el último bloque que se sincronice y, a continuación, todas las nuevas transacciones que lleguen con los nuevos bloques.

En contraposición, las blockchain fragmentadas tienen sus nodos repartidos en comités en los que cada comité solo valida una parte de la cadena que tiene asignada. En estas blockchain los nodos no validan todas las transacciones sino que dependen de otros shards / comités para validar su parte. Si los nodos de un shard actúan de forma deshonesta, un nodo honesto puede presentar un desafío para que los nodos deshonestos sean eliminados y se corrija la cadena.

Un tercer mecanismo que algunas blockchain soportan actualmente son los clientes ligeros, que son nodos que solo pueden verificar la cadena pero no pueden participar en el consenso. Los clientes ligeros solo validan los metadatos del bloque y no procesan todas las transacciones por sí mismos. En proof-of-work significa comprobar que se ha invertido cierta cantidad de trabajo en el bloque, en proof-of-stake significa comprobar que se han emitido cierta cantidad de votos al bloque y por último en cadenas de disponibilidad de datos como Celestia y Ethereum (post-4844) significa comprobar que los datos que se almacenan correclty onchain.

¿Cuál es el mejor caso:

  • Bajos requisitos de hardware: Las blockchain con requisitos mínimos de hardware permiten que más usuarios ejecuten nodos y verifiquen la cadena ellos mismos. En la práctica, existen dos tipos de nodos, los nodos que participan en el consenso y producen bloques y los nodos que solo escuchan la cadena y solo verifican bloques sin crear nuevos bloques. Los nodos que participan en el consenso están verificando la cadena solo creando bloques sobre otros bloques válidos. Los nodos que no participan en el consenso no pueden afectar al consenso pero solo pueden comunicar cualquier travesura a través de los canales sociales.

Lo que puede ir mal:

  • Transacciones fantasma: Algunas blockchain son abiertas y sin permisos, pero siguen teniendo unos requisitos de hardware tan elevados que los ordenadores domésticos no pueden verificar la cadena. El problema con estas cadenas es que las transacciones no válidas podrían incluirse y no ser advertidas por nadie de una manera que podría desafiar el propósito de una cadena abierta y sin permisos.

Nota: El nombre técnico para validar la blockchain es “verificación de bloques”. “Clientes ligeros” son nodos que verifican onlu la cadena sin reejecutar todas las transacciones hasta ciertos niveles de confianza.

¿Está hecho?

Si ha oído que la transacción de Bitcoin necesita 60 minutos (o 6 bloques) para confirmarse es porque no todas las transacciones de blockchain son definitivas. En algunas blockchain como Bitcoin y Ethereum existe la posibilidad de que una transacción llegue a un bloque y luego sea revertida.

En realidad, esa es la razón por la que muchos Exchange centralizados como Coinbase y Binance tienen largos tiempos de espera para depositar fondos. Mientras más tiempo requieran que los usuarios esperen, menor será la posibilidad de que la blockchain se revierta y, por lo tanto, menor será la posibilidad de que pierdan dinero.

¿Cuál es el mejor caso?

Finalidad instantánea: La finalidad instantánea de las transacciones significa que las transacciones que entran en un bloque se liquidan para siempre. Que las blockchain con finalidad instantánea no puedan revertirse no siempre es una buena característica. Eso se debe a que el estado finalizado podría no ser representativo de la mayoría de los nodos en caso de que muchos nodos se desconecten debido a un fallo o a un problema de la red.

Lo que puede salir mal:

Doble gasto: Puesto que muchas blockchains no se finalizan instantáneamente, podría haber dos versiones competidoras de la misma cadena. Cada versión podría contar con el apoyo de unos pocos nodos y podría pasar un tiempo hasta que la red se asiente sobre qué cadena es la más válida. Esto puede ocurrir por culpa de un nodo malicioso que controle la mayor parte del staking de la red o el poder hash o por problemas en la red. De estos ataques se habla con más detalle en la sección “¿Quién puede incluir transacciones?” anterior.

  • Ataques de largo alcance: Otra posibilidad de ataque a las cadenas que no finalizan son los ataques de largo alcance. En un ataque de este tipo, un adversario crea una versión de la cadena en la que la mayoría de los nodos están desconectados y su staking está recortado. Al cabo de un tiempo, el nodo atacante puede acumular más y más recompensas de staking (en su versión de la cadena) y luego revelar la cadena a otros nodos con la esperanza de engañarlos diciéndoles que se trata de la cadena más larga. Las principales blockchain de proof-of-stake asignan pesos a los bloques (de modo que las cadenas que son votadas desde solo unos pocos nodos tienen menos peso) y por lo tanto evitan este ataque.

Nota: El nombre técnico de las transacciones que se liquidan para siempre es “finalidad de bloque”.

Resumen

Un modo de ver los sistemas blockchain es entender 1) quién puede crear bloques 2) cuándo estos bloques son definitivos y 3) si los usuarios finales pueden comprobarlos.

La creación de bloques, es decir, la producción de bloques es más segura si la realizan varios nodos con especificaciones de hardware bajas, de lo contrario están sujetos a la censura de transacciones, al eclipse de datos de la blockchain y a ataques de doble gasto. Comprobar estos bloques es decir verificación de bloques se hace preferiblemente con ordenadores de consumo o con clientes ligeros adecuados. Comprobar que un bloque es definitivo, es decir, la finalidad del bloque, puede ser instantánea o retardada para mayor seguridad en función del diseño del consenso (BFT frente a Nakamoto).

La finalidad de este marco es ayudar a comprender las compensaciones que tienen los diferentes enfoques y tomar su propia decisión sobre los casos de uso apropiados de varios proyectos en el espacio.


Traducción al español de “Understanding blockchains with 3 simple questions”, escrito por @LiveDuo, en agosto 13 de 2023.


Notas del traductor

  • Corchetes del traductor.
  • :es: indica que el enlace apunta a un contenido en idioma español.
1 Like

Considere suscribirse a las siguientes fuentes de información en español de Cardano según su interés.

1 Like

Thanks for translating @Napoles

1 Like

My pleasure @LiveDuo, thanks to you for taking the time to write such an instructive post (the second of many more to come, i hope so :upside_down_face:).

1 Like