Ir para o conteúdo principal

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ívelCampoHardenedDescrição
1PurposeSim (44')Identifica o padrão de derivação
2Coin TypeSimIdentifica a criptomoeda
3AccountSimSepara fundos em contas lógicas
4ChangeNão (0 ou 1)Externo (0) ou troco interno (1)
5Address IndexNã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:

MoedaCoin TypePrefixo do Caminho
Bitcoin0'm/44'/0'
Bitcoin Testnet1'm/44'/1'
Litecoin2'm/44'/2'
Dogecoin3'm/44'/3'
Ethereum60'm/44'/60'
Ethereum Classic61'm/44'/61'
Cosmos118'm/44'/118'
Solana501'm/44'/501'
Cardano1815'm/44'/1815'
Polkadot354'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 0
  • m/44'/0'/1' — Bitcoin Account 1
  • m/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 recebimento
  • m/44'/0'/0'/0/1 — Segundo endereço de recebimento
  • m/44'/0'/0'/0/2 — Terceiro endereço de recebimento
  • m/44'/0'/0'/1/0 — Primeiro endereço de troco
  • m/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ãoCaminhoTipo de EndereçoPrefixoExemplo
BIP-44m/44'/0'/0'Legado (P2PKH)1...1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
BIP-49m/49'/0'/0'SegWit-compat (P2SH-P2WPKH)3...3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
BIP-84m/84'/0'/0'SegWit nativo (P2WPKH)bc1q...bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4
BIP-86m/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:

  1. Comprometer a chave privada de um endereço (no nível não-hardened 5) não deve comprometer a conta.
  2. As contas devem ser isoladas entre si.
  3. 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á:

  1. Escanear o endereço 0 — tem transações, continuar.
  2. Escanear os endereços 1–4 — não usados, mas dentro do gap limit.
  3. Escanear o endereço 5 — tem transações, reiniciar o contador de gap.
  4. 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.

Ferramenta SafeSeed

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:

PrefixoPadrãoTipo de EndereçoRede
xpub / xprvBIP-44Legado (P2PKH)Mainnet
ypub / yprvBIP-49SegWit-compat (P2SH-P2WPKH)Mainnet
zpub / zprvBIP-84SegWit nativo (P2WPKH)Mainnet
tpub / tprvBIP-44Legado (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:

  1. 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.
  2. Coin type errado — Algumas carteiras usaram coin type 0 para todas as moedas em implementações antigas.
  3. Account errada — Você pode ter usado a account 1 ou superior.
  4. Gap limit — Seus endereços usados estavam além do gap limit padrão de 20.
  5. 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:

  1. Verifique se a carteira suporta BIP-39.
  2. Selecione o tipo de endereço correto (Legacy, SegWit ou Taproot).
  3. Verifique se o caminho de derivação corresponde ao da carteira original.
  4. Aumente o gap limit se você usou muitos endereços.
  5. 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.

Guias Relacionados