Validación de bloques: ¿quién lo hace? ¿Cuanto cuesta? ¿Y está presente en todos los protocolos?

Se publicaron diferentes hilos para aclarar esta pregunta, pero hay algunos puntos que necesitaría confirmar:

  • Cuando te conviertes en un nodo completo (NO minero, acabas de descargar la cadena de bloques completa con una billetera o similar), ¿eres automáticamente un validador? Lo que significa que usted (y el resto de los nodos completos) validará cada bloque nuevo para publicarlo para todos los demás, ya sea de confianza o no. ¿O no existe alguien que pueda ser solo un "validador", y solo los mineros pueden ser también validadores?

  • ¿El proceso de validación de bloques gasta demasiada energía? ¿O validar bloques no es un "gran problema"?

  • En los protocolos que usan PoW y PoS/DPoS (Bitcoin, Ethereum, Cardano, EOS...), una vez que se ha construido un bloque usando uno de esos métodos de consenso e incluido en la cadena, siempre estará involucrada esta "segunda" validación . para el resto de los nodos completos en esa red blockchain en particular? (Sospecho que esta segunda validación podría funcionar ligeramente diferente en cada uno de ellos, pero siempre incluyendo esta validación para el resto de los nodos)

  • Y por último: ¿ qué pasa si un nodo completo empieza a rechazar nuevos bloques (considera que no son válidos), pero el resto de los nodos dice que es correcto? Imagina un troll/hacker que comienza a decir que todos los nodos no son válidos, ¿se puede banear a esa gente? ¿O será esa persona simplemente ignorada?

Respuestas (3)

Cuando te conviertes en un nodo completo (NO minero, acabas de descargar la cadena de bloques completa con una billetera o similar), ¿eres automáticamente un validador? Lo que significa que usted (y el resto de los nodos completos) validará cada bloque nuevo para publicarlo para todos los demás, ya sea de confianza o no. ¿O no existe alguien que pueda ser solo un "validador", y solo los mineros pueden ser también validadores?

Sí, todos los nodos completos validan todas las transacciones antes de ponerlas en su mempool y todos los bloques que reciben. No le publicas a nadie si es de confianza o no, todos verifican si es válido por sí mismos.

¿El proceso de validación de bloques gasta demasiada energía? ¿O validar bloques no es un "gran problema"?

No.

En los protocolos que usan PoW y PoS/DPoS (Bitcoin, Ethereum, Cardano, EOS...), una vez que se ha construido un bloque usando uno de esos métodos de consenso e incluido en la cadena, siempre estará involucrada esta "segunda" validación. para el resto de los nodos completos en esa red blockchain en particular? (Sospecho que esta segunda validación podría funcionar ligeramente diferente en cada uno de ellos, pero siempre incluyendo esta validación para el resto de los nodos)

No estoy seguro de qué quieres decir exactamente aquí. Cada nodo completo validará todos los bloques una vez.

Y por último: ¿qué pasa si un nodo completo empieza a rechazar nuevos bloques (considera que no son válidos), pero el resto de los nodos dice que es correcto? Imagina un troll/hacker que comienza a decir que todos los nodos no son válidos, ¿se puede banear a esa gente? ¿O será esa persona simplemente ignorada?

Si alguien rechaza bloques válidos, se quedará atrás, ya que los otros nodos continuarán construyendo su cadena. Nadie pregunta a nadie si "otros nodos son válidos" o "otros bloques son válidos", se preguntan unos a otros por bloques que ellos mismos verifican cuando los reciben. Si intenta proporcionar un bloque no válido cuando se le solicita uno, otros nodos lo prohibirán. Ese es el objetivo de bitcoin, no tienes que confiar en nadie, te compruebas a ti mismo.

Hola Mike, muy buenas respuestas por aquí! :) Fue interesante la declaración "no tienes que confiar en nadie, te revisas a ti mismo". ¿Qué sucede si su transacción está siendo confirmada (buena validación, tiene suficientes fondos) por algunos nodos pero rechazada por otros? (esto no debería suceder ya que todos siguen las mismas reglas, pero imagino que esto podría suceder), o en otras palabras, ¿cuántas validaciones "buenas" debería obtener su transacción antes de ingresar al mempool?
Cada nodo tiene su propio mempool. Siempre que esté conectado a un buen nodo (es decir, no a uno que no esté transmitiendo su transacción válida a propósito), su tx finalmente se propagará a toda la red y un minero lo recogerá y lo colocará en un bloque. Recuerde que las transacciones no se consideran definitivas hasta que están en un bloque y tienen algunas confirmaciones.
La pregunta estaba más enfocada a qué sucede cuando una transacción, TX1 por ejemplo, se está esparciendo por la red y algunos nodos la rechazan (no es válida) pero otros la aceptan (transacción válida). Esto no debería ser posible ya que todos siguen las mismas reglas, pero imagina que eso sucede: - ¿Se necesita una confirmación mínima o de "transacción válida", para que los mineros puedan verificarlo en un nuevo bloque?
@3Pollo no pasa nada, no importa quién lo rechace, lo único que importa es si está en bloque o no. Si puede llegar a un minero y lo pone en un bloque, entonces no hay problema.
Hola Mike. Sabiendo que un nodo que detecta una transacción inválida no la "publica" al resto de ellos, ¿puede suceder que una transacción inválida entre en un bloque y nadie la detecte como inválida (pero algunos nodos sí)? Diría que esto es bastante improbable (ya que muchos nodos validan su transacción, y creo que también el minero que construye el nuevo bloque con el TX) pero... ¿podría suceder?

