ГЛАВНАЯ / ИНСТРУКЦИИ / CHECKMULTISIG И CHECKSIGADD: ДВА СПОСОБА ПРОВЕРИТЬ ПОРОГ ПОДПИСЕЙ BITCOIN
CHECKMULTISIG и CHECKSIGADD: два способа проверить порог подписей Bitcoin
Оба подхода могут выражать условие «нужно несколько подписей», но скрипты устроены по-разному. CHECKMULTISIG перебирает упорядоченные наборы ключей и подписей, а CHECKSIGADD последовательно прибавляет результаты Schnorr-проверок к числу в стеке. В tapscript CHECKMULTISIG отключён, поэтому перенос схемы требует совместимого скрипта и поддержки кошельками.
Старый opcode проверяет последовательность подписей по списку ключей
Классический m-of-n скрипт передаёт CHECKMULTISIG порог, список публичных ключей и число ключей. Подписи соотносятся с ключами по порядку: при несовпадении проверяющий может перейти к следующему ключу, но не возвращается к уже пройденной позиции. Изменение порядка ключей может создать другой скрипт и адрес.
Исторический дефект opcode потребляет дополнительный элемент стека, не участвующий в проверке подписи. После правила NULLDUMMY он должен быть пустым. В P2WSH это пустое значение обычно видно среди начальных элементов witness. Оно не является одной из m подписей и не служит ключом восстановления.
- m-of-n и порядок ключей сверены
- NULLDUMMY пуст
- dummy не принят за подпись
Новый 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. После объединения подписей декодируйте транзакцию, проверьте получателей, сдачу и то, что требуемые подписи действительно проходят. Адрес сам по себе не раскрывает полную политику до расходования.
Частые вопросы
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 года. Условия бирж, кошельков и блокчейн-сетей могут меняться. Перед операцией сверяйте данные в интерфейсе выбранного сервиса.