P2SH
Полный скрипт раскрывается только при трате средств, что позволяет использовать сложные условия без их постоянного хранения в блокчейне, экономя место и упрощая работу отправителя.
1. Принцип работы
P2SH был внедрён в Биткоине (BIP 16) для улучшения масштабируемости и удобства использования мультиподписных и других нестандартных скриптов.
- Создание выхода (Locking script):Скрипт выхода выглядит просто:OP_HASH160 <20-байтовый хеш скрипта (scriptHash)> OP_EQUALОтправителю не нужно знать, какой именно скрипт будет использован для траты. Он просто помещает хеш в выход. Адреса P2SH в Биткоине начинаются с 3.
- Трата (Unlocking script):При трате пользователь предоставляет:
- Полный скрипт (который хешируется и должен совпасть с scriptHash).
- Данные для выполнения этого скрипта (например, подписи и публичные ключи).Валидация происходит в два этапа: сначала проверяется, что хеш предоставленного скрипта соответствует заданному; затем выполняется сам скрипт (например, мультиподпись 2‑из‑3).
2. Преимущества
- Экономия места в UTXO: В блокчейне хранится только 20 байт хеша, а не весь сложный скрипт.
- Унификация адресов: Отправитель не заботится о сложности условий; адрес выглядит одинаково для любых скриптов (мультиподпись, временные блокировки и т.д.).
- Конфиденциальность до момента траты: Полная логика доступа (кто и как может потратить) скрыта до тех пор, пока средства не будут потрачены.
3. Недостатки
- Раскрытие всего скрипта при трате: Как только средства тратятся, полный скрипт становится публичным. Для сценариев с высокой приватностью это может быть недостатком (P2MR позволяет показывать только использованную ветку).
- Ограниченная выразительность: Хотя P2SH поддерживает мультиподпись и таймлоки, он не позволяет реализовывать более сложные древовидные условия без утечки неиспользуемых ветвей.
Для майнеров P2SH упрощает проверку: выходы компактны, а при трате скрипт раскрывается, но его выполнение может быть более затратным (например, проверка мультиподписи 15‑из‑15 требует больше операций ECDSA). P2SH широко используется в мультиподписных кошельках, в Lightning Network (каналы часто представлены P2SH-адресами) и в протоколах типа RGB.
Вывод:
Pay-to-Script-Hash (P2SH) — механизм, позволяющий блокировать средства на произвольном скрипте (мультиподпись, таймлоки и др.), скрывая его содержимое до момента траты. Он стал важным шагом в развитии гибкости транзакций, упростив взаимодействие со сложными условиями как для отправителей, так и для получателей, а также подготовил почву для ещё более продвинутых решений, таких как P2MR.
Лучшие посты














