Сила Шнорра: Улучшаем масштабируемость и конфиденциальность Биткойна

Сила Шнорра масштабирование криптовалют
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 уверены в том, что подписи Шнорра могут быть без особого риска развернуты в сети Биткойна, еще слишком рано говорить об этом с полной уверенностью.

Оригинал статьи: Bitcoinmagazine



Categories: Безопасность, Криптография, Разработчикам, Стандарты, Теория, Технологии

Tags: , , ,

Leave a Reply

29 Комментарий на "Сила Шнорра: Улучшаем масштабируемость и конфиденциальность Биткойна"

Notify of
avatar
trackback
Разработчик Bitcoin Core считает, что увеличение размера блока не потребуется ещё несколько лет | Заработок онлайн доступный каждому

[…] для увеличения размера блока, отметил luke-jr. Даже СегВит (предложение, направленное на решение проблемы […]

trackback
Разработчик Bitcoin Core считает, что увеличение размера блока не потребуется ещё несколько лет

[…] для увеличения размера блока, отметил luke-jr. Даже СегВит (предложение, направленное на решение проблемы […]

trackback
Альфа-релиз Lightning Network Daemon (LND) | Заработок онлайн доступный каждому

[…] Lightning Network. К примерам таких улучшений можно отнести подписи Шнорра на основе эллиптических кривых и создание новых […]

trackback
Альфа-релиз Lightning Network Daemon (LND) – Bit•Новости

[…] Lightning Network. К примерам таких улучшений можно отнести подписи Шнорра на основе эллиптических кривых и создание новых […]

trackback
Разработчики биткойн-кошельков готовятся к принятию СегВит – Bit•Новости

[…] возможности, предоставляемые СегВит, такие как MAST, подписи Шнорра […]

Злой разбойник Бармалей
Гость

существующие асики нормально будут обрабатывать алгоритм Шнорра ?

Семён Антонов
Гость

Это не про майнинг. Это про подписывание транзакций.

trackback
Биткойн может привести к исчезновению налоговых гаваней | Заработок онлайн доступный каждому

[…] ‹ Сила Шнорра: Улучшаем масштабируемость и конфиденциал… […]

trackback
Сила Шнорра: Улучшаем масштабируемость и конфиденциальность Биткойна | Bitcoiner вам в помощь

[…] Segregated Witness был включен в релиз Bitcoin Core 0.13.0, начинается подготовка к его развертыванию в сети Биткойн. Это хорошие новости, главным образом потому, что нововведение позволяет увеличить пропускную способность – количество транзакций, проходящих через сеть. Также, оно решает проблему пластичности… Read More › […]

alex-ru
Участник

Возникает закономерный вопрос: Увеличение числа транзакций в сети Биткойн на 40% (ведь такое увеличение «съест» весь ожидаемый положительный эффект от внедрения) наступит быстрее, чем произойдёт внедрение «подписей Шнорра»?
И положительный, и отрицательный ответы на этот вопрос не вселяют оптимизма, увы.

Eqvant Tnavqe (@Eqvant)
Гость

Поэтому, увеличение вместимости, это лишь одна сторона многогранника. Поглощение свободного места в блоке это неизбежная реальность, при этом, простое, постоянное увеличение, это лишь костыль. Подписи Шнорра оптимизируют использование мультиподписей, которые в свою очередь необходимы для создания «умных контрактов» — слоев типа Lightning network, или Tumblebit. Эти слои, это магия, которая недоступна базовой технологии блокчейн, т.к их функции это уже блокчейн-инфраструктура. А это уже больше чем простое увеличение числа транзакций, это практически все, что можно только придумать…

Georg
Гость

«при этом, простое, постоянное увеличение, это лишь костыль.»
То в одной обсуждении, то в другом постоянно вбрасываются такого рода утверждения:
«увеличение блоков — тупиковый путь, это не решение проблемы, костыль и т.п.»

Но простой вопрос, ПОЧЕМУ, вводит авторов утверждений в ступор.

Может Вы расскажете это нам подробно, раз и навсегда, и я перестану задавать этот вопрос. 🙂

Eqvant Tnavqe (@Eqvant)
Гость

Это мое мнение. Я знаю, что у вас противоположный взгляд. Поэтому не вижу смысла вести холивар. Если у вас есть аргументы, просто выскажите их, но пожалуйста, не нужно вот этих «может расскажите, может докажите». Все, что я хотел сказать описано выше. Хотя, если есть конкретный вопрос, то возможно, если у меня будет ответ, я напишу.

Georg
Гость
Да, мое мнение отличается от Вашего. Но, у нас немножко разные ситуации. Я не вижу причин, почему мы не можем масштабироваться путем увеличения блоков. (На данном этапе. Вполне допускаю, что на каком-то уровне мы можем столкнуться с трудностями по этому пути.А может и нет.) А Вы ждете от меня аргументов. Каких? Трудно дать доказательства отсутствия. 🙂 Вы же утверждаете, что увеличение блоков- плохой путь. Значит, у Вас есть достаточно убедительные основания для этого. Вы же не руководствуетесь такими соображениям, как «чует мое сердце, это плохой путь». 🙂 Да, я пытаюсь узнать от противников увеличения блоков доказательства. Но в итоге, кроме… Read more »
Georg
Гость

«при этом, простое, постоянное увеличение, это лишь костыль.»
Здесь никаких рассуждений, Вы преподносите это как факт.
И нет никаких ссылок, что это не Ваше мнение.

Удивительно, что я выше угадал Ваш ответ.
В принципе понятно, что у Вас нет доказательств. Просто, у Вас такой стиль обсуждения. 🙂

Eqvant Tnavqe (@Eqvant)
Гость

«Вы же утверждаете, что увеличение блоков- плохой путь.» Это не мое утверждение, это рассуждения в тон разработчикам Bitcoin Core. Возможно есть некоторые личные допущения, но это никак не влияет на заданный вектор. Так вот, как минимум развитие реализуемое этими людьми работает стабильно, и продолжает развиваться, а это меня вполне устраивает.

Семён Антонов
Гость

Может быть, ты расскажешь подробно, каким именно должен быть размер блока, и почему?

Анонимно
Гость
Да не я хочу. А так работают естественные саморегулирующиеся системы, вмешательство в которые, чревато самыми не предсказуемыми последствиями. Естественность, невозможность вмешательства и как следствие саморегуляция — ключевые ценности биткойна. Сохранятся эти ценности сохранится и биткойн, и будут со временем и миллионы транзакций, и их дешевизна, и много чего ещё. Не сохранятся ценности — не сохранится и биткойн. Регулируемого, с самыми благими целями, барахла, в этом мире, начиная с фиата и далее везде, вагон и маленькая тележка. Почему, да потому, что одно вмешательство, влечёт за собой второе и третье, и так в бесконечность. Вот увеличили, например блок, а цена возьми, да… Read more »
Georg
Гость
То есть, в Биткоин-системе нельзя ничего менять, и это ценность. Если так, то утверждение «Сохранятся эти ценности сохранится и биткойн, и будут со временем и миллионы транзакций,» — извините, ложное. При 1мб блоке не может быть миллионов транзакций в блокчейне. Причем тут понятие — регулирование. И почему установка размера блока — 2мб — это регулирование системы. А установка размера блока — 1мб — это НЕ регулирование. » Почему, да потому, что одно вмешательство, влечёт за собой второе и третье, и так в бесконечность» — это ничем не доказанное утверждение. Такими утверждениями можно оправдать любое бездействие. 🙂 И Ваш пример —… Read more »
Анонимно
Гость
А что тут понимать. Давным давно, сложилась ситуация, почему другой вопрос, при которой, те кто покупают биткойн, фактически оплачивают порядка 98% комиссионных тем, кто осуществляет транзакции. Естественно, что такое положение, привело к тому, что места в блоке, особенно для бесплатных транзакций, стало не хватать и комиссионные гарантирующие попадание транзакции в блок стали расти. Вполне нормально, что в перспективе для совершения транзакций придётся оплачивать полную их стоимость, на сегодня это около 5$. Если бы сложилась ситуация при которой пользователи полностью оплачивают стоимость транзакций, а места в блоке не хватает, то вопрос об увеличении размера блока, был бы по крайней мере логичным.… Read more »
Georg
Гость
То есть, Вы хотите дождаться ситуации, когда пользователи будут полностью оплачивать транзакции (напомню, что это будет лет через так 12-20), и если при этом не будет хватать места в блоке, то только тогда увеличить размер. Боюсь, что с 5$ комиссиями мы никогда не дойдет до ситуации нехватки блока. Вернее, мы никогда не дойдем до ситуации, когда комиссии будут больше 5$. 🙂 Платежная система с 5$ комиссиями обречена на провал. А вот если мы увеличим пропускную способность системы в 100 раз, тогда, чтобы заплатить полную стоимость транзакций, достаточно иметь комиссию 5 центов. Вот такая платежная система имеет шансы на успех. Поэтому,… Read more »
Georg
Гость
При создании Биткоин-системы было продекларировано, что любой желающий может пользоваться системой. Значит, размер блока должен быть таким, чтобы вместить всех желающих. Но, так как мы живем в реальном мире, размер должен быть еще и таким, чтобы система могла нормально, бесперебойно функционировать. Решение очевидно, размер берется, исходя из этих условий. Но так как у нас сложная децентрализованная система, просто вычислить минимальное значение вряд ли получится. В таких случаях обычно поступают так. Для каждого важного параметра системы фиксируется допустимое значение с запасом: количество фулл-нод, количество орфанов, время распространения блока и т.д. На примере пресловутого количества фулл-нод. Минимальное допустимое 1000, с запасом 3000… Read more »
Georg
Гость

Не совсем понял, что значит «за счет других пользователей» ?

Анонимно
Гость

То, что любой желающий может пользоваться системой, совсем не означает, что делать это он может, за счёт других пользователей.

Georg
Гость

Ну, раз отправляете на баррикады, значит, план хорош. 🙂

Eqvant Tnavqe (@Eqvant)
Гость

У вас все карты на руках. Вот адрес сайта github.com, здесь можно все реализовать. Только там любят практическую сторону вопроса — реальный код, а не просто слова. При этом, сами разработчики именно таки способом доказывают свою позицию. Пока что ничего лучше, чем предложили 100 + 1 разработчик  Bitcoin Core, там нет. Вперед на баррикады! И тогда, возможно, я так же буду поддерживать Вас.

Psiho
Гость

Противники курения обычно не доказывают что-либо курящим.
Противники прививок в основном не говорят по этому вопросу с «общей массой».
Вегетарианцы не склонны везде кричать, что нельзя есть тех, с кем можно общаться.

У тебя есть глаза и поисковики, незачем очередной раз жевать жвачку.

wpDiscuz