Гаманець — це застосунок або пристрій для отримання й надсилання біткоїнів. Transaction Labeling — це додавання описів і нотаток до транзакцій, адрес та інших записів гаманця. Можна вказати мету платежу або джерело коштів. Ці метадані зберігаються в застосунку поза транзакцією Bitcoin й самі не доводять особу іншої сторони.
Відкривши історію гаманця, ви бачите давній платіж. Це був аванс, подарунок чи переказ на інший ваш рахунок? Мітка «аванс за ремонт велосипеда» пояснюватиме запис і згодом. Її перейменування змінює нотатку застосунку, а не транзакцію чи її ідентифікатор txid. Для цього не потрібно нічого нового записувати в блокчейн, публічну історію підтверджених транзакцій. Та сама різниця важлива при відновленні: Seed Phrase, слова для відновлення ключів гаманця, не містить особистих нотаток. Повернення доступу до витрачання й повернення контексту — різні завдання. [1] [3] [5]
Корисна нотатка описує відоме: номер рахунку, призначення або джерело грошей. Власний запис відрізняється від автоматичної прив’язки застосунку чи запозиченого твердження аналітика. Наприклад, BTCPay Server використовує invoice для платежів за рахунками та payout для виплат або повернень і дозволяє власні мітки. Контекст допомагає в Coin Control, ручному виборі UTXO, тобто невитрачених виходів. Кожен такий вихід містить суму й умови, за яких її можна витратити. Але напис «не поєднувати» сам по собі нічого не блокує. Які надходження пов’яже наступний платіж, визначить фактичний вибір входів. [1] [2]
Деякі гаманці можуть заморозити вихід, щоб застосунок не обирав його для витрачання. BIP 329 передає цей локальний стан через spendable лише для типу output. spendable:false використовує логічне значення false; текстовий рядок "false" — інша річ. Практично замороження захищає від ненавмисного вибору в цьому застосунку, а не від будь-якого витрачання. Це не Timelock, часова умова правил Bitcoin. Інший гаманець із правильними ключами може витратити вихід, якщо виконає його справжні умови. [1] [3]
При переході до іншого застосунку подбайте й про окремий експорт нотаток. Файл може пов’язувати імена, рахунки та історію з адресами або XPUB, розширеним публічним ключем. З нього можна обчислити наступні адреси відповідної частини гаманця, але сам XPUB не дає змоги підписувати платежі. Якщо експорт містить запис типу spscan, у ньому є приватний ключ сканування для пошуку вхідних Silent Payments. Сам він не дає права витрачати, але його розкриття шкодить приватності. Відсутність приватного ключа витрачання не робить файл нешкідливим. Шифруйте збережені копії й передавання та перевіряйте відновлення у правильному обліковому записі. [1] [4] [5]
BIP 329 розрізняє tx, addr, pubkey, input, output, xpub і spscan: транзакцію, адресу, публічний ключ, вхід, вихід, розширений публічний ключ і вираз сканування Silent Payments. Тип визначає значення ref. Для input це ідентифікатор транзакції та індекс її входу; для output — транзакції, що створила вихід, та індекс виходу. Тому txid:1 без типу недостатньо. Він може позначати вхід або вихід — різні об’єкти. Не варто трактувати кожне таке посилання як «адресу платежу». [1] [4]
BIP 329 використовує JSON Lines: текстовий файл UTF-8 з одним структурованим записом у рядку. Не обов’язково писати його вручну; важливо, щоб обидва застосунки його розуміли. Обов’язкові type та ref визначають об’єкт. label, origin і spendable необов’язкові. Відсутні label чи spendable не повинні перезаписувати наявні значення під час імпорту. Сумісний імпортер має ігнорувати невідомі типи. Тому успішне відкриття файлу не означає збереження всіх нотаток і налаштувань. [1]
Одна транзакція може бути в різних рахунках або гаманцях із різними описами. origin допомагає розрізняти ці погляди. Він містить скорочений Output Descriptor, машинний опис гаманця, з інформацією про походження ключів, але без самих ключів, дочірніх шляхів виведення чи контрольної суми. Він указує, якого гаманця стосується мітка. Це не підпис файлу й не підтвердження правдивості призначення платежу. Визначити правильний рахунок і довіряти змісту нотатки — різні речі. [1]
Перш ніж відмовлятися від старого застосунку, перевірте перенесення на окремій тестовій копії. Для відомих платежів порівняйте об’єкт і ref, текст та можливе замороження spendable. Перевірте діакритичні знаки, кілька рахунків, невідомі типи й пропущені необов’язкові поля. Імпортер може пропускати непідтримувані записи або обрізати мітки. Рекомендовані 255 символів — типовий ліміт, не загальна гарантія. Збережіть початкову копію, доки не перевірите важливий контекст. Сам напис «імпорт завершено» цього не доводить. [1]
Для повної картини прочитайте також Coin Control, UTXO, Приватність у Bitcoin, Address Clustering, Seed Phrase, Output Descriptor. На цю статтю також посилаються Chain Surveillance.