Перейти к содержимому
buybitcoinsmart

Глоссарий / Адреса и ключи

Мультиподпись P2SH

Что такое мультиподпись P2SH?
Мультиподпись P2SH скрывает скрипт погашения m-of-n за адресом, начинающимся с 3, а ограничение скрипта в 520 байт допускает не более пятнадцати публичных ключей.

Определено в BIP-16.

Скрипт погашения 2-of-3 занимает 105 байт: опкод для 2, три сжатых ключа по 33 байта с их префиксами добавления, опкод для 3 и OP_CHECKMULTISIG. Расходование одного входа стоит примерно 297 vbytes, около трехкратного размера входа native SegWit с одним ключом. Это была стандартная схема совместного хранения с 2012 года, пока данные свидетеля не получили скидку.

Как это работает

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

Потолок в пятнадцать ключей является арифметикой, а не выдумкой политики. Пятнадцать сжатых ключей по 34 байта каждый, с учетом префикса добавления, дают 510 байт; добавление двух опкодов подсчета и OP_CHECKMULTISIG доводит до 513, что укладывается в предел 520 байт на один элемент стека. Шестнадцатый ключ уже не укладывается. Правила консенсуса биткоина допускают OP_CHECKMULTISIG с числом ключей до 20, но скрипт погашения P2SH физически не может нести столько.

В пути расходования есть одна давняя особенность. OP_CHECKMULTISIG снимает со стека на один элемент больше, чем использует, это ошибка исходной реализации, которую нельзя было устранить без хардфорка. Подписанты обходят ее, сначала добавляя фиктивный элемент, а BIP-147 потребовал, чтобы этот элемент был пустым, что активировалось вместе с SegWit на блоке 481 824. Поэтому завершенный вход выглядит так: пустое добавление, подпись, подпись, скрипт погашения.

Где это встречается

Корпоративные казначейства, схемы наследования и холодное хранение бирж, построенные между 2013 и 2018 годами, в значительной мере представляют собой мультиподпись P2SH. Эскроу на более старых одноранговых площадках использовало схему 2-of-3, где третий ключ хранила платформа, и так спор можно было урегулировать, не передавая биткоины полностью ни одному из двух участников.

Требование к резервной копии часто застает людей врасплох. Каждому соподписанту нужны расширенные публичные ключи всех остальных соподписантов или дескриптор, в котором они записаны, потому что скрипт погашения нельзя восстановить из одной сид-фразы. Если у вас есть два из трех приватных ключей и ни одного публичного ключа, вы не сможете расходовать средства. Запишите дескриптор вместе с резервными копиями сид-фраз и проверьте восстановление до того, как в этой схеме окажется что-то, что вам дорого.

Сегодня новые кворумы строят на P2WSH или Taproot, потому что та же политика обходится гораздо дешевле при расходовании и не ограничена пятнадцатью ключами. Существующие хранилища P2SH работают в точности как прежде, и принудительной миграции нет.

Мультиподпись P2SH vs мультиподпись

Мультиподпись является политикой, а мультиподпись P2SH представляет собой один из способов ее записать. Одно и то же требование 2-of-3 может жить в выходе с простой мультиподписью по самым ранним правилам биткоина, в скрипте погашения P2SH, в скрипте свидетеля P2WSH или, при Taproot, внутри одного агрегированного ключа, который расходуется как обычный платеж и вообще не раскрывает кворум. Выбор P2SH является решением о комиссиях, о потолке в пятнадцать ключей и о том, что вся ваша схема подписи становится общеизвестной при первом же расходовании ваших биткоинов.

Не путать с

Часто задаваемые вопросы

Сколько ключей может содержать мультиподпись P2SH?

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

Что нужно сохранить в резервной копии для мультиподписи P2SH?

Свою сид-фразу и расширенные публичные ключи всех остальных соподписантов, либо дескриптор, в котором записаны все они. Без остальных публичных ключей скрипт погашения не восстановить, и биткоины останутся заблокированными, даже если ваш собственный ключ у вас есть.

Читайте далее

Связанные термины

Еще в разделе «Адреса и ключи»

Читать эту страницу на английском