Будущее Биткоина: Шнорр подписи.

Одним из пунктов постоянно пополняемого списка Future Technological Directions in Bitcoin, созданного в свою очередь на основе презентации на LINUXCONFAU, выполненной Rusty Russell, является «Аггрегация подписей». Аггрегация или группирование входов и использование одной подписи является следствием внедрения так называемых подписей Шнорра, одного из алгоритмов формирования цифровых подписей, который долгое время игнорировался Open Source сообществом из-за патентных прав создателя. Аггрегированные подписи имеют по смыслу много общего с группированием транзакций, только если для последних достаточно правильно организовать raw-транзакцию (json-скрипт, отправляемый в сеть Биткоина) и денежные потоки, то для аггрегации подписей необходимо изменять протокол. В настоящее время все входы в транзакцию должны быть подписаны обладателем предыдущего непотраченного выхода транзакции (UTXO). То есть в текущей схеме, реализация 200 входов требует 200 подписей. Схема Шнорра позволяет заменить 200 подписей одной. Pieter Wuille оценил, что если бы только в настоящем блокчейне Биткоина были аггрегированы подписи, то он был бы на 25%-30% меньше. С применением подписей Шнорра, симметрично аггрегации подписей работают мультиподписи.

В настоящее время мультиподписи в Биткоине функционируют благодаря опкоду, сравнивающему количество ключей, подписавших транзакцию с запрограммированным в условии UTXO количеством необходимых подписей. Данная схема хотя и работает достаточно надёжно, но имеет существенный недостаток, приводящий к росту размера транзакции, пропорциональному количеству участвующих подписей. Реализованный в настоящее время подход подтверждения M-N подписей является скорее смарт-контрактом, нежели криптографическим способом подтверждения общего секрета.

Криптографические подписи в Биткоине создаются при помощи Алгоритма Цифровой Подписи на Элиптических Кривых (Elliptic Curve Digital Signing Algorithm, ECDSA). Подписи Шнорра являются другим способом создания цифровых подписей. Этот алгоритм использует те же самые предположения, как и ECDSA и совместим с эллиптической кривой, которую уже использует Биткоин (secp256k1). Это означает, что цифровые подписи Шнорра могут быть созданы теми же приватными ключами и совместимы с текущими схемами формирования производных ключей. Возвращаясь к теме мультиподписей, нужно отметить, что подписи Шнорра имеют полезное математическое качество, которое позволяет многим подписям быть скомбинированными в одну. Комбинированная подпись имеет размер одной подписи, но позволяет авторизовать авторов исходных подписей. Как следствие, это позволяет создавать компактные транзакции, подписанные несколькими приватными ключами и чем больше отдельных приватных ключей, тем более эффективной становится подпись. Например, схемы 3-из-15 и 10-из-15 могут иметь одинаковый размер (если не имеет значения, кто именно подписал).

Несмотря на то, что D. Harding (Bitcoin Core) указал подписи Шнорра как улучшение с низким приоритетом, их имлементация может немного увеличить пропускную способность блокчейна Биткоина за счёт уменьшения размера подписи обычной транзакции. Эллиптические подписи варьируются в размере, однако обычно занимают 71–73 байтов. Максимальный размер для подписи Шнорра 64 байта. Блоки Биткоина включают тысячи подписей. Определяя размер транзакции в 400-500 байт (250 байтные транзакции в наше время редкость), можно утверждать, что экономия на транакцию составит порядка 1-2% в комиссиях.

BIP (Bitcoin Improvement Proposal) для реализации подписей Шнорра уже разрабатывается и приведёт к внедрению нового опкода для верификации подписи (OP_CODE — «ключевое слово», которое подразумевает выполнение инструкции языка программирования Биткоин Скрипт). Реализация Segwit позволила одновременно имплементировать версии скриптов в протоколе Биткоин и подписи Шнорра будут реализованы в виде софт-форка (узлы со старыми версиями клиентов протокола Биткоин будут либо игнорировать, либо распознавать изменения в качестве рабочих).

Чуть больше хороших исторических и технических подробностей можно прочитать здесь, в исполнении Pieter Wuille.

В данной заметке много взято отсюда, поскольку статья оказалась хорошей и подходящей. Кроме того, ниже собрано некоторое количество ссылок разной степени сложности.

Доклады разработчиков Core:

http://diyhpl.us/wiki/transcripts/blockchain-protocol-analysis-security-engineering/2018/schnorr-signatures-for-bitcoin-challenges-opportunities/

https://diyhpl.us/wiki/transcripts/scalingbitcoin/milan/schnorr-signatures/

https://blockstream.com/2018/01/23/musig-key-aggregation-schnorr-signatures.html

Попроще:

https://bitcoinmagazine.com/articles/the-power-of-schnorr-the-signature-algorithm-to-increase-bitcoin-s-scale-and-privacy-1460642496/

Mpdblog.ru