Глоссарий / Адреса и ключи
Публичный ключ без сжатия
- Что такое Публичный ключ без сжатия?
- Публичный ключ без сжатия записывает обе координаты точки кривой за префиксом 0x04, занимает 65 байт и встречается сегодня в основном в ключах, созданных до 2012 года.
Самое раннее программное обеспечение биткоина записывало полные значения x и y, поэтому биткоины 2009 и 2010 годов лежат за адресами, производными от ключей длиной 65 байт. Затем SegWit закрыл формат: BIP-143 запрещает ключи без сжатия в программах свидетеля версии 0, и ни один адрес bc1q не может их использовать. Если вы восстанавливаете старый бумажный кошелек, именно эта деталь решает, появятся ли ваши средства.
Как это работает
Публичный ключ без сжатия устроен так же буквально, как называется. Один байт префикса 0x04 объявляет формат, затем 32 байта дают координату x, затем 32 байта дают координату y, всего 65 байт. Чтобы его прочитать, ничего вычислять не нужно: обе половины точки уже на месте, и именно поэтому исходная реализация выбрала его на оборудовании того времени.
Правила действительности на базовом уровне никогда не выделяли этот формат. Узел, проверяющий расход устаревшего типа pay-to-public-key-hash или pay-to-script-hash, принимает ключ без сжатия без возражений, и биткоины, заблокированные на такой ключ в 2010 году, остаются доступными для траты без какого-либо срока. Изменилось все, что построено сверху: кошельки BIP-32 создают только сжатые ключи, поэтому сид-фраза никогда не даст ключ без сжатия, а SegWit сделал их недействительными в расходах версии свидетеля 0.
Плата за лишние 32 байта взимается при трате. Устаревший вход со сжатым ключом занимает около 148 vbytes; тот же вход с ключом без сжатия занимает около 180 vbytes, примерно на 22 % больше при одинаковой трате. Именно при объединении дюжины таких входов во время всплеска комиссий эта разница перестает быть мелочью.
Где это встречается
Три артефакта до сих пор передают людям ключи без сжатия, и все три относятся к одной эпохе.
Бумажные кошельки, напечатанные сайтами-генераторами с 2011 по 2013 год, обычно давали адрес, начинающийся с 1, и строку в формате импорта кошелька (Wallet Import Format), начинающуюся с 5, маркер несжатой стороны формата. Физические монеты серии Casascius, выпущенные между 2011 и 2013 годами, скрывали такую же строку под голограммой, выявляющей вскрытие. А приватные ключи, экспортированные из очень раннего программного обеспечения кошельков, появились задолго до перехода.
Восстановление старого ключа
Ловушка не в кодировке, а в том, что один приватный ключ дает два разных адреса. Хеширование ключа длиной 65 байт дает один устаревший адрес; хеширование сжатой версии того же ключа длиной 33 байта дает совершенно другой. Импортируйте ключ в современное программное обеспечение, которое исходит из сжатия, и баланс может выглядеть нулевым, пока биткоины остаются нетронутыми на другом адресе.
Кошельки, которые хорошо работают со старым материалом, в том числе Electrum, проверяют оба производных адреса, когда вы не импортируете ключ, а переводите с него все средства (sweep). Такой перевод всех средств (sweep) к тому же безопаснее: биткоины переходят на адрес, контролируемый вашей текущей сид-фразой, так что распечатка, пролежавшая в ящике, сфотографированная смартфоном или виденная прежним владельцем, больше не может ничего потратить. Проверьте обе формы адреса в обозревателе блоков, прежде чем решить, что восстановление не удалось.