Electrum исправил редкий, но неприятный дефект резервных копий Lightning. В версии 4.8.2 некоторые бэкапы больше не теряют ключ, необходимый для получения Bitcoin после удалённого принудительного закрытия anchor channel. Но уже созданные копии автоматически не исправятся — для затронутых кошельков их нужно экспортировать заново.
Проблема намного уже, чем может показаться по формулировке «сломанные Bitcoin-бэкапы». Она возникает только при одновременном выполнении двух условий: кошелёк использует недетерминированные Lightning-ключи, а резервная копия относится к anchor channel.
Если хотя бы одного условия нет, именно этот дефект к резервной копии не относится. Обычные on-chain средства Bitcoin он также не делает недоступными.
Недетерминированный Lightning-ключ нельзя заново получить только из seed-фразы кошелька. В Electrum к таким конфигурациям относятся Lightning-кошельки на основе BIP39 seed и кошельки с импортированным расширенным приватным ключом xprv.
С кошельками на собственном seed Electrum ситуация зависит от возраста wallet-файла. Если он был создан в Electrum 4.1 или более новой версии, Lightning-ключи детерминированные. Файлы, созданные ещё в ветке 4.0.x, этого свойства после обычного обновления программы не получают.
Сам баг проявлялся при восстановлении anchor channel из резервной копии. Экспорт мог не содержать payment basepoint — ключевой информации, необходимой для получения выхода to_remote после того, как другая сторона принудительно закрыла канал.
В Electrum 4.8.2 разработчики изменили формат резервной копии канала. Новая версия сохраняет payment basepoint, благодаря чему выход anchor channel можно получить даже в кошельке без детерминированных Lightning-ключей.
Отдельное исправление касается полного экспорта wallet-файла. Раньше Electrum мог удалять случайно сгенерированный Lightning private key из такой резервной копии. После восстановления Lightning создавался уже другой ключ, и сохранённых данных канала оказывалось недостаточно для получения средств из anchor channel.
Теперь этот приватный ключ при экспорте сохраняется. Кроме того, Electrum скрывает возможность запросить удалённое принудительное закрытие, если импортированная резервная копия всё равно не содержит данных, необходимых для последующего получения выхода. При импорте старой проблемной копии программа также предупреждает пользователя.
Есть один практический нюанс: установка Electrum 4.8.2 не переписывает старые файлы резервных копий. Если программа сообщает, что кошелёк относится к затронутым, необходимо создать новый backup из исходного wallet-файла.
Если же исходный wallet-файл и случайно сгенерированный ключ уже потеряны, обновление клиента само по себе восстановить отсутствующий ключевой материал не сможет. То есть обновление Electrum и создание новой резервной копии — две разные операции.
Разработчики выпустили Electrum 4.8.2 как security update 11 сентября. На 2 октября именно 4.8.2 остаётся последней стабильной версией на официальном сайте проекта.
Поэтому паниковать из-за всех старых резервных копий Electrum не нужно. Исправление касается конкретного сочетания недетерминированных Lightning-ключей и anchor channels. Но если Electrum после обновления показывает предупреждение о старых Lightning-бэкапах, игнорировать его тоже не стоит.