P2SH

Перевод средств в хэш скриптам
Pay-to-Script-Hash (Перевод средств в хэш скриптам) — тип выхода транзакции, при котором средства блокируются хешем скрипта (обычно сложного, например, мультиподписи).

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

1. Принцип работы

P2SH был внедрён в Биткоине (BIP 16) для улучшения масштабируемости и удобства использования мультиподписных и других нестандартных скриптов.

  • Создание выхода (Locking script):Скрипт выхода выглядит просто:OP_HASH160 <20-байтовый хеш скрипта (scriptHash)> OP_EQUALОтправителю не нужно знать, какой именно скрипт будет использован для траты. Он просто помещает хеш в выход. Адреса P2SH в Биткоине начинаются с 3.
  • Трата (Unlocking script):При трате пользователь предоставляет:
    1. Полный скрипт (который хешируется и должен совпасть с scriptHash).
    2. Данные для выполнения этого скрипта (например, подписи и публичные ключи).Валидация происходит в два этапа: сначала проверяется, что хеш предоставленного скрипта соответствует заданному; затем выполняется сам скрипт (например, мультиподпись 2‑из‑3).

2. Преимущества

  • Экономия места в UTXO: В блокчейне хранится только 20 байт хеша, а не весь сложный скрипт.
  • Унификация адресов: Отправитель не заботится о сложности условий; адрес выглядит одинаково для любых скриптов (мультиподпись, временные блокировки и т.д.).
  • Конфиденциальность до момента траты: Полная логика доступа (кто и как может потратить) скрыта до тех пор, пока средства не будут потрачены.

3. Недостатки

  • Раскрытие всего скрипта при трате: Как только средства тратятся, полный скрипт становится публичным. Для сценариев с высокой приватностью это может быть недостатком (P2MR позволяет показывать только использованную ветку).
  • Ограниченная выразительность: Хотя P2SH поддерживает мультиподпись и таймлоки, он не позволяет реализовывать более сложные древовидные условия без утечки неиспользуемых ветвей.

Для майнеров P2SH упрощает проверку: выходы компактны, а при трате скрипт раскрывается, но его выполнение может быть более затратным (например, проверка мультиподписи 15‑из‑15 требует больше операций ECDSA). P2SH широко используется в мультиподписных кошельках, в Lightning Network (каналы часто представлены P2SH-адресами) и в протоколах типа RGB.

Вывод:

Pay-to-Script-Hash (P2SH) — механизм, позволяющий блокировать средства на произвольном скрипте (мультиподпись, таймлоки и др.), скрывая его содержимое до момента траты. Он стал важным шагом в развитии гибкости транзакций, упростив взаимодействие со сложными условиями как для отправителей, так и для получателей, а также подготовил почву для ещё более продвинутых решений, таких как P2MR.