Подпись Шнорра
Решение проблем биткойна и подписи Шнорра
Биткойн продолжает оставаться самой популярной криптовалютой, несмотря на некоторые свои проблемы, связанные с масштабированием. Являясь блокчейном 1.0, самой первой версией, BTC испытал на себе все проблемы, связанные с активной базой пользователей и большим количеством транзакций. Какая главная проблема блокчейна? Главная проблема, так называемое "бутылочное горлышко" - количество транзакций, которые должны быть подтверждены майнерами, значительно превышает вместимость блока. Bitcoin меняет сложность, подстраивая ее под мощности майнеров каждые 2016 блоков. Такое число основано на том расчете, что на майнинг одного блока должно уходить ровно 10 минут, а 2016 блоков по 10 минут это 2 недели. Если блоки были добыты быстрее или медленнее, сложность меняется. Таким образом, нельзя майнить больше блоков, если есть больше транзакций, а в каждый блок входит лишь ограниченное количество информации, это и есть фундаментальная проблема биткойна.
Как увеличить число транзакций в блоке
Изначально в каждый блок записывалось максимально возможное количество информации. То есть, цифровая подпись, создаваемая из закрытого ключа, адрес получателя, сумма ввода, вывода, комиссия майнеров, сдача с транзакции. Чтобы увеличить пропускную способность сети, то есть, вмещать больше транзакций в один блок, нужно либо уменьшить количество информации о каждой транзакции в блоке, либо увеличить размер самого блока. В августе 2017 года был активирован протокол Segregated Witness, который убрал цифровые подписи в отдельный сайдчейн, тем самым освобождая место для большего количества транзакций в основном блокчейна. В то же время, команда Bitcoin Cash не стала принимать этот протокол, и просто увеличила размер блока до 8 Мб вместо 1 Мб. Но это не является прорывом, поскольку технически это требовало изменения нескольких строчек кода и лишь отсрочило проблему вместо решения.
Одним вариантом решения является сеть Lightning Network, мы уже писали про нее. Сеть каналов для микротранзакций позволяет проводить миллионы операций в секунду, записывая их в блокчейн лишь тогда, когда нужно зафиксировать промежуточное состояние.
Но большим прорывом, не требующим дополнительных надстроек, является введение в использование подписей Шнорра.
Как это работает
Подписи Шнорра - немного иная форма цифровых подписей, чем используемая сейчас в Биткойне. На данный момент используется алгоритм ECDSA (Elliptic Curve Digital Signing Algorithm), но оба этих алгоритма базируются на одинаковых принципах безопасности. Подписи Шнорра могут работать с текущим форматом приватных ключей, поэтому переход на новую модель не требует коренных изменений в протоколе (хардфорка).
Чего же нового предлагает использование таких подписей? ESDCA подписи могут быть немного разного размера, но большинство из них занимают 71-73 байта, максимум - 75 байт, минимум - 8 байт. Подписи Шнорра короче, их максимальная длина - 64 байта. Выгоды этого понятны, экономия места.
Но самая большая выгода идёт от обьединения мультиподписей. Мультиподписи - технология, связанная со скриптами, немного похожая на смарт-контракты Эфириума, позволяет совершить перевод только при наличии подписи не одним секретным ключом, а двумя, тремя или даже пятнадцатью ключами. Соответственно, злоумышленник не сможет снять деньги просто так, даже получив доступ к одному из ключей. Мультиподпись в биткойне реализована довольно наивно - вначале пишется список публичных ключей, которые могут одобрить транзакцию, а потом те, которые поставили подпись. Но на самом деле, блокчейну все равно, кто конкретно из списка одобрил эту транзакцию. Используя подписи Шнорра, мы объединяем все эти подписи в одну, таким образом и при использовании 3 из 10 подписей и 7 из 10 подписей мы используем только 64 байта на саму подпись. А при желании, можно проверить подлинность, так как у нас есть изначальный список.
Но это ещё не все. Биткойны сами по себе не существуют, а то число, которое вы видите в своём кошельке - суммарное значение запечатанных потоков ввода на ваш адрес. То есть, если у вас есть 2 биткойна, и вы получили это число последовательным переводом 1, 0.5, 0.25 и 0.25 биткойна, то, что у вас есть, это 4 потока ввода, которое вы распечатываете при переводе своим приватным ключом. Если вы переводите 0.13 биткойна, ваш поток ввода на 0.25 биткойна делится на три части: на 0.13 биткойна, на комиссию майнера и на остаток от перевода, подписывается, разблокируется, и отсылается. Ваш остаток тоже отсылается вам же, и у вас получается новый поток ввода, равный остатку транзакции, и суммарно по-прежнему 4 потока на адресе.
А если у вас есть 400 потоков и вы хотите перевести все это разом куда-то? И используете мультиподпись 3 из 4? Тогда вам нужно подписать каждый поток и записать в блок 1200 подписей. Подпись Шнорра позволяет решить и эту проблему! Теперь на все эти потоки нужна всего одна подпись. То есть, в нашем примере, не 1200, а всего одна. Невероятная экономия места. Теперь вы понимаете, почему это является прорывом?
Перспективы
Перспективы такого изменения огромны. По оценкам, введение подписей Шнорра позволит экономить около 30% места. Это позволит вмещать на 30% больше транзакций в каждый блок. Если ещё и увеличить размеры блока до 2 Мб в будущем (правда, это потребует хардфорка), это значительно увеличит скорость передачи по сети. Также это увеличит безопасность, можно будет использовать мультиподписи на постоянной основе, не афишируя это. Ну и конечно, поможет бороться со спам-атаками сети, когда она забивается тысячами мелких транзакций с десятками подписей в каждой, тем самым мешая настоящим транзакциям быть одобренными вовремя. Так как подписи будут объединяться, они уже не будут занимать столько места, делая атаку ещё более дорогостоящей.
Все это сделает биткойн ещё более безопасной и быстрой криптовалютой будущего! А если у вас ещё нет своего биткойна в кошельке, можете приобрести его на
Cryptex.net