Блокчейн/Уровень IV · Глубины протокола/4.2 Обновления/Урок 1
Taproot и подписи Шнорра
Ключ, скрывающий контракт, и подпись, которая помещается в карман
МатериалыБлок-эксплорер, позволяющий просматривать сырые транзакции в hexКошелёк с поддержкой адресов Taproot (bc1p)Спецификации BIP341 и BIP340
Любопытство
- Почему в блокчейне сложное многостороннее соглашение выглядит точно так же, как простой платёж одного человека?
- Как несколько приватных ключей могут объединиться в один публичный ключ так, что наблюдатели даже не узнают об их существовании?
- Какое математическое свойство делает подпись десяти человек неотличимой от подписи одного?
Исследование
- До Taproot сложное условие траты полностью раскрывалось при каждой трате монет (а в случае «голых» скриптов находилось прямо в самом выходе): трата с мультисига показывала ключи всех участников, таймлок — свою длительность, хешлок — свою структуру. Такая публичность создавала риски для приватности опытных пользователей и раздувала блоки избыточными данными. Сеть воспринимала все скрипты как открытую книгу, вынуждая сложные схемы транслировать всю свою логику каждой ноде и каждому наблюдателю.
- Taproot (BIP341) меняет модель обязательств (commitment). Теперь выход указывает на единственный 32-байтовый публичный ключ Q, вычисляемый как P + t·G. Здесь P — внутренний ключ, которым распоряжается основной владелец средств, а t фиксирует корень Меркла необязательного дерева альтернативных скриптов. В блокчейне такой выход выглядит как обычный платёж на один ключ, скрывая любую стоящую за ним сложность.
- В основе этой эффективности лежат подписи Шнорра (BIP340). В отличие от ECDSA, где используется кодирование DER переменной длины — в среднем 71–72 байта, — схема Шнорра даёт подпись фиксированного размера 64 байта (65 при типе хеша подписи, отличном от используемого по умолчанию). Фиксированный размер упрощает разбор и снижает вес транзакции. Линейность схемы Шнорра также делает возможной агрегацию ключей: с помощью протокола вроде MuSig2 несколько публичных ключей объединяются в один агрегированный ключ, и группа может подписывать как единое целое, не раскрывая отдельных участников.
- Потратить средства можно двумя разными путями. При трате по ключу (key path) все стороны действуют совместно и подписывают агрегированным ключом; итоговая транзакция неотличима от обычного платежа на один ключ. Никакие скрипты не раскрываются, никаких дополнительных данных не прикладывается. Это сохраняет приватность при кооперативном закрытии каналов Lightning или мультисиг-кошельков, гарантируя, что сложные финансовые схемы не выдают метаданных в публичный реестр блокчейна.
- Если договориться не удаётся, задействуется трата по скрипту (script path). Тратящий раскрывает один конкретный лист дерева Меркла вместе с доказательством его принадлежности к дереву. Неиспользованные ветви остаются скрытыми, сохраняя приватность альтернативных условий. Этот механизм, известный как мерклизованные абстрактные синтаксические деревья (MAST), позволяет разным правилам траты — например, отложенному выводу средств или аварийным ключам — сосуществовать в одном выходе, не раскрываясь до тех пор, пока это не станет действительно необходимо.
- Практические последствия значительны. Адреса в формате Taproot начинаются с ‘bc1p’. Стандарт MuSig2 (BIP327) стандартизирует процедуру агрегации ключей, что обеспечивает возможность использования механизмов множественных подписей в различных кошельках. Для аналогичных целей разрабатываются схемы типа FROST. По состоянию на ноябрь 2021 года, на блоке 709,632, сеть приняла эту структуру, что позволяет делать сложные скрипты менее объемными, дешевле в использовании и более конфиденциальными при совместном применении.
Ключевые факты
- Taproot (BIP341) был активирован в ноябре 2021 года на блоке 709,632.
- Выход Taproot фиксирует единственный ключ Q = P + t·G, где t — тегированный хеш от P и, если он есть, корня дерева скриптов.
- Подписи Шнорра (BIP340) имеют фиксированный размер 64 байта, что избавляет от накладных расходов кодирования DER.
- Трата по ключу (key path) не раскрывает никаких скриптов и неотличима от платежей на один ключ.
- Трата по скрипту (script path) раскрывает только использованный лист скрипта, оставляя остальные ветви скрытыми.
- MuSig2 (BIP327) обеспечивает агрегацию ключей по схеме n-of-n для совместимых мультисиг-кошельков.
Упражнение девять, шесть, три, один
9СобратьПеречислите 9 различных типов условий траты биткоинов или скриптов, существовавших до Taproot. Для каждого укажите, какие утечки приватности или издержки по размеру он создаёт в блокчейне.
6СгруппироватьСгруппируйте 9 условий в 6 категорий по тому, как они реализуются в выходе Taproot: полностью скрыты за счёт траты по ключу (key path), раскрываются только при споре, агрегируются через MuSig2 или затронуты другими структурными изменениями.
3Выделить главноеСведите 6 кластеров к 3 основным причинам, по которым сокрытие скриптов за одним ключом повышает эффективность сети и приватность пользователей.
1КристаллизоватьНапишите одно предложение о том, как структура дерева Меркла в Taproot позволяет заключать сложные финансовые соглашения, не раскрывая публично их условия.
Проверка фактов
Даты, цифры и утверждения были проверены по приведенным ниже опубликованным источникам.