Текущее местоположение: Главная / Аппаратные и холодные кошельки / Текст статьи

Как восстановить один приватный ключ в мультиподписном кошельке Bitcoin Core: пошаговое руководство

Как восстановить один приватный ключ в мультиподписном кошельке Bitcoin Core: пошаговое руководство

Мультиподпись (multisig) защищает средства, потому что для траты нужны подписи нескольких ключей. Например, в схеме 2 из 3 для транзакции хватает любых двух ключей из трёх. Поэтому потеря одного ключа не всегда означает потерю денег. Но если потерян ключ и нет его резервной копии, восстановить его уже нельзя, и это нужно понимать заранее.

В этом руководстве разберём три ситуации: ключ есть в резервной копии, ключа нет, но порог подписей ещё выполним, и ключа нет совсем.

Как устроен мультиподписной кошелёк в Bitcoin Core

Современный Bitcoin Core работает с дескрипторными кошельками (descriptor wallets). Мультиподпись описывается дескриптором, например в формате wsh(sortedmulti(...)). В дескрипторе перечислены публичные ключи всех участников, а для локальных ключей может храниться приватная часть в виде xprv или WIF.

Ключевой момент: дескриптор определяет, какой адрес принадлежит кошельку. Без дескриптора кошелёк не узнает свои адреса, даже если приватные ключи где-то есть. Поэтому резервная копия дескрипторов так же важна, как и сами ключи.

Сценарий 1. Ключ есть в резервной копии

Если вы сохраняли дескрипторы с приватными ключами, восстановление занимает несколько минут.

  1. Работайте в офлайн-окружении или на машине, которую никогда не подключали к сети с сохранёнными ключами. Не вводите приватные данные на подозрительных сайтах и в облачных сервисах.
  2. Разблокируйте кошелёк, если он зашифрован, командой walletpassphrase с нужным временем в секундах.

PSBT

  1. Выведите дескрипторы с приватной частью командой listdescriptors с параметром true. Сохраните вывод в зашифрованный файл.
  2. Создайте новый пустой дескрипторный кошелёк, если старый недоступен.
  3. Импортируйте нужный дескриптор командой importdescriptors. Поле timestamp лучше указать как дату создания кошелька, если она известна. Так сканирование займёт меньше времени.
  4. Запустите пересканирование блокчейна командой rescanblockchain, указав высоту блока, с которой начался первый перевод на адрес мультиподписи.
  5. Проверьте баланс через getbalance и список адресов через listreceivedbyaddress.

Если баланс не появился, проверьте, что дескриптор импортирован с правильной контрольной суммой и что высота начала сканирования не слишком велика.

Сценарий 2. Ключа нет, но порог подписей остаётся выполнимым

Пусть схема 2 из 3, ключ C утерян, а ключи A и B у вас есть. Ключ C восстановить нельзя, но средства можно перевести на новую схему, пока порог ещё выполним.

  1. Создайте новую мультиподпись с новым набором ключей, например 2 из 3, и запишите новый дескриптор.
  2. Сформируйте PSBT (Partially Signed Bitcoin Transaction) с переводом средств со старого адреса на новый. Используйте walletcreatefundedpsbt.
  3. Подпишите PSBT первым ключом командой walletprocesspsbt, затем передайте файл второму участнику. Каждый подписывает на своём устройстве.
  4. Объедините подписи командой combinepsbt и финализируйте транзакцию командой finalizepsbt.
  5. Отправьте транзакцию в сеть командой sendrawtransaction или через узел с нужной политикой комиссий.

importdescriptors

Действуйте сразу. Пока порог подписей выполним, средства в безопасности, но любой дополнительный отказ (второй ключ, повреждённый носитель) может сделать монеты недоступными навсегда.

Сценарий 3. Ключа нет и порог подписей потерян

Если не осталось нужного количества ключей, средства восстановить нельзя ни одним легальным способом. Приватный ключ Bitcoin задаётся числом из диапазона примерно 2 в степени 256. Перебор такого пространства физически невозможен, поэтому подбор ключа не работает.

Есть одно исключение: если ключ был создан из слабого источника случайности, например на устройстве с известной ошибкой генератора, его могли подобрать другие. Такие случаи известны, но они не относятся к обычному восстановлению.

Частые ошибки

  • Хранить дескриптор и ключи в одном месте. Тогда одна потеря или кража уничтожает всё.
  • Не проверять резервную копию. Перед тем как полагаться на бумажную или файловую копию, выполните тестовое восстановление на отдельном кошельке.
  • Пересылать xprv или WIF через мессенджеры и почту. Приватные данные не должны покидать устройство владельца.
  • Ждать, пока порог подписей станет критичным. Переводите средства заранее, если один из участников неактивен.
  • Использовать устаревший тип кошелька без дескрипторов и откладывать миграцию. Новые версии Bitcoin Core работают с дескрипторами, и это упрощает восстановление.

мультиподпись Bitcoin Core

Осторожно с предложениями «восстановления»

В интернете много сервисов, которые обещают вернуть доступ к кошельку за предоплату и просят прислать seed-фразу, xprv или файл wallet.dat. Такие предложения почти всегда мошеннические. Настоящий специалист по восстановлению работает с вашим устройством, не требуя передать ему приватные ключи. Восстановление криптокошельков, которое сопровождается запросом секретов, следует считать угрозой для средств.

Профилактика: как не потерять ключ

  • Храните резервные копии дескрипторов и ключей в 2 или 3 разных физических местах.
  • Разделяйте ключи между разными людьми и устройствами, чтобы один отказ не затрагивал весь порог.
  • Записывайте дату создания кошелька и высоту блока первого перевода. Это ускорит пересканирование.
  • Раз в несколько месяцев проводите тестовое восстановление на отдельной машине.
  • Не храните ключи в облаке, в фотографиях и в заметках телефона.

Главное

  • Если ключ есть в резервной копии дескрипторов, восстановление делается через importdescriptors и rescanblockchain.
  • Если ключа нет, но порог подписей выполним, переведите средства в новую мультиподпись через PSBT, не откладывая.
  • Если ни ключа, ни порога нет, восстановление невозможно. Подбор ключей не даёт результата.
  • Лучшая защита от потери средств это резервные копии, которые вы проверили на практике.