Glossário / Referência do desenvolvedor
Parâmetro r
- O que é o parâmetro r?
- O parâmetro r é o acréscimo do BIP72 a um URI de bitcoin que substitui o endereço de pagamento por uma URL da qual se espera que sua carteira obtenha uma solicitação assinada.
Especificação no BIP-72.
Escanear um código QR que carrega um parâmetro r diz à sua carteira para buscar uma página web antes de mostrar qualquer coisa a você. O BIP72 chegou em 29 de julho de 2013 e usou um r simples em vez da grafia req-r reservada para chaves obrigatórias, de modo que carteiras mais antigas pudessem ignorá-lo e pagar o endereço. Nenhuma página de pagamento que você encontre hoje entregará um.
Como funciona
O parâmetro r é uma chave de consulta que contém uma URL HTTPS com codificação percentual, e o BIP72 definiu duas formas para ele. A forma compatível mantém um endereço normal no URI e acrescenta a chave depois dele, de modo que uma carteira que nunca ouviu falar do protocolo de pagamento paga o endereço, enquanto uma carteira que entende r ignora o endereço e busca a solicitação. A forma reduzida elimina o endereço por completo, gerando algo como bitcoin:?r=https://store.example/i/8f3a, que o software mais antigo não consegue pagar de modo algum.
Tornar a chave opcional foi uma leitura deliberada do BIP21, cuja gramática divide os parâmetros não reconhecidos em duas classes: qualquer um com o prefixo req- deve fazer uma carteira recusar o URI, e qualquer outro pode ser ignorado. Chamar o campo de r em vez de req-r foi, portanto, escolher a degradação graciosa. O BIP72 também detalhou o comportamento oposto, de modo que um comerciante que realmente não pudesse aceitar um pagamento para o endereço simples podia escrever req-r e obrigar carteiras incompatíveis a parar em vez de enviar fundos que a página de pagamento não conciliaria.
O que voltava da URL era um protocol buffer servido sob o tipo MIME que o BIP71 registrou para ele. O BIP73 acrescentou depois a negociação de conteúdo, permitindo que o mesmo link devolvesse uma solicitação de pagamento a uma carteira e uma página web comum, para pessoas, a um navegador, distinguidas pelo cabeçalho Accept que o cliente enviava.
Onde você o encontra
O parâmetro r não aparece em nenhum uso atual. O Bitcoin Core deixou de seguir essas URLs quando a versão 0.20.0 removeu o suporte ao protocolo de pagamento, e as ferramentas para comerciantes que antes os geravam foram substituídas por software que emite URIs BIP21 simples e faturas Lightning. Uma página de pagamento que ainda produz um parâmetro r está executando uma integração que ninguém toca há anos, e pagar por outra via é a resposta sensata.
O hábito que esse campo deve deixar em você dura mais que o próprio campo. Um código QR é ilegível para uma pessoa, então escaneá-lo é um ato de confiança em quem quer que o tenha produzido: uma tela, uma fatura impressa, um adesivo colado em uma máquina. O parâmetro r tornava isso literal ao entregar à sua carteira uma URL a ser contatada, o que também expunha seu endereço IP ao servidor do comerciante antes que você concordasse com qualquer coisa. A mesma exposição existe, de forma mais discreta, com um código QR comum de endereço que alguém trocou silenciosamente. Confirme o destino em uma tela que o scanner não controla, o que em uma carteira de hardware significa a própria tela do dispositivo, e compare caracteres suficientes para ter certeza em vez de olhar os quatro primeiros.
Parâmetro r vs URI de bitcoin
Um URI de bitcoin é a string inteira; o parâmetro r era uma chave opcional dentro dela. O que os separa é o sentido da autoridade. Chaves como amount, label e message decoram um destino que já está no URI, e uma carteira pode ignorar todas elas e ainda enviar o dinheiro para o lugar certo. O parâmetro r invertia essa relação: onde era entendido, ele substituía o endereço por completo, transferindo a decisão sobre para onde vão os fundos da string diante de você para um servidor em outro lugar.