PSBT (BIP174): assinar juntos

O formato de arquivo padrão para multisig e carteiras de hardware.

Assinar uma transação precisa de informação que o assinante pode não ter: quais moedas estão sendo gastas, seus valores, scripts e caminhos de derivação de chave. Uma Partially Signed Bitcoin Transaction (PSBT), definida no BIP174 por Andrew Chow em 2017, é um recipiente padrão para tudo isso.

O formato

Uma PSBT começa com os bytes mágicos 0x70 0x73 0x62 0x74 0xff («psbt» seguido de 0xff). Tem uma seção global, um mapa por entrada e um por saída, cada um com pares chave–valor tipados. Costuma ser compartilhada como Base64 ou como arquivo binário .psbt.

Entradas podem carregar a transação anterior completa ou o UTXO sendo gasto, o redeem ou witness script, assinaturas parciais, tipos sighash e caminhos de derivação BIP32. Saídas podem carregar caminhos de derivação para que uma carteira de hardware verifique qual saída é o troco.

Os papéis

  1. Creator: cria a transação não assinada.
  2. Updater: adiciona dados UTXO, scripts e caminhos de chave.
  3. Signer: checa os detalhes e adiciona sua assinatura.
  4. Combiner: mescla PSBTs assinadas por partes diferentes.
  5. Finalizer: constrói o scriptSig e witness finais.
  6. Extractor: entrega a transação pronta para transmitir.

Um app pode fazer vários papéis, ou cada um pode ser um dispositivo diferente, como um telefone, um laptop e duas carteiras de hardware.

Por que importa

  • Assinatura air-gapped: PSBTs podem se mover por cartão SD ou código QR.
  • Multisig: cada coassinante assina de forma independente, depois as assinaturas são combinadas.
  • Segurança de taxa: como os valores de entrada estão incluídos, um assinante pode calcular a taxa antes de assinar.
  • Coinjoins e payjoins: várias pessoas contribuem com entradas para uma transação.

No Bitcoin Core

RPCs incluem walletcreatefundedpsbt, walletprocesspsbt, combinepsbt, finalizepsbt e decodepsbt.

Versão 2

BIP370 (PSBTv2) deixa entradas e saídas serem adicionadas após a criação, o que ajuda protocolos interativos. Campos Taproot foram adicionados pelo BIP371.

Regra: sempre verifique os endereços e valores na tela do seu dispositivo de assinatura, não só no computador.