¿Qué me impide simplemente construir un hash que sea más bajo que el objetivo actual?

Acabo de empezar a aprender sobre Bitcoin, y algo que puedo entender es por qué los mineros tienen que usar un proceso aleatorio (hashing a nonce) para llegar más bajo que el objetivo. Por ejemplo, si el objetivo es

00000000000001ae00000000000000

¿Por qué no solo producir?

000000000000000000000000000001

convertirse en el ganador? No tengo experiencia práctica en minería, supongo que mi ignorancia radica en los requisitos de cómo se produce un hash. Si es así, ¿dónde puedo encontrar información sobre esos requisitos? Gracias.


EDITAR: Para mayor claridad, me refiero a esto en el sentido de qué parte de la tecnología requiere que use una función hash. En lugar de en el sentido de simplemente construir algo que parezca un hash válido.

Otros nodos que verifiquen su hash notarán que está mintiendo: el hash no coincide con el hash calculado. Lo único que puede hacer para influir en el tiempo en que su hash coincide con el hash calculado es cambiar el nonce e intentarlo; de hecho, este es el algoritmo de prueba de trabajo: cambie el nonce, calcule el hash, vea si se ajusta al objetivo e intente, intente nuevamente . Siempre puede elegir voluntariamente un objetivo más difícil, pero estadísticamente eso significa que otras personas podrían encontrar un hash coincidente antes que usted.
Además, tienes un pequeño malentendido. El proceso no es el hash del nonce, es el hash del bloque. Por supuesto, el hash del bloque generará un valor hash fijo que puede que nunca coincida con el objetivo. ¿La solución? Permita que los mineros agreguen su propia basura/datos ignorados al bloque, el nonce, luego haga un hash de todo. Si el hash no coincide con el objetivo, debe cambiar el nonce y volver a intentarlo. De esta manera, es imposible precalcular el hash utilizando un nonce pregenerado porque no tiene control sobre los otros datos en el bloque.

Respuestas (2)

EDITAR: Para mayor claridad, me refiero a esto en el sentido de qué parte de la tecnología requiere que use una función hash. Por el contrario, simplemente construir algo que parezca un hash válido.

Al determinar si un bloque es válido o no, todos y cada uno de los nodos de bitcoin en la red tomarán el encabezado de ese bloque y lo ejecutarán a través de un algoritmo hash para ver cuál es el resultado. Si la salida es menor que el valor objetivo, entonces el bloque es válido (suponiendo que el resto del bloque también sea válido, por supuesto).

Observe algo importante: el valor hash en sí no se almacena explícitamente en el bloque . Por lo tanto, no puede simplemente agregar un valor fabricado que cae por debajo del valor objetivo en el bloque en lugar de un PoW válido. Para crear un bloque válido, debe construirlo de manera que todos los demás nodos de la red puedan verificarlo de forma independiente como válido y, para hacerlo, utilizan una función hash.

Como mencionó Pieter, las funciones hash son funciones 'unidireccionales' impredecibles. La única forma de encontrar una salida válida es probar una gran cantidad de entradas posibles y "tener suerte", por así decirlo.

No es tan simple. El hash debe ser resistente a los ataques previos a la imagen .
@ jpmc26 Debería ser cualquier función hash criptográfica útil.
@ jpmc26 Se entiende comúnmente que una función hash criptográfica significa indistinguible de aleatoria, lo que implica preimagen y resistente a colisiones. Esto no se aplica a las funciones hash no criptográficas.

Las funciones hash son impredecibles.

No puede simplemente encontrar una entrada a la función hash que produzca tal salida. La única forma de lograrlo es probando montones y montones de bloques candidatos como entrada. Si el objetivo es 1000 veces más pequeño, requiere 1000 veces más intentos.

Comentario eliminado. Consulte la edición de la pregunta.