Visão geral
As Transações Bitcoin Parcialmente Assinadas (PSBTs), definidas no BIP174, fornecem um formato de dados padrão para representar transações Bitcoin em vários estágios do processo de assinatura. Antes dos PSBTs, não havia uma forma universal de passar uma transação não assinada de uma carteira para uma carteira de hardware para assinatura, ou de coordenar assinaturas entre múltiplas partes em uma configuração multisig. O PSBT resolveu esse problema de interoperabilidade.
Fluxo de trabalho PSBT
Um PSBT passa por funções distintas, que podem ser realizadas por diferentes softwares ou dispositivos:
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────┐
│ Criador │───>│Atualizad │───>│Assinante │───>│Finalizador│
│ │ │ or │ │ (um ou │ │ │
│ Constrói │ │ │ │ vários) │ │ Combina │
│ tx sem │ │ Adiciona │ │ │ │ e remove │
│ assinar │ │ info UTXO│ │ Adiciona │ │ metadados │
│ │ │ scripts, │ │ assinat. │ │ PSBT │
│ │ │ caminhos │ │ parciais │ │ │
└──────────┘ └──────────┘ └──────────┘ └─────┬─────┘
│
▼
┌───────────┐
│ Extrator │
│ │
│ Produz │
│ tx bruta │
│ final para│
│ transmitir│
└───────────┘
Principais casos de uso
- Assinatura com carteira de hardware — Uma carteira somente leitura cria o PSBT, o dispositivo de hardware o assina e a carteira transmite a transação finalizada
- Coordenação multisig — Cada assinante adiciona sua assinatura ao PSBT em sequência, ou as assinaturas são coletadas em paralelo e combinadas
- CoinJoin — Múltiplos participantes adicionam suas entradas e assinam apenas sua porção de uma transação colaborativa
- Assinatura com isolamento de ar — Os PSBTs podem ser transferidos via códigos QR ou cartões SD para dispositivos de assinatura completamente offline
Dados contidos em um PSBT
Um PSBT agrupa a transação bruta com todos os metadados que os assinantes precisam: saídas de transações anteriores (para verificação), scripts de resgate, scripts de testemunha, caminhos de derivação BIP32 e assinaturas parciais. Isso significa que um assinante não precisa de acesso ao blockchain para validar e assinar.
PSBT Versão 2
O BIP370 introduziu o PSBT v2, que permite que a própria transação seja modificada durante o processo de construção (adicionando ou removendo entradas e saídas). Isso é particularmente útil para protocolos interativos como PayJoin e CoinJoin, onde a forma final da transação não é conhecida no momento da criação.
Conceito errôneo comum
Os PSBTs não são um novo tipo de transação na rede Bitcoin. Um PSBT é puramente um formato de dados fora da cadeia para construir e assinar transações. Uma vez finalizada, a transação resultante é indistinguível de qualquer outra transação Bitcoin válida.