Glossario / Riferimento per sviluppatori
Parametro r
- Che cos'è il parametro r?
- Il parametro r è l'aggiunta del BIP72 a un URI bitcoin che sostituisce l'indirizzo di pagamento con un URL da cui il tuo wallet dovrebbe recuperare una richiesta firmata.
Specificato nel BIP-72.
Scansionare un codice QR che contiene un parametro r indica al tuo wallet di recuperare una pagina web prima di mostrarti qualsiasi cosa. Il BIP72 arrivò il 29 luglio 2013 e usò una semplice r invece della grafia req-r riservata alle chiavi obbligatorie, così i wallet più vecchi potevano ignorarla e pagare l'indirizzo. Nessuna pagina di pagamento che incontri oggi te ne consegnerà uno.
Come funziona
Il parametro r è una chiave di query che contiene un URL HTTPS con codifica percentuale, e il BIP72 ne definì due forme. La forma compatibile mantiene un indirizzo normale nell'URI e aggiunge la chiave dopo di esso, così un wallet che non ha mai sentito parlare del protocollo di pagamento paga l'indirizzo, mentre un wallet che comprende r ignora l'indirizzo e recupera la richiesta. La forma ridotta elimina del tutto l'indirizzo, producendo qualcosa come bitcoin:?r=https://store.example/i/8f3a, che il software più vecchio non può pagare affatto.
Rendere la chiave facoltativa fu una lettura deliberata del BIP21, la cui grammatica divide i parametri non riconosciuti in due classi: qualsiasi parametro con il prefisso req- deve indurre un wallet a rifiutare l'URI, qualsiasi altro può essere saltato. Chiamare il campo r anziché req-r scelse quindi una degradazione graduale. Il BIP72 descrisse anche il comportamento opposto, così un esercente che davvero non potesse accettare un pagamento a un indirizzo semplice poteva scrivere req-r e obbligare i wallet incompatibili a fermarsi anziché inviare fondi che la pagina di pagamento non avrebbe riconciliato.
Ciò che tornava dall'URL era un protocol buffer servito con il tipo MIME che il BIP71 registrò per esso. Il BIP73 aggiunse poi la negoziazione del contenuto, permettendo allo stesso link di restituire una richiesta di pagamento a un wallet e una normale pagina web per le persone a un browser, distinguibili in base all'intestazione Accept inviata dal client.
Dove lo vedi
Il parametro r non compare in alcun uso attuale. Bitcoin Core smise di seguire questi URL quando la versione 0.20.0 rimosse il supporto al protocollo di pagamento, e gli strumenti per esercenti che un tempo li generavano sono stati sostituiti da software che emette semplici URI BIP21 e fatture Lightning. Una pagina di pagamento che produce ancora un parametro r sta eseguendo un'integrazione che nessuno ha toccato da anni, e pagare per un'altra via è la risposta sensata.
L'abitudine che il campo dovrebbe lasciarti dura più del campo stesso. Un codice QR è illeggibile per una persona, quindi scansionarlo è un atto di fiducia verso ciò che lo ha prodotto: uno schermo, una fattura stampata, un adesivo applicato a una macchina. Il parametro r rendeva ciò letterale consegnando al tuo wallet un URL da contattare, il che esponeva anche il tuo indirizzo IP al server dell'esercente prima che tu accettassi qualsiasi cosa. La stessa esposizione esiste in una forma più banale con un normale codice QR di un indirizzo che qualcuno ha sostituito in silenzio. Conferma la destinazione su uno schermo di cui lo scanner non ha il controllo, che su un wallet hardware significa lo schermo del dispositivo stesso, e confronta abbastanza caratteri per essere certo invece di dare un'occhiata ai primi quattro.
Parametro r vs URI bitcoin
Un URI bitcoin è l'intera stringa; il parametro r era una chiave facoltativa al suo interno. Ciò che li separa è la direzione dell'autorità. Chiavi come amount, label e message decorano una destinazione che è già nell'URI, e un wallet può ignorarle tutte e inviare comunque il denaro nel posto giusto. Il parametro r invertiva quel rapporto: ovunque era compreso, sostituiva completamente l'indirizzo, spostando la decisione su dove vanno i fondi dalla stringa che hai davanti a un server altrove.