A maioria dos proprietários do Ledger Nano, em algum momento, começa a se perguntar se existe a possibilidade de personalizar sua frase de recuperação. Alguns podem ir ainda mais longe e tentar usar palavras escolhidas aleatoriamente durante o processo de recuperação. Nesses casos, depois de confirmar a última palavra, é quase certo que eles verão a mensagem:
"Recovery phrase is invalid, retry"
Isso significa que é impossível criar uma nova carteira com seu próprio conjunto de palavras personalizado?
Boas notícias: é perfeitamente possível, embora com certas limitações. Mas vamos começar do início.
A primeira restrição é o requisito de que todas as palavras estejam na lista padrão BIP39
(Proposta de melhoria do Bitcoin - número 39). Você pode descobrir exatamente o que são as propostas de melhoria do Bitcoin neste artigo da Wikipédia.
BIP39 nada mais é do que apenas um conjunto de 2.048 palavras, escolhidas de forma que as quatro primeiras letras de cada palavra sejam únicas. Esta regra se aplica até mesmo a palavras de três letras.
Essa propriedade torna mais fácil lembrá-los ao criar uma sequência de várias palavras, que é exatamente o que é sua frase de recuperação.
A segunda restrição é um requisito para a última palavra da sua sequência. É uma soma de verificação específica determinada por todos o resto dos elementos da sequência e você não pode simplesmente escolhê-lo por você mesmo. Esta é exatamente a razão pela qual vemos uma mensagem de erro, sempre que tentamos inserir palavras escolhidas aleatoriamente como uma frase de recuperação para nosso Ledger Nano. Normalmente, a condição da soma de verificação é atendida por mais de uma palavra; no entanto, a chance de encontrar um válido simplesmente adivinhando é incrivelmente pequena. O número de palavras que satisfazem a condição de soma de verificação está estritamente relacionado ao número total de palavras-frase de recuperação. No caso de uma frase de recuperação de 24 palavras (a opção mais segura), há sempre exatamente oito palavras possíveis que podem servir como soma de verificação. Assim, a chance de selecionar aleatoriamente um válido do conjunto BIP39 de 2.048 palavras é exatamente 8 em 2048, ou apenas 0,39%. Não é de admirar que você tenha visto uma mensagem de erro.
Então, como podemos encontrar a soma de verificação adequada para uma sequência de nossa própria escolha? Por exemplo, vamos pegar um conjunto aleatório de 23 palavras que estejam em conformidade com o padrão BIP39:
Cada palavra tem um índice, que é um número baseado em sua ordem alfabética. É importante iniciar a numeração a partir de 0. Cada índice deve então ser expresso como um valor binário. Como a lista BIP39 contém 2.048 elementos, cada índice de palavra deve consistir em 11 bits. Assim encontramos:
Na próxima etapa, concatenamos todos os índices, preservando sua ordem de aparição. Isso nos dá uma sequência binária de 253 bits:
O resultado obtido complementamos com 3 bits adicionais de nossa escolha.
Você se lembra de quando dissemos que a frase de recuperação de 24 palavras tem exatamente 8 resultados de soma de verificação possíveis?
O número 8 é apenas uma simples consequência desses 3 bits.
Todos os 8 resultados que obteremos simplesmente colocando aqui 000, 001, 010, 011, 100, 101, 110 e 111.
Para este exemplo escolhemos: 000.
Nós o concatenamos no final, o que resulta em uma palavra binária de 256 bits:
A próxima etapa é calcular o hash SHA256 desses dados binários preparados.
O algoritmo SHA256 (algoritmo de hash seguro, saída de 256 bits) é uma parte essencial da tecnologia blockchain.
Mais informações sobre o SHA256 podem ser encontradas no artigo da Wikipédia sobre o algoritmo SHA-256.
Como resultado desse cálculo, obtemos a seguinte palavra hexadecimal:
O próximo passo é extrair os primeiros 8 bits do resultado acima. Assim, pegamos os primeiros 2 caracteres hexadecimais - 27.
Eles correspondem a:
Mais uma vez, usamos os mesmos 3 bits que escolhemos antes. Desta vez, nós os concatenamos na frente da string binária extraída. Consequentemente, obtemos:
que é o valor binário 39. Este é um índice BIP39 da palavra de soma de verificação que estamos tentando encontrar. Não esqueça que a numeração do índice começa em '0'. Portanto, se você usar uma lista de palavras BIP39 com numeração padrão começando em '1', então, o número de índice real será 40. Encontramos o índice adequado no Lista BIP39 e obtemos a palavra: agent Por fim, a frase de recuperação de 24 palavras contendo 23 palavras de nossa escolha é:
Para as combinações restantes de 3 bits, a última palavra de soma de verificação é:


