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

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

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

Четыре роли вокруг одного кошелька

Роль Что может Чего не может Что ей выдают
Наблюдатель Видеть адреса, поступления, траты и остатки, строить выгрузки для отчёта Подписать или изменить транзакцию; инициировать перевод Выписку публичных ключей нужного счёта, без секретных ключей
Координатор Собирать заготовку перевода, дополнять её сведениями о входах и путях Поставить подпись и опубликовать транзакцию без чужих подписей Выписку публичных ключей и описание схемы с порогом подписей
Подписант Ставить подпись на заготовке, проверяя адрес и сумму на экране устройства Собрать подпись в одиночку, если порог выше единицы Свою долю ключа на отдельном устройстве и описание схемы
Держатель резервной доли Заменить выбывшего подписанта и восстановить порог при утрате доли Участвовать в обычных операциях: его доля в обороте не используется Долю ключа на хранении вне основного места и опись схемы

Почему консолидация в пороговой схеме дороже

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

Считаем условно, по структуре. Базовая часть входа — ссылка на предыдущий выход и служебные поля, порядка 41 байта. Свидетельская часть схемы «два из трёх» содержит две подписи примерно по 72 байта и описание схемы около 105 байт, вместе порядка 250 байт. По правилу BIP-141 (создан 21 декабря 2015 года) свидетельские байты идут со скидкой вчетверо, поэтому итог — около 104 виртуальных байт против 67 у одиночной подписи. Расчёт ориентировочный: длина подписи плавает, схему сверяйте на свою дату.

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

Как разводятся роли в потоке подписи

Формат, на котором всё держится, описан в BIP-174 «Partially Signed Bitcoin Transaction Format» (Ava Chow, назначен 12 июля 2017 года, сверено 15 октября 2026 года). Стандарт перечисляет роли прямо: создатель формирует заготовку, дополняющий добавляет сведения о тратимых выходах и путях ключей, подписант ставит подписи, объединитель сводит несколько заготовок в одну, финализатор собирает готовые скрипты, извлекатель превращает результат в сетевую транзакцию.

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

Схема из пяти шагов: описание схемы и порога, сверка первого адреса участниками, сборка заготовки координатором, подпись долями по порогу, публикация и запись в журнал
Схема из пяти шагов: описание схемы и порога, сверка первого адреса участниками, сборка заготовки координатором, подпись долями по порогу, публикация и запись в журнал

Согласование схемы: шаг, который чаще всего пропускают

Уязвимое место пороговой схемы — не подпись, а настройка. Порядок безопасного согласования задан в BIP-129 «Bitcoin Secure Multisig Setup» (Hugo Nguyen, Peter Gray, Marko Bencun, Aaron Chen, Rodolfo Novak, назначен 10 ноября 2020 года). Стандарт требует от каждого подписанта проверить, что его собственный ключ входит в описание кошелька, опираясь на путь и отпечаток, и показать пользователю первый адрес вместе с параметрами схемы.

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

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

Как объединить мелкие остатки в один перевод и разграничить доступ: порядок

  1. Сверьте описание схемы: порог, состав ключей, пути. Первый адрес должен совпасть у всех участников.
  2. Наблюдатель выгружает список непотраченных выходов и отмечает те, что ниже порога окупаемости.
  3. Координатор собирает заготовку: входы рабочие, выход один, на свежий адрес того же кошелька.
  4. Подписанты по очереди ставят подписи, сверяя на экранах своих устройств адрес назначения, сумму и комиссию.
  5. Объединитель сводит заготовки, финализатор собирает скрипты, транзакция уходит в сеть.
  6. Операция вносится в журнал: дата, участники, число входов, комиссия, идентификатор транзакции.

Копии и проверка при нескольких держателях

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

Обновления прошивок в такой схеме делают по одному устройству за раз, а не всем составом сразу. Так при неудачном обновлении остаётся рабочий порог. Порядок обновления разобран в инструкции о том, как обновить прошивку аппаратного кошелька и не потерять доступ к средствам.

Типовые ошибки разграничения

  • Порог, равный числу участников. Один отпуск останавливает все операции.
  • Все доли на устройствах одной модели и одной партии. Общий дефект бьёт по всем сразу.
  • Выписка публичных ключей, выданная наблюдателю выше уровня счёта. Обзор получается шире задуманного.
  • Подпись без сверки на экране устройства. Роль подписанта превращается в формальность.
  • Описание схемы, хранящееся только у координатора. Пропал координатор — пропала схема.

Что делать при утрате доли ключа

Порог продолжает работать, если оставшихся долей хватает. Но схему пересобирают сразу: выводят средства в новый кошелёк с новым составом ключей, раздают новое описание участникам, проводят тест восстановления с неполным составом. Затягивание опасно тем, что следующая утрата оставит порог несобираемым, и тогда средства становятся недоступны при живых ключах. Рамка ответственности за такие решения разобрана в статье о том, что такое самостоятельное хранение и какую ответственность оно даёт.

Чек-лист разграничения

  • Роли расписаны: кто наблюдает, кто собирает, кто подписывает.
  • Порог меньше числа участников хотя бы на единицу.
  • Доли ключей хранятся у разных людей и в разных местах.
  • Описание схемы есть у каждого участника, а не только у координатора.
  • Первый адрес сверен всеми подписантами при настройке.
  • Временный секрет согласования уничтожен после настройки.
  • Порог окупаемости входа пересчитан под вес пороговой подписи.
  • Каждая операция внесена в журнал с составом участников.

Материалы по теме:

Частые вопросы

Какой порог подписи выбрать?

Такой, чтобы отсутствие одного участника не останавливало операции, а один скомпрометированный ключ не открывал средства. Для троих держателей это порог два. Порог, равный числу участников, выглядит надёжнее и на практике чаще приводит к потере доступа, чем к её предотвращению.

Насколько дороже уборка мелочи в пороговой схеме?

По условному расчёту вход схемы «два из трёх» весит около 104 виртуальных байт против 67 у одиночной подписи — примерно в полтора раза больше. На десятках входов разница заметна. Порог окупаемости входа поднимается во столько же раз, и собирать мелочь приходится при более низкой ставке сети.

Может ли наблюдатель навредить?

Подписать он ничего не может: секретных ключей у него нет. Вред возможен иного рода — выписка раскрывает все адреса счёта, суммы и историю. Отозвать выданную выписку нельзя, поэтому её делают на уровне рабочего счёта и не выдают ключей более высокого уровня дерева.

Обязательно ли каждому подписанту сверять адрес на экране?

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

Где хранить описание схемы?

У каждого участника и ещё в одном месте вне круга держателей долей. Описание секрета не содержит, поэтому его копирование риска не добавляет, а отсутствие делает доли бесполезными. Обновляйте копии при каждом изменении состава ключей и фиксируйте дату правки.

Вердикт

Разграничение доступа стоит денег и времени, и это честная цена за снятие единственной точки отказа. Консолидация в такой схеме тяжелее: вес входа выше, согласование дольше, порог окупаемости поднят. Зато ни один участник не способен увести средства в одиночку, а выбывание одного человека не останавливает операции. Начинайте с описания ролей на бумаге, а не с покупки третьего устройства — схема, которую некому обслуживать, ломается раньше, чем железо.

Первоисточники: порядок согласования схемы в BIP-129 и перечень ролей подписи в BIP-174.

Разборы схем с порогом подписей выходят в Telegram-канале Cryptium.