Author

Topic: Tutorial - Como importar chaves privadas no Bitcoin Core com Descriptors (Read 58 times)

hero member
Activity: 1120
Merit: 540
Duelbits - Play for Free | Win for Real
Desde a versão 21 ou 22 do Bitcoin Core, algumas mudanças drásticas foram feitas no que é referente a geração de carteiras.

Antes de uma dessas versões acima, o Bitcoin Core gerava carteiras determinísticas BIP32 no Derivation Path: (m/0'/0') para os três tipos de scripts: legacy (pkh), p2sh-segwit (sh(wpkh)) e bech32 (wpkh). Ou seja, não usavam os caminhos padrão: (m/44'/0'/0'/0), (m/49'/0'/0'/0), (m/84'/0'/0'/0)...

Ou seja, ao gerar um novo endereço de recebimento no Bitcoin Core antes dessas versões, independentemente do endereço fornecido, os 3 tipos de endereços correspondiam a mesma chave privada e chave pública. Pra quem não sabe, uma mesma chave privada pode gerar todos os tipos de endereços, exemplo abaixo:





Caso você tivesse criado sua carteira antes dessas versões, você tinha uma carteira legada e podia importar chaves privadas com o comando: importprivkey "SuaChaveWIF" false (se não colocasse o false, o core varreria a blockchain inteira para buscar o seu saldo, o que podia levar horas).

Mas agora, caso você tenha criado sua carteira após as versões 21 ou 22 do Bitcoin Core, sua carteira tem um novo formato, é descritora, agora você não pode usar o comando importprivkey, dumpprivkey e outros... e caso sua carteira seja legada (achei uma sacanagem isso, mas disseram que isso é inseguro e por isso tiraram esse comando), você terá a opção para migrar para o novo formato (descritora), e como isso cria uma nova carteira e novas chaves privadas, você deve fazer um novo backup!

Importande mencionar que com o novo formato de carteira descritora, o Bitcoin Core gera chaves privadas nos Derivation Path padrão: bip44, 49, 84 e 86 para taproot. Isso significa que o Bitcoin Core agora segue os mesmos Derivation Path que 99% das carteiras como as Hardware wallets, mobile wallets e desktop wallets...

Expliquei o básico para que todos possam entender o funcionamento de uma carteira descritora, agora segue abaixo como importar uma chave privada (ou endereço) no Bitcoin Core:

Com o Bitcoin Core em funcionamento, abra o console e siga os passos:

1. No console, digite a senha da sua wallet (caso esteja protegida por senha) com
Code:
walletpassphrase "sua_senha" 600

O número 600 equivale a segundos que a sua carteira ficará destrancada, podia ser qualquer número, por exemplo, 1 minuto (60) e assim por diante.

2. Primeiro você deve digitar "getdescriptorinfo" seguido do tipo de script (endereço) que você quer que seja importado, como o "combo" para importar um combo de 3 endereços de uma vez que corresponde a mesma chave privada, esse comando é necessário para obter o checksum, exemplo abaixo:

Code:
getdescriptorinfo "combo(Kzh61t7Tuf8vP9i5P3qDvBNa2cXXRb7fXLvVywXHapbAMkHo7kRJ)"



A informação que precisamos é:"checksum": "6wfyq20z"

3. Digite: importdescriptors '[{"desc":"combo(Sua_Chave_WIF_Aqui)#Checksum_Aqui","timestamp":"now"}]'

Code:
importdescriptors '[{"desc":"combo(Kzh61t7Tuf8vP9i5P3qDvBNa2cXXRb7fXLvVywXHapbAMkHo7kRJ)#6wfyq20z","timestamp":"now"}]'



Depois disso, na Aba de Endereços de Recebimento, você verá os endereços importados juntos com o seu par de chaves:



Depois disso, caso essa chave já havia recebido algum saldo antes, você deve dar o comando rescanblockhain + o número do bloco que foi validado a transação + número de bloco para o Bitcoin Core parar o escaneamento. Exemplo, se eu recebi uma transação para esse endereço importado, e a transação foi validada no bloco 555555, basta dar o comando rescanblockchain e algum outro número de bloco aleatório para parar o escaneamento (caso contrário o core irá escanear até o número de blocos atual da sua blockchain), exemplo abaixo:

Code:
rescanblockchain 555555 555558

Até essa altura, caso a sua transação esteja incluída em um desses blocos especificados ao dar o comando acima, o saldo já terá sido atualizado na sua carteira, após o escaneamento.

Jump to: