Caminhos de Derivação BIP-44: Como Carteiras Geram Endereços
Quando você configura uma carteira de criptomoedas e ela gera uma frase-semente, essa única semente precisa produzir milhares de endereços em dezenas de blockchains diferentes — cada um com sua própria chave privada, chave pública e formato de endereço. O BIP-44 define a estrutura organizacional que torna isso possível: uma árvore hierárquica de chaves derivadas de uma única raiz, com uma notação de caminho padronizada que garante interoperabilidade entre carteiras.
Entender caminhos de derivação é essencial para quem precisa recuperar fundos em outra carteira, gerenciar portfólios com múltiplas moedas ou solucionar saldos "ausentes" após restaurar uma frase-semente.
A Hierarquia de Derivação de Chaves
BIP-32: A Base
O BIP-44 se baseia no BIP-32 (Hierarchical Deterministic Wallets), que define um método para derivar uma árvore ilimitada de pares de chaves a partir de uma única chave mestra. O BIP-32 introduziu dois conceitos fundamentais:
Derivação de chave filha — A partir de qualquer chave estendida (uma chave privada ou pública combinada com um chain code), você pode derivar chaves filhas em vários índices. Cada filha pode, por sua vez, derivar suas próprias filhas, criando uma árvore.
Derivação hardened vs. normal — A derivação normal permite derivar chaves públicas filhas a partir de uma chave pública pai (útil para carteiras somente leitura). A derivação hardened exige a chave privada pai e fornece isolamento de segurança mais forte entre ramificações. Índices hardened são convencionalmente escritos com apóstrofo (por exemplo, 44').
BIP-43: Campo Purpose
O BIP-43 estabeleceu a convenção de usar o primeiro nível da árvore de derivação para indicar o "purpose" — basicamente o padrão BIP seguido. O BIP-44 usa purpose 44', o BIP-49 usa 49' (para endereços P2SH compatíveis com SegWit), o BIP-84 usa 84' (para SegWit nativo) e o BIP-86 usa 86' (para Taproot).
BIP-44: O Caminho Completo
O BIP-44 define um caminho de derivação de cinco níveis:
m / purpose' / coin_type' / account' / change / address_index
Cada nível tem um significado específico:
| Nível | Campo | Hardened | Descrição |
|---|---|---|---|
| 1 | Purpose | Sim (44') | Identifica o padrão de derivação |
| 2 | Coin Type | Sim | Identifica a criptomoeda |
| 3 | Account | Sim | Separa fundos em contas lógicas |
| 4 | Change | Não (0 ou 1) | Externo (0) ou troco interno (1) |
| 5 | Address Index | Não (0, 1, 2...) | Número sequencial do endereço |
Purpose (44')
O campo purpose é sempre 44' para derivação padrão BIP-44. Outros valores comuns:
49'— BIP-49 (SegWit encapsulado em P2SH)84'— BIP-84 (SegWit nativo / Bech32)86'— BIP-86 (Taproot / P2TR)
Eles definem diferentes tipos de endereço e são explicados em seus respectivos BIPs.
Coin Type
O coin type identifica a qual criptomoeda as chaves derivadas pertencem. Tipos de moeda registrados incluem:
| Moeda | Coin Type | Prefixo do Caminho |
|---|---|---|
| Bitcoin | 0' | m/44'/0' |
| Bitcoin Testnet | 1' | m/44'/1' |
| Litecoin | 2' | m/44'/2' |
| Dogecoin | 3' | m/44'/3' |
| Ethereum | 60' | m/44'/60' |
| Ethereum Classic | 61' | m/44'/61' |
| Cosmos | 118' | m/44'/118' |
| Solana | 501' | m/44'/501' |
| Cardano | 1815' | m/44'/1815' |
| Polkadot | 354' | m/44'/354' |
O registro completo de coin types é mantido em SLIP-44 e contém mais de 1.000 entradas.
Account
O nível account permite que usuários criem contas lógicas separadas dentro da mesma carteira, parecido com ter várias contas bancárias. A account 0' é a padrão:
m/44'/0'/0'— Bitcoin Account 0m/44'/0'/1'— Bitcoin Account 1m/44'/60'/0'— Ethereum Account 0
As contas usam derivação hardened, o que significa que conhecer a chave pública estendida de uma conta não revela as chaves de outra conta. Isso fornece isolamento de privacidade entre contas.
Change
O nível change distingue entre:
- 0 (Cadeia externa) — Endereços fornecidos a outras pessoas para receber pagamentos.
- 1 (Cadeia interna) — Endereços usados internamente pela carteira para devolver troco para você.
No modelo UTXO do Bitcoin, quando você gasta uma saída de transação, a saída inteira precisa ser consumida. Se você estiver enviando 0,5 BTC a partir de uma saída de 1 BTC, os 0,5 BTC restantes são enviados para um endereço de troco controlado pela sua carteira. A cadeia de troco mantém esses endereços separados dos endereços de recebimento por motivos organizacionais e de privacidade.
Ethereum e outras blockchains baseadas em conta não usam a cadeia de troco da mesma forma, pois não têm modelo UTXO. Carteiras Ethereum normalmente usam apenas a cadeia externa (change = 0).
Address Index
O address index é o número sequencial do endereço dentro de uma cadeia. As carteiras incrementam esse contador cada vez que um novo endereço é gerado:
m/44'/0'/0'/0/0— Primeiro endereço de recebimentom/44'/0'/0'/0/1— Segundo endereço de recebimentom/44'/0'/0'/0/2— Terceiro endereço de recebimentom/44'/0'/0'/1/0— Primeiro endereço de trocom/44'/0'/0'/1/1— Segundo endereço de troco
Caminhos de Derivação para Principais Criptomoedas
Bitcoin
Bitcoin usa múltiplos caminhos de derivação correspondentes a diferentes tipos de endereço:
| Padrão | Caminho | Tipo de Endereço | Prefixo | Exemplo |
|---|---|---|---|---|
| BIP-44 | m/44'/0'/0' | Legado (P2PKH) | 1... | 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa |
| BIP-49 | m/49'/0'/0' | SegWit-compat (P2SH-P2WPKH) | 3... | 3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy |
| BIP-84 | m/84'/0'/0' | SegWit nativo (P2WPKH) | bc1q... | bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4 |
| BIP-86 | m/86'/0'/0' | Taproot (P2TR) | bc1p... | bc1p5d7rjq7g6rdk2yhzks9smlaqtedr4dekq08ge8ztwac72sfr9rusxg3297 |
Importante para recuperação: Se você restaurar uma frase-semente em uma nova carteira e não vir seu saldo, a carteira pode estar escaneando um caminho de derivação diferente do usado pela carteira original. Tente alternar entre tipos de endereço Legacy, SegWit e Taproot, ou especifique manualmente o caminho de derivação.
Ethereum
Ethereum normalmente usa um único caminho de derivação:
m/44'/60'/0'/0/0 — First account
m/44'/60'/0'/0/1 — Second account (some wallets)
No entanto, algumas carteiras (como Ledger Live) derivam várias contas no nível account:
m/44'/60'/0'/0/0 — Account 0
m/44'/60'/1'/0/0 — Account 1
m/44'/60'/2'/0/0 — Account 2
Enquanto outras (como MetaMask) incrementam o address index:
m/44'/60'/0'/0/0 — Account 1
m/44'/60'/0'/0/1 — Account 2
m/44'/60'/0'/0/2 — Account 3
Essa inconsistência pode causar confusão durante a recuperação. Sempre anote qual software de carteira criou sua frase-semente.
Solana
Solana usa Ed25519 (uma curva elíptica diferente da secp256k1) com o caminho:
m/44'/501'/0' — Phantom, Solflare
m/44'/501'/0'/0' — Some implementations
Cardano
Cardano usa um esquema diferente de derivação de chaves (Ed25519-BIP32 / CIP-1852) com o caminho:
m/1852'/1815'/0'/0/0 — First payment address
m/1852'/1815'/0'/2/0 — First staking key
Observe o campo purpose 1852' (CIP-1852, nomeado em referência ao ano de nascimento de Ada Lovelace) em vez de 44'.
Derivação Hardened vs. Normal
Entender a diferença entre derivação hardened e normal é crucial para segurança.
Derivação Normal (Não-Hardened)
- Usa índices de 0 até 2^31 - 1.
- Chaves públicas filhas podem ser derivadas da chave pública estendida pai sem a chave privada pai.
- Vantagem: Permite carteiras somente leitura (por exemplo, um servidor pode gerar novos endereços de recebimento usando apenas o xpub, sem nunca manter chaves privadas).
- Risco: Se um invasor obtiver uma chave privada filha E a chave pública estendida pai, ele pode calcular a chave privada pai e todas as chaves privadas irmãs.
Derivação Hardened
- Usa índices de 2^31 até 2^32 - 1 (escritos como 0' até 2^31 - 1').
- Exige a chave privada estendida pai para derivar chaves filhas.
- Vantagem: Comprometer uma chave filha não compromete a pai nem as irmãs.
- Risco: Não é possível derivar chaves públicas filhas apenas da chave pública estendida pai (sem funcionalidade somente leitura nesse nível).
Por Que o BIP-44 Usa Derivação Hardened nos Três Primeiros Níveis
Purpose, coin type e account são todos hardened (44'/0'/0') porque:
- Comprometer a chave privada de um endereço (no nível não-hardened 5) não deve comprometer a conta.
- As contas devem ser isoladas entre si.
- Moedas diferentes devem ser isoladas entre si.
Os níveis change e address index são não-hardened (0/0) para permitir que carteiras somente leitura gerem endereços de recebimento sem a chave privada mestra.
O Limite de Gap
Carteiras não escaneiam um número infinito de endereços. A especificação BIP-44 introduz o conceito de "gap limit" — o número de endereços consecutivos não usados que uma carteira escaneará antes de parar. O gap limit padrão é 20.
Se você gerou endereços de 0 a 25, mas apenas os endereços 0, 5, 10 e 25 receberam fundos, a carteira irá:
- Escanear o endereço 0 — tem transações, continuar.
- Escanear os endereços 1–4 — não usados, mas dentro do gap limit.
- Escanear o endereço 5 — tem transações, reiniciar o contador de gap.
- Continuar até encontrar 20 endereços consecutivos sem transações.
Problema: Se você gerou muitos endereços além do gap limit (comum em processadores de pagamento para comerciantes), uma restauração de carteira pode não encontrar todos os seus fundos. Você pode precisar aumentar o gap limit nas configurações da carteira durante a recuperação.
Use a SafeSeed Key Derivation Tool para explorar caminhos de derivação BIP-44 de forma interativa. Insira uma frase-semente (use uma frase de teste, não a sua real) e veja como diferentes caminhos de derivação produzem endereços diferentes para moedas diferentes. Todo o processamento acontece no seu navegador.
Chaves Estendidas: xpub, ypub, zpub
Chaves estendidas codificam o material da chave junto com metadados sobre o caminho de derivação:
| Prefixo | Padrão | Tipo de Endereço | Rede |
|---|---|---|---|
| xpub / xprv | BIP-44 | Legado (P2PKH) | Mainnet |
| ypub / yprv | BIP-49 | SegWit-compat (P2SH-P2WPKH) | Mainnet |
| zpub / zprv | BIP-84 | SegWit nativo (P2WPKH) | Mainnet |
| tpub / tprv | BIP-44 | Legado (P2PKH) | Testnet |
O prefixo informa ao software da carteira qual tipo de endereço derivar. Se você exportar um xpub e importá-lo em uma carteira que espera um zpub, verá endereços diferentes (incorretos).
Aviso de Privacidade da Chave Pública Estendida
Compartilhar um xpub (ou ypub/zpub) permite que o destinatário:
- Derive todos os endereços de recebimento passados e futuros.
- Acompanhe seu histórico completo de transações e saldo.
- Vincule seus endereços entre si, destruindo os benefícios de privacidade de usar um novo endereço por transação.
Nunca compartilhe chaves públicas estendidas, exceto com partes em quem você confia totalmente para sua privacidade financeira (por exemplo, seu contador, uma carteira somente leitura no seu próprio servidor).
Problemas Comuns de Caminho de Derivação
"Restaurei minha frase-semente, mas meu saldo aparece como zero"
Este é o problema mais comum de caminho de derivação. Causas possíveis:
- Tipo de endereço errado — Você usou endereços SegWit (BIP-84,
m/84'/0'/0'), mas a nova carteira está escaneando caminhos Legacy (BIP-44,m/44'/0'/0'). Troque o tipo de endereço. - Coin type errado — Algumas carteiras usaram coin type 0 para todas as moedas em implementações antigas.
- Account errada — Você pode ter usado a account 1 ou superior.
- Gap limit — Seus endereços usados estavam além do gap limit padrão de 20.
- Caminho de derivação personalizado — Algumas carteiras usam caminhos não padronizados.
"Minhas duas carteiras mostram endereços diferentes com a mesma frase-semente"
Se duas carteiras geram endereços diferentes a partir da mesma frase-semente, elas estão usando caminhos de derivação ou tipos de endereço diferentes. Verifique as configurações de derivação em ambas as carteiras.
Checklist de Recuperação
Ao restaurar uma carteira a partir de uma frase-semente:
- Verifique se a carteira suporta BIP-39.
- Selecione o tipo de endereço correto (Legacy, SegWit ou Taproot).
- Verifique se o caminho de derivação corresponde ao da carteira original.
- Aumente o gap limit se você usou muitos endereços.
- Verifique todas as accounts (não apenas a account 0) se você criou múltiplas accounts.
Avançado: Caminhos de Derivação Personalizados
Alguns casos de uso avançados exigem caminhos de derivação personalizados:
- Configurações multi-assinatura — BIP-48 define caminhos de derivação para carteiras multisig:
m/48'/0'/0'/2'(para multisig SegWit nativo). - Lightning Network — Algumas implementações de Lightning usam caminhos de derivação personalizados para chaves de canal.
- Carteiras de privacidade — Wasabi e outras carteiras focadas em privacidade podem usar caminhos específicos.
Sempre documente os caminhos de derivação que você usa. Se você não conseguir reconstruir o caminho exato, não conseguirá recuperar os fundos.
FAQ
O que é um caminho de derivação em criptomoedas?
Um caminho de derivação é uma notação estruturada que especifica como derivar uma chave ou endereço específico a partir de uma semente mestra em uma carteira determinística hierárquica (HD Wallet). Ele segue o formato m/purpose'/coin_type'/account'/change/address_index, no qual cada nível restringe para uma chave específica na árvore de derivação.
Por que criptomoedas diferentes usam coin types diferentes?
Coin types diferentes garantem que a mesma frase-semente produza chaves separadas e não relacionadas para cada blockchain. Isso evita interferência acidental entre cadeias e garante que o comprometimento de chaves em uma cadeia não afete chaves em outra.
Posso usar a mesma frase-semente para Bitcoin e Ethereum?
Sim. A mesma frase-semente BIP-39 pode derivar chaves tanto para Bitcoin quanto para Ethereum (e muitas outras criptomoedas). Eles usam caminhos de derivação diferentes — Bitcoin em m/44'/0'/0' e Ethereum em m/44'/60'/0' — então as chaves e endereços derivados são completamente independentes.
O que significa o apóstrofo (') nos caminhos de derivação?
O apóstrofo indica derivação hardened. A derivação hardened exige a chave privada pai e fornece isolamento de segurança mais forte: comprometer uma chave filha não revela a chave pai nem as chaves irmãs. Níveis não-hardened (sem apóstrofo) permitem derivação de chave pública filha a partir de uma chave pública pai.
Por que minha carteira mostra saldo zero após restaurar uma frase-semente?
A causa mais comum é incompatibilidade de caminho de derivação. Sua carteira original pode ter usado um tipo de endereço diferente (Legacy vs. SegWit vs. Taproot), e cada um usa um caminho de derivação diferente. Tente alternar os tipos de endereço na carteira de recuperação ou especifique manualmente o caminho de derivação usado pela sua carteira original.
O que é o gap limit e por que ele importa?
O gap limit é o número de endereços consecutivos não usados que uma carteira escaneia antes de presumir que não há mais endereços usados. O padrão BIP-44 define isso em 20. Se você gerou muitos endereços (por exemplo, para um comerciante que aceita pagamentos), alguns endereços com fundos podem estar além do gap limit e invisíveis durante a recuperação. Aumente o gap limit nas configurações da carteira para encontrá-los.
Todas as carteiras usam BIP-44?
A maioria das carteiras modernas suporta BIP-44 ou seus sucessores (BIP-49, BIP-84, BIP-86). No entanto, algumas carteiras usam caminhos de derivação proprietários. O Electrum, por exemplo, usa seu próprio esquema mnemônico e de derivação. Sempre documente qual carteira criou sua frase-semente e quais caminhos de derivação ela usa.