Pular para o conteúdo
buybitcoinsmart

Glossário / Carteiras e custódia

PSBT versão 2

Outros nomes: PSBTv2.

O que é PSBT versão 2?
PSBT versão 2 é o formato de transação parcialmente assinada que dispensa a transação não assinada fixa, de modo que um participante ainda pode adicionar entradas e saídas depois que o arquivo foi criado.

Especificação no BIP-370.

A versão 0 fixa o conjunto de entradas e saídas no momento da criação; a versão 2 transfere cada detalhe para mapas por entrada e por saída. O BIP-370 foi atribuído em 14 de janeiro de 2021 e pula o número 1, já que o formato do BIP-174 é a versão 0 e era chamado coloquialmente de versão 1. Para quem detém bitcoins, a versão 2 importa apenas em uma sessão de assinatura na qual outro participante adiciona criptomoedas a uma transação que você já iniciou.

Como funciona

A PSBT versão 2 mantém o contêiner externo do BIP-174 e reorganiza o que está dentro dele. Duas regras definem a mudança: PSBT_GLOBAL_UNSIGNED_TX deve estar ausente, e PSBT_GLOBAL_VERSION deve estar presente e definido como 2.

O que a transação removida costumava carregar é redistribuído em doze novos campos. Cinco são globais: versão da transação (0x02), locktime de reserva (0x03), contagem de entradas (0x04), contagem de saídas (0x05) e um byte de sinalizadores modificáveis (0x06). Cinco ficam em cada entrada: o txid anterior de 32 bytes (0x0e), o índice da saída gasta (0x0f), o número de sequência (0x10), e dois locktimes obrigatórios, um baseado em carimbo de data e hora igual ou superior a 500000000 (0x11), outro baseado em altura abaixo desse valor e acima de zero (0x12). As saídas ganham dois, o valor em satoshis como um inteiro de 64 bits com sinal em little endian (0x03) e o script (0x04).

O byte de sinalizadores modificáveis faz o trabalho de verdade. O bit 0 indica que entradas ainda podem ser adicionadas ou removidas, o bit 1 indica o mesmo para as saídas, e o bit 2 registra que alguma assinatura já se comprometeu com SIGHASH_SINGLE, então seu pareamento de entrada e saída precisa ser preservado. Um assinante deve restringir esses bits conforme avança: uma assinatura que não usa SIGHASH_ANYONECANPAY limpa o bit 0, e uma que não usa SIGHASH_NONE limpa o bit 1. A permissão para continuar editando expira sozinha conforme as assinaturas chegam, em vez de depender da boa vontade do próximo detentor.

O BIP-370 resolve as duas questões que a transação ausente deixou em aberto. O locktime passa a ser o maior valor em que as entradas concordam, recorrendo ao campo global, ou a 0 quando este está ausente, e um requisito baseado em altura vence qualquer empate. A identidade passa a ser o txid obtido ao montar os campos com todo número de sequência forçado a 0, já que a sequência ainda pode ser editada depois.

Onde você vê isso

A PSBT versão 2 introduz um papel para o qual o BIP-174 não tem equivalente, o Constructor. Um Creator abre o arquivo com 0 entradas e 0 saídas e o repassa; o Constructor as adiciona, depois de verificar os sinalizadores modificáveis. Um Creator que espera contribuições também deve definir a versão da transação como pelo menos 2, para que recursos condicionados a ela, como OP_CHECKSEQUENCEVERIFY, continuem disponíveis.

A versão 2 reutiliza a serialização do BIP-174, então um arquivo parece igual por fora, e a separação é deliberada: dos 24 vetores de teste inválidos do BIP, 13 são arquivos comuns de versão 0 rejeitados por um campo fora de lugar ou por um número de versão. A conversão é mais simples em um sentido, já que um arquivo de versão 2 pode ser reconstruído como um de versão 0 a partir de seus próprios campos. A implementação de referência é o pull request 21283 do Bitcoin Core, e o cabeçalho do BIP registra o status como Deployed.

Das 41 análises de carteiras neste site, duas mencionam PSBTs, Sparrow (avaliada com 4,7) e BlueWallet (4,2), e nenhuma indica uma versão. Presuma a versão 0 a menos que o software diga o contrário, e teste uma ferramenta desconhecida com um valor pequeno antes que ela lide com o restante.

PSBT versão 2 vs o número de versão da transação

A PSBT versão 2 numera o formato do arquivo, enquanto o número de versão da transação numera a transação que está sendo montada dentro dele. Ambos ficam no mesmo mapa global, e o BIP-370 diz claramente que não são o mesmo campo. PSBT_GLOBAL_VERSION é 2 em todo arquivo de versão 2; PSBT_GLOBAL_TX_VERSION é um inteiro com sinal de 32 bits para a transação que está sendo construída, e o BIP-370 exige que ele seja pelo menos 2 quando o Creator espera contribuições, e é por isso que os dois se confundem. Mude o primeiro e analisadores mais antigos recusam o arquivo. Mude o segundo e você muda por quais regras de consenso o gasto é julgado.

Não confundir com

Perguntas frequentes

Preciso da PSBT versão 2 para usar uma carteira de hardware?

Não. A versão 0, o formato definido pelo BIP-174, cobre um gasto comum em que as entradas e as saídas estão definidas antes de qualquer assinatura começar. A versão 2 só se justifica quando outro participante precisa adicionar criptomoedas a uma transação que você já iniciou.

Por que não existe a PSBT versão 1?

O número foi pulado de propósito. O formato do BIP-174 é a versão 0, mas era chamado coloquialmente de versão 1 enquanto o BIP-370 estava sendo projetado, então o novo formato ficou com o número 2 em vez de deixar duas coisas chamadas de versão 1.

Um software de versão 0 consegue abrir um arquivo de versão 2?

Não do jeito que está. O BIP-370 torna os dois formatos incompatíveis de propósito, por meio do campo de versão global, embora um arquivo de versão 2 possa ser convertido em um de versão 0 construindo a transação não assinada a partir de seus campos.

Leia a seguir

Fontes

Última revisão: 6 de setembro de 2026.

Termos relacionados

Mais em Carteiras e custódia

Ler esta página em inglês