O script de bloqueio P2PK é o modelo de script inicial que o Bitcoin usou para enviar e receber criptomoedas em seus primeiros dias. Um modelo de script simples e elegante que nos permitiu explorar o poder do Bitcoin e que abriria as portas para essa tecnologia interessante.
EEu bloqueio o script P2PK ou Pay To Public Key, É a script de bloqueio mais antigo e primitivo de Bitcoin, desenvolvido diretamente por Satoshi Nakamoto em sua primeira versão do Bitcoin. Ele nos permite fazer pagamentos bitcoin usando a versão estendida de uma chave pública em vez de um hash dela, como é o caso atualmente com o script padrão P2PKH (Pay to Public Key Hash).
Graças a isso, o P2PK é uma versão muito mais simples do P2PKH e foi usado por Nakamoto em suas operações de mineração iniciais ao criar o transação coinbase de seus blocos. Mas você também usou esse script em suas primeiras transações, como a que você fez para Hal Finney.
Como funciona um P2PK?
A operação de um P2PK segue o mesmo esquema básico das transações Bitcoin, de fato, P2PK é a origem desse esquema, só que de uma forma ainda mais simples. Quando queremos realizar uma transação em Bitcoin, precisamos ter apenas a chave privada em nossa posse. Como já explicamos em Como um endereço Bitcoin é gerado?, da chave privada a chave pública sai matematicamente e da chave pública é codificada para obter o endereço Bitcoin.
No P2PK, esse endereço de Bitcoin (que geralmente começa com "1", "3" ou "bc1") não é feito na última parte, ou seja, não é criptografado. Desta forma, o endereço permanece como a chave pública completa, que teria uma forma semelhante a esta:
0496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947
be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858ee
A chave pública Bitcoin anterior corresponde a um dos endereços de Satoshi Nakamoto, especificamente, o endereço para o qual a segunda base de moedas Bitcoin foi enviada.
Então, por exemplo, para enviar uma transação para aquele endereço usando um P2PK, não usamos um endereço Bitcoin como o que conhecemos hoje. Em vez disso, bastaria pegar a chave pública inteira, colocá-la na carteira e enviá-la. O resultado no final é o mesmo, quando a transação for confirmada, o dono daquela chave pública terá os bitcoins que lhe enviamos em sua posse e poderá utilizá-los sem problemas.
Explicando o processo de operação de um P2PK
A diferença no processo de envio entre P2PK e P2PKH é a forma como funcionam os scripts de bloqueio, e explicamos esse detalhe a seguir:
Em primeiro lugar, em um P2PK não é necessário codificar a chave pública. Em vez disso, precisamos apenas copiar a dita chave completa, colocá-la no script Bitcoin e podemos enviar a transação. O script P2PK para enviar (ou bloquear bitcoins) tem o seguinte formato:
Script de bloqueio (scritpPubKey): <Chave pública para enviar> OP_CHECKSIG
Isso significa que para desbloquear os referidos bitcoins e ser capaz de usá-los, teríamos que fornecer uma assinatura digital válida para a chave pública que demos, como podemos ver no scriptSig que teria a seguinte forma:
Script de desbloqueio (scriptSig): <ASSINATURA> (assinatura digital válida)
No entanto, em um P2PKH isso muda um pouco, e o script de bloqueio é escrito da seguinte maneira:
Script de bloqueio (scritpPubKey): OP_DUP OP_HASH160 <Hash da chave pública> OP_EQUALVERIFY OP_CHECKSIG
E o seu desbloqueio é feito por meio de:
Script de desbloqueio (scriptSig): <ASSINATURA> <Chave Pública>
Isso significa que devemos fornecer uma chave pública, duplicá-la, hash, verificar se o hash da chave pública foi entregue e verificar as assinaturas digitais para que possamos usar os bitcoins naquele endereço.
Como você pode ver, o P2PK é uma opção muito mais simples e menos dispendiosa do ponto de vista computacional. No entanto, P2PK é um script de bloqueio raramente usado no mundo Bitcoin hoje, e explicaremos o porquê a seguir.
Quanto você sabe, cryptonuta?
A razão pela qual o P2PK foi descontinuado em favor do P2PKH para segurança no Bitcoin?VERDADEIRO!
O principal motivo do abandono do formato P2PK no Bitcoin foi o fato de adicionar uma nova camada de segurança aos scripts que eram responsáveis por tornar as transações dentro do Bitcoin uma realidade, especialmente o P2PKH por oferecer maior resistência a futuros ataques que os computadores quânticos poderiam fazer.
Prós e contras do P2PK
Entre os prós do P2PK podemos destacar que:
- É um script muito mais simples e menos caro do que o P2PKH.
- É amplamente compatível, todas as versões do Bitcoin Core possuem suporte para este script, pois é a base de seu funcionamento desde o seu início.
Porém, contra ela podemos citar alguns riscos, alguns identificados pelo próprio Satoshi Nakamoto em uma análise realizada, que praticamente não utilizou mais o P2PK:
- O risco de que a criptografia de curva elíptica possa ser completamente comprometida graças à execução bem-sucedida de um algoritmo de Shor modificado para resolver o problema de logaritmo discreto em curvas elípticas. Esta é uma situação em que a implantação de chaves públicas como P2PK tornaria esses endereços vulneráveis. Para evitar isso, Nakamoto decidiu usar um hash da chave pública por um processo que adiciona uma camada adicional de segurança a esse processo, resolvendo esse problema. Na verdade, na versão inicial do Bitcoin, os métodos P2PK e P2PKH eram perfeitamente utilizáveis.
- A extensão mais curta do P2PKH foi outro fator a favor do abandono do P2PK, não só pela extensão, mas também para economizar bytes nas transações e melhorar a escalabilidade do Bitcoin.
- Eles são menos "humanos". Ou seja, as chaves públicas têm 130 caracteres em vez dos endereços Bitcoin usuais e seus 34 caracteres. Isso significa que o P2PK requer mais cuidado ao verificar se os endereços estão corretos, caso contrário, os fundos podem ser irreversivelmente perdidos. É fácil ver que um endereço começa com 1 e saber que é um endereço Bitcoin, ou verificar os últimos caracteres para ver se o endereço não mudou graças a checksum.