Перейти к содержимому
buybitcoinsmart

Глоссарий / Справочник разработчика

Параметр r

Что такое параметр r?
Параметр r представляет собой добавление BIP72 к URI биткоина, которое заменяет адрес платежа на URL, с которого ваш кошелек должен получить подписанный запрос.

Определено в BIP-72.

Сканирование QR-кода с параметром r указывает вашему кошельку получить веб-страницу, прежде чем что-либо вам показать. BIP72 появился 29 июля 2013 года и использовал простое r, а не написание req-r, зарезервированное для обязательных ключей, чтобы старые кошельки могли его игнорировать и вместо этого заплатить на адрес. Ни одна страница оплаты, которую вы встретите сегодня, его вам не предложит.

Как это работает

Параметр r является параметром запроса, содержащим HTTPS URL с процентным кодированием, и BIP72 определил для него две формы. Совместимая форма сохраняет обычный адрес в URI и добавляет ключ после него, так что кошелек, который никогда не слышал о платежном протоколе, платит на адрес, а кошелек, понимающий r, игнорирует адрес и получает запрос. Урезанная форма полностью убирает адрес, давая что-то вроде bitcoin:?r=https://store.example/i/8f3a, что старое программное обеспечение оплатить вообще не может.

Необязательность ключа была осознанным прочтением BIP21, грамматика которого делит нераспознанные параметры на два класса: любой параметр с префиксом req- должен заставить кошелек отклонить URI, любой другой может быть пропущен. Название поля r вместо req-r означало выбор плавной деградации. BIP72 описал и противоположное поведение, так что продавец, который действительно не мог принять прямой платеж на адрес, мог написать req-r и заставить несовместимые кошельки остановиться вместо отправки средств, которые страница оплаты не смогла бы сверить.

В ответ с URL приходил protocol buffer, отдаваемый под MIME-типом, который зарегистрировал для него BIP71. Затем BIP73 добавил согласование содержимого, позволяя одной и той же ссылке возвращать запрос на оплату кошельку и обычную человеческую веб-страницу браузеру, различаемым по заголовку Accept, отправленному клиентом.

Где это встречается

Параметр r нигде не встречается в текущем использовании. Bitcoin Core перестал переходить по таким URL, когда версия 0.20.0 удалила поддержку платежного протокола, а инструменты для продавцов, которые когда-то их генерировали, были заменены программным обеспечением, выпускающим простые URI BIP21 и счета Lightning. Страница оплаты, которая все еще создает параметр r, запускает интеграцию, которую никто не трогал годами, и разумный ответ состоит в том, чтобы заплатить другим путем.

Привычка, которую это поле должно вам оставить, переживет само поле. QR-код нечитаем для человека, поэтому его сканирование является актом доверия к тому, что его создало: экрану, напечатанному счету, наклейке на устройстве. Параметр r делал это буквальным, передавая вашему кошельку URL для обращения, что также раскрывало ваш IP-адрес серверу продавца, прежде чем вы на что-либо согласились. Тот же риск раскрытия существует в более скучной форме с QR-кодом обычного адреса, который кто-то незаметно подменил. Подтвердите пункт назначения на дисплее, который не контролируется сканером, что в случае аппаратного кошелька означает собственный экран устройства, и сравните достаточно символов, чтобы быть уверенным, а не бросайте взгляд на первые четыре.

Параметр r vs URI биткоина

URI биткоина представляет собой всю строку; параметр r был одним необязательным ключом внутри нее. Их разделяет направление полномочий. Ключи вроде amount, label и message дополняют пункт назначения, который уже находится в URI, и кошелек может игнорировать каждый из них и все равно отправить деньги в нужное место. Параметр r переворачивал это отношение: где бы он ни понимался, он полностью заменял адрес, перенося решение о том, куда пойдут средства, со строки перед вами на сервер где-то еще.

Не путать с

Часто задаваемые вопросы

В чем разница между r и req-r в URI биткоина?

Префикс решает, что произойдет с кошельками, которые не понимают ключ. BIP21 гласит, что неизвестный параметр, начинающийся с req-, заставляет кошелек отклонить весь URI, тогда как простое r можно проигнорировать, что позволяет кошельку вместо этого заплатить на адрес.

Стоит ли беспокоиться, если страница оплаты выдает мне параметр r?

Отнеситесь к этому как к признаку заброшенного программного обеспечения. Bitcoin Core удалил поддержку платежного протокола в версии 0.20.0, и ни один современный кошелек не будет действовать по этому ключу, поэтому попросите продавца предоставить простой адрес или счет Lightning.

Читайте далее

Связанные термины

Еще в разделе «Справочник разработчика»

Читать эту страницу на английском