¿Cómo eligen los compañeros en qué compañero confiar?

  1. Entonces, la forma en que entiendo cómo funciona la cadena de bloques es que cada bloque nuevo usa el hash del bloque anterior, lo que significa que si block[100].hash != someone_elses_block[100].hasheso significa que rompí alguna regla o que la otra persona lo hizo; En este caso, ¿cómo encuentra mi cliente un par de confianza? ¿Y DÓNDE obtiene mi cliente la última cadena de bloques CORRECTA? ¿Hay un servidor central para ello? Si es así, ¿de dónde salió el servidor? Porque el minero tendrá la cadena más larga, pero ¿qué pasa si en realidad no sigue las reglas? ¿Y que?

  2. Digamos que detuve a mi cliente durante 100 días, durante esos 100 días hubo 500 transacciones nuevas, lo que significa que si tuviera que comparar mi último bloque con el de otra persona, mi cliente estaría desactualizado, por lo tanto, necesita descargar los bloques adicionales. ¿Dónde encuentra estos bloques y cómo determina con qué pares sincronizar y confiar?

  3. Una pregunta sobre el nonce, si digamos que no hubo nonce; Si el cliente A tiene una cadena que siguió las reglas y el cliente B estaba verificando transacciones sin hacer realmente todas las comprobaciones adecuadas, eso significa que el cliente A en el bloque [100].hash != cliente B en el bloque [100], por lo tanto, el cliente B no está siguiendo las reglas, entonces la pregunta es ¿cuál es la necesidad real del nonce? Porque, en mi opinión, parece que solo está ahí para dificultar la extracción para las personas, ¿correcto? ¿O añade algún tipo de seguridad? Y si lo hace, ¿tendrá la misma seguridad si digamos que el nonce siempre fue cualquier número entre 0 y 15? ¿O tendría que ajustarse a medida que la minería se vuelve más rápida?

¡Gracias!

Vale la pena señalar que no todas las cadenas de bloques tienen nonces.

Respuestas (1)

o rompí alguna regla, o la otra persona lo hizo; En este caso, ¿cómo encuentra mi cliente un compañero de confianza?

Tu cliente no confía en ningún compañero. Valida completamente la cadena de bloques. En el caso de múltiples bloques en conflicto a una altura de bloque dada, su nodo elegirá ir con el primer bloque del que se entere. Sin embargo, aún conservará y validará todos los demás bloques que haya recibido para esa altura de bloque. Solo después de que se hayan minado más bloques, realmente elige cuál de esos bloques en conflicto se convierte en parte de su cadena principal. Elige en función de qué rama tiene el trabajo más acumulativo.

No hay confianza en este proceso; usa primero escuchado inicialmente y luego se reajustará si los bloques posteriores pertenecen a una rama diferente. Estas reorganizaciones son la razón por la que se recomienda esperar varias confirmaciones, ya que las reorganizaciones de un bloque no son infrecuentes.

Además, la cadena de bloques con el trabajo más acumulativo (normalmente denominada cadena de bloques más larga) no es la única determinación de qué cadena de bloques usar. La cadena de bloques también tiene que ser válida, no puede simplemente tener la mayor parte del trabajo.

2: Digamos que detuve a mi cliente durante 100 días, durante esos 100 días hubo 500 transacciones nuevas, lo que significa que si tuviera que comparar mi último bloque con el de otra persona, mi cliente estaría desactualizado, por lo que necesita descargar el bloque adicional. bloques, ¿dónde encuentra estos bloques y cómo determina con qué pares sincronizar y confiar?

Su nodo realiza el proceso normal de detección de pares cada vez que se conecta. Su nodo luego elegirá aleatoriamente a uno de los pares a los que se ha conectado para que sea el "nodo de sincronización". En realidad, no se sincroniza mucho con este nodo, solo los encabezados de bloque. Descarga las cabeceras de bloque de este nodo y las valida. Luego, descargará los bloques para esos encabezados de los otros nodos a los que se ha conectado.

Una vez que se haya sincronizado la cadena de encabezados de un nodo, solicitará los encabezados de otros nodos para tener una idea de cuál es su mejor cadena de encabezados para determinar si el nodo de sincronización fue deshonesto.

Nuevamente, no hay confianza en este proceso ya que todos los bloques y encabezados aún están completamente validados. Dado que la descarga implica verificar varios nodos, es poco probable que su nodo tenga la cadena de bloques incorrecta, ya que no solo un nodo dicta qué cadena debe descargar.

entonces la pregunta es ¿cuál es la necesidad real del nonce?

El nonce no tiene ninguna relación con la validez, excepto por el hecho de que es parte del encabezado del bloque que tiene hash. El único propósito del nonce es tener algo que cambiar al minar. No aporta características de seguridad ni está relacionado con las reglas de consenso (salvo que tiene que existir, puede ser cero). Los mineros podrían muy bien simplemente no hacer nada con el nonce y cambiar algo más para obtener un hash diferente. Existe únicamente como una conveniencia.

Suponiendo que la red en su conjunto no esté rota, la única forma en que esto puede fallar es si cada nodo al que se conecta es malicioso y ninguno de ellos está dispuesto a revelarle la cadena válida más larga. Esto se llama ataque Sybil y existen varias defensas contra ellos. Para los sistemas PoW, cualquier persona que extrajo bloques en la cadena más larga quiere llevárselos a la mayor cantidad de personas posible para asegurarse de que permanezcan en la cadena más larga y puedan conservar su recompensa. Es muy difícil para un tercero impedir que dos personas que quieren intercambiar información lo hagan.
Además: para comenzar, la validación comenzó con un buen estado conocido, el software de la cadena de bloques con frecuencia (¿siempre?) tiene el bloque de génesis de la cadena de bloques (bloque 0) incorporado (o al menos es hash). Por ejemplo, aquí está en Bitcoin Core .