Впервые технология Taproot была предложена Грегори Максвеллом, разработчиком Bitcoin Core и бывшим техническим директором Blockstream. Задача технологии Taproot заключается в увеличении гибкости смарт-контрактов Bitcoin и повышении конфиденциальности транзакций. Данный протокол позволит любым смарт-контрактам не отличаться от обычных транзакций в блокчейне.
Прежде, чем приступить к изучению Taproot и того, как он работает, стоить ознакомиться с такими понятиями, как P2SH, MAST и Schnorr Signature.
P2SH (Pay To Script Hash)
Все BTC-монеты «запираются» парой строк кода, которые записываются в блоки и определяют, как эти монеты могут быть потрачены в следующей транзакции. При переводе монет необходима подпись, которая подтвердит право собственности. Но есть и другие условия, например, временная блокировка (трата может быть осуществлена в определенном блоке) или мультиподпись (трата может быть осуществлена при определенном количестве секретных ключей).
С 2012 года скрипты часто бывают скрыты и только новый владелец монет знает, как они могут быть потрачены. Это делается при помощи технологии Pay To Script Hash, когда изначально в блокчейн записывается только хеш скрипта, который блокирует монеты. Расходуя данные монеты владелец раскрывает и весь скрипт и его «решение».
Тем не менее, на данный момент при расходовании монет требуется раскрыть все возможные условия, включая не активированные. Это приводит к тому, что требуется приличный объем данных, особенно в случае, когда условий расходования много. Кроме того, такой способ наносит ущерб и конфиденциальности. Каждый желающий может узнать обо всех условиях расходования средств, включая адреса кошельков.
MAST (Merkelized Abstract Syntax Tree)
MAST — один из способов обхода этих недостатков. Дерево Меркла — компактная структура данных, которая была запатентована Ральфом Мерклом в 1979 году. Если сильно не углубляться в технологию, то все существующие условия, при которых средства могут быть потрачены, хешируются по отдельности и образовывают «Дерево Меркла», на выходе из которого производится один хэш — корневой хеш «Дерева Меркла». Этот корневой хеш и блокирует монеты.
Главным преимущество данного метода заключается в том, что раскрывая часть данных из дерева Меркла, с помощью корневого хеша, можно проверить наличие этих данных, при этом не раскрывая остальной части дерева.
Таким образом, MAST позволяет раскрывать только те условия расходования, которые были выполнены.
Пример: Если "пользователь 1" потратит средства, он раскроет только активированное условие (путь в дереве), но никто не узнает, что эти средства так же могли быть потрачены "пользователем 2", ими обоими или при условии предоставления секретного кода одному из пользователей.
Такие возможности делают MAST более эффективным по сравнению P2SH смарт-контрактами и повышает конфиденциальность пользователей.
Schnorr Signatures (Подписи Шнорра)
Метод Подписи Шнора давно в списке приоритета разработчиков Bitcoin и находится на стадии разработки. Многие криптографы считают данный метод лучшим, потому что его математические свойства гарантируют высокий уровень корректности и данные относительно быстро проверяются.
Наиболее известное преимущество в контексте Bitcoin состоит в том, что «линейная математика» Шнорра позволяет совмещать подписи. Несколько подписей в одной транзакции могут быть объединены в одну. Подобный трюк можно было бы применить и к транзакциям с мультиподписью. Скомбинировав и открытые ключи, и подписи, в «пороговые открытые ключи» и «пороговые подписи», транзакции с мультиподписью можно сделать неотличимыми от обычной транзакции.
Как работает Taproot?
Taproot похож на метод MAST и всегда включает условие, при котором все участники могут согласиться с тем, чтобы потратить средства: исполнить «совместное закрытие».
Использование подписей Шнорра дают еще больше возможностей:
При совместном закрытии можно использовать трюк с «пороговыми» подписями Шнорра, чтобы сделать транзакцию неотличимой от обычной отправки биткойнов от одного пользователя другому. В этом сценарии открытые ключи всех участников складываются вместе, в результате чего получается «пороговый открытый ключ». Соответствующая этому пороговому открытому ключу комбинация подписей всех участников — «пороговая подпись» — позволяет им расходовать средства.
Все альтернативные способы расходования средств, помимо совместного закрытия, теперь объединяются в отдельный скрипт. Этот скрипт затем хешируется и используется для модификации порогового открытого ключа. То есть вместо «открытого ключа x2», как в примере выше, это дает в результате «пороговый открытый ключ x скрипт». И этот «пороговый открытый ключ, помноженный на скрипт», конечно, соответствует «пороговой подписи, помноженной на скрипт».
Теперь, если средства тратятся совместно, то все участники объединяют свои подписи в «пороговую подпись» и модифицируют ее с использованием скрипта. Получаемая таким образом «пороговая подпись, помноженная на скрипт» позволяя им расходовать средства. При этом, что немаловажно, для внешнего мира все это будет выглядеть как обычный открытый ключ и обычная подпись — ничем не примечательная транзакция.
Только в случае невозможности совместного закрытия пороговый открытый ключ может быть показан таким, как он есть на самом деле: модифицированным.
В этом случае раскрываются как исходный пороговый открытый ключ, так и скрипт. Это доказывает, что «пороговый открытый ключ x скрипт» был модифицирован с помощью именно этого скрипта. Таким образом, как и при использовании метода P2SH, сеть получает доказательство того, что средства могут быть потрачены при выполнении альтернативных условий, обозначенных в этом скрипте. И эти условия немедленно выполняются для расходования средств.
Еще возможен вариант, когда, вместо скрипта, для модификации порогового открытого ключа, используется корневой хеш дерева Меркла, включающий в себя все возможные условия расходования средств: MAST-структуру. То есть чтобы потратить средства, необходимо раскрыть сети только то условие, что было активировано.
Таким образом, Taproot предлагает все преимущества MAST, притом что в нормальных обстоятельствах никто никогда не узнает, что за простой транзакцией скрывался сложный смарт-контракт.