Cadenas de bloques privadas: Validación

Soy desarrollador de software y tengo algunas preguntas sobre las cadenas de bloques privadas. Me gustaría tener respuestas técnicas ya que estoy tratando de entender la cadena de bloques a nivel de código. Voy a escribir un problema, y ​​todo es en aras de obtener ideas :)

Así que este es el contexto:

Tenemos una cadena de bloques privada donde los bloques se agregan mediante un cierto tipo de nodo (llamémoslos validadores). Los validadores son los que pueden agregar bloques a la cadena: ellos, por supuesto, verifican los bloques haciendo uso de algunas reglas.

También tenemos los nodos regulares (no pueden agregar bloques pero pueden enviar su cadena a otros nodos si el nodo x lo requiere)

El nodo A modificó un bloque (x) , y el nodo B solicitó el bloque X al nodo A, el nodo A envía su bloque al nodo B, pero este bloque que se acaba de enviar no es válido porque se ha modificado.

¿Cómo puede el Nodo B certificar que el bloque x es un bloque inválido (ya que es válido para el Nodo A, cómo sabe el nodo B que es un bloque inválido): tenemos un 50-50, entonces, ¿quién tiene la verdad?

¿Necesitaría el nodo B muchos ejemplos del Bloque X para que el Nodo B pueda decidir si el bloque es válido?: El Nodo B recibió 10 ejemplos , 9 de esos 10 ejemplos tienen el mismo hash (Y) pero el hash es diferente (block x del Nodo A) es minoritario, por lo que el hash ganador (bloque ganador) sería Y

¿Necesitaríamos un proceso de elección donde los nodos validadores decidan qué bloque es válido?

¿Cómo resolveríamos ese problema según su conocimiento?

Creo que ese problema que acabo de escribir se llama El problema de la falla bizantina (no estoy seguro, pero según lo que he leído, parece que lo es). ¡Me encantaría escuchar sus respuestas y cualquier idea también!

NOTA: EL PROBLEMA que acabo de describir no está relacionado con ninguna cadena de bloques de ninguna criptomoneda. El problema que describí solo está relacionado con la propia tecnología blockchain y las aplicaciones basadas en ella.

Respuestas (1)

¿Cómo puede el nodo B certificar que el bloque x es un bloque no válido?

En un nivel muy básico: una cadena de bloques es una lista con enlaces hash. Cada bloque hace referencia al hash del bloque que lo precede, por lo que cualquier modificación a un bloque anterior será obvia, porque el hash de ese bloque ya no formará parte de la cadena más larga.

Sin embargo, la situación es más complicada para un nuevo nodo que escucha el historial por primera vez, o durante un momento en el que hay dos puntas de cadena válidas que compiten. ¿Qué punta de cadena debe considerarse válida?

Bitcoin utiliza la prueba de trabajo para decidir qué cadena es válida: la que tiene la mayor cantidad de trabajo acumulado (a menudo denominada "la cadena más larga"). No se puede falsificar el trabajo que se está realizando, por lo que la competencia entre los mineros es lo que protege el historial de la red de la manipulación.

Sin una medida objetiva (es decir, energía gastada creando un PoW), puede resultar muy difícil determinar la cadena válida en el caso de una división de la cadena. Puede crear un sistema de votación, pero dicho sistema se basa en medidas subjetivas y, como tal, puede ser más apto para el juego por parte de los participantes de la red.

Cuando se trata de una cadena de bloques en la que no hay minería involucrada, solo un montón de nodos que son los encargados de mantener viva la corrección de la cadena de bloques, ¿qué forma sería buena para resolver los problemas antes mencionados según su conocimiento? ¡Gracias!