MSTR Cat

Blockchain/Nível IV · Protocolo a fundo/4.2 Atualizações/Lição 3

Transações parcialmente assinadas (PSBT)

O contêiner que permite que um estranho verifique o que um dispositivo assina

MateriaisUma carteira de hardware com suporte a PSBTSoftware Bitcoin Core com o comando ‘decodepsbt’ disponívelUm computador ou dispositivo com isolamento de rede

Curiosidade

  1. Por que uma transação inacabada precisa de mais dados do que a concluída?
  2. Por que cada carteira de hardware precisava ter seu próprio formato para transações não assinadas?
  3. Como um usuário pode adicionar uma nova saída depois que o modelo inicial já foi criado?

Explorar

  1. Uma transação bruta padrão é um artefato compacto e final, pronto para ser transmitido. Uma Transação de Bitcoin Parcialmente Assinada (PSBT), definida pelo BIP174 em 2017 por Andrew Chow, é diferente: trata-se de um contêiner que armazena uma transação inacabada juntamente com todos os metadados necessários para completá-la posteriormente. Ela existe em três estados: totalmente construída, mas não assinada; parcialmente assinada, com algumas entradas concluídas e outras pendentes; ou totalmente assinada e pronta para ser extraída em formato hexadecimal bruto. Esse formato permite que um programa não confiável gere um modelo que possa ser verificado por um dispositivo confiável, sem que o dispositivo precise de acesso à rede.
  2. O fluxo de trabalho do PSBT define seis papéis: Criador, Atualizador, Assinante, Combinador, Finalizador e Extrator (a versão 2 adiciona um sétimo papel, o Construtor). Depois que um criador constrói a transação, um atualizador anexa os outputs anteriores que estão sendo utilizados, seus scripts e as rotas de derivação das chaves, para que um assinante possa verificar exatamente o que está sendo aprovado, os valores e as taxas incluídas. Essa inclusão explícita de metadados torna o arquivo significativamente menos compacto do que a serialização padrão, mas é essencial, pois permite que carteiras hardware verifiquem a estrutura da transação sem precisar se conectar a um nó conectado à internet que possa estar comprometido ou executando software malicioso.
  3. A interoperabilidade é o principal fator motivador para os PSBTs. Antes da existência desse padrão, diferentes softwares de carteira utilizavam métodos incompatíveis para transmitir dados entre uma carteira ativa e um dispositivo de armazenamento frio, criando dependência em relação ao fornecedor. O BIP174 resolveu isso ao estabelecer uma linguagem universal; hoje, um coordenador como o Sparrow pode transferir o mesmo PSBT para dispositivos de assinatura de diferentes fabricantes, por meio de USB, cartão SD ou código QR. Isso torna a utilização de multisig entre diferentes fornecedores prática: cada signatário adiciona sua assinatura ao arquivo, e nenhuma chave privada sai de seu dispositivo.
  4. A Versão 0 do PSBT possui uma limitação estrutural rígida: uma vez criada, a transação global não assinada fica fixa. A Versão 0 armazena uma transação completa e não assinada em um campo global, de modo que entradas e saídas não podem ser adicionadas após sua criação. Essa rigidez significava que, se alguém começasse a criar uma transação complexa envolvendo várias partes e percebesse que precisava de uma saída adicional, teria que descartar todo o processo e começar do zero com um novo modelo.
  5. O BIP370 introduz a Versão 2 do PSBT para resolver esse problema de imutabilidade. Na Versão 2, todas as informações de um determinado input ou output são consolidadas nesse campo específico, em vez de serem divididas entre dados locais e globais. Assim, os participantes podem adicionar inputs ou outputs após a criação, desde que as flags “modificáveis” do PSBT permitam isso. Isso agiliza o processo colaborativo, pois garante que, ao se analisar um único input, todos os dados relacionados a ele estejam contidos exatamente ali, simplificando a verificação para dispositivos de hardware e reduzindo o risco de dessincronização do estado.
  6. Os usos práticos vão desde a assinatura de transações com carteiras hardware até transações colaborativas como payjoin e coinjoin, nas quais os participantes trocam PSBTs até que todos tenham assinado. Para um usuário comum, isso significa que é possível criar uma transação no celular, conectar uma carteira hardware para assiná-la de forma segura off-line e, em seguida, extrair a transação final bruta para transmissão — sendo que cada dispositivo vê exatamente o que está assinando.

Fatos-chave

  • O BIP174 define a Versão 0 do PSBT, que exige um campo de transação global não assinado que não pode ser modificado após sua criação.
  • O BIP370 define a Versão 2 (PSBTv2), permitindo que entradas e saídas sejam adicionadas após a criação, por meio da consolidação de dados em campos específicos.
  • O PSBT é intencionalmente menos compacto que a serialização padrão porque armazena metadados significativos para verificação por dispositivos de assinatura.
  • O fluxo de trabalho original tem seis papéis: Criador, Atualizador, Assinante, Combinador, Finalizador e Extrator.
  • PSBTs facilitam a interoperabilidade entre diversos softwares de carteira e dispositivos de assinatura hardware.
  • Coordenadores como o Sparrow e dispositivos de assinatura como o Coldcard trocam PSBTs por arquivo ou código QR.

Exercício nove, seis, três, um

9ReunirListe 9 papéis ou estados diferentes envolvidos no ciclo de vida de uma transação Bitcoin, desde a criação inicial até a transmissão final.
6AgruparAgrupe os 9 em 6 categorias com base em se eles envolvem adicionar dados, verificar a estrutura, aplicar assinaturas criptográficas, fundir contribuições, completar o formato ou transmitir o resultado.
3DestilarReduza os 6 grupos a 3 funções essenciais que qualquer sistema de gerenciamento de transações deve realizar para garantir segurança e interoperabilidade.
1CristalizarEscreva 1 frase explicando por que uma transação inacabada requer mais dados do que uma concluída.

Verificação de fatos

Datas, números e afirmações verificados com as fontes publicadas listadas abaixo.

Abrir na academia interativa →

EN ES ZH JA KO RU DE FR MS