P2WPKH
Pay To Witness Public Key Hash — a versão segwit do P2PKH
BIP 141: Segregated Witness
P2WPKH (Pay To Witness Public Key Hash) é um padrão de script que trava uma saída a um hash de chave pública.
Funciona da mesma forma que um P2PKH legado, mas é destravado pelo campo de testemunha em vez do ScriptSig.
O benefício de usar P2WPKH em vez de P2PKH é que os dados do campo de testemunha têm menos peso do que os do ScriptSig, então, ao destravar um P2WPKH, você paga um pouco menos de taxa.
O P2WPKH foi introduzido como parte da atualização Segregated Witness, como substituto do P2PKH.
Uso
Como o P2WPKH funciona?
O P2WPKH não usa a linguagem Script tradicional. Em vez disso, o ScriptPubKey e a testemunha são estruturas de dados fixas.
ScriptPubKey (trava)
Para criar uma trava P2WPKH, você só precisa colocar um OP_0 seguido de um push de dados de um hash de chave pública de 20 bytes:
OP_0 <hash da chave pública (20 bytes)> O OP_0 é chamado de byte de versão e indica que este ScriptPubKey será um P2WPKH ou um P2WSH.
Um ScriptPubKey que começa com OP_0 seguido de um push de 20 bytes é sempre interpretado como um script P2WPKH.
ScriptSig
O ScriptSig precisa estar vazio.
Campo de Testemunha (destrava)
Para destravar um P2WPKH, você fornece uma assinatura válida seguida da chave pública original no campo de testemunha da entrada:
<assinatura> <chave pública> O campo de testemunha não é Script. Ele usa campos Compact Size para indicar o número de itens e o tamanho da assinatura e da chave pública (em vez de opcodes de push como OP_PUSHBYTES_33).
Só chaves públicas comprimidas são aceitas no P2WPKH. Então, ao criar o hash da chave pública para o ScriptPubKey, certifique-se de que é o hash de uma chave pública comprimida, senão será considerado não padrão. (Isso difere do P2PKH, onde chaves não comprimidas são permitidas.)
Ferramentas
O endereço P2WPKH é uma codificação Bech32 da versão de testemunha 0 + o hash de chave pública de 20 bytes (endereços começando com bc1q):