Материал проверен 5 ноября 2026?
БК

ГЛАВНАЯ / ИНСТРУКЦИИ / CHECKMULTISIG И CHECKSIGADD: ДВА СПОСОБА ПРОВЕРИТЬ ПОРОГ ПОДПИСЕЙ BITCOIN

CHECKMULTISIG и CHECKSIGADD: два способа проверить порог подписей Bitcoin

Оба подхода могут выражать условие «нужно несколько подписей», но скрипты устроены по-разному. CHECKMULTISIG перебирает упорядоченные наборы ключей и подписей, а CHECKSIGADD последовательно прибавляет результаты Schnorr-проверок к числу в стеке. В tapscript CHECKMULTISIG отключён, поэтому перенос схемы требует совместимого скрипта и поддержки кошельками.

CHECKMULTISIG

Старый opcode проверяет последовательность подписей по списку ключей

Классический m-of-n скрипт передаёт CHECKMULTISIG порог, список публичных ключей и число ключей. Подписи соотносятся с ключами по порядку: при несовпадении проверяющий может перейти к следующему ключу, но не возвращается к уже пройденной позиции. Изменение порядка ключей может создать другой скрипт и адрес.

Исторический дефект opcode потребляет дополнительный элемент стека, не участвующий в проверке подписи. После правила NULLDUMMY он должен быть пустым. В P2WSH это пустое значение обычно видно среди начальных элементов witness. Оно не является одной из m подписей и не служит ключом восстановления.

  • m-of-n и порядок ключей сверены
  • NULLDUMMY пуст
  • dummy не принят за подпись
CHECKSIGADD в tapscript

Новый opcode накапливает число валидных Schnorr-подписей

Tapscript использует CHECKSIG и CHECKSIGADD с ключами Schnorr. CHECKSIGADD снимает со стека ключ, число и подпись, проверяет подпись для ключа и увеличивает число при непустой валидной подписи. Скрипт затем сравнивает результат с порогом или применяет другое явно заданное условие.

CHECKSIGADD не создаёт multisig автоматически: автор задаёт операции, ключи, порог, ветви и обработку отсутствующих подписей. BIP342 отключает CHECKMULTISIG и CHECKMULTISIGVERIFY в tapscript. Поэтому descriptor, Taproot tree и PSBT должны описывать именно такую конструкцию, а не legacy witnessScript.

  • CHECKSIGADD исполнен в tapscript
  • ключи и signatures сопоставлены
  • пороговое условие проверено отдельно
Сравнение

Одинаковый порог не означает одинаковый формат расходования

Различаются подпись, представление данных стека, правила исполнения и тип выходного скрипта. P2SH/P2WSH могут использовать CHECKMULTISIG, тогда как P2TR script path расходует tapscript с CHECKSIGADD. Совместимость кошельков, размер witness и порядок подготовки подписей зависят от конкретной схемы.

Не считайте число ключей доказательством числа доступных подписантов. Проверьте их владельцев, порог в скрипте, кодирование и возможность устройств сформировать подпись. Для P2TR key path схема агрегации ключей – отдельный механизм, не тождественный script-path CHECKSIGADD.

  • CHECKMULTISIG сопоставляет подписи с упорядоченными ключами;
  • CHECKSIGADD проверяет пары по отдельности и накапливает счётчик;
  • P2TR key-path aggregation не равен tapscript CHECKSIGADD;
  • до траты адрес не раскрывает multisig-политику.
Проверка совместной траты

Аудируйте точный скрипт, descriptor и подписанный пакет

Для существующего выхода найдите scriptPubKey. В P2WSH witnessScript проверяется по хэшу из witness program. В Taproot control block и скрипт должны подтвердить leaf в дереве, а tapscript – пройти CHECKSIGADD и конечное условие стека.

Соберите PSBT участников и проверьте derivation paths, fingerprint, witnessScript или tapleaf. После объединения подписей декодируйте транзакцию, проверьте получателей, сдачу и то, что требуемые подписи действительно проходят. Адрес сам по себе не раскрывает полную политику до расходования.

FAQ

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

CHECKSIGADD заменяет CHECKMULTISIG везде?

Нет. CHECKSIGADD используется в tapscript; старые скрипты и совместимость проверяются отдельно.

Почему у CHECKMULTISIG есть пустой элемент?

Opcode потребляет дополнительный dummy, а NULLDUMMY требует пустой массив байтов.

CHECKMULTISIG работает в Taproot script path?

Нет. BIP342 отключает CHECKMULTISIG и CHECKMULTISIGVERIFY в tapscript.

Порог m-of-n виден в адресе?

Нет. До расходования P2WSH или Taproot script path может скрывать сам скрипт.

CHECKSIGADD гарантирует приватность участников?

Нет. Видимость зависит от пути расходования и опубликованного witness.

Итоговая проверка

Чек-лист: checkmultisig и checksigadd: два способа проверить порог подписей bitcoin

  • тип выхода определён;
  • m-of-n сверено со скриптом;
  • порядок ключей установлен;
  • NULLDUMMY проверен;
  • отключённый opcode не используется в tapscript;
  • CHECKSIGADD прочитан вместе с порогом;
  • PSBT и witness соответствуют политике.

Материал подготовлен редакцией сайта и проверен 5 ноября 2026 года. Условия бирж, кошельков и блокчейн-сетей могут меняться. Перед операцией сверяйте данные в интерфейсе выбранного сервиса.