Мультиподпись (multisig) в биткоине: как работает схема 2 из 3
Мультиподпись (multisig, мультисиг) — это способ хранить биткоины так, чтобы каждый перевод подписывали несколько ключей, например любые два из трёх. Схему записывают как «m из n»: у кошелька n ключей, для траты нужны m подписей, и сеть Bitcoin сама проверяет, что их хватает. В схеме 2 из 3 один украденный ключ не позволит вору потратить монеты, а один потерянный не заблокирует их владельца. Плата за это — сложность: у каждого ключа своя сид-фраза, и восстановить кошелёк по одной фразе нельзя, нужна ещё его конфигурация — дескриптор с публичными ключами всех участников. Ниже — как устроена схема 2 из 3, что должен хранить каждый участник, какие стандарты за ней стоят и какие кошельки её поддерживают. Если термин «сид-фраза» для вас новый, начните со статьи что такое сид-фраза.
Мультиподпись в двух словах
| Вопрос | Ответ |
|---|---|
| Что это | Адрес, с которого биткоины можно потратить, только собрав m подписей из n ключей |
| Частые схемы | 2 из 3 — для личных сбережений и наследства, 3 из 5 — для организаций и крупных сумм |
| Что хранить | Сид-фразу каждого ключа (и парольную фразу, если она задана) и дескриптор кошелька |
| Чего нельзя | Восстановить кошелёк по одной сид-фразе; поменять ключи или порог, не переводя средства |
| Стандарты | BIP67 (сортировка ключей), BIP48 (путь m/48'/0'/0'/2'), BIP380–383 (дескрипторы), BIP174 (PSBT) |
| Кошельки | Sparrow, Electrum, Nunchuk, BlueWallet; сервисы, которые держат один ключ, — Unchained и Casa |
| Чем платить | Комиссия выше, настройка сложнее, нужна ещё одна резервная копия |
Как работает мультиподпись
Монеты на мультиподписном адресе заблокированы скриптом, в котором перечислены публичные ключи участников и порог. Так выглядит скрипт «2 из 3» из примера в BIP67:
OP_2
021f2f6e1e50cb6a953935c3601284925decd3fd21bc445712576873fb8c6ebc18
022df8750480ad5b26950b25c7ba79d3e37d75f640f8e5d9bcd5b150a0f85014da
03e3818b65bcc73a7d64064106a859cc1a5a728c4345ff0b641209fba0d90de6e9
OP_3 OP_CHECKMULTISIG
OP_2 — порог, затем три публичных ключа, OP_3 — их общее число, а OP_CHECKMULTISIG проверяет, что транзакцию подписали два ключа из трёх. Эту проверку выполняет каждый узел сети, поэтому обойти порог не может ни участник, ни разработчик кошелька.
Сделать такие транзакции стандартными предложил ещё в 2011 году BIP11; в нём приведён пример сделки с посредником, где ключи есть у покупателя, продавца и арбитра, а судьбу монет решают любые двое из них. С 1 апреля 2012 года скрипт можно спрятать за хешем — адресом P2SH, который начинается с 3 (BIP16). У SegWit есть свой вариант, P2WSH (BIP141): его адрес начинается с bc1q, как у обычного SegWit-кошелька, но длиннее — 62 символа против 42.
Когда монеты тратят, кошелёк раскрывает скрипт, а узлы проверяют, что его хеш совпадает с адресом, и сверяют подписи. Поэтому до первой траты по адресу не видно, что он мультиподписной, а после неё в блокчейне видны порог и все публичные ключи. Скрипт P2SH не может быть длиннее 520 байт, так что ключей в нём не больше 15, а в P2WSH — до 20 (BIP383).
В Taproot всё устроено иначе. В его скриптах OP_CHECKMULTISIG отключён, а ту же схему «m из n» собирают из новой команды OP_CHECKSIGADD (BIP342). Протокол MuSig2 и вовсе объединяет ключи участников в один: в блокчейне такой выход выглядит как адрес с одним ключом и тратится одной общей подписью, но подписывать должны все участники — порога вроде «2 из 3» в MuSig2 нет (BIP327).
Что будет, если ключ потерян или украден
Возьмём схему 2 из 3: три ключа, каждый на своём аппаратном кошельке и со своей сид-фразой, а для перевода нужны любые два.
| Что случилось | Последствия | Что делать |
|---|---|---|
| Сломалось устройство, сид-фраза цела | Ключ не потерян | Восстановить ключ из сид-фразы на новом устройстве |
| Пропали и устройство, и сид-фраза одного ключа | Два оставшихся ключа подписывают переводы | Создать новый кошелёк и перевести в него средства, пока ключей два |
| Сид-фразу одного ключа украли или подсмотрели | В одиночку вор ничего не потратит | Тоже перевести средства в новый кошелёк |
| Утрачены два ключа | Одной подписи мало: средства заблокированы навсегда | Предотвратить заранее: хранить ключи в разных местах |
| Украдены два ключа | Вор может перевести всё | Предотвратить заранее: не держать два ключа в одном месте |
| Пропал дескриптор, все три сид-фразы целы | Из фраз заново получаются публичные ключи | Вспомнить порог, тип скрипта и пути и сверить адреса |
| Пропали дескриптор и одна сид-фраза | Двух фраз хватило бы для подписи, но без публичного ключа третьего участника кошелёк не построит адреса | Средства недоступны |
Последняя строка — главная ловушка мультиподписи: сид-фраз мало, если пропала конфигурация.
Что хранить каждому участнику
У мультиподписного кошелька резервные копии двух видов:
- Сид-фраза каждого ключа и его парольная фраза, если она задана: без неё восстановится другой ключ (как работает парольная фраза). Фразы разных ключей лежат в разных местах, на бумаге или металле; общие правила — в статье как хранить сид-фразу.
- Дескриптор кошелька — описание всей схемы: порог, тип скрипта, а для каждого участника — отпечаток главного ключа, путь деривации и расширенный публичный ключ (xpub). Unchained называет его файлом конфигурации и подчёркивает: для мультиподписи нужны и ключи, и этот файл (Unchained).
Почему одной сид-фразы мало, объясняет BIP87: кошелёк с одной подписью восстанавливается по одной фразе, а мультиподписному нужно больше данных, в том числе публичные ключи всех участников. Адрес — это хеш скрипта со всеми ключами, и без любого из них кошелёк не вычислит ни одного адреса.
Потратить средства по дескриптору нельзя, но по нему видны баланс и вся история кошелька, поэтому держите его в тайне (Unchained). Копию кладут рядом с каждой сид-фразой: тогда любые два места хранения ключей дают всё, что нужно для восстановления. Sparrow с версии 1.7.0 сам предлагает сохранить дескриптор при создании мультиподписного кошелька и умеет выгружать его в PDF с QR-кодом (выпуски Sparrow).
Как выглядит дескриптор
Вот дескриптор кошелька 2 из 3, собранного по BIP48 из трёх официальных тестовых фраз BIP39 без парольной фразы: abandon abandon … about, legal winner … yellow и letter advice … above. Эти фразы опубликованы, поэтому не отправляйте средства на адреса этого кошелька.
wsh(sortedmulti(2,[73c5da0a/48h/0h/0h/2h]xpub6DkFAXWQ2dHxq2vatrt9qyA3bXYU4ToWQwCHbf5XB2mSTexcHZCeKS1VZYcPoBd5X8yVcbXFHJR9R8UCVpt82VX1VhR28mCyxUFL4r6KFrf/0/*,[b8688df1/48h/0h/0h/2h]xpub6FQya7zGhR92kacYsNnjreouvnHJMpXYsUXnW6NJJAJRCKsa26TzDy4LdnGhEurr3d6y1J8PJ7EEMKQp74XTqYvmGJNogYXSKDszYHtF8mX/0/*,[28645006/48h/0h/0h/2h]xpub6DnEBNkSJKBYQmsbhS1sP9cNdtU5c9PLFGCjTJmxicxc13WB8zNNGQazabQpyFAGW5bV9tMko4uBxDxjUKL6dSAcx1tEbgEHtgSqyRsekh6/0/*))#j6u0jndq
| Часть | Что означает |
|---|---|
wsh(…) | Адреса P2WSH (bc1q…) |
sortedmulti(2, …) | Нужны 2 подписи из перечисленных ключей; ключи сортируются по BIP67 |
[73c5da0a/48h/0h/0h/2h] | Отпечаток главного ключа участника и путь к его ключу по BIP48 |
xpub6DkF… | Расширенный публичный ключ участника |
/0/* | Адреса для получения; адреса сдачи описывает такой же дескриптор с /1/* |
#j6u0jndq | Контрольная сумма дескриптора (BIP380) |
Первый адрес получения этого кошелька — bc1qm43n7nnev58aj3nrznz2xscgv98t7gxycq5pmp20a5vzfp5t0q2s7r6twa. Запишите первый адрес своего кошелька рядом с дескриптором: если после восстановления кошелёк покажет тот же адрес, значит, фразы, порог и пути указаны верно. Некоторые кошельки записывают ветки получения и сдачи одной строкой, через /<0;1>/* (BIP389).
Как из сид-фразы получается xpub участника, видно в конвертере сид-фразы: на вкладке BIP32 впишите путь m/48'/0'/0'/2'/0, и в поле «Расширенный публичный ключ аккаунта» появится ключ по BIP48 — для фразы abandon … about это тот же xpub6DkFAXWQ2dHx…, что в дескрипторе. Electrum записывает такие ключи с префиксом Zpub (исходный код Electrum): ключ тот же, отличаются только байты версии; подробнее о префиксах — в статье путь деривации.
Какие стандарты нужны мультиподписи
Чтобы кошельки разных разработчиков собирали из одних ключей одни и те же адреса, понадобилось несколько стандартов:
| Стандарт | Что задаёт |
|---|---|
| BIP67 | Сортировку публичных ключей: одни и те же ключи и порог всегда дают один адрес |
| BIP45 | Ранний путь m/45' для мультиподписи P2SH |
| BIP48 | Пути m/48'/0'/0'/2' для P2WSH и m/48'/0'/0'/1' для P2WSH внутри P2SH |
| BIP87 | Путь m/87'/0'/0' без типа скрипта: его задаёт дескриптор |
| BIP380–BIP383 | Дескрипторы, в том числе multi() и sortedmulti() |
| BIP174 | PSBT — формат частично подписанной транзакции |
| BIP129 | BSMS — безопасная настройка мультиподписи и формат файла конфигурации |
Сортировка ключей (BIP67). Скрипт не требует определённого порядка ключей, поэтому из одного набора ключей и порога можно составить много разных скриптов, и у каждого будет свой адрес. BIP67 предписывает сортировать ключи, и тогда участникам достаточно обменяться порогом и мастер-публичными ключами: все кошельки получат одни и те же адреса. В дескрипторах это sortedmulti(), а multi() сохраняет порядок, в котором ключи перечислены.
Путь BIP48. Он устроен как BIP44, но с дополнительным уровнем типа скрипта: m / 48' / монета' / аккаунт' / тип скрипта' / сдача / индекс, где тип 1’ — P2WSH внутри P2SH, а 2’ — P2WSH. BIP48 закрепил практику, которая уже сложилась в кошельках, и рекомендует по умолчанию m/48'/0'/0'/2'. BIP87 предлагает путь без уровня типа скрипта, потому что тип и так записан в дескрипторе. Как читать такие пути, рассказано в статье путь деривации.
PSBT (BIP174). Транзакция переходит от участника к участнику как частично подписанная: каждый добавляет свою подпись, а подписывающее устройство может вообще не подключаться к сети — вся нужная информация есть в самой PSBT. Её переносят на карте памяти, показывают QR-кодом или пересылают файлом; в Electrum с версии 4.6.0 есть плагин Nostr Cosigner, который пересылает PSBT между участниками через Nostr (заметки к выпускам Electrum).
BSMS (BIP129). Конфигурацию важно не только сохранить, но и защитить от подмены: по BIP129, тот, кто изменит конфигурацию, может украсть средства или потребовать выкуп, заставив отправлять монеты на чужой адрес. Стандарт описывает безопасную настройку и общий формат файла; файлы BSMS умеют сохранять и загружать, например, Sparrow и Nunchuk.
Какие кошельки поддерживают мультиподпись
Мультиподпись собирают в программе-координаторе, а ключи можно держать на аппаратных кошельках. Сведения ниже взяты из документации и заметок к выпускам на октябрь 2026 года.
| Кошелёк | Где работает | Что важно знать |
|---|---|---|
| Sparrow | Компьютер | Мультиподпись на распространённых типах скриптов, аппаратные кошельки по USB и без подключения; до 20 ключей, в P2SH — до 15; дескриптор в PDF с QR-кодом, файлы BSMS (выпуски) |
| Electrum | Компьютер, Android | Меню File → New → Multi-signature wallet; участники обмениваются мастер-публичными ключами, транзакции передают файлом, QR-кодом или через плагин Nostr Cosigner |
| Nunchuk | iOS, Android, компьютер | Выгружает конфигурацию в файл BSMS; для восстановления нужны этот файл и столько сид-фраз, сколько подписей требует схема (Nunchuk) |
| BlueWallet | iOS, Android | Multisig Vault, по умолчанию 2 из 3; резервную копию координации разработчики называют картой кошелька |
| Unchained | Сервис | Хранилище 2 из 3: два ключа у клиента, один у Unchained; без компании средства выводят открытым инструментом Caravan по двум аппаратным кошелькам и файлу конфигурации (Unchained) |
| Casa | Сервис | Хранилище из 3 ключей (2 из 3) или 5 ключей (3 из 5): ключ в телефоне, аппаратные ключи и Casa Recovery Key, которым компания одна средства не переведёт |
Тем, кто держит в биткоине заметную часть сбережений, Sparrow советует схему не меньше 2 из 3, аппаратные кошельки нескольких производителей — чтобы уязвимость у одного из них не ставила под угрозу всю схему — и разные места хранения (Sparrow). BlueWallet предупреждает, что все ключи на одном устройстве дают ту же защиту, что обычный кошелёк (BlueWallet).
Сервис с собственным ключом страхует от потери: Unchained пишет, что поможет вернуть средства, если у клиента остался хотя бы один ключ (Unchained). Но такой сервис знает конфигурацию кошелька, а значит, видит его баланс и историю.
Зачем нужна мультиподпись
- Личные сбережения. Схема 2 из 3 с ключами в разных местах защищает и от кражи одного ключа, и от потери одного ключа — например, при пожаре.
- Наследство. Два ключа хранит владелец, третий — наследник или доверенный человек; после смерти владельца наследник добавляет к своему ключу один из ключей владельца, найденный по письму-инструкции. Подробности и альтернативы — в статье наследование криптовалюты.
- Общие деньги. Партнёры или семья держат по ключу, и никто не переведёт средства в одиночку. Для казны организации подходит 3 из 5: двое участников не потратят монеты без третьего, а потеря двух ключей не страшна.
- Сделки с посредником. Покупатель, продавец и арбитр — классический пример из BIP11.
Чем приходится платить
- Комиссия выше. По правилам веса из BIP141 вход P2WSH 2 из 3 занимает около 104 виртуальных байт, а вход обычного SegWit-кошелька (P2WPKH) — около 68: в транзакции две подписи и скрипт с тремя ключами.
- Меньше приватности. После первой траты в блокчейне видно, что адрес мультиподписной, видны порог и все публичные ключи.
- Сложность. Несколько устройств, дескриптор, передача PSBT — и ошибки обходятся дорого. Например, Electrum для Android версий 4.4.0–4.4.2 не проверял, что ключи участников одного типа скрипта, и мог создать мультиподписной кошелёк, с которого не потратить средства ни одной версией Electrum (заметки к выпускам).
- Совместимость. Другой кошелёк должен поддерживать тот же тип скрипта, сортировку ключей и пути; дескриптор снимает необходимость угадывать.
- Жёсткость схемы. Порог и ключи записаны в скрипте, поэтому, чтобы перейти с 2 из 3 на 3 из 5 или заменить ключ, создают новый кошелёк и переводят в него средства.
Мультиподпись, SLIP-39 или парольная фраза
Все три способа защищают от разных угроз:
| Парольная фраза BIP39 | SLIP-39 с несколькими долями | Мультиподпись 2 из 3 | |
|---|---|---|---|
| От чего защищает | От того, кто нашёл слова | От потери или кражи одной копии | От кражи одного ключа и сбоя одного устройства |
| Сколько устройств подписывают перевод | Одно | Одно | Два |
| Что ещё хранить | Саму парольную фразу | Ничего | Дескриптор |
| Где восстановить | В кошельке BIP39 с поддержкой парольной фразы | В кошельке с поддержкой SLIP-39 | В кошельке с мультиподписью |
SLIP-39 делит резервную копию одного ключа, мультиподпись — право тратить; подробнее о долях — в статье SLIP-39 и BIP39. Способы сочетаются: ключ мультиподписи можно сохранить долями SLIP-39 — Electrum, например, принимает такую копию для ключа участника (исходный код Electrum).
Как проверить кошелёк 2 из 3 до пополнения
- Создайте ключи на разных устройствах, лучше разных производителей, и запишите каждую сид-фразу.
- Соберите кошелёк в координаторе и сохраните дескриптор — по копии к каждой фразе.
- Сверьте адрес получения на экранах аппаратных кошельков, которые умеют его показывать: так вы заметите подменённую конфигурацию, о которой предупреждает BIP129.
- Отрепетируйте восстановление: загрузите дескриптор в другом приложении или на другом компьютере и убедитесь, что адреса совпадают.
- Пришлите небольшую сумму и потратьте её, подписав двумя ключами, и только потом переводите основные средства.
- Запишите, у кого какой ключ и где лежат копии дескриптора, а для наследников составьте письмо-инструкцию.
Частые вопросы
Можно ли сделать мультиподпись из одной сид-фразы?
Технически из одной фразы можно вывести три ключа по разным путям, но тогда одна фраза снова открывает всё и смысл схемы пропадает. BlueWallet прямо пишет, что все ключи на одном устройстве дают безопасность обычного кошелька.
Можно ли перевести обычный кошелёк на мультиподпись?
Нет: у мультиподписи другие адреса. Создайте мультиподписной кошелёк и переведите в него средства. Так же поступают, если нужно поменять порог или заменить ключ.
Должны ли все участники быть онлайн?
Нет. В PSBT есть всё, что нужно для подписи, поэтому подписывающее устройство может работать без сети (BIP174), а транзакцию передают файлом, через карту памяти или QR-код.
Почему с кошелька TRON, фразу которого «случайно» выложили в чате или комментариях, не выводятся USDT?
Это ловушка. В TRON мультиподпись настраивается правами аккаунта: для каждого права задаются ключи, их веса и порог (документация TRON). Мошенники публикуют сид-фразу кошелька с USDT, для перевода с которого нужны подписи нескольких участников. В случае, который разобрала «Лаборатория Касперского», жертва платила «комиссию» в TRX, а присланные TRX сразу уходили на другой кошелёк («Лаборатория Касперского»). О таких схемах — в статье мошенничество с сид-фразой.
Что лучше для наследства: мультиподпись или SLIP-39?
Мультиподпись лучше защищает от кражи, потому что один ключ ничего не потратит, но наследникам понадобятся ещё и дескриптор, и кошелёк с мультиподписью. Доли SLIP-39 проще в обращении, но тот, кто соберёт пороговое число долей, получит полный контроль над монетами.