Глоссарий / Справочник разработчика
Заметка PP
- Что такое заметка PP?
- Заметка PP (PP memo) представляла собой поле произвольного текста в UTF-8, которое BIP70 позволял продавцу, плательщику или серверу, подтверждающему получение, прикреплять к платежу, чтобы его мог прочитать человек.
Определено в BIP-70.
Три из четырех сообщений BIP70 несли заметку, и поэтому она является единственным полем протокола, которое шло в обоих направлениях. Это был чистый текст для отображения: ни один кошелек его не разбирал, ни одна подпись не защищала копию, которую плательщик отправлял обратно, и ничего из него не попадало в блокчейн. Платежные заметки работают так же и сегодня, поэтому они плохо подходят для чего-либо важного.
Как это работает
Статус: историческое. Заметка выступала полем 5 сообщения PaymentDetails, полем 4 сообщения Payment и полем 2 сообщения PaymentACK, и все они исчезли из Bitcoin Core, когда поддержку BIP70 убрали в версии 0.20.0 3 июня 2020 года.
У каждой из трех был свой автор и свой читатель.
Первую писал продавец, и кошелек показывал ее на экране подтверждения рядом с суммой: номер заказа, название товара, строка условий. Поскольку она находилась внутри сериализованных данных платежа, подпись продавца покрывала и ее, поэтому хотя бы ее нельзя было переписать в пути.
Вторую писал плательщик и отправлял обратно вместе с транзакцией, переданной в сеть. Здесь размещали инструкции по возврату средств и заметки в поддержку, и ничто их не подписывало.
Третью продавец вписывал в подтверждение получения, обычно это была благодарность или оценка срока доставки. Ее тоже ничто не подписывало.
BIP70 не задавал ограничения длины, поэтому кошельки обрезали текст там, где кончалось место в их интерфейсе. В этом небольшом пробеле есть реальная опасность. Текст, присланный злоумышленником и показанный рядом с проверенным названием компании, создает поверхность для фишинга, а заметка, которая выглядит как официальное указание отправить еще один платеж, убедительна именно там, где клиент менее всего склонен сомневаться.
Где это встречается
Заметки произвольного текста, прикрепляемые к платежам, живы и сегодня, и у каждой современной версии есть своя особенность.
Платежные ссылки BIP21 несут параметр message с процентным кодированием, который кошелек показывает и затем забывает. Lightning идет дальше: счет BOLT11 помещает описание в поле d, а поскольку поле с тегом вмещает не более 1023 групп по пять бит, примерно 639 байт, все более длинное должно быть заменено своим хешем в 256 бит в поле h. Биржи предлагают в формах вывода поле примечания, содержимое которого никогда не покидает их собственную базу данных.
Единственная заметка, которая действительно попадает в блокчейн, представляет собой выход OP_RETURN. Политика ретрансляции Bitcoin Core допускала полезную нагрузку в 40 байт, когда этот тип выхода стал стандартным в версии 0.9.0, и 80 байт начиная с версии 0.11.0. За эти байты вы платите комиссию, и они навсегда остаются публичными, поэтому использование такого выхода в качестве приватной заметки является ошибкой, которую никто не совершает дважды.
Все остальное хранится у вас локально. Заметка, набранная в вашем собственном кошельке, находится в файле кошелька, а не в сид-фразе, поэтому восстановление на новом устройстве вернет биткоины и ни одного слова, которое вы о них написали. Перед переездом сделайте экспорт.
Заметка PP vs метка
Заметка описывает платеж; метка называет сторону или адрес. Заметки BIP70 писались для одной транзакции и показывались один раз, в момент оплаты. Метка BIP21 указывает, кому платят, а метка кошелька представляет собой приватную пометку для учета, которую вы прикрепляете к адресу или транзакции и храните на своей машине. Ни одну из трех не подписывает тот, чьи слова можно проверить, и ни одна из них не видна сети.