Taproot: что он собой представляет и чем полезен для Биткойна

Уже скоро юзеры Биткойна могут получить возможность пользоваться преимуществами технологии под заглавием Taproot. В первый раз предложенная разрабом Bitcoin Core и бывшим тех. директором Blockstream Грегори Максвеллом, Taproot призвана прирастить упругость смарт-контрактов Биткойна, совместно с тем повысив их конфиденциальность. Это сделает даже самые сложные смарт-контракты в блокчейне в общем случае неотличимыми от обыденных транзакций.

При всей амбициозности, это задачка не из области незапятанной теории. Несколько более продуктивных разрабов Bitcoin Core, включая Питера Вуйле, Энтони Таунса, Джонсона Лау, Йонаса Ника, Эндрю Поэлстра, Тима Раффинга и, естественно, Грегори Максвелла, работают над предложением о внедрении поддержки подписей Шнорра, включающем также поддержку Taproot – все в рамках 1-го обновления протокола.

Что все-таки такое Taproot и как это работает?

P2SH

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

Эти условия можно применять в разных сочетаниях, создавая сложные типы смарт-контрактов. Вот вам наглядный пример такового договора: монеты могут быть потрачены, если транзакцию подпишут и Боб, и Элис, либо если по прошествии недельки ее подпишет лишь Элис, либо если ее подпишет лишь Боб, введя при всем этом скрытый код. Какое из этих 3-х критерий окажется выполнено первым, так и будут потрачены монеты.

С 2012 года скрипты (условия расходования) сначало нередко бывают укрыты; лишь новейший обладатель монет понимает, как они могут быть потрачены. Это делается при помощи трюка под заглавием P2SH (pay to script hash), когда вначале в блокчейн записывается лишь хеш скрипта. Это с виду случайное число перекрывает монеты. При расходовании этих монет обладатель открывает сразу и весь скрипт, и его «решение». Опосля этого хоть какой желающий может применять начальный хеш для проверки того, что предоставленный скрипт вправду является необычным скриптом, блокировавшим монеты, и убедиться, что требования скрипта были выполнены.

Тем не наименее на данный момент при расходовании монет нужно открывать все вероятные условия их расходования, включая и те, что не были активированы. Это имеет два главных недочета. Во-1-х, это значимый размер данных, в особенности если критерий много. И во-2-х, это наносит вред конфиденциальности. В общем доступе оказывается информация обо всех вероятных методах расходования средств, включая, к примеру, адреса кошельков и, может быть, даже больше.

MAST

MAST (Merkelized Abstract Syntax Tree) – это предлагаемый метод обхода этих 2-ух недочетов через внедрение деревьев Блекла, малогабаритной структуры данных, придуманной десятилетия вспять криптографом Ральфом Неярком. Кратко, все разные условия, при которых средства могут быть потрачены, хешируются по отдельности (заместо того чтоб объединяться в один хеш) и организуются в дерево Блекла, которое в конечном итоге производит один хеш: корневой хеш дерева Блекла. Этот корневой хеш «перекрывает» монеты.

Неповторимое преимущество этого способа состоит в том, что, при раскрытии всех данных из дерева Блекла, при помощи корневого хеша плюс неких доп данных (пути в дереве) можно проверить, что эти определенные данные были включены в дерево Блекла. Остальная часть дерева Блекла при всем этом остается хешированной и сокрытой.

Другими словами с MAST можно открывать лишь то условие расходования, что было выполнено. Если в примере выше Элис издержит средства через недельку одна, она раскроет лишь это активированное условие (плюс путь в дереве). Никто не выяснит, что эти средства были бы потрачены Элис и Бобом совместно или Бобом в одиночку при условии предоставления секретного кода. Это делает MAST наиболее действенным в отношении данных, чем сложные P2SH смарт-контракты, и увеличивает конфиденциальность.

Но при использовании Taproot и подписей Шнорра можно достигнуть еще наилучшего результата: скрыть сам факт существования MAST-структуры.

Шнорр

Схема подписи Шнорра уже издавна в перечне ценностей почти всех разрабов Биткойна и в текущее время находится в стадии разработки для возможного развертывания со последующим софт-форком. Почти все криптографы считают схему подписи Шнорра наилучшей в собственном роде, так как ее математические характеристики обеспечивают высочайший уровень правильности, она не мучается от пластичности и относительно стремительно проверяется.

Более известное преимущество в контексте Биткойна заключается в том, что «линейная математика» Шнорра дозволяет агрегировать подписи: несколько подписей в одной транзакции могут быть объединены в одну. Схожий трюк можно было бы применить и к транзакциям с мультиподписью. Скомбинировав и открытые ключи, и подписи, в «пороговые открытые ключи» и «пороговые подписи», транзакции с мультиподписью можно сделать неотличимыми от обыкновенной транзакции.

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

Это открывает способности для использования Taproot.

Taproot

Taproot основывается на увлекательной реализации: независимо от трудности, фактически неважно какая MAST-конструкция может (либо обязана) включать условие, которое дозволяет всем участникам согласиться с результатом и просто вместе подписать расчетную транзакцию. В приведенном выше примере, если Боб понимает, что Элис может без помощи других распорядиться средствами через недельку, то он может скооперироваться с ней на данный момент и совместно подписать транзакцию. (В почти всех схемах смарт-контрактов он даже будет оштрафован, если этого не сделает. Сложность по сути просто обеспечивает честность участников.)

Taproot припоминает MAST и постоянно включает условие, при котором все участники могут согласиться с тем, чтоб издержать средства: исполнить «совместное закрытие».

При использовании подписей Шнорра это становится по-настоящему увлекательным.

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

Пока все хорошо, но растрачивать средства так, как будто это рядовая транзакция – это единственное, что они в состоянии сделать; структуры, подобные MAST, пока что оказываются исключены. Тут понадобится еще одна изюминка подписей Шнорра.

Все другие методы расходования средств, кроме совместного закрытия, сейчас соединяются воединыжды в отдельный скрипт. Этот скрипт потом хешируется и употребляется для модификации порогового открытого ключа. Другими словами заместо «открытого ключа x2», как в примере выше, это дает в итоге «пороговый открытый ключ x скрипт». (Мы все еще несколько упрощаем.) И этот «пороговый открытый ключ, помноженный на скрипт», естественно, соответствует «пороговой подписи, помноженной на скрипт».

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

Лишь в случае невозможности совместного закрытия пороговый открытый ключ быть может показан таковым, как он есть по сути: измененным.

В данном случае раскрываются как начальный пороговый открытый ключ, так и скрипт. Это обосновывает, что «пороговый открытый ключ x скрипт» был изменен при помощи конкретно этого скрипта. Таковым образом, как и при использовании P2SH, сеть получает подтверждение того, что средства могут быть потрачены при выполнении других критерий, обозначенных в этом скрипте. (И, как и в случае P2SH, эти условия, естественно же, немедля производятся для расходования средств.)

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

Таковым образом, Taproot дает все достоинства MAST, притом что в обычных обстоятельствах никто никогда не выяснит, что за обычный транзакцией прятался непростой смарт-контракт.

 

Делитесь вашим воззрением о данной статье в комментах ниже.

Author: Anonim