Что такое multisig
Multisig (multi-signature) — механизм Bitcoin, при котором для расходования средств требуется не одна, а несколько независимых подписей. Схема обозначается как M-of-N: из N участников необходимо собрать минимум M подписей, чтобы транзакция стала валидной.
Например, в схеме 2-of-3 три участника хранят по одному приватному ключу, но для отправки средств достаточно подписей любых двух из них. Если один ключ утерян или скомпрометирован, средства остаются доступными через оставшиеся два. Если злоумышленник получил один ключ — он не может вывести средства без второго.
Bitcoin включает эту возможность на уровне скриптового языка: транзакция может требовать несколько независимых подтверждений до того, как сеть примет её как валидную.
Механика: как multisig реализован в протоколе
Каждый выход (output) транзакции Bitcoin содержит скрипт, который определяет условия расходования. В стандартной single-sig транзакции этот скрипт требует одну подпись, соответствующую одному публичному ключу. В multisig скрипт содержит несколько публичных ключей и пороговое значение M.
При создании multisig-выхода в скрипт записываются:
- Число M — минимальное количество подписей.
- N публичных ключей участников.
- Число N — общее количество ключей.
- Операция проверки, которая убеждается, что предоставлено не менее M корректных подписей для указанных ключей.
Когда кто-то хочет потратить средства из такого выхода, он предоставляет M или более подписей, каждая из которых соответствует одному из N публичных ключей в скрипте. Сеть проверяет, что количество валидных подписей не меньше M, и только тогда считает транзакцию валидной.
Типы адресов для multisig
Multisig-скрипт сам по себе длинный: он содержит все N публичных ключей. Если помещать его напрямую в выход транзакции, размер выхода растёт, а адрес становится неудобным. Поэтому multisig обычно оборачивается в хеш.
P2SH (Pay-to-Script-Hash)
Исторически первый способ использовать multisig. Полный скрипт с публичными ключами хешируется, и в выход записывается только хеш. Адрес начинается с
3. При расходовании средств участник предоставляет и подписи, и сам скрипт (redeem script), чтобы сеть могла убедиться, что хеш совпадает.Ограничение P2SH: размер redeem script ограничен 520 байтами. На практике это позволяет использовать до 15 ключей в схеме (стандартное ограничение — 3-of-15 максимум для P2SH).
P2WSH (Pay-to-Witness-Script-Hash)
С появлением SegWit multisig-скрипт перемещается в witness-данные, которые не входят в основную часть транзакции. Адрес начинается с
bc1q (bech32). Преимущества:- Сниженная комиссия: witness-данные учитываются с дисконтом при расчёте размера транзакции.
- Более гибкий лимит на размер скрипта по сравнению с P2SH.
P2WSH — предпочтительный вариант для новых multisig-кошельков, если все участники и сервисы поддерживают SegWit.
Сценарии применения
Корпоративная казна
Организация распределяет ключи между несколькими доверенными лицами — например, CFO, CTO и членом совета директоров. Схема 2-of-3 или 3-of-5 позволяет проводить платежи только при согласии нескольких людей. Ни один сотрудник не может единолично вывести средства.
Защита от компрометации одного устройства
Частный пользователь размещает ключи на разных устройствах и в разных локациях: один ключ на аппаратном кошельке дома, второй — на офлайн-устройстве в сейфе, третий — у доверенного лица. Схема 2-of-3 означает, что кража одного устройства или потеря доступа к одной локации не приводит к потере средств.
Эскроу и спорные сделки
Классическая схема 2-of-3 для сделок между двумя сторонами: покупатель, продавец и арбитр. Если сделка проходит штатно, покупатель и продавец подписывают вместе. При споре арбитр подписывает вместе с одной из сторон.
Наследование и восстановление доступа
Схема, в которой один ключ хранится у владельца, второй — у юриста или в банковской ячейке, третий — у члена семьи. При утере основного ключа средства можно восстановить через два оставшихся.
Практические аспекты настройки
Выбор схемы
| Схема | Когда подходит | Риск |
|---|---|---|
| 2-of-3 | Баланс безопасности и удобства для частного пользователя | Потеря двух ключей = потеря средств |
| 3-of-5 | Организации с несколькими доверенными лицами | Сложнее координация при подписании |
| 2-of-2 | Требует одновременного доступа обоих | Потеря одного ключа = потеря средств |
Схема 2-of-2 не даёт преимущества перед обычным single-sig с точки зрения отказоустойчивости: потеря любого из двух ключей делает средства недоступными. Она имеет смысл только как защита от компрометации одного устройства, но не от утери.
Координация подписания
Multisig требует, чтобы M участников подписали одну и ту же транзакцию. На практике это означает:
- Один участник создаёт неподписанную (или частично подписанную) транзакцию.
- Транзакция передаётся остальным участникам для подписания.
- После сбора M подписей транзакция транслируется в сеть.
Для этого существуют специализированные кошельки и протоколы (например, PSBT — Partially Signed Bitcoin Transaction), которые позволяют передавать частично подписанную транзакцию между устройствами и программами.
Резервное копирование
Каждый участник multisig должен хранить не только свой приватный ключ, но и информацию о схеме: какие публичные ключи входят в скрипт, в каком порядке, какой тип адреса используется (P2SH или P2WSH). Без этих данных восстановить адрес и доказать владение средствами невозможно.
Типичные ошибки
Потеря метаданных схемы. Пользователь хранит приватные ключи, но не записывает порядок публичных ключей в скрипте или тип адреса. Без этой информации невозможно реконструировать адрес.
Все ключи в одной локации. Multisig теряет смысл, если все N ключей хранятся на одном устройстве или в одном физическом месте. Атакующий, получивший доступ к этой локации, собирает все подписи.
Отсутствие тестовой транзакции. Перед отправкой крупной суммы на multisig-адрес стоит провести тестовую транзакцию малого номинала и убедиться, что схема работает корректно: адрес генерируется, средства зачисляются, подписание проходит.
Смешивание типов адресов. Если часть участников использует кошельки, не поддерживающие P2WSH, а адрес создан как bech32, они не смогут подписать транзакцию. Тип адреса нужно согласовать до создания схемы.
Неправильный порядок ключей. В P2SH порядок публичных ключей в redeem script влияет на итоговый адрес. Если участники записали ключи в разном порядке, они получат разные адреса и не смогут найти средства друг друга.
Ограничения multisig
- Multisig не защищает от сговора M участников. Если порог достигнут, средства уходят.
- Multisig не заменяет таймлок (timelock). Если нужна задержка перед расходованием, это отдельный механизм.
- Multisig увеличивает размер транзакции: каждая подпись добавляет данные. Для схемы 3-of-5 транзакция будет заметно больше, чем single-sig, и комиссия выше.
- Не все сервисы и биржи поддерживают отправку на multisig-адреса или работу с PSBT.
Проверка результата после настройки
После создания multisig-схемы стоит убедиться в следующем:
- Адрес, сгенерированный каждым участником независимо, совпадает.
- Тестовая транзакция на этот адрес подтверждена в блокчейне.
- Тестовое расходование с M подписями проходит успешно.
- Каждый участник может подписать транзакцию своим кошельком без ошибок.
- Метаданные схемы (публичные ключи, порядок, тип адреса) записаны и сохранены у каждого участника.