En la red Bitcoin, todos los nodos completos son validadores. Todos y cada uno de los nodos verificarán cada bloque que reciba para asegurarse de que la prueba de trabajo sea válida, las transacciones coincidan con la raíz de Merkle, las transacciones en sí mismas sean válidas, el tiempo/tamaño del bloque sean válidos, entre otras reglas de consenso.

¿El proceso de validación de bloques gasta demasiada energía?

En comparación con la minería, la validación de bloques es bastante económica. Sin embargo, no es gratuito y los bloques muy grandes pueden tardar un tiempo relativamente largo en validarse. Esta es una de las razones del límite de 20 000 MAX_SIGOPS por bloque.

Redes como ethereum usan el concepto de Max Gas para limitar la cantidad de trabajo requerido para validar un bloque, ya que el gas consumido es aproximadamente proporcional al esfuerzo computacional necesario para validar un bloque.

En los protocolos que usan PoW y PoS/DPoS (Bitcoin, Ethereum, Cardano, EOS...), una vez que se ha construido un bloque usando uno de esos métodos de consenso e incluido en la cadena, siempre estará involucrada esta "segunda" validación. para el resto de los nodos completos en esa red blockchain en particular?

Sí, en cada red, cada nodo completo debe validar cada bloque que recibe, independientemente del método de construcción.

¿Qué sucede si un nodo completo comienza a rechazar nuevos bloques (considera que no son válidos), pero el resto de los nodos dice que es correcto?

En Bitcoin, un nodo que proporcione datos falsos será prohibido por malas acciones de la lista de pares del nodo al que proporcionó datos falsos.

Hola Raghav, gracias por los detalles :) Según tus respuestas y otros hilos, básicamente cada nodo se está s own mempool where validate transactions. Now my concern is what happens when a transaction, TX1 for example, itextendiendo por la red y algunos nodos lo rechazan (no es válido) pero otros lo aceptan (transacción válida). Esto no debería ser posible ya que todos siguen las mismas reglas, pero imagina que eso sucede: - ¿Se necesita una confirmación mínima o de "transacción válida", para que los mineros puedan verificarlo en un nuevo bloque?
Y, además: - ¿Existe algún valor que identifique a cada TX como único? Si TX1 está repartido por la red y existe en millones de nodos (básicamente millones de mempools), ¿qué evitará incluir ese TX en más bloques (entonces se duplicará y provocará el doble de gasto? Yo diría que algún tipo de debe existir un identificador único por TX, ¿no? (entonces, si un TX ya se ha incluido en la cadena de bloques, no se volverá a incluir).

¿O no existe alguien que pueda ser solo un "validador", y solo los mineros pueden ser también validadores?

Existe totalmente y se conoce como nodo completo, lo que significa que es un nodo que valida todas las reglas.

¿Eres automáticamente un validador?

Como arriba, sí, por definición, el nodo completo valida

¿El proceso de validación de bloques gasta demasiada energía? ¿O validar bloques no es un "gran problema"?

Esto depende de las reglas de consenso y la implementación del nodo. En bitcoin, el objetivo es hacer que la validación sea lo más barata posible.

¿Estará siempre involucrada esta "segunda" validación para el resto de los nodos completos en esa red blockchain en particular?

Cuando el minero crea un nuevo bloque, por lo general trata de propagarlo a la red lo más rápido posible para que el resto de la red pueda construir encima de él para que su bloque se convierta en parte de la mejor cadena.

Esto significa que el bloque se envía a otros nodos y esos nodos generalmente validan el bloque y solo si es válido se propagarán más a la red y/o se construirán sobre él.

¿Qué sucede si un nodo completo comienza a rechazar nuevos bloques (considera que no son válidos), pero el resto de los nodos dice que es correcto?

Cuando un nodo rechaza un bloque, generalmente incluye en la lista negra al par que lo envió. Si no hay acuerdo sobre qué bloques son válidos, la red se dividirá y tendrá dos bifurcaciones diferentes que no son compatibles.