Ferramenta de frase mnemônica BIP-39
Gere, valide e converta frases mnemônicas BIP-39 (12–24 palavras) — entropia, checksum e derivação de seed, apenas wordlist em inglês. No navegador, só para aprender e testar.
Ferramenta de frase mnemônica BIP-39
Gerado e checado totalmente no seu navegador com crypto.getRandomValues — nada é enviado. Apenas wordlist em inglês.
What next?
FAQ
Dá para usar uma frase gerada aqui numa carteira com dinheiro de verdade?
Não, de jeito nenhum. Isso não é um aviso de formalidade — é a coisa mais importante desta página inteira. Uma frase semente gerada em qualquer aba de navegador, incluindo esta, existe — mesmo que brevemente — na memória daquela aba, pode ficar visível para uma extensão maliciosa do navegador, e pode ser capturada por malware que monitora a área de transferência no exato momento em que você copia. A frase de uma carteira real deve ser gerada no próprio hardware da carteira, ou num dispositivo air-gapped que nunca tenha tocado a internet — nunca num computador comum com o navegador aberto em dezenas de outros sites. Esta ferramenta existe para você entender como o BIP-39 funciona — ver um checksum real falhar, ver entropia virar palavras — não para produzir uma frase para a qual você depois manda fundos de verdade. Trate tudo que for gerado aqui como já comprometido desde o instante em que aparece na tela.
De onde vem a entropia (aleatoriedade) da frase gerada?
De crypto.getRandomValues — a API de aleatoriedade criptográfica disponível em qualquer navegador moderno — através da função randomBytes da biblioteca @noble/hashes. Um detalhe que vale notar: essa função lança um erro se crypto.getRandomValues não estiver disponível, em vez de cair silenciosamente para Math.random, uma fonte de aleatoriedade que não é forte o bastante para uso criptográfico. Em outras palavras, a ferramenta prefere falhar e parar a gerar uma frase que parece aleatória mas na verdade é previsível. A biblioteca de base @scure/bip39 foi escolhida em vez do pacote bip39 mais antigo por um motivo relacionado: o pacote antigo precisa de um shim simulando um Buffer global que não existe no navegador, enquanto o @scure/bip39 é escrito diretamente para o navegador com Uint8Array, sem nenhum efeito colateral global.
Por que só existe wordlist em inglês, e uma frase válida em francês ou japonês é marcada como inválida?
O padrão BIP-39 de fato define wordlists para chinês (simplificado e tradicional), tcheco, francês, italiano, japonês, coreano, português e espanhol, cada uma com suas próprias 2048 palavras e seus próprios cuidados de normalização Unicode — por exemplo, frases em japonês juntam as palavras com um espaço ideográfico, não um espaço comum, um detalhe fácil de passar batido se não for tratado explicitamente. A versão atual desta ferramenta implementa só a wordlist em inglês — suportar as outras corretamente significa testar os casos extremos de normalização de cada alfabeto, um trabalho real que ainda não foi feito nesta versão. Se você tem uma frase de outra wordlist, a validação de checksum e a conversão para entropia aqui não vão reconhecê-la como válida, mesmo que ela esteja completamente correta na sua própria lista.
O que realmente diferencia uma frase de 12 palavras de uma de 24?
O número de palavras é uma função direta de quantos bits de entropia entraram: o BIP-39 anexa um checksum igual a bits_de_entropia / 32 antes de dividir tudo em blocos de 11 bits, um por palavra. 128 bits de entropia (16 bytes) mais o checksum de 4 bits dão 132 bits, exatamente 12 palavras de 11 bits cada; 256 bits (32 bytes) mais o checksum de 8 bits dão 264 bits, exatamente 24 palavras. Não existe opção de 13 ou 20 palavras porque essas quantidades de bits não dividem certinho por 11 numa proporção de checksum válida — só 12, 15, 18, 21 e 24 palavras correspondem a tamanhos de entropia válidos (128, 160, 192, 224, 256 bits). Mais palavras significa mais entropia e mais combinações para tentar por força bruta, embora mesmo 12 palavras (128 bits) já esteja muito além do que é praticamente buscável hoje.
Por que checar uma frase com todas as palavras certas da lista ainda assim diz "inválida"?
Cada palavra existir na lista é necessário, mas não suficiente — a última palavra (ou os últimos bits dela, dependendo da quantidade de palavras) codifica um checksum calculado a partir de um hash SHA-256 da entropia anterior, e esse checksum precisa bater exatamente. Isso é proposital: pega o erro mais comum na prática, um erro de digitação ou uma palavra ouvida errada quando a frase é copiada à mão ou ditada em voz alta. Trocar qualquer palavra por outra válida da lista, ou inverter a ordem de duas palavras, quase certamente quebra o checksum — é exatamente para isso que ele existe. Se sua frase falhar na validação aqui, a solução não é chutar palavras parecidas — volte ao lugar onde a frase foi anotada e confira cada palavra e a ordem exata, de preferência lendo direto da lista numerada em vez de confiar na memória.
Qual a diferença entre a "seed" derivada aqui e o próprio mnemônico?
O mnemônico (as palavras em si) é só uma codificação amigável de entropia bruta, feita para ser fácil de anotar e ler de volta sem erro. A seed é um valor completamente diferente, de 64 bytes, produzido ao passar o mnemônico (mais uma passphrase opcional) por PBKDF2 com 2048 rodadas de HMAC-SHA512, e é a seed — não as palavras — que de fato alimenta o BIP-32 para derivar toda uma árvore hierárquica de chaves privadas para cada endereço que uma carteira gerencia. Esse design em duas etapas existe em parte para permitir uma passphrase opcional, que o BIP-39 chama de "25ª palavra": as mesmas 12 ou 24 palavras com uma passphrase diferente produzem uma seed completamente diferente, e portanto um conjunto de endereços completamente diferente — um recurso útil de "carteira oculta", mas também uma causa comum de chamados de suporte do tipo "meus fundos sumiram" quando alguém esquece que tinha configurado uma. Esta ferramenta vai só até o passo da seed e para por aí; derivar chaves e endereços reais para uma moeda específica é uma etapa BIP-32/BIP-44 separada, que esta ferramenta não realiza.
More web3 tools
- Verificador de endereços de carteira — Valida endereços de Ethereum (EIP-55), Bitcoin (legacy/segwit/bech32) e Solana.
- Conversor ETH ↔ Wei ↔ Gwei — Converte entre unidades do Ethereum (wei, gwei, ether etc.