El protocolo Bitcoin hace un uso extensivo de la llamada función hash para agregar nuevos bloques a la cadena de bloques a través del proceso de minería.
Generalmente, desde un punto de vista técnico, una función hash es un algoritmo que, a partir de datos de longitud arbitraria, produce un hash de longitud fija. Este hash es un código hexadecimal que representa el paquete de datos original utilizado para generarlo y generalmente es mucho más corto en longitud.
El uso principal de esta función es crear un código sintético relativamente corto que represente un paquete de datos mucho más grande. Teniendo en cuenta que este proceso, si se realiza de esta manera, inevitablemente implica una cierta pérdida de datos, es de hecho irreversible, el hash no se puede rastrear hasta el paquete de datos utilizado para generarlo.
El algoritmo utilizado por Bitcoin para la función hash es SHA-256, que produce un hash de 256 bits y requiere una cantidad predecible de potencia de procesamiento de la computadora.
Para agregar un nuevo bloque a la cadena de bloques de Bitcoin, se utiliza un paquete de datos de transacciones en cola en el mempool que espera ser confirmado como entrada para la función hash.
Sin embargo, el trabajo del minero no es solo producir el hash de esta entrada, sino producir un hash que comience con varios ceros adicionales y que coincida con el paquete de datos de entrada.
De hecho, aunque el hash no se puede rastrear hasta los datos que lo generaron, siempre es posible repetir la operación para verificar que se realizó correctamente. De esta manera, dado que todos los datos de transacciones ingresados en el bloque son públicos, cualquiera puede verificar con SHA-256 que el hash producido por el minero es correcto. Solo si es correcto, el hash se agregará a la cadena de bloques y el minero recibirá la recompensa.
Función hash y dificultad de minería
El número de ceros adicionales se cambia cada dos semanas más o menos y corresponde a la llamada dificultad: cuantos más ceros se necesiten, más difícil será encontrar el hash, más tardará.
Para encontrar el hash con los ceros adicionales, el minero solo puede proceder por prueba y error, razón por la cual la potencia de computación juega un papel clave en el proceso de minería.
Dado que cada bloque puede ser extraído por un solo minero, y dado que la recompensa se otorga solo al minero que puede encontrar el hash que confirma el bloque, esto genera una competencia en la que el minero con la mayor potencia informática tiene la mayor ventaja.
Además, incluso el cambio más pequeño en los datos de entrada produce un hash completamente diferente, por lo que la única forma de proceder es procesar tantos hashes como sea posible en el menor tiempo posible, ejecutando la función hash muchas veces por segundo.
Por ejemplo, un hashrate de 130 Exahash/s significa que las máquinas que están tratando de extraer bloques de Bitcoin en todo el mundo realizan un total de 130 funciones de Exahash por segundo, o 130 millones de millones (o 130 billones de millones).
El protocolo Bitcoin también usa la función hash para generar el hash de una transacción, que es el identificador único utilizado para identificar cada transacción individual.