Что такое P2SH (Pay-to-Script-Hash)?
P2SH (Pay-to-Script-Hash) — это тип выходных данных транзакции Bitcoin, который позволяет отправить биткоины на хеш скрипта, а не непосредственно на публичный ключ или его хеш.Отправителю нужен только короткий хеш скрипта, а получатель при расходовании средств раскрывает полный скрипт и предоставляет данные, необходимые для выполнения его условий.Проще говоря, P2SH позволяет использовать Bitcoin-адрес, представляющий сложные правила расходования средств, не заставляя отправителя разбираться в этих правилах.Адрес P2SH в основной сети Bitcoin обычно начинается с цифры
Технический стандарт P2SH был введен в BIP16.
Формат адреса P2SH описан в BIP13.
P2SH стал важным, поскольку упростил использование расширенных скриптов Bitcoin при обычных платежах через кошельки.До появления P2SH отправителю, который хотел отправить средства на адрес со сложным скриптом, приходилось помещать этот скрипт целиком в выход транзакции.Это было неэффективно, такой скрипт было трудно передавать, а обычным кошелькам — поддерживать.С P2SH отправитель может перевести средства на компактный хеш, а получатель берет на себя ответственность раскрыть полный скрипт и выполнить его условия при расходовании средств.Благодаря этой конструкции стало гораздо проще использовать кошельки с мультиподписью, транзакции типа эскроу и позднее — совместимость с вложенным SegWit.Пользователям криптовалюты проще всего понимать P2SH как тип Bitcoin-адреса и скрипта, который скрывает сложные правила на этапе получения средств и раскрывает их только при расходовании.Главное о P2SH
- P2SH расшифровывается как Pay-to-Script-Hash.
- Этот формат позволяет блокировать биткоины на хеше скрипта, а не на обычном хеше публичного ключа.
- Адреса P2SH в основной сети обычно начинаются с 3.
- Отправителю не нужно знать полный скрипт расходования средств.
- При расходовании средств получатель должен раскрыть redeem-скрипт и выполнить его условия.
- Стандарт P2SH закреплен в BIP16, а формат адреса описан в BIP13.
- P2SH упростил использование кошельков с мультиподписью.
- P2SH также использовался как совместимая оболочка для раннего внедрения SegWit.
- Если это поддерживается, современные пользователи Bitcoin могут предпочесть адреса Native SegWit или Taproot.
Зачем был создан P2SH
P2SH был создан, чтобы упростить получение и отправку средств с использованием сложных скриптов Bitcoin.Bitcoin Script позволяет блокировать монеты с помощью условий расходования.Для обычного платежа может требоваться одна действительная подпись, созданная одним приватным ключом.Для более сложного платежа могут потребоваться две подписи из трех ключей, временная блокировка или другая логика скрипта.До появления P2SH отправителю, желавшему отправить средства с такими условиями, приходилось включать полный скрипт в выход транзакции.Это перекладывало сложность на отправителя, хотя правила безопасности выбирал получатель.В BIP16 указано, что цель P2SH — перенести ответственность за предоставление условий разблокировки от отправителя к получателю средств.Такая конструкция удобна: отправителю достаточно перевести средства на короткий хеш скрипта.Получатель может хранить сам скрипт в закрытом виде до момента расходования средств.Это упрощает процесс оплаты для пользователей и кошельков.Кроме того, отправителям не нужно поддерживать все возможные пользовательские скрипты, чтобы отправить кому-либо средства.Отправитель может воспринимать адрес P2SH почти как обычный адрес, в то время как получатель использует за ним расширенные правила расходования.Как работает P2SH
P2SH блокирует биткоины на хеше скрипта.Этот скрытый скрипт называется redeem-скриптом.Redeem-скрипт определяет фактические условия, которые необходимо выполнить, чтобы потратить заблокированные монеты.Полный redeem-скрипт не содержится в выходе транзакции.Вместо этого там находится его хеш.Когда позже средства расходуются, пользователь предоставляет redeem-скрипт и необходимые данные для разблокировки.Сеть Bitcoin проверяет, совпадает ли хеш redeem-скрипта с хешем, использованным в исходном выходе.Затем сеть проверяет, соответствуют ли данные для разблокировки условиям redeem-скрипта.Если обе проверки пройдены, операция расходования считается действительной.Если предоставленный скрипт не соответствует хешу, операция не выполняется.Если скрипт совпадает, но подписи или другие условия не выполнены, операция также не выполняется.Этот двухэтапный процесс лежит в основе Pay-to-Script-Hash.Базовая структура скрипта P2SH
Стандартный скрипт блокировки P2SH имеет простую структуру.Обычно он записывается так:
Это означает, что транзакция расходования должна содержать скрипт, значение
В руководстве для разработчиков Bitcoin.org объясняется, что P2SH используется для отправки транзакции на хеш скрипта.
Скрипт разблокировки содержит данные, необходимые redeem-скрипту.Он также содержит сам redeem-скрипт.Упрощенно это можно записать так:
Что такое redeem-скрипт?
Redeem-скрипт — это скрытый скрипт, связанный с адресом P2SH.Он определяет фактические правила расходования монет, заблокированных на этом адресе.Например, redeem-скрипт может требовать, чтобы действительные подписи предоставили два из трех указанных публичных ключей.Так создается схема с мультиподписью 2 из 3.До расходования средств адрес P2SH не показывает этот скрипт целиком.Он представляет только хеш redeem-скрипта.При расходовании средств пользователь раскрывает redeem-скрипт и доказывает, что он соответствует хешу.Пользователь также должен предоставить подписи, публичные ключи или другие данные, которые требует redeem-скрипт.Таким образом, redeem-скрипт задает реальные правила безопасности для выхода P2SH.Если redeem-скрипт утерян, средства могут стать недоступными для расходования.Если redeem-скрипт составлен неправильно, средства могут оказаться заблокированы условиями, которые пользователь не сможет выполнить.Поэтому в кошельке P2SH необходимо создавать резервные копии не только приватных ключей, но и скриптов, нужных для расходования средств.Формат адреса P2SH
Вместе с P2SH появился новый формат Bitcoin-адресов, который упростил передачу адресов для платежей на хеш скрипта.В BIP13 описан формат адресов Pay-to-Script-Hash, в котором адрес представляет закодированный хеш скрипта, а не закодированный хеш публичного ключа.
В основной сети Bitcoin адрес P2SH обычно начинается с
Это визуально отличает его от более старых адресов P2PKH, которые обычно начинаются с
В справочнике транзакций Bitcoin.org указано, что в распространенном формате кодирования адресов P2SH используется байт версии
P2SH и кошельки с мультиподписью
P2SH получил известность благодаря тому, что упростил использование кошельков с мультиподписью.Для расходования средств с такого кошелька требуется более одного приватного ключа.Например, кошелек с мультиподписью 2 из 3 позволяет потратить средства, если подписи поставили любые два из трех утвержденных ключей.Это полезно для компаний, семей, казначейских счетов, эскроу-соглашений и личного хранения активов в холодном кошельке.Без P2SH отправителю, чтобы перевести средства на скрипт с мультиподписью, пришлось бы включать полный скрипт мультиподписи в выход.С P2SH отправитель переводит средства только на короткий адрес P2SH.Кошелек получателя использует redeem-скрипт мультиподписи при последующем расходовании средств.Благодаря этому мультиподпись стало удобно применять при обычных платежах.Интерфейсы кошельков также стали проще: для отправителя адрес мультиподписи выглядел как обычный адрес.Отправителю не нужно знать, использует ли получатель один ключ, несколько ключей или более сложную схему.Получатель может повысить безопасность, не усложняя процесс отправки средств.P2SH и P2PKH: сравнение
P2PKH расшифровывается как Pay-to-Public-Key-Hash.Это классический тип платежа Bitcoin, при котором средства блокируются на хеше публичного ключа.Чтобы потратить выход P2PKH, пользователь предоставляет публичный ключ и действительную подпись, созданную соответствующим приватным ключом.P2SH отличается тем, что средства блокируются на хеше скрипта.Скрипт может требовать одну или несколько подписей, выполнение временного условия или другую допустимую логику Bitcoin Script.P2PKH проще.P2SH гибче.В основной сети Bitcoin адрес P2PKH обычно начинается с
В основной сети Bitcoin адрес P2SH обычно начинается с
P2SH и обычная мультиподпись: сравнение
Обычная мультиподпись (bare multisig) означает, что скрипт мультиподписи помещается непосредственно в выход транзакции.Это было возможно в Bitcoin еще до широкого распространения P2SH.Однако обычная мультиподпись увеличивала размер выходов и заставляла отправителя работать с полным скриптом.P2SH улучшил эту схему, заменив полный скрипт выхода компактным хешем скрипта.Полный скрипт мультиподписи раскрывается только при расходовании средств.Таким образом, данные переносятся из транзакции пополнения в транзакцию расходования.Это удобнее, поскольку именно получатель выбирает правила расходования и впоследствии выполняет их.Для пользователей результат был простым.Они могли получать биткоины на адрес мультиподписи, который выглядел как обычный адрес.Это помогло сделать мультиподпись распространенным инструментом защиты средств в Bitcoin.P2SH и SegWit
P2SH вновь стал важен во время внедрения SegWit.SegWit, определенный в BIP141, ввел данные witness и новые типы выходов, такие как P2WPKH и P2WSH.
На начальном этапе внедрения SegWit возникла проблема совместимости.Некоторые кошельки и сервисы не могли сразу отправлять средства на адреса Native SegWit.P2SH стал переходным решением.Скрипт SegWit можно было вложить в адрес P2SH, чтобы старые кошельки могли отправлять средства на адрес, начинающийся с
В руководстве Bitcoin Core по разработке кошельков Segregated Witness указано, что кошельки с поддержкой SegWit должны поддерживать P2SH и формат адресов BIP13.
Это сделало P2SH важным инструментом перехода для обеспечения совместимости Bitcoin-кошельков.Вложенный SegWit менее эффективен, чем Native SegWit, однако он помог пользователям и сервисам постепенно перейти на SegWit.P2SH-P2WPKH
P2SH-P2WPKH означает Pay-to-Witness-Public-Key-Hash, вложенный в P2SH.Его часто называют вложенным SegWit.Адрес выглядит как адрес P2SH, поскольку начинается с
В BIP49 определена схема деривации для P2WPKH, вложенного в P2SH, для иерархических детерминированных кошельков.
Это помогло стандартизировать организацию счетов Nested SegWit в кошельках.P2SH-P2WPKH был особенно полезен в переходный период, когда поддержка Native SegWit еще не была повсеместной.Сегодня многие кошельки могут напрямую отправлять средства на адреса Native SegWit.При поддержке Native SegWit он обычно эффективнее вложенного SegWit.P2SH-P2WSH
P2SH-P2WSH означает Pay-to-Witness-Script-Hash, вложенный в P2SH.По принципу работы он похож на P2SH-P2WPKH, но поддерживает более сложные witness-скрипты.Скрипт P2WSH может задавать сложные условия, например правила мультиподписи в структуре witness SegWit.Оболочка P2SH позволяла старым кошелькам отправлять средства на такие скрипты, используя привычный адрес, начинающийся с
P2SH и P2WSH: сравнение
P2SH и P2WSH позволяют блокировать средства на хешах скриптов, но это разные форматы.P2SH — более старая схема хеширования скриптов, описанная в BIP16.P2WSH — версия SegWit, в которой скрипт и данные подписей размещаются в структуре witness.Для многих сложных скриптов P2WSH может быть эффективнее, поскольку данные witness учитываются с пониженным весом по правилам Bitcoin.P2WSH также использует преимущества изменений структуры транзакций SegWit.P2SH остается важным благодаря совместимости со старыми системами и историческому распространению.Адрес P2SH начинается с
Адрес Native SegWit P2WSH в основной сети Bitcoin обычно начинается с
P2SH и Taproot: сравнение
Taproot — более новый тип выходов Bitcoin, который может повысить конфиденциальность и эффективность некоторых правил расходования средств.Выходы Taproot отличаются от выходов P2SH.При расходовании средств P2SH раскрывает полный redeem-скрипт, даже если используется только одна ветвь логики.При выполнении совместных условий Taproot позволяет представить некоторые сложные правила как обычное расходование по ключу.Это может повысить конфиденциальность, поскольку наблюдатели не увидят неиспользованные условия скрипта.Taproot также может повысить эффективность некоторых сложных правил кошелька.Однако P2SH по-прежнему важен как часть истории Bitcoin, совместимости кошельков и существующего набора монет.Многие старые адреса и выходы до сих пор используют P2SH.Не следует считать все адреса, начинающиеся с
Комиссии и размер транзакции
P2SH может влиять на комиссии за транзакции, поскольку данные скрипта раскрываются при расходовании средств.Операция расходования средств P2SH с простым скриптом может быть относительно небольшой.Транзакция расходования средств P2SH с комплексной мультиподписью может быть больше, поскольку должна содержать redeem-скрипт и несколько подписей.Комиссии Bitcoin рассчитываются на основе веса или размера транзакции — в зависимости от контекста и типа транзакции.При высоких ставках комиссий транзакции большего размера обычно обходятся дороже.Это одна из причин, по которым Native SegWit и Taproot стали привлекательными для некоторых сценариев использования.В отдельных случаях они могут снизить затраты или повысить эффективность.Тем не менее P2SH стал значительным улучшением по сравнению с размещением сложных скриптов непосредственно в выходе.Он позволил сделать транзакцию пополнения компактной и перенести сложность на этап расходования средств.Перед расходованием средств из кошельков P2SH со сложными правилами, особенно с мультиподписью, пользователям следует проверить оценку комиссии кошелька.Особенности конфиденциальности P2SH
P2SH скрывает redeem-скрипт до момента расходования монет.Это означает, что при получении монет наблюдатели не могут увидеть полные правила расходования.Им виден только хеш скрипта.При расходовании монет redeem-скрипт становится виден в блокчейне.После этого наблюдатели часто могут определить, использовал ли выход мультиподпись, вложенный SegWit или другой тип скрипта.Это обеспечивает частичную, но не полную конфиденциальность.P2SH может скрывать сложные правила до расходования средств, но не навсегда.Кроме того, сам формат адреса может показать, что выход относится к P2SH.Анализ блокчейна все еще может выявить поведение кошелька, повторное использование адресов, модели расходования и связи между транзакциями.Не следует рассматривать P2SH как самостоятельное решение для обеспечения конфиденциальности.Преимущества P2SH для безопасности
Главное преимущество P2SH для безопасности состоит в том, что он упростил получение средств на кошельки с мультиподписью.Мультиподпись может снизить риск кражи при компрометации одного ключа, поскольку для расходования средств злоумышленнику может потребоваться несколько ключей.Второе преимущество: P2SH избавляет отправителя от необходимости работать со сложными скриптами.Это снижает вероятность того, что отправитель по ошибке создаст неправильный скрипт выхода.Третье преимущество: P2SH позволяет получателям самостоятельно выбирать правила безопасности.Компания может использовать мультиподпись, не требуя от каждого клиента разбираться во внутренней структуре ее кошелька.Четвертое преимущество — гибкость обновления.P2SH помог внедрить вложенный SegWit, когда поддержка отправки на адреса Native SegWit была еще неповсеместной.Пятое преимущество — компактность хеша скрипта.Короткий хеш проще закодировать в адресе, чем полный redeem-скрипт.Благодаря этим преимуществам P2SH стал одним из важнейших улучшений удобства использования скриптов Bitcoin.Риски безопасности P2SH
Первый существенный риск — потеря redeem-скрипта.Если у пользователя есть приватные ключи, но нет скрипта, необходимого для расходования средств, средства могут оказаться недоступными.Это особенно важно для кошельков с мультиподписью.Второй риск — создание неправильного redeem-скрипта.Если средства отправлены на хеш скрипта, условия которого никто не может выполнить, они могут быть заблокированы навсегда.Третий риск — неправильное понимание типов адресов.Адрес, начинающийся с
P2SH и резервные копии кошелька
Для кошельков P2SH могут потребоваться более тщательные меры резервного копирования, чем для простых кошельков с одним ключом.Для простого кошелька P2PKH может быть достаточно сохранить сид-фразу, если кошелек использует стандартные пути деривации.Для кошелька P2SH с мультиподписью пользователю могут понадобиться сид-фразы, публичные ключи, пути деривации, политика кошелька и данные redeem-скрипта.Если часть этих данных отсутствует, восстановление может быть затруднено.В современных кошельках с мультиподписью часто используются дескрипторы кошелька или файлы конфигурации, чтобы решить эту проблему.Дескриптор может описывать порядок создания адресов и скриптов.Без этой информации пользователь может не знать, какие ключи и скрипты управляют средствами.Поэтому пользователям кошельков с мультиподписью следует проверять возможность восстановления до внесения крупных сумм.Адрес P2SH может выглядеть простым, но правила кошелька за ним могут быть сложными.Надежные резервные копии должны сохранять эту сложность в форме, позволяющей восстановить кошелек.P2SH и разработчики
Разработчикам, работающим с P2SH, необходимо понимать кодирование адресов и проверку скриптов.Они должны правильно создавать redeem-скрипт.Они должны правильно вычислять его хеш.Они должны правильно кодировать адрес.Они должны создавать транзакции расходования, содержащие нужные данные для разблокировки и redeem-скрипт.Им необходимо тестировать нестандартные случаи: порядок ключей мультиподписи, кодирование подписей, ограничения на пыль, оценку комиссии, вес транзакции и восстановление кошелька.Также важно различать обычный P2SH и P2SH с вложенным SegWit.Для пользователей они могут выглядеть одинаково, поскольку в обоих случаях используются адреса, начинающиеся с
P2SH и пользователи
Большинству пользователей не нужно создавать скрипты P2SH вручную.Они сталкиваются с P2SH через адреса кошельков, хранилища с мультиподписью, схемы хранения активов или старые кошельки с поддержкой SegWit.Если кошелек показывает адрес, начинающийся с
Распространенные варианты использования P2SH
Самый известный вариант использования P2SH — хранение средств с мультиподписью.Семья, компания или казначейство могут потребовать несколько ключей для перевода средств.Еще один вариант — эскроу.Скрипт может требовать подписи согласованных сторон при определенных условиях.Другой вариант — получение средств через SegWit с поддержкой старых систем.Кошелек может использовать оболочку P2SH, чтобы отправители со старыми кошельками могли переводить средства на кошелек с поддержкой SegWit.Еще один вариант — управление доступом на основе скриптов.Монеты можно блокировать по правилам скрипта, более сложным, чем требование одного ключа и одной подписи.Также P2SH используется при восстановлении старых кошельков.Многие старые Bitcoin-кошельки и адреса использовали P2SH, поэтому понимание этого формата важно при восстановлении старых средств.P2SH остается частью активной истории транзакций Bitcoin, хотя новые типы выходов становятся все более распространенными.Распространенные заблуждения о P2SH
Распространенное заблуждение: любой адрес, начинающийся с
Рекомендации по использованию P2SH
Используйте надежное программное обеспечение кошелька, которое корректно работает со скриптами P2SH.Не создавайте redeem-скрипты вручную, если вы не разбираетесь в Bitcoin Script.Создавайте резервные копии всех необходимых данных о правилах кошелька, а не только сид-фраз.Для кошельков с мультиподписью надежно храните данные совладельцев и пути деривации.Прежде чем использовать крупные суммы, проверьте возможность восстановления на небольших суммах.Если это поддерживается и подходит для конкретного случая, отдавайте предпочтение Native SegWit или Taproot.Используйте совместимость P2SH только тогда, когда она действительно решает проблему поддержки кошельков.Перед отправкой средств проверяйте адрес целиком.Если конфиденциальность важна, не используйте адрес повторно.Перед расходованием средств с выходов P2SH со сложными скриптами проверяйте оценку комиссии.Обновляйте программное обеспечение кошелька, чтобы оно распознавало старые выходы P2SH и позволяло расходовать средства с них.Разберитесь в различиях между обычной мультиподписью P2SH и адресами P2SH с вложенным SegWit.P2SH в одном предложении
P2SH (Pay-to-Script-Hash) — это тип выхода Bitcoin, блокирующий монеты на хеше redeem-скрипта, благодаря чему отправитель может перевести средства на простой адрес, а получатель позднее раскрывает полный скрипт и выполняет его условия.FAQ
Что означает P2SH?
P2SH расшифровывается как Pay-to-Script-Hash.Для чего используется P2SH?
P2SH используется для блокировки биткоинов на хеше скрипта, благодаря чему средства со сложными правилами расходования можно получать на адрес, похожий на обычный.С какого символа начинается адрес P2SH?
Адрес P2SH в основной сети Bitcoin обычно начинается с
Кто представил P2SH?
Стандарт P2SH закреплен в BIP16, автором которого был Gavin Andresen.Для чего нужен P2SH?
Он переносит ответственность за предоставление сложных условий расходования от отправителя к получателю средств.Что такое redeem-скрипт?
Redeem-скрипт — это полный скрипт, определяющий, как можно расходовать монеты, заблокированные в выходе P2SH.Должен ли отправитель знать redeem-скрипт?
Нет. Отправителю нужен только адрес P2SH, представляющий хеш скрипта.Когда раскрывается redeem-скрипт?
Redeem-скрипт раскрывается при расходовании средств из выхода P2SH.P2SH — это то же самое, что мультиподпись?
Нет. P2SH и мультиподпись — не одно и то же, однако P2SH часто используется, чтобы упростить получение платежей на кошельки с мультиподписью.Каждый ли адрес, начинающийся с 3, является адресом мультиподписи?
Нет. Адрес, начинающийся с
Используется ли P2SH сегодня?
Да, P2SH по-прежнему встречается в транзакциях Bitcoin, особенно для совместимости и работы со старыми кошельками, хотя многие пользователи теперь предпочитают Native SegWit или Taproot, если они поддерживаются.Какой риск P2SH самый серьезный?
Самый серьезный риск — потерять redeem-скрипт или неправильно его составить, а также потерять или неправильно восстановить правила кошелька. В результате средства могут стать недоступными для расходования.Заключение
P2SH (Pay-to-Script-Hash) — одно из важнейших обновлений в истории скриптов Bitcoin.Он сделал сложные правила расходования практически применимыми, позволив получать биткоины на компактный адрес с хешем скрипта.Отправителю не нужно понимать полный скрипт.Получатель раскрывает redeem-скрипт и выполняет его условия только при расходовании средств.Такая конструкция упростила использование кошельков с мультиподписью и помогла Bitcoin поддержать более надежные модели хранения средств.Она также помогла Bitcoin перейти на SegWit благодаря форматам адресов с вложенным SegWit.P2SH подходит не для каждого случая как самый новый или эффективный тип выхода Bitcoin.При поддержке Native SegWit и Taproot могут обеспечить преимущества по комиссиям, конфиденциальности и организации скриптов.Однако P2SH по-прежнему важен, поскольку он повлиял на то, как кошельки Bitcoin работают со сложными скриптами, а многие существующие выходы все еще используют этот формат.Главный вывод для пользователей: за простым адресом могут скрываться сложные правила расходования средств.Главный вывод для разработчиков: корректность скриптов, резервное копирование и данные для восстановления кошелька имеют критическое значение.Для экосистемы Bitcoin P2SH стал примером того, как обновление протокола может повысить удобство использования, сохраняя децентрализацию и совместимость.Понимание P2SH помогает разобраться в мультиподписи, вложенном SegWit, хешах скриптов, redeem-скриптах и осторожном подходе к обновлению Bitcoin.Вам также может быть интересно
Комплексная проверка (Due Diligence)
Торговая компания DRW
Цифровая подпись
В тренде
Трендовые криптовалюты, которые в настоящее время привлекают значительное внимание рынка
ТОП по объему
Криптовалюты с наибольшим объемом торгов
Недавно добавленные
Криптовалюты недавно внесенные в листинг и доступные для торговли

