Глоссарий / Справочник разработчика
Метка
- Что такое метка?
- Метка в URI биткоина называет человека или организацию, которым производится платеж, а в кошельке она представляет собой личную заметку, которую вы прикрепляете к адресу или транзакции.
Определено в BIP-21.
Метки являются единственной частью платежа в биткоине, существующей исключительно для людей. Ничего из того, что вы вводите в метку, не попадает в блокчейн, и ничто в вашей сид-фразе не вернет ее обратно: в версии 0.17.0 в октябре 2018 года Bitcoin Core заменил свою прежнюю систему счетов метками, и они хранятся только в файле кошелька. Их потеря стоит вам собственной истории транзакций при уплате налогов.
Как это работает
Слово «метка» охватывает две разные вещи, и их различение избавляет от изрядной путаницы.
Первая представляет собой параметр label, определенный в BIP21. Он передается внутри платежного URI в виде UTF-8 с процентным кодированием, поэтому label=Coffee%20Shop отображается как Coffee Shop на вашем экране подтверждения. Это справочный текст, который предоставляет тот, кто составил URI. Никакая подпись его не покрывает, никакой кошелек его не проверяет, и злоумышленник, создающий фишинговую ссылку, выбирает его так же свободно, как и добросовестный продавец.
Вторая представляет собой заметку, которую вы пишете сами. Bitcoin Core предоставляет ее через setlabel, getaddressesbylabel и listlabels, программный интерфейс, появившийся в версии 0.17.0, когда счета были объявлены устаревшими, и окончательно заменивший их, когда вызовы для счетов были удалены в версии 0.18.0. Sparrow, Electrum и большинство мобильных кошельков имеют аналогичное поле.
Метки на стороне кошелька представляют собой метаданные, которые лежат рядом с вашими ключами, а не внутри них. Восстановите сид-фразу в новом программном обеспечении, и все биткоины вернутся без всякой памяти о том, откуда она пришла. BIP329 существует, чтобы решить половину этой проблемы, касающуюся переносимости: он определяет экспорт в формате JSON Lines с одной записью на строку, каждая из которых содержит тип tx, addr, pubkey, input, output или xpub, ссылку и текст метки. Несколько настольных и мобильных кошельков умеют читать и записывать этот формат, поэтому метки можно перенести при смене программного обеспечения.
Где это встречается
Метки оказываются несущими в трех ситуациях, не имеющих ничего общего с опрятным видом платежей.
Первое: управление монетами. Решение о том, какие неизрасходованные выходы потратить, а какие держать отдельно, работает только если вы можете их различить, и именно метка фиксирует, что эта монета пришла с проверенного вывода с биржи, а та пришла из прямой сделки между частными лицами. Объедините их в одной транзакции, и вы навсегда связали две истории. Никто не избегает объединения, полагаясь на память.
Второе: налоговые записи. Ваша стоимость приобретения для конкретной монеты хранится в ваших собственных заметках, потому что перевод в самостоятельное хранение не несет в себе цены. Кошелек с помеченными пополнениями и вписанной суммой в фиатной валюте уже является готовой таблицей; кошелек, полный непомеченных UTXO, означает полдня на восстановление раз в год.
Третье: фишинг, и он работает в обратную сторону. Метка в URI является текстом, контролируемым злоумышленником. Вид знакомого названия компании на экране платежа означает лишь то, что кто-то вписал это название в строку, и ничего больше.
Практическая привычка: ставьте метку в момент транзакции, пока вы еще знаете, чем она была, и экспортируйте метки вместе с дескриптором кошелька всякий раз, когда делаете резервную копию. Сид-фраза плюс дескриптор плюс файл меток дают полное восстановление. Одна сид-фраза восстанавливает деньги и теряет историю.
Метка vs примечание в PP
Примечание в платежном протоколе BIP70 было текстом продавца, который передавался внутри подписанного сообщения, поэтому кошелек мог хотя бы связать его с владельцем сертификата. Метка BIP21 передается открыто, и ничто за нее не ручается. Это различие было всем аргументом в пользу платежного протокола, и оно его не спасло: BIP70 был удален из Bitcoin Core в версии 0.20.0 в июне 2020 года, оставив неподписанные метки в качестве формата, которым все на самом деле пользуются.