Chaves Estendidas
Chaves que podem derivar novas chaves em uma carteira HD
BIP 32
Uma chave estendida (extended key) é uma chave privada ou pública que pode ser usada para derivar novas chaves em uma carteira HD.
Você pode ter uma única chave privada estendida e usá-la como fonte para todas as chaves privadas e chaves públicas filhas da sua carteira. Além disso, uma chave privada estendida tem uma chave pública estendida correspondente, que pode gerar apenas as chaves públicas filhas.
Chave Estendida Mestra
A chave estendida mestra é a primeira chave estendida da carteira. Ela é criada passando a seed pela função HMAC-SHA512 (com a chave "Bitcoin seed"). A função retorna 64 bytes, que dividimos em duas metades:
- Os primeiros 32 bytes são a chave privada mestra.
- Os últimos 32 bytes são o código de cadeia (chain code), uma entropia extra usada na derivação das chaves filhas.
Juntos, a chave privada + o código de cadeia (mais alguns metadados) formam a chave privada estendida (xprv).
HMAC-SHA512
Derivação de Chave Filha
Para derivar uma chave filha, você passa a chave pai + o código de cadeia + um índice (número da filha) pela HMAC-SHA512. O resultado é usado para criar a chave filha e o código de cadeia filho. Mudando o índice, você obtém filhas diferentes.
Derivação Normal vs. Endurecida (Hardened)
Há dois tipos de derivação:
- Normal (índices 0 a 2³¹−1): pode ser feita a partir da chave pública estendida (permite gerar endereços sem a chave privada).
- Endurecida (índices 2³¹ a 2³²−1, anotada com
'): exige a chave privada. É mais segura, pois impede que o vazamento de uma chave pública estendida + uma chave privada filha comprometa o pai.
Endereço da Chave Estendida
A partir de qualquer chave estendida, você pode derivar a chave pública filha e, dela, um endereço: