Pular para o conteúdo
buybitcoinsmart

Glossário / Referência do desenvolvedor

Valor PP

O que é o valor PP?
O valor PP era o campo em satoshis dentro de uma saída do BIP70, definido como zero quando o comerciante queria que o pagador escolhesse quanto enviar.

Especificação no BIP-70.

As unidades são a origem dos erros de pagamento. O valor no BIP70 era uma contagem de satoshis de 64 bits, enquanto o parâmetro amount em um URI BIP21 é bitcoin decimal, então um mesmo pagamento é escrito como 250000 no primeiro e como 0,0025 no segundo. Quem move dinheiro entre sistemas deve verificar qual unidade um campo espera antes de confiar em um total.

Como funciona

Status: histórico. O campo pertencia ao BIP70, que o Bitcoin Core tornou obsoleto na versão 0.19 e removeu na versão 0.20.0 em 3 de junho de 2020.

Dois campos compunham um Output dentro de uma mensagem PaymentDetails: um script que diz para onde o dinheiro vai e um valor que diz quanto. O valor era um inteiro sem sinal de 64 bits em satoshis, com padrão zero, e o zero tinha um significado específico. Não significava pagar nada. Significava que o comerciante se recusava a indicar uma cifra e que a carteira deveria perguntar ao cliente, que é como funcionavam as páginas de doações.

Várias saídas podiam aparecer em uma mesma solicitação, cada uma com seu próprio valor, e a carteira que pagava tinha que atender a todas elas em uma única transação. Isso é mais útil do que parece. Um comerciante podia encaminhar parte de uma venda direto para o armazenamento a frio, parte para uma carteira quente para reembolsos e parte para um afiliado, tudo sem que o cliente fizesse três pagamentos ou soubesse que a divisão existia.

O intervalo nunca foi uma limitação. Um inteiro sem sinal de 64 bits chega no máximo a 18.446.744.073.709.551.615 satoshis, aproximadamente 8.800 vezes os 2.100.000.000.000.000 satoshis que vão existir. A fronteira interessante estava no outro extremo. Um valor abaixo do limite de poeira produzia uma saída que a rede não retransmitiria, e a política do Bitcoin Core coloca esse limite em 546 satoshis para uma saída legada pay-to-public-key-hash e em 294 para uma saída segwit de chave única.

Onde você vê isso

Nada implementa hoje o campo de valor do BIP70, mas a confusão de unidades por trás dele está bem viva.

Três especificações, três unidades. Os URIs BIP21 expressam valores em bitcoin. O BIP70 os expressava em satoshis. As faturas BOLT11 da Lightning são ainda mais finas e expressam valores em milissatoshis, um milésimo de um satoshi. Em seguida, as interfaces das carteiras acrescentam uma configuração de exibição por cima, então o mesmo saldo aparece como 0,00250000 ou como 250.000 dependendo de uma preferência que você definiu uma vez e esqueceu.

O custo prático de errar isso é dinheiro real. As estimativas de taxa chegam em satoshis por byte virtual, então um gasto segwit de uma entrada e duas saídas, de cerca de 141 vbytes, custa 705 satoshis a 5 sat/vB. Leia essa cifra como bitcoin e você pensaria que uma transação rotineira custaria mais do que a maioria das pessoas gasta em taxas em um ano inteiro.

Dois hábitos resolvem isso. Escolha uma denominação nas configurações da sua carteira e deixe-a lá, para que o número de dígitos que você espera nunca mude. E leia o rótulo da unidade em qualquer tela de saque antes de ler o número, porque os mínimos das corretoras, as taxas de rede e o seu saldo são frequentemente expressos em unidades diferentes na mesma página.

Valor PP vs valor do URI de Bitcoin

Um valor do BIP70 era um inteiro em satoshis; um valor do BIP21 é um decimal em bitcoin, e o fator entre eles é 100.000.000. Essa é toda a diferença, e isso já basta para ter importância. Um campo que contém 0,0025 em um formato contém 250000 no outro, e um software que passa de um para o outro sem converter produz um erro de oito ordens de magnitude em qualquer direção para a qual ele por acaso penda. O formato moderno venceu, então o número que você encontra hoje em um link de pagamento está em bitcoin, a menos que algo diga explicitamente sats.

Não confundir com

Perguntas frequentes

Por que uma solicitação de pagamento às vezes especificava um valor de zero?

Zero significava que o comerciante não indicava um preço e que a carteira deveria perguntar ao cliente quanto enviar. As páginas de doações usavam isso. Nunca significou um pagamento de nada.

Os valores em bitcoin são expressos em bitcoin ou em satoshis?

Depende do formato. Os links de pagamento BIP21 usam bitcoin decimal, o BIP70 usava satoshis e as faturas BOLT11 da Lightning usam milissatoshis. As estimativas de taxa são expressas em satoshis por byte virtual, então leia sempre a unidade antes do número.

Termos relacionados

Mais em Referência do desenvolvedor

Ler esta página em inglês