Pular para o conteúdo
buybitcoinsmart

Glossário / Endereços e chaves

Endereço P2PKH

Outros nomes: Pay-to-Public-Key-Hash, Saída P2PKH.

O que é o endereço P2PKH?
P2PKH é o tipo de saída que bloqueia bitcoins em um hash de 20 bytes de uma chave pública, de modo que a própria chave permanece oculta até o momento de gastá-los.

Pay to public key hash é o padrão de script por trás de todo endereço que começa com 1. Seu script de bloqueio tem exatamente 25 bytes e executa cinco operações quando os bitcoins se movem. Como a saída fixa uma impressão digital e não a chave, uma saída P2PKH que não foi gasta não diz nada a um observador sobre a chave pública por trás dela.

Como funciona

Uma saída P2PKH carrega um único script de bloqueio, sempre com o mesmo formato: OP_DUP OP_HASH160 <hash de 20 bytes> OP_EQUALVERIFY OP_CHECKSIG. Esse hash de 20 bytes é o HASH160, ou seja, RIPEMD-160 aplicado ao SHA-256 da chave pública comprimida, e é assim que uma chave de 33 bytes se torna um compromisso de 20 bytes.

O gasto fornece dois itens no scriptSig da entrada: uma assinatura e, em seguida, a chave pública. A execução segue em ordem. OP_DUP copia a chave, OP_HASH160 reduz a cópia a 20 bytes, OP_EQUALVERIFY compara esse valor com o valor fixado e aborta se forem diferentes, e OP_CHECKSIG verifica a assinatura em relação à transação. As duas verificações precisam passar; a falha em qualquer uma delas invalida a transação inteira, não apenas aquela entrada.

Os tamanhos decorrem da estrutura. Uma saída P2PKH custa 34 bytes on-chain, formados por um valor de 8 bytes, um comprimento de 1 byte e o script de 25 bytes. Uma entrada custa aproximadamente 148 vbytes, porque uma assinatura ECDSA codificada em DER ocupa de 71 a 72 bytes, a chave comprimida acrescenta mais 33, e tudo isso fica fora da testemunha, onde cada byte pesa quatro vezes.

Onde você vê isso

Todo endereço que começa com 1 é um endereço P2PKH, o que abrange a maioria dos bitcoins que se moveram antes de o SegWit ser ativado no bloco 481.824, em agosto de 2017. Os exploradores de blocos indicam o tipo em cada saída, então você pode verificar o que está olhando sem decodificar nada.

O detalhe que vale a pena guardar é quando sua chave pública se torna pública. Até você gastar, a blockchain guarda apenas o hash. O primeiro gasto publica a chave no scriptSig, de forma permanente. Se depois disso você reutilizar esse endereço, qualquer saldo posterior fica atrás de uma chave que já é visível para todos, o que elimina uma camada de proteção que não custava nada. Isso é um problema de privacidade imediatamente, e é a razão pela qual a longa discussão sobre futuros ataques à criptografia de curva elíptica se concentra em endereços reutilizados e já gastos, e não em endereços novos.

Na prática: deixe sua carteira entregar um novo endereço de recebimento para cada pagamento, e deixe o troco ir também para um endereço novo. O software moderno faz as duas coisas por padrão.

Endereço P2PKH vs P2WPKH

P2PKH e P2WPKH fixam a mesma coisa e custam valores muito diferentes. Ambos bloqueiam bitcoins em um HASH160 de 20 bytes de uma única chave pública comprimida, e ambos são desbloqueados por uma assinatura dessa chave. O que os separa é onde os dados de desbloqueio são escritos. P2PKH mantém a assinatura e a chave no scriptSig, contadas a quatro unidades de peso por byte; P2WPKH as move para a testemunha, contadas a uma. É por isso que o mesmo segredo pode produzir um endereço 1 e um endereço bc1q que não se parecem em nada, guardam bitcoins de forma independente e diferem em mais de um fator de dois no que custa esvaziá-los.

Não confundir com

Perguntas frequentes

Um endereço P2PKH é o mesmo que um endereço legado?

Na prática, sim, com uma nuance. Todo endereço P2PKH começa com 1 e é um endereço legado, mas as pessoas muitas vezes estendem a palavra legacy para abranger também cadeias Base58 que começam com 3, que são P2SH e não P2PKH.

Quando minha chave pública se torna visível na blockchain?

Na primeira vez que você gasta a partir do endereço. Até então a blockchain guarda apenas um hash de 20 bytes. Depois desse gasto a chave é pública para sempre, e essa é uma das razões pelas quais as carteiras entregam um endereço novo para cada pagamento.

Leia a seguir

Termos relacionados

Mais em Endereços e chaves

Ler esta página em inglês