В недавнем докладе Питер Вуилле рассказал об ускорении проверки при использовании подписей Шнорра и различных алгоритмах проверки нескольких подписей.
Действительно ли возможно проверить один единственный блок, объединив ключи и подписи всех транзакций? (Теоретически даже больше транзакций в нескольких блоках)
Я предполагаю, что это означает, что старая схема ECDSA больше не будет использоваться. Если бы у нас была обратная совместимость, мы, вероятно, могли бы сделать это только для транзакций, которые использовали подписи Шорра, тогда как другие должны были бы быть проверены одна за другой.
(Оставляя в стороне политику радикальных изменений протокола) Можем ли мы даже сэкономить больше места, если примем заголовок блока, чтобы включить одну совокупную подпись Шнорре для блока и исключить все подписи Шнорра отдельных транзакций в этом блоке?
Я что-то пропустил? В докладе не было подробностей, а лишь упоминалась идея.
Да, одна проверка на блок, но не одна подпись на блок.
Чтобы устранить путаницу, здесь задействованы 3 различные технологии:
Подписи Шнорра (и любые другие известные схемы подписи на основе дискретного логарифма) поддерживают (2) и (3), но не (1).
Отсутствие (1) означает, что не может быть единой подписи для всего блока (*), поскольку майнер, создающий блок, является третьей стороной, не участвующей в создании подписи.
Из-за (2) лучшее, на что мы можем надеяться (пока мы ограничены подписями на основе DL), — это одна подпись на транзакцию. Даже для этого требуется перекрестная агрегация входных данных, которая имеет сложности, помимо реализации подписей Шнорра в цепочке (см., например, этот пост ).
Однако из-за (3) правильно, что может быть одна проверка на блок, но не одна подпись на блок. Ускорение, которое возможно благодаря пакетной проверке, на самом деле становится нетривиальным. Каждая из 4 строк представляет собой метод оптимизации, который в настоящее время реализован в libsecp256k1, который выбирает лучший вариант в зависимости от размера проблемы и ограничений памяти.
(*) Существует форма неинтерактивной «полуагрегации» для подписей на основе DL, при которой N подписей могут быть неинтерактивно объединены в одну подпись размером (1+N)/2 исходных подписи. Это можно использовать для блоков, хотя выгода не так велика, и есть сложности, связанные с агрегацией всего блока, которые делают ее менее интересной.
Рене Пикхардт
Питер Уилле
Питер Уилле
Мартин Шварц
Питер Уилле
Мартин Шварц
Марк Лундеберг