A prova de trabalho do sistema Bitcoin consiste em encontrar número hash menor que o número hash alvo (target_hash) definido pelo próprio sistema.

Para encontrar esse cobiçado número hash, o minerador deve executar uma função que lê o hash do último bloco da blockchain juntamente com um texto de milhares de novas transações e calcula o número hash dessas informações.

Se esse número hash for menor que o target_hash, então o minerador grava o novo bloco na blockchain e informa o resultado aos demais mineradores da rede bitcoin, caso contrário deve-se associar ao hash calculado, um número aleatório e então calcular um novo hash até conseguir obter número hash de valor menor que o target_hash.

O target_hash da rede bitcoin é definido em função da quantidade de novos blocos criados nas duas últimas semanas. Se essa quantidade for maior que 2016 blocos, então aumenta-se a dificuldade para as próximas duas semanas, caso contrário o sistema reduz o dificuldade. Por exemplo, digamos que a dificuldade seja 50 e a quantidade de novos blocos seja igual 2130, então a nova dificuldade será igual (50*(2130/2016)). Simples assim.