Segregated Witness был включен в релиз Bitcoin Core 0.13.0, начинается подготовка к его развертыванию в сети Биткойн. Это хорошие новости, главным образом потому, что нововведение позволяет увеличить пропускную способность – количество транзакций, проходящих через сеть. Также, оно решает проблему пластичности транзакций.
В этом релизе также добавлена возможность обработки нескольких версий скриптов – расширение биткойн-протокола, открывающее путь для целого класса инноваций.
Одно из таких долгожданных усовершенствований у части разработчиков Биткойна некоторое время стояло в начале списка пожеланий. Речь о подписях Шнорра.
Реализация алгоритма криптографической подписи Шнорра может последовать вскоре после грядущей активации Segregated Witness, что обещает одним махом улучшить масштабирование, эффективность и конфиденциальность в сети Биткойна.
И вот каким образом.
Подписи
Для начала, вкратце повторим: что такое подписи?
В основу Биткойна положен математический фокус, называемый “криптографией с открытым ключом” – криптографическая система, которая использует два типа “ключей” (на практике – два набора чисел): закрытый ключ и открытый ключ.
Закрытый и открытый ключи связаны математическим соотношением. Но хотя очень легко получить открытый ключ из закрытого, практически невозможно получить закрытый ключ из открытого. Это “улица с односторонним движением”.
Чтобы потратить биткойны с какого-либо биткойн-адреса, нужно доказать “владение” (то есть знание) закрытым ключом, который соответствует открытому ключу, связанному с этим адресом. И для доказательства владения закрытым ключом без необходимости обнародовать этот закрытый ключ и служит криптографическая подпись.
Подпись создается путем вычислений, в которых участвуют данные транзакции и закрытый ключ. И здесь вступает в игру магия криптографии с открытым ключом: зная открытый ключ, любой может убедиться, что для создания подписи использовался правильный закрытый ключ. Для этого даже не нужно знать сам закрытый ключ.
“Владелец” закрытого ключа может, таким образом, подписать транзакцию и потратить биткойны, не волнуясь о том, что кто-то другой может увидеть закрытый ключ и украсть эти биткойны – закрытый ключ никогда не раскрывается, а подпись годится только для этой конкретной транзакции.
(Подробности работы криптографии с открытым ключом в системе Биткойна изложены в этой статье. Или просто читайте дальше. Чтобы понять то, что изложено ниже, достаточно общего представления о подписях.)
Схема Шнорра
Так что такое подписи Шнорра?
Схема Шнорра, по имени ее создателя Клауса-Петера Шнорра – это набор математических правил, связывающих между собой закрытый ключ, открытый ключ и подпись. Многие криптографы считают подписи Шнорра лучшими в своей области, поскольку они гарантируют высокий уровень защиты от ошибок, не пластичны и сравнительно быстро проверяемы. И – что важно – поддерживают мультиподпись: несколько подписей могут быть объединены в новую единую подпись.
Несмотря на это, до сих пор не было возможности задействовать схему Шнорра для Биткойна. Другая схема подписи, Алгоритм цифровой подписи на основе эллиптических кривых (Elliptic Curve Digital Signature Algorithm – ECDSA) встроен в протокол Биткойна, и чтобы изменить это, понадобился бы хардфорк.
И тут вступает в игру Segregated Witness.
С Segregated Witness все данные подписи убраны в отдельную часть транзакции – свидетельство – отсутствующую в “старом” биткойн-протоколе. И благодаря наличию разных версий скриптов, практически любое правило, касающееся свидетельства, можно изменить путем софтфорка. Включая используемую схему подписи.
Это открывает двери для Шнорра.
Пропускная способность
Самое полезное для Биткойна свойство схемы Шнорра – это объединение множества подписей в одну.
Зачастую биткойн-транзакции включают в себя множество входов, ссылающихся на адреса, с которых поступают биткойны. (Это можно сравнить с тем, как платежи наличными часто состоят из множества более мелких купюр и монет, из которых складывается бóльшая сумма денег.) На данный момент каждый из этих входов требует своей собственной подписи, что означает, что все эти подписи должны быть включены в транзакцию, их все нужно передать по сети и все они должны быть включены в блок.
В схеме Шнорра, однако, для всех входов понадобится только одна комбинированная подпись, представляющая все эти разные подписи. Это дает очевидный выигрыш в объеме данных, потому что только одна подпись должна быть включена в транзакцию, только ее одну нужно передать по сети и только она одна будет включена в блок. Это значит, что остается больше места для транзакций.
Например:
Segregated Witness, как было предложено Bitcoin Core, делает (примерно) 75% скидку на все данные, включенные в свидетельство, а не в основной блок. Один мегабайт данных свидетельства таким образом “весит” как 0,25 мегабайта, что оставляет место для 0,75 мегабайт данных в основном блоке, давая в сумме 1 мегабайт.
Если комбинированные подписи Шнорра уменьшат общий объем данных свидетельства, скажем, с 1 мегабайта до 0,5 мегабайта, эти 0,5 мегабайта после скидки превратятся в 0,125 мегабайта, оставляя до 0,875 мегабайт на данные в основном блоке. (Увеличение пропускной способности примерно на 17%.)
Дополнительный объем зависит от типа транзакций, включенных в блок. Эрик Ломброзо (Eric Lombrozo), разработчик Bitcoin Core, предполагает, что подписи Шнорра могут, в конечном счете, дать прибавку в 40% к общей пропускной способности, увеличенной до того на 60-100% за счет Segregated Witness.
Мультиподпись
Описанное выше увеличение пропускной способности верно для обычных транзакций, многие из которых имеют более одного входа. Но еще более значительное преимущество можно получить для транзакций с мультиподписью – транзакций, где один вход сам по себе требует нескольких подписей (как правило, от нескольких людей).
Как и с нормальными транзакциями, не более одной подписи нужно будет включить в любую транзакцию с мультиподписью. Не имеет значения, сколько подписей требуется, не важно, сколько людей в этом участвует.
Это открывает путь для смарт-контрактов, намного более сложных по своей структуре, при гораздо меньшем объеме данных, чем обычно требуется. Не важно, это мультиподпись два-из-трех, три-из-пятнадцати или сто-из-ста, во всех этих транзакциях подпись будет занимать столько же места, сколько и в обычной транзакции с единственной подписью.
Конфиденциальность
И в-третьих, подписи Шнорра могут дать еще одно интересное преимущество: заинтересованность в конфиденциальности. Как уже упоминалось, у одной транзакции может быть несколько входов. Чаще всего эти входы ссылаются на адреса, контролируемые одним лицом. (Как в примере с несколькими купюрами и монетами.)
CoinJoin – трюк, придуманный разработчиком Bitcoin Core Грегори Максвеллом (Gregory Maxwell) – позволяет разным пользователям объединить все их транзакции в одну. Эта одна транзакция будет включать множество входов от разных плательщиков, которые отправляют деньги на множество выходов, принадлежащих разным адресатам.
(Это можно сравнить с группой людей, которые сложили все свои купюры и монеты в общую корзину, и ходят с ней по магазинам, чтобы купить все нужные им товары. Каждый получит товары, за которые он заплатил, но маловероятно, что за нужный ему товар будет уплачено именно его “собственной” купюрой.)
При правильной реализации CoinJoin – отличный способ усилить конфиденциальность в сети Биткойн, поскольку становится непонятно, с какого именно входа пришла оплата на данный выход, не говоря уже о том, кто кому заплатил.
Идея CoinJoin не нова. Но до сих пор он был делом хлопотным. Как правило, людям все равно. И поскольку большинству людей все равно, те, кому не все равно, автоматически попадают под подозрение, сводя на нет пользу от применения CoinJoin.
Но подписи Шнорра могут подарить CoinJoin дополнительное преимущество. Они позволяют всем участникам CoinJoin-транзакции не только объединить сами транзакции, но и объединить их подписи. Это означает, что размер полученной транзакции будет меньше, чем сумма размеров всех транзакций по отдельности. Что, в свою очередь, означает, что майнеры будут брать меньшую комиссию за обработку такой транзакции.
Таким образом, при использовании схемы Шнорра CoinJoin не только усилит конфиденциальность, но и, что важно, снизит затраты для каждого из участников. И в самом деле, экономическое преимущество получит самый конфиденциальный вариант, благодаря чему он станет для каждого выбором по умолчанию – значительно усилив конфиденциальность Биткойна для всех.
Примечание: Реализация подписей Шнорра в Биткойне все еще находится на этапе разработки идеи. Хотя большинство разработчиков Bitcoin Core уверены в том, что подписи Шнорра могут быть без особого риска развернуты в сети Биткойна, еще слишком рано говорить об этом с полной уверенностью.
Источник.
https://bitnovosti.com/2016/09/26/the-power-of-schnorr/