Определение
Bitcoin Script — это стековый, неполный по Тьюрингу язык программирования, используемый для определения условий, при которых Биткойн транзакции Можно потратить. Это простая, но мощная система скриптов, встроенная в каждый выходной (скрипт блокировки или scriptPubKey) и входной (скрипт разблокировки или scriptSig) биткоин-транзакции, позволяющая программировать условия расходования средств без риска для сети биткоина, присущего платформам смарт-контрактов с полной архитектурой Тьюринга. Bitcoin Script позволяет кошельки с мультиподписьютранзакции с привязкой ко времени, контракты с хеш-блокировкой, Платежные каналы и атомарные свопы — и все это без необходимости использования универсального блокчейна.
Происхождение и история
| Время | События |
| 2008 | Сатоши Накамото разработал Bitcoin Script в рамках создания технического документа по Bitcoin. |
| 2009 | Биткоин-скрипт развернут в генезисном блоке Биткоина; Pay-to-Public-Key (P2PK) — первый тип скрипта. |
| 2012 | BIP 16: Введена технология Pay-to-Script-Hash (P2SH), позволяющая использовать сложные скрипты погашения. |
| 2015 | Добавлена функция CHECKLOCKTIMEVERIFY (CLTV), позволяющая устанавливать абсолютные временные блокировки для транзакций. |
| 2016 | Добавлена функция CHECKSEQUENCEVERIFY (CSV), позволяющая устанавливать относительные временные блокировки для платежных каналов. |
| 2017 | SegWit представляет технологии Pay-to-Witness-Public-Key-Hash (P2WPKH) и P2WSH. |
| 2021 | Обновление Taproot (BIP 340/341/342) добавляет сигнатуры Шнорра и MAST через Tapscript. |
| 2023 | Биткоин-ординалы используют скрипты для записи данных в данные свидетеля. |
| 2023 | Дискуссия о возобновлении действия BIP 347 (OP_CAT) в связи с возможным расширением функционала скрипта набирает обороты. |
«Bitcoin Script намеренно имеет ограничения — и это преимущество, а не недостаток. Простота — залог безопасности». — Грег Максвелл, разработчик Bitcoin Core.
Как это работает
ВЫПОЛНЕНИЕ СКРИПТА ДЛЯ ТРАНЗАКЦИИ В БИТКОИНАХ ═ ... OP_EQUALVERIFY OP_CHECKSIG (Стандартный P2PKH — Оплата хешу открытого ключа)
РАЗБЛОКИРОВКА СКРИПТА (scriptSig) — предоставлено потребителем:
ВЫПОЛНЕНИЕ (на основе стека): Стек изначально пуст
- Толкать → Стек: [sig]
- Толкать → Стек: [sig, pubKey]
- OP_DUP: дублировать верхнюю часть → Стек: [sig, pubKey, pubKey]
- OP_HASH160: вершина хеша → Стек: [sig, pubKey, pubKeyHash]
- Толкать → Стек: [sig, pubKey, pubKeyHash, expected]
- OP_EQUALVERIFY: сравнение → Стек: [sig, pubKey] (если равно)
- OP_CHECKSIG: проверка подписи → Стек: [TRUE]
Результат: TRUE = транзакция действительна и UTXO потрачено
ТИПЫ СКРИПТОВ: P2PK → Оплата по открытому ключу (устаревший способ) P2PKH → Оплата по хешу открытого ключа (наиболее распространенный способ) P2SH → Оплата по хешу скрипта (мультиподпись, сложная) P2WPKH → Нативный SegWit (bech32) P2TR → Оплата по Taproot (наиболее эффективный/приватный способ) ══════════════════════════════════════════════════
| Тип сценария | Формат адреса | Кейсы | конфиденциальность |
| П2ПК | (стандартный адрес отсутствует) | Оригинальный биткойн, монеты Сатоши | Низкий |
| П2ПКХ | 1… (Base58) | Стандартные платежи с одной подписью | Низкий |
| П2Ш | 3… (Base58) | Многоподписные, сложные скрипты | Средний |
| P2WPKH | bc1q… (bech32) | Встроенная технология SegWit, более низкие комиссии | Средний |
| P2WSH | bc1q… (bech32) | Нативные скрипты SegWit | Средний |
| П2ТР | bc1p… (bech32m) | Taproot, Tapscript, порядковые номера | Высокий |
Простыми словами
- Замок и ключКаждый биткоин-транзакция имеет блокировку (скрипт блокировки) — чтобы потратить её, необходимо предоставить правильный ключ (скрипт разблокировки), удовлетворяющий условиям.
- Складирование машиныСкрипт выполняется путем помещения значений в стек и выполнения операций — он прост, предсказуем и намеренно не является полным по Тьюрингу, чтобы предотвратить бесконечные циклы.
- Пример мультиподписи: Для разблокировки средств с помощью скрипта с мультиподписью 2 из 3 требуется 2 из 3 указанных подписей закрытого ключа — используется для командных казначейств и защищенных кошельков.
- конфиденциальность TaprootTaproot создает сложные многосигнатурные и скрипты смарт-контрактов Они выглядят идентично простым транзакциям с одиночной подписью в блокчейне, что повышает конфиденциальность.
- Преднамеренные ограниченияВ отличие от Solidity в Ethereum, Bitcoin Script не может получать доступ к внешним данным, зацикливаться или вызывать другие контракты, что делает его предсказуемым и безопасным.
Примеры из реального мира
| Сценарий | Тип сценария | Польза |
| Обмен горячего кошелька | P2SH 2-из-3 мультисиг | Для активации требуется 2 из 3 ключей — защищает от кражи одного ключа. |
| канал Lightning Network | HTLC (контракт с временной блокировкой на основе хеширования) | Обеспечивает мгновенные платежи в BTC вне блокчейна. |
| Атомарный своп BTC↔LTC | HTLC на обеих цепях | Децентрализованный межцепочечный обмен без посредников |
| Наследование с привязкой ко времени | CHECKLOCKTIMEVERIFY | Средства могут быть израсходованы только после указанной даты. |
| Порядковая надпись | данные свидетелей P2TR | NFT/запись данных в свидетеле Taproot |
Преимущества
| Преимущества | XNUMX |
| Безопасность. | Неполная по Тьюрингу архитектура предотвращает сложные векторы атак, возможные в смарт-контрактах. |
| Предсказуемость | Каждый скрипт выполняется детерминированно с ограниченными вычислительными ресурсами. |
| Выразительность | Обеспечивает поддержку нескольких подписей, временных блокировок и протоколов HTLC, достаточных для сети Lightning. |
| Эффективность | Скрипты компактны, что минимизирует объем данных о транзакциях и комиссионные сборы. |
| Конфиденциальность (Taproot) | Сложные условия расходования средств, неотличимые от простых платежей. |
Недостатки и риски
| Снижение | XNUMX |
| Ограниченная функциональность | Невозможно реализовать сложный Defi, оракулы или произвольные смарт-контракты |
| Сложность сценария | Внедрение сложных скриптов с множественными подписями — сложная задача, требующая правильной реализации. |
| Проблемы устаревшего формата | Более старые типы скриптов (P2PK, P2PKH) обеспечивают более низкий уровень конфиденциальности, чем современные альтернативы. |
| Отключенные коды операций | В целях безопасности были отключены несколько важных кодов операций (OP_CAT, OP_CHECKSIGFROMSTACK). |
| Риски, связанные с ошибками в скрипте. | Ошибки в пользовательских скриптах могут привести к безвозвратной блокировке средств. |
Советы по управлению рисками:
- Всегда тестируйте пользовательские реализации скриптов в тестовой сети перед тестированием в основной сети.
- Используйте адреса P2TR (Taproot) для обеспечения максимальной конфиденциальности и совместимости в будущем.
- Для кошельков с мультиподписью используйте проверенные реализации (Bitcoin Core, Sparrow Wallet), а не пользовательские скрипты.
- Храните скрипты погашения (P2SH) в безопасном месте — они необходимы для использования средств.
FAQ
В: Почему Bitcoin Script не является полным по Тьюрингу?
А: Полнота по Тьюрингу допускает бесконечные циклы — это опасно в блокчейне, где все узлы должны выполнять каждый скрипт. Преднамеренная неполнота Bitcoin Script гарантирует предсказуемое завершение скриптов, предотвращая атаки типа «отказ в обслуживании» и делая возможной формальную проверку скриптов.
В: Что такое HTLC в Bitcoin Script?
A: Контракт с временной блокировкой хеширования (HTLC) — это скрипт, позволяющий получить платеж, раскрыв секретный ключ (прообраз), хеш которого равен заранее определенному значению, или получить возврат средств отправителю по истечении времени ожидания. HTLC являются фундаментальным строительным блоком сети Lightning Network.
В: Как Taproot улучшает Bitcoin Script?
A: Taproot (BIP 340/341/342) внедряет подписи Шнорра, позволяющие агрегировать ключи, MAST (абстрактные синтаксические деревья Мерклизма) через Tapscript, позволяющие создавать сложные скрипты, отображая при этом только выполненные ветви, и обеспечивающие идентичность всех выходных данных Taproot во внешнем виде — что значительно повышает конфиденциальность и эффективность.
Совет от UPay: При настройке биткоин-кошелька используйте адреса Taproot (bc1p…) для оптимального сочетания конфиденциальности, эффективности и совместимости с будущими версиями. Большинство современных кошельков, таких как Sparrow и Phoenix, поддерживают Taproot изначально.
Предупреждение: Данный контент предназначен исключительно для образовательных целей и не является финансовой или технической консультацией.
UPay — Создание криптоэнциклопедии










