Майнинг Криптовалюты

Что такое гэпы адресов в биткоин-кошельках и как они могут привести к потере BTC?

Безопасность криптовалютных активов

Пользователи биткоина, которые самостоятельно хранят свои монеты, должны знать о различных вариантах кражи или потери своих ключей. Но что менее известно, так это то, что можно потерять свои биткоины, даже если у вас есть ключи!

Историческая справка

Раньше биткоин-кошельки были просто «связкой ключей». Такие кошельки просто генерировали адреса по мере необходимости и хранили их с возможностью доступна к неиспользуемым ключам в любой момент времени. Обратной стороной этого было то, что каждый раз, когда кошелек генерировал новый ключ, пользователю приходилось делать новую резервную копию. Кошельки не информировали своих пользователей об этом факте, поэтому люди могли навсегда потерять доступ к своим средствам из-за недостаточно частого резервного копирования кошелька.

Иерархические детерминированные (Hierarchical Deterministic, HD) кошельки сделали резервное копирование простым одноразовым процессом. Однако вместе с HD-кошельками появилась новая проблема.

Если вы импортируете/восстанавливаете кошелек на основе пула ключей, то тут все довольно просто: все, что у вас есть ― это ключи, которые вы импортируете. С HD-кошельками ваш сид (seed) ― это портал к практически неограниченному количеству ключей. Поскольку мы не хотим тратить неограниченное количество времени на генерацию ключей из своего сида, импорт кошелька должен следовать определенному процессу обнаружения ключей, который включает в себя разумные ограничения на то, когда прекращать поиск средств.

Эти органичения в пути деривации включают достижение определенного количества неиспользуемых адресов, которые никогда не получали биткоины. Это число называется «ограничением по гэпу адресов» (address gap limit).

Как отмечено в BIP 44 и BIP 45, рекомендуемый предел гэпа адресов составляет 20 (и только на пути адресов приема, а не на пути адресов сдачи). Обратите внимание на этот раздел BIP 44:

Ограничение по гэпу адресов в настоящее время установлено на 20. Если программное обеспечение обнаруживает 20 неиспользуемых адресов подряд, то ожидается, что за пределами этой точки нет используемых адресов, и поиск прекращается. Мы сканируем только внешние цепочки адресов, потому что внутренние цепочки получают только те монеты, которые поступают из связанных внешних цепочек.

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

К сожалению, немногие кошельки следуют BIP 44, чтобы предупреждать пользователей о гэпе адресов.

Предположения…

Все вопросы, поднятые в этой статье, связаны с предположениями, которые не всегда верны. Какие это предположения?

Однако вы могли сгенерировать 20+ адресов приема во время тестирования кошелька, на которые вы не получали средства. Затем вы могли получить средства на адреса, которые были созданы после этого. Или:

Возможные решения

Превентивные:

Исправления:

wallet.change_gap_limit (100)

wallet.storage.write ()

Возврат пропавших средств

Мне уже неоднократно приходилось помогать людям восстанавливать средства, которые «таинственным образом исчезали», когда они пытались восстановить кошелек. Мое решение ― восстановить кошелек в Electrum (желательно загрузить сид на аппаратное устройство), а затем использовать консоль для быстрого создания адресов:

for x in range(1000): wallet.create_new_address(False)

for x in range(1000): wallet.create_new_address(True)

В левом нижнем углу окна Electrum вы должны увидеть сообщение «synchronizing…» в течение нескольких секунд, а затем, я надеюсь, ваши «пропавшие» биткоины появятся! Теперь вы сможете их нормально тратить.

У пользователей сервера BTCPay есть встроенный инструмент повторного сканирования, который устанавливает лимит гэпа по умолчанию на 10 000 ― насколько я знаю, это единственное ПО кошелька, которое упрощает этот процесс до нажатия кнопки.

Практический пример

Если вы хотите знать, каково это ― искать потерянные деньги, то установите Electrum и настройте следующий watch-only кошелек.

vpub5VbqiMAitbLcBPBLVaHWTudEfwaBwcAR4naUaM54kGTDq

FFB9bTU5sAwD3SoM7pD2JVVqTuojBRcQcauBeiswgm8QL1xwsLjrpx

Гэпы адресов ― это проблема низкого уровня, которая не должна особенно беспокоить пользователей биткоина. Однако до тех пор, пока все популярные биткоин-кошельки не найдут более изящные решения для этих «крайних случаев», они будут превращать в кошмар пользовательский опыт людей, которые могут с ними столкнуться.

Дата публикации 13.10.2020
Подписывайтесь на новости криптовалютного рынка в Яндекс Мессенджер.
Поделитесь этим материалом в социальных сетях и оставьте свое мнение в комментариях ниже.


The following two tabs change content below.
Mining-Cryptocurrency.ru
Материал подготовлен редакцией сайта "Майнинг Криптовалюты", в составе: Главный редактор - Антон Сизов, Журналисты - Игорь Лосев, Виталий Воронов, Дмитрий Марков, Елена Карпина. Мы предоставляем самую актуальную информацию о рынке криптовалют, майнинге и технологии блокчейн. Отказ от ответственности: все материалы на сайте Mining-Cryptocurrency.ru имеют исключительно информативные цели и не являются торговой рекомендацией или публичной офертой к покупке каких-либо криптовалют или осуществлению любых иных инвестиций и финансовых операций.
Exit mobile version