Glossário / Referência do desenvolvedor
Memo PP
- O que é o memo PP?
- O memo PP era a nota de texto livre em UTF-8 que o BIP70 permitia que um comerciante, um pagador ou um servidor que confirmava o recebimento anexasse a um pagamento para uma pessoa ler.
Especificação no BIP-70.
Três das quatro mensagens do BIP70 traziam um memo, o que faz dele o único campo do protocolo que viajava nos dois sentidos. Era texto apenas para exibição: nenhuma carteira o interpretava, nenhuma assinatura protegia a cópia que o pagador enviava de volta, e nada dele chegava à blockchain. As notas de pagamento ainda funcionam assim hoje, e é por isso que são um lugar ruim para colocar qualquer coisa que importe.
Como funciona
Status: histórico. O memo aparecia como campo 5 de PaymentDetails, campo 4 da mensagem Payment e campo 2 de PaymentACK, e todos eles saíram do Bitcoin Core quando o suporte ao BIP70 foi removido na versão 0.20.0, em 3 de junho de 2020.
Cada um dos três tinha um autor diferente e um leitor diferente.
O comerciante escrevia o primeiro, e a carteira o exibia na tela de confirmação ao lado do valor: um número de pedido, o nome de um produto, uma linha de condições. Como ele ficava dentro dos detalhes serializados, a assinatura do comerciante o cobria, então ao menos ele não podia ser reescrito em trânsito.
O pagador escrevia o segundo e o enviava de volta junto com a transação transmitida. Instruções de reembolso e notas para o suporte iam aqui, e nada as assinava.
O comerciante escrevia o terceiro na confirmação de recebimento, normalmente um agradecimento ou uma estimativa de envio. Nada assinava isso também.
O BIP70 não definia limite de comprimento, então as carteiras truncavam onde o layout acabava. Essa pequena brecha tem um lado cortante de verdade. Um texto fornecido por um atacante e exibido ao lado do nome verificado de uma empresa é uma superfície de phishing, e uma nota que parece uma instrução oficial para enviar mais um pagamento é convincente exatamente no lugar onde o cliente é menos desconfiado.
Onde você vê isso
Notas de texto livre anexadas a pagamentos continuam vivas, e cada versão moderna tem sua própria peculiaridade.
Links de pagamento BIP21 carregam um parâmetro message, com codificação percentual, mostrado pela carteira e esquecido depois. A Lightning vai além: uma fatura BOLT11 coloca sua descrição no campo d e, como um campo etiquetado comporta no máximo 1.023 grupos de cinco bits, aproximadamente 639 bytes, qualquer texto mais longo deve ser substituído pelo hash de 256 bits no campo h. As corretoras oferecem um campo de referência nos formulários de saque cujo conteúdo nunca sai do banco de dados delas.
A única nota que realmente viaja on-chain é uma saída OP_RETURN. A política de retransmissão do Bitcoin Core permitia uma carga útil de 40 bytes quando esse tipo de saída se tornou padrão na versão 0.9.0, e de 80 bytes a partir da versão 0.11.0. Você paga uma taxa por esses bytes e eles são públicos para sempre, então usar uma delas como nota privada é um erro que ninguém comete duas vezes.
Todo o resto é local para você. Uma nota digitada na sua própria carteira fica no arquivo da carteira, e não na frase de recuperação, então restaurar em um dispositivo novo traz de volta os bitcoins e nenhuma das palavras que você escreveu sobre eles. Exporte antes de migrar.
Memo PP vs etiqueta
Um memo descreve um pagamento; uma etiqueta nomeia uma parte ou um endereço. Os memos do BIP70 eram escritos para uma transação e exibidos uma vez, no momento do pagamento. Uma etiqueta do BIP21 identifica quem está sendo pago, e uma etiqueta de carteira é a nota de arquivo privada que você anexa a um endereço ou a uma transação e guarda na sua própria máquina. Nenhum dos três é assinado por alguém cuja palavra você possa verificar, e nenhum deles é visível para a rede.