Pular para o conteúdo
buybitcoinsmart

Glossário / Endereços e chaves

Derivação BIP-84

O que é a derivação BIP-84?
A derivação BIP-84 é o esquema que fixa o nível de propósito de um caminho BIP-32 em 84', de modo que uma única frase de recuperação produz endereços nativos SegWit bc1q usando o encapsulamento P2WPKH do BIP-141.

Especificação no BIP-84.

O BIP-84 reutiliza o layout de cinco níveis do BIP-44 e muda apenas o valor de propósito. Ele foi atribuído em 28 de dezembro de 2017 e associa cada conta a uma chave estendida zpub cujos bytes de versão são 0x04b24746. Para você, ele decide se uma frase de recuperação restaurada encontra seu saldo bc1q ou relata uma carteira vazia.

Como funciona

O BIP-84 faz duas coisas, e a primeira é fixar um número dentro de um caminho. As chaves pendem do esqueleto que o BIP-44 introduziu, escrito m / purpose' / coin_type' / account' / change / address_index, e o único nível que esta especificação reivindica como seu é o propósito, fixado em 84'. O tipo de moeda, a conta, o troco e o índice de endereço mantêm os significados que o BIP-44 e o BIP-49 já lhes deram, e o autor, Pavol Rusnak, reutiliza explicitamente a justificativa do BIP-49 em vez de repeti-la.

A segunda coisa é o formato de saída. O BIP-84 toma emprestado o encapsulamento do BIP-141: o scriptPubKey é 0x0014 seguido do hash de 20 bytes da chave pública, o scriptSig fica vazio, e a testemunha carrega a assinatura e depois a chave. Nada nessa saída registra qual valor de propósito a produziu.

As chaves estendidas do ramo recebem seus próprios bytes de versão. As chaves públicas usam 0x04b24746, que aparece como zpub; as chaves privadas usam 0x04b2430c para zprv, e a testnet usa 0x045f1cf6 e 0x045f18bc para vpub e vprv. Esses valores não são exclusivos do bitcoin. A SLIP-0132, o registro que os reúne, lista Groestlcoin e Syscoin sob o mesmo 0x04b24746, porque o formato de serialização não tem nenhum campo para o tipo de moeda, então uma zpub informa o tipo de script e nada sobre a cadeia a que pertence.

A especificação se descreve como "not backwards compatible by design" e diz que uma carteira incompatível "will not discover accounts at all". Isso é deliberado. Um valor de propósito separado mantém o software escrito antes do SegWit fora de uma conta que ele trataria mal, e um saldo que marca zero é uma falha melhor do que uma carteira que se restaura pela metade em silêncio.

Onde você vê isso

O BIP-84 aparece em três lugares que sua carteira já exibe: o caminho da conta m/84'/0'/0', uma chave estendida que começa com zpub, e endereços de recebimento que começam com bc1q. A SLIP-0132 associa essa linha de zpub para o bitcoin ao caminho m/84'/0', que é a correspondência que um aplicativo afirma quando entrega uma a você. A Sparrow, com nota 4,7 em nossa análise, aceita carteiras de assinatura única e de multiassinatura nos tipos de script comuns, então a conta que você abre é a que você escolheu e não uma opção padrão que você herdou.

A parte do documento que vale a pena aproveitar é seu bloco de vetores de teste, que transforma “esta carteira implementa o BIP-84 do mesmo jeito que todas as outras?” em uma verificação que leva um minuto. O BIP publica resultados para a frase de recuperação "abandon" repetida onze vezes e depois "about":

  • m/84'/0'/0'/0/0 dá bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu
  • m/84'/0'/0'/0/1 dá bc1qnjg0jd8228aq7egyzacy8cys3knf9xvrerkf9g
  • m/84'/0'/0'/1/0 dá bc1q8c6fshw2dlwun7ekn9qwf37cu2rn755upcp6el

Carregue essa frase em um software desconhecido, em uma máquina que não guarde bitcoins, escolha SegWit nativo e compare o primeiro endereço de recebimento e o primeiro endereço de troco com essas sequências. Se os dois coincidirem, a implementação também está de acordo com o padrão no ramo de troco, que é a metade que as pessoas esquecem de verificar. Nunca envie nada para esses endereços: o BIP imprime as chaves privadas correspondentes e a SLIP-0132 imprime a mesma frase de recuperação, então qualquer pessoa que leia um dos dois documentos pode gastar o que chegar lá.

Derivação BIP-84 vs P2WPKH

A derivação BIP-84 diz de onde uma chave veio, e o P2WPKH diz como os bitcoins ficam bloqueados. Só o segundo é consenso. Uma carteira poderia derivar uma chave por um caminho sem nenhum 84' em lugar algum, bloquear a saída com o mesmo padrão 0x0014, e o endereço bc1q resultante seria indistinguível do seu on-chain. Então “um endereço BIP-84” é uma forma abreviada e não uma afirmação que um explorador de blocos possa resolver, e o valor de propósito é algo que você anota em uma nota de backup, porque depois você não poderá lê-lo de volta na blockchain.

Não confundir com

Perguntas frequentes

Qual é a diferença entre o BIP-84 e o BIP-49?

O nível de propósito e, com ele, o formato de endereço. O BIP-84 usa 84' e produz endereços nativos SegWit bc1q sob uma chave estendida zpub, enquanto o BIP-49, atribuído em 19 de maio de 2016, usa 49' e produz endereços P2WPKH aninhados em P2SH sob um ypub. Uma única frase de recuperação pode carregar ambas as contas ao mesmo tempo.

Um prefixo zpub prova que estou olhando para uma carteira de bitcoin?

Não. A SLIP-0132 registra os mesmos bytes de versão, 0x04b24746, para Groestlcoin e Syscoin, além do bitcoin, porque o formato de chave estendida não tem nenhum campo para o tipo de moeda. O prefixo informa que o tipo de script é P2WPKH e nada sobre a cadeia.

Preciso anotar m/84'/0'/0' junto com meu backup?

Escreva ao lado do nome da carteira, sim. O caminho não é secreto e por si só não revela nada, mas um software que restaura as mesmas palavras em outro nível de propósito deriva um conjunto diferente de endereços e mostra uma carteira vazia.

Leia a seguir

Termos relacionados

Mais em Endereços e chaves

Ler esta página em inglês