Derivation Path é a sequência exata de passos usada para derivar uma chave concreta a partir de uma chave inicial. Pense nas pastas de um computador: ter o disco certo não basta se abrir as pastas erradas. As chaves, porém, são calculadas matematicamente, não procuradas em ficheiros guardados. Os mesmos dados iniciais e o mesmo caminho produzem o mesmo resultado. Outro caminho pode levar a outra parte da mesma carteira. Não é um endereço de pagamento, uma palavra-passe nem um substituto da cópia de segurança.
Anna está a recuperar a carteira quando o programa pede um caminho em que nunca precisou de pensar. Uma carteira é uma aplicação ou um dispositivo para receber e enviar bitcoins. m/0/7 parece complicado, mas lê-se por ordem: m é o nó privado mestre, do qual se deriva a chave 0 e depois a chave 7 a partir desta. Aqui, nó significa uma posição na árvore de chaves, não um computador da rede Bitcoin. Os números são índices, posições na sequência, não montantes ou números de transação. O padrão BIP 32 usa uma chave estendida que inclui, além da chave, um chain code: dados adicionais para derivar outras chaves. O caminho escrito sem a chave inicial não permite, por isso, assinar um pagamento. [1] [10]
Consideremos m/84'/0'/0'/0/7. A primeira parte após m identifica BIP 84 para SegWit nativo, uma forma de construir endereços e gastar fundos. Seguem-se Bitcoin mainnet, a rede principal com bitcoins reais, conta 0, ramo externo de recebimento 0 e índice 7. É a oitava posição de endereço, porque a contagem começa em zero. A conta separa um grupo de fundos; o ramo indica a finalidade dos endereços. Na estrutura BIP 44, o ramo 1 destina-se ao troco próprio, o montante que fica com o remetente depois do pagamento. Os três primeiros passos têm apóstrofo e são hardened; os dois últimos são normais. O que muda com essa marca? [2] [5]
Uma chave privada é um valor numérico secreto que a carteira usa para criar uma assinatura digital que autoriza um gasto. Hardened identifica uma derivação que exige a chave privada do elemento pai. Um passo normal permite obter uma chave pública derivada de um xpub, uma chave pública estendida. Com o tipo de script adequado, podem construir-se endereços sem poder assinar pagamentos. Um xpub sozinho não atravessa um passo hardened. Segundo BIP 380, 0' e 0h significam o mesmo, não o 0 normal. Para leitores técnicos: BIP 32 divide os índices de 32 bits entre normais de 0 a 2^31−1 e hardened de 2^31 a 2^32−1; a marca transforma zero no índice 2^31. Omiti-la muda o cálculo, não apenas o aspeto do caminho. [1] [7] [10]
BIP 43 chama purpose ao primeiro nível hardened: a finalidade da organização. Valores acordados ajudam as carteiras a perceber o uso habitual do ramo. Como referência, 44' identifica P2PKH tradicional, um pagamento protegido pelo hash de uma chave pública; 49' identifica P2SH-P2WPKH, SegWit num invólucro anterior para compatibilidade; 84' identifica P2WPKH nativo; e 86' identifica single-key P2TR, uma construção Taproot com uma chave interna. São maneiras diferentes de definir as condições de gasto. O número sozinho não transforma o caminho no script correspondente nem o impõe pelo consenso da rede. O programa tem de construir a saída correta. Nem todas as carteiras usam estas convenções. [3] [2] [4] [5] [6]
Anna pode ligar apenas o xpub de uma conta para acompanhar entradas, em vez da carteira inteira. Se vem de m/84'/0'/0', já está ao nível da conta. Para chegar ao exemplo anterior falta apenas o sufixo relativo /0/7. Acrescentar novamente todo o caminho da raiz iniciaria outra derivação a partir do lugar errado; além disso, os passos hardened não podem ser feitos com um xpub. A chave estendida exportada inclui a profundidade na árvore e o fingerprint do pai, uma identificação curta, mas não o registo completo dos passos anteriores. Por isso, o caminho original em falta nem sempre pode ser lido diretamente no próprio xpub. [1] [7]
Um Descriptor descreve as chaves e condições de gasto com que o programa constrói as saídas acompanhadas. BIP 380 permite indicar, entre colchetes antes da chave, o fingerprint e o caminho da sua origem. Esses passos já foram executados. O sufixo depois da chave indica a derivação seguinte; um asterisco * pode representar uma série de descendentes. O fingerprint tem quatro bytes e pode colidir: chaves diferentes podem ter a mesma identificação curta. Não prova identidade nem substitui a chave. Bitcoin Core 29.0 oferece deriveaddresses através de RPC, a interface de programação do nó. Calcula endereços de um descriptor e do intervalo indicado, se houver; só esse cálculo não consulta saldos nem envia fundos. [7] [1] [9]
O caminho sozinho não produz as suas chaves sem os dados iniciais. Partilhar um xpub é diferente: quem o recebe pode derivar chaves públicas do ramo acessível e, com o tipo de script adequado, acompanhar os seus endereços. Não ganha autorização para gastar, mas a privacidade pode sofrer. BIP 32 alerta ainda para um risco menos evidente: o xpub do nível superior, combinado com uma chave privada descendente exposta e alcançável por passos normais, pode revelar a chave privada estendida desse nível. Uma fronteira hardened bloqueia essa via específica de regresso. Não invalida a chave exposta nem salva os fundos que ela controla. [1]
Voltemos à recuperação. Seed Phrase são as palavras da cópia de segurança. Segundo BIP 39, essas palavras e uma passphrase opcional produzem a seed, o segredo inicial para gerar chaves. A passphrase é texto secreto adicional, não a palavra-passe habitual da aplicação. Com outra seed, o mesmo caminho leva a outras chaves. Rede, conta, ramo e tipo de script também têm de coincidir. O programa deve pesquisar endereços e histórico suficientes: Gap Limit interrompe a pesquisa após uma sequência de endereços sem uso. Um saldo zero, por si só, não prova a perda das chaves. Anna pode comparar com um endereço conhecido e pagamentos anteriores. Aceitar o caminho apenas demonstra que o programa o consegue processar, não que encontrou toda a carteira original. [8] [2] [7]
Para ter uma visão mais completa, leia este verbete junto com HD Wallet, Extended Public Key (xpub), Gap Limit, Output Descriptor, BIP 39, Seed Phrase. Também há referências a este verbete em HD Wallet, Watch-only Wallet, Change Address, Extended Public Key (xpub).