Os endereços P2PKH são o tipo de endereço mais comum dentro do Bitcoin, e são os que costumamos usar para realizar transações nas referidas criptomoedas. Descubra aqui quais são suas características e como funciona.
AEmbora existam novos scripts em Bitcoin que vêm ganhando popularidade, a forma mais comum na rede de realizar transações é por meio de scripts Pagar para Hash de chave pública, ou mais conhecido como P2PKH. No início, a rede usou o script Pagar para chave pública (P2PK), mas devido à vulnerabilidade de sofrer um futuro ataque por computadores quânticos, foi trocado para P2PKH para maior segurança e proteção da rede. E desde então, este script desempenha um papel muito importante na maioria das transações realizadas em Bitcoin.
A verdade é que P2PK e P2PKH são muito semelhantes. Bem, tanto no P2PK quanto no P2PKH, os usuários devem demonstrar um mecanismo criptográfico complexo. Este mecanismo baseia-se na prova de que são os verdadeiros proprietários da chave pública para receber pagamentos e da chave privada para gastar o pagamento que recebem. Mas a principal diferença entre P2PK e P2PKH, é que este último permite que no momento de receber uma transação o usuário não tenha que fornecer sua chave pública completa ao scriptPubKeyName. Uma situação que ocorreu dentro de scripts P2PK. Isso enviou diretamente a chave pública do destinatário da transação.
Essa simples mudança melhorou muito a segurança do Bitcoin contra possíveis ataques que poderiam ser realizados com computadores quânticos. Mas, ao mesmo tempo, também melhorou a privacidade das transações, além de reduzir o tamanho de cada transação, o que é ótimo para a escalabilidade do Bitcoin. Isso se deve ao fato fornecer apenas um hash de 20 bytes em vez do chave pública completar. Situação que impedia sua divulgação ou divulgação, aumentando a segurança geral da rede.
Mas certamente você se pergunta como o P2PKH torna tudo isso possível? Que mecanismos permitem seu funcionamento? Bem, examinaremos tudo isso a seguir.
Como funciona um script P2PKH?
A operação de um script P2PKH começa no momento em que o receptor e o remetente se preparam para realizar uma transação. Nesse ponto, o destinatário deve criar um par de chaves pública e privada. Assim que essas chaves forem criadas, o destinatário compartilhará sua chave pública com o emissor da transação. No processo de codificação dessas chaves, o receptor cria um hash da chave pública que será transmitido ao remetente de forma segura para realizar a transação. Esse hash é nosso endereço de criptomoeda ou Bitcoin. Se você quiser saber um pouco sobre esse processo de geração, leia nosso artigo sobre Como você cria um endereço Bitcoin?
Agora, no momento em que o emissor tem o endereço Bitcoin, ele começa com o processo de criação da transação. Este processo leva ao uso de Bitcoin Script, para gerar um sub-script especial que fará parte do P2PKH. Este sub-script é denominado scriptSig e sua função é verificar se o emissor realmente possui a propriedade das criptomoedas que vai gastar. Para fazer isso, ele pega a chave pública com a qual o emissor recebeu as criptomoedas no momento e verifica se ela possui a chave privada que permite o gasto. Quando esta etapa é verificada, o remetente pode então continuar com o processo de geração do script P2PKH.
A segunda parte do processo gera o sub-script scripPubKey. Esta parte do script fornece o poder das criptomoedas enviadas para o hash de chave pública que o emissor recebeu. Ao juntar o scriptSig e o scriptPubKey temos como resultado um P2PKH completo, cuja função pode ser resumida da seguinte forma:
Um emissor só pode gastar bitcoins que recebeu em um endereço público de sua propriedade. Mas para gastá-los, você deve provar que esse endereço é realmente seu. Portanto, você precisa fornecer a chave pública e a chave privada corretas para desbloquear as despesas.
Confirmado esse ponto, o emissor envia para outro endereço uma determinada quantidade de moedas que deixam de ser de sua propriedade para passar a ser propriedade de outro usuário, que só pode gastar essas moedas seguindo o mesmo processo.
Exemplo de um P2PKH
Vejamos um exemplo para ter uma explicação mais detalhada de como todo esse processo ocorre no Bitcoin. Se Maria deseja enviar uma transação padrão em formato P2PKH para Pedro, então Pedro deve iniciar o processo criando a chave privada e o conjunto de chaves públicas onde deseja receber a transação.
No sistema Bitcoin, este conjunto de chaves é criado com segurança usando o Algoritmo de assinatura digital de curva elíptica (ECDSA) com a curva secp256k1. Em seguida, a chave pública gerada é transformada usando as funções SHA-256 e RIPEMD-160.
Nesse momento, Pedro envia o endereço para Maria, que então inicia o processo de geração da transação e do script P2PKH. Maria insere os dados da transação em sua carteira, que irá traduzir esses dados em um script P2PKH. E a partir do momento que Maria pressiona "Enviar" o processo começa. A transação é enviada para a rede, onde os mineiros a levarão e a incluirão em um bloco. Ao final da geração deste bloco, os nós da rede passarão a realizar as ações individuais de cada uma dessas transações.
É nesse momento que o pagamento de María a Pedro se torna uma realidade. Em seguida, os nós irão executar o script P2PKH passando a propriedade das moedas que Maria enviou para o Pedro, fazendo com que Pedro fique com a propriedade absoluta das referidas moedas. Caso a operação gere uma mudança, esta mudança é enviada a Maria, que manterá a propriedade sobre ela. As restantes moedas que não fazem parte do envio de moedas a Pedro ou da troca de Maria, são as comissões que os mineiros recebiam pelo seu trabalho.
Implementação P2PKH
o script P2PKH está presente por padrão nas carteiras ou carteiras que implementam o cliente Bitcoin praticamente desde o início do sistema. Assim, poucos dias após o lançamento do Bitcoin e com a mineração dos primeiros blocos da rede, em 16 de janeiro de 2009, o formato P2PKH começou a ser implementado nas transações de Bitcoin. Portanto, este script é encontrado na maioria dos blocos minerados que estão dentro do blockchain.
A sua criação deve-se principalmente a dois motivos:
- Satoshi Nakamoto Eu queria que houvesse uma maneira mais simples e fácil de dois usuários compartilharem suas chaves públicas para realizar transações. Assim, para converter a chave pública em uma expressão mais curta e fácil de usar, foi aplicada uma função hash que converte essa chave em um conjunto aleatório de caracteres alfanuméricos muito mais gerenciável e utilizável. Que é usado como um endereço que pode ser compartilhado de forma fácil e confiável com qualquer usuário.
- Como ECDSA, é vulnerável ao algoritmo de Shor modificado. Este algoritmo pode deduzir a chave privada da chave pública usando um computador quântico. No entanto, a implementação do P2PKH evita esse ataque. Impedindo que a chave pública completa seja revelada a outro usuário ao realizar uma transação. Criando uma camada adicional de segurança sobre a chave privada e a rede pública, fornecendo um nível mais alto de proteção. Embora isso esteja um pouco distante, já que a potência quântica necessária para executar um ataque desse tipo com sucesso está perto de 1500 qubits.
Vantagens e desvantagens da implementação P2PKH
Vantagens
Uma das maiores vantagens de implementar o script P2PKH, e que o torna muito confiável ao realizar transações, é porque reduz a possibilidade de ataques ou ameaças derivadas de computadores quânticos. O que as chaves privadas de um usuário poderiam deduzir por meio da chave pública que eles forneceram para receber uma transação. E é que graças ao P2PKH, as chaves públicas nunca são reveladas ou enviadas. Bem, em vez de enviar a chave pública completa, apenas um hash dela é usado.
Outra grande vantagem que este script oferece é o simplicidade e facilidade de uso. E essaendereços que implementam P2PKH são muito mais curtos e mais gerenciáveis. O que, por sua vez, também reduz a chance de cometer erros em comparação com os endereços P2PK.
Desvantagens
Embora os endereços P2PKH sejam muito mais fáceis de usar, o processo de criação desses endereços é muito mais complexo e difícil do que com scripts P2PK. Portanto, eles exigem a aplicação de muitas etapas ou processos adicionais no nível de programação para formar transações P2PKH. No entanto, isso é um tanto transparente para os usuários e, para os dispositivos atuais, não gera nenhum efeito negativo no desempenho.
Além disso, como este script foi lançado e implementado muito antes SegWit, os endereços herdados não são compatíveis com carteiras ou bolsas que implementam este formato, como se o script P2SH. Embora seja possível enviar uma transação de um endereço P2PKH para um endereço SegWit. No entanto, as taxas para essas transações podem ser altas em geral. Portanto, embora a implementação de transações P2PKH desempenhe um papel importante na rede Bitcoin, seu uso pode ser afetado e diminuído se os usuários começarem a adotar o SegWit mais.