Предпродажа $EX5 открыта — уровень Seed · 500M фиксированная эмиссия · 50% сжигание · KYC через EX5 ExchangeУЧАСТВОВАТЬ →
21.04.2025

Введение в 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.