Введение в Bitcoin Script: основы логики умных транзакций
Продвинутый
Кратко: Что такое Bitcoin Script, как он работает и какие задачи решает? В этом подробном техническом руководстве разбираем устройство языка Script и его…
Программируемость в Bitcoin: зачем нужен Script
Bitcoin — это не только система цифровых денег, но и платформа, позволяющая закладывать в транзакции определённую условную логику. За такую программируемость отвечает язык поверхностного уровня под названием Script.
Script задаёт условия блокировки и разблокировки биткоин-транзакций. Он не столь гибок, как smart contracts в Ethereum, но за счёт более простых механизмов позволяет описывать мощную пользовательскую логику.
Что такое Script и как он работает
Script — это стековый язык программирования. Инструкции (OP-коды) либо кладут данные в стек, либо изменяют элементы, которые в нём уже находятся.
Script присутствует в двух основных частях биткоин-транзакции:
- ScriptPubKey: скрипт блокировки, заданный адресом получателя.
- ScriptSig: скрипт разблокировки, который предоставляет отправитель.
Эти два скрипта объединяются и выполняются вместе. Если по завершении на вершине стека остаётся «true», транзакция считается корректной.
Ключевые особенности Bitcoin Script
- Не является тьюринг-полным: никаких циклов и бесконечного выполнения. Это осознанное решение ради безопасности.
- Детерминированность: одни и те же входные данные всегда дают один и тот же результат.
- Минимализм: язык рассчитан на базовую функциональность и избегает лишней сложности.
- Работа со стеком: используется структура данных LIFO (последним пришёл — первым вышел).
Распространённые типы скриптов
1. P2PKH (Pay-to-Public-Key-Hash)
Стандартный формат транзакций в сети Bitcoin.
- ScriptPubKey: OP_DUP OP_HASH160 <PubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
- ScriptSig: <Signature> <PublicKey>
Разблокировать средства может только владелец соответствующего приватного ключа.
2. P2SH (Pay-to-Script-Hash)
Позволяет представить более сложные скрипты в виде одного адреса-хеша.
- ScriptPubKey: OP_HASH160 <ScriptHash> OP_EQUAL
- ScriptSig: <Signature(s)> ... <RedeemScript>
Обычно применяется для мультиподписи и платежей с временной блокировкой.
3. Мультиподпись (Multisig)
Для авторизации транзакции требуется несколько действительных подписей.
Пример: скрипт мультиподписи 2 из 3:
OP_2 <PubKey1> <PubKey2> <PubKey3> OP_3 OP_CHECKMULTISIG
Как правило, такой скрипт помещается внутрь конструкции P2SH.
Обзор важнейших OP-кодов
Логика в Script описывается через OP-коды (операции). Вот некоторые из наиболее распространённых:
- OP_DUP: дублирует верхний элемент стека.
- OP_HASH160: применяет SHA-256, а затем RIPEMD-160.
- OP_EQUALVERIFY: сравнивает два значения и прерывает выполнение при несовпадении.
- OP_CHECKSIG: проверяет цифровую подпись.
- OP_CHECKLOCKTIMEVERIFY: вводит ограничения на расходование средств по времени.
Комбинируя эти коды, скрипты образуют логические цепочки, которые проверяют условия расходования средств.
Технические примеры на Bitcoin Script
Простой пример P2PKH
- ScriptSig: <Signature> <PublicKey>
- ScriptPubKey: OP_DUP OP_HASH160 <PubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
При совместном выполнении стек последовательно проходит все шаги, подтверждая право собственности и разрешая платёж.
Скрипт с временной блокировкой
ScriptPubKey: <LockTime> OP_CHECKLOCKTIMEVERIFY OP_DROP <PubKey> OP_CHECKSIG
Потратить средства нельзя до наступления указанного времени или высоты блока. Это удобно для escrow, наследования и поэтапной выдачи средств.
Что можно построить на Bitcoin Script
- Кошельки с мультиподписью
- Платежи с временной блокировкой
- Открытие каналов в Lightning Network
- Escrow-схемы
- Ограниченные условия расходования (например, выходы одноразового использования)
Script выдерживает баланс между простотой и возможностями, что вполне отвечает принципам Bitcoin.
Почему Bitcoin Script важен
Bitcoin Script доказывает, что Bitcoin — это больше, чем просто цифровые деньги. Он позволяет закладывать программируемую логику прямо в транзакции, обеспечивая гибкость и условия, не требующие доверия к посреднику, без ущерба для безопасности.
FAQ: частые вопросы о Bitcoin Script
Вопрос: является ли Bitcoin Script тьюринг-полным?
Ответ: нет. Из соображений безопасности в нём намеренно нет ни циклов, ни случайности.
Вопрос: поддерживает ли Bitcoin Script NFT или DeFi?
Ответ: лишь в ограниченном виде. Базовые сценарии — управление токенами или escrow — реализовать можно, а вот полноценную логику DeFi уже нет.
Вопрос: появляются ли новые OP-коды?
Ответ: да. Вместе с обновлениями SegWit и Taproot были добавлены новые OP-коды, а обсуждение следующих продолжается.
Заключение: Script — умный слой Bitcoin
Bitcoin Script задаёт логику транзакций, на которой держится работа сети. Он требует серьёзной технической подготовки, но остаётся незаменимым инструментом для разработчиков, специалистов по безопасности и проектировщиков протоколов.
Чем глубже пользователи изучают Bitcoin Script, тем яснее видят, насколько гибким, безопасным и по-настоящему программируемым является Bitcoin.
Рекомендации:
- Экспериментируйте с Bitcoin Script в тестовой сети (testnet) — там это безопасно.
- Досконально разберитесь в различии между ScriptSig и ScriptPubKey.
- Изучайте OP-коды на практике, разбирая реальные скрипты.
- Реализуйте на практике сценарии с мультиподписью и таймлоком.
- Регулярно следите за документацией Bitcoin Core и архивом BIP на GitHub.





