Скрипт Bitcoin и проверка подписей UTXO
Проследите работу скриптов pay-to-public-key-hash (P2PKH) и подписания ECDSA
«Скрипт Bitcoin и проверка подписей UTXO» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.
Модель UTXO
Bitcoin использует непотраченные выходы транзакций (UTXO). Каждый UTXO — это монета со скриптом блокировки (scriptPubKey). Чтобы потратить её, отправитель предоставляет скрипт разблокировки (scriptSig), удовлетворяющий скрипту блокировки. UTXO неделимы: они либо потрачены, либо не потрачены, но не могут быть потрачены частично.
Скрипт Bitcoin
Скрипт Bitcoin — это язык на основе стека, неполный по Тьюрингу. Скрипты выполняются путём помещения данных в стек и запуска опкодов. Ни циклов, ни рекурсии: выполнение скриптов всегда завершается. Это намеренное ограничение предотвращает отказ в обслуживании и делает проверку скрипта линейной — O(n) относительно его длины.
P2PKH: оплата хешем открытого ключа
Самый распространённый тип выхода. scriptPubKey: OP_DUP OP_HASH160
Трассировка выполнения P2PKH
Трассировка стека для P2PKH: поместить
ECDSA в Bitcoin
Bitcoin использует ECDSA над secp256k1 (кривой Коблица, y^2 = x^3 + 7 mod p). Закрытый ключ d ∈ [1, n-1]. Открытый ключ Q = d*G. Sign(m): случайное k; r = (k*G).x mod n; s = k^{-1}(H(m)+r*d) mod n. Подпись = (r, s). В scriptSig она кодируется в формате DER.
Типы SIGHASH
Подписи Bitcoin фиксируют определённые части транзакции: SIGHASH_ALL (по умолчанию): подписать все входы+выходы. SIGHASH_SINGLE: подписать только соответствующий выход. SIGHASH_NONE: не подписывать выходы (опасно). SIGHASH_ANYONECANPAY: подписать только собственный вход — это позволяет создавать совместные транзакции.
P2SH: оплата хешем скрипта
P2SH позволяет скрыть сложные условия траты за хешем. scriptPubKey: OP_HASH160
Мультиподпись (2 из 3)
redeemScript: OP_2
SegWit и P2WPKH
Segregated Witness (SegWit, BIP-141) перемещает подписи из scriptSig в отдельное поле witness. Это устраняет пластичность транзакций: её ID меняется при изменении scriptSig. scriptPubKey для P2WPKH: OP_0 <20-byte pubKeyHash>. Witness: [
Taproot (P2TR)
Taproot (BIP-340/341/342) использует подписи Шнорра и мерклизованные абстрактные синтаксические деревья (MAST). Вариант траты по умолчанию — одна подпись Шнорра, неотличимая от траты по ключевому пути. Сложные условия скрыты в дереве Меркла и раскрываются только при использовании. Это повышает конфиденциальность и эффективность.
Проверка скриптов в коде
Bitcoin Core проверяет скрипты с помощью интерпретатора стекового типа. CheckSig вызывает VerifyScript, который выполняет объединённые scriptSig+scriptPubKey. Для каждого опкода CHECKSIG он вызывает CheckECDSASignature, проверяющий закодированные в DER значения (r,s) по хешу транзакции с использованием secp256k1.
Быстрая проверка
Что проверяет OP_CHECKSIG в скрипте P2PKH?
Итоги
UTXO используют скрипт Bitcoin на основе стека. P2PKH — самый распространённый шаблон траты: сначала проверяется хеш открытого ключа, затем подпись ECDSA. SegWit устраняет пластичность, а Taproot добавляет подписи Шнорра и MAST. Далее: дифференциальный криптоанализ.
Часто задаваемые вопросы
Урок «Скрипт Bitcoin и проверка подписей UTXO» бесплатный?
Да — полный текст урока «Скрипт Bitcoin и проверка подписей UTXO» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.
Чему я научусь в уроке «Скрипт Bitcoin и проверка подписей UTXO»?
Проследите работу скриптов pay-to-public-key-hash (P2PKH) и подписания ECDSA Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cryptology Academy?
Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Скрипт Bitcoin и проверка подписей UTXO»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cryptology Academy?
Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Цепочки хешей и связывание блоков
- Деревья Меркла: целостность транзакций в большом масштабе
- Доказательство работы: майнинг и настройка сложности
- Скрипт Bitcoin и проверка подписей UTXO