2021-11-14 19:29:24
# 2 of 3 / Alex Petrov for forklog /
# Headline::Taproot:: tech
Taproot в 2018 году описал разработчик Bitcoin Core, Грегори Максвелл/ Greg Maxwell, как BIP-341. Обновление позволяет ввести новый тип cкpиптa – Paу-to-Taproot (P2TR).
Помимо этого в этом taproot soft-форке: Подписи Шнорра (BIP 340) и Tapscript (BIP 342).
Taproot базируется на MAST. Используя компактную древовидную структуру данных, все условия контракта индивидуально хешируются и собираются в единое дерево, когда условие исполнения контракта раскрываются в блокчейне, то они могут быть верифицированны в пути хеш-дерева Merkle пройдя до основонго рут-хеша.
Это позволяет без оставлять без разглашения других условий трат, поскольку большинство скрипт-кодов, включенных в Merkle, остаются хэшированными до момента раскрытия.
Taproot BIP включает и базируется на изменение Merkle Abstract Syntax Tees (MAST), слияние 18 политик pay-to-pubkey и pay-to-scripthash, отключение кодов операции OP_checkmultisig и OP_checkmultisigverify, а также несколько других незначительных, в основном технических, изменений для повышения эффективности скрипта в транзакциях Bitcoin.
Второе большое обновление - схема подписей Schnorr.
Подписи Шнорра (названные в честь Клауса Шнорра , математическая работа которого заложила основы этой подписи) решают все эти проблемы, поскольку они позволяют объединить несколько подписей и соответствующих им ключей в одну. В результате транзакции Schnorr MultiSig неотличимы от обычных транзакций («MonoSig») и, следовательно, не влияют на конфиденциальность, размер транзакции и комиссии. Проверка MultiSig выполняется на уровне криптографии, а не на уровне сценариев, что устраняет проблемы безопасности, связанные с ошибками сценариев.
Основное различие между подписями Шнорра и текущими подписями Биткойн (ECDSA) заключается в том, что подписи Шнорра являются линейными , а подписи ECDSA - нет.
Наиболее важным свойством линейности для нашей цели является то, что когда вы добавляете две (или более) подписи Шнорра вместе, результатом также является действительная подпись Шнорра!
Электронные подписи Schnorr легковесные/менее русурсоемки в проверке, это должно сократить время верификации транзакций. Schnorr позволяет использовать мульти-подписи(multi-sign) в блокчейне биткоина.
До настоящяего момента Биткойн использовал только ECDSA, к сожалению ECDSA алгоритм подписи изначально не поддерживает транзакции с мультиподписью, поэтому приходилось мудрить.
Схема подписи Шнорра может объединять несколько подписей и выводить их как одну подпись в разы сокращая размер.
# более технически про подписи Шнорра / Schnorr signature
До начала 2014 года в цепочке блоков можно было наблюдать распределение примерно 25% 73-байтовых, 50% 72-байтовых и около 25% 71-байтовых подписей.
Подписи Шнорра с SIGHASH_ALLфлагом по умолчанию имеют длину ровно 64 байта. Подписи с другим флагом SigHash имеют длину 65 байт.
По сравнению с подписями ECDSA, подписи Шнорра на 6–9 байт короче, также это технически проще в реализации логики, экономия связана с удалением накладных расходов на кодирование и установленным по умолчанию флагом SigHash.
Но далеко не единственная экономия, за счет возможностей объеденения подписей для множества транзакций в одну.
для примера 3-5-7 выходов с подписями, дадут экономию в 154/300/446 байтов соотвественно, а для 1000 - экономия будет уже 73кб. При использовании подписи Шнорра на уровне ~20% и при условии, скажем для 800 000 входов в день будет экономится более 1 МБ пространства блокчейна, в год более 0.4гб размера базы и соотвественно меньше трафика.
## почитать про schnorr signature больше
https://hackernoon.com/a-brief-intro-to-bitcoin-schnorr-multi-signatures-b9ef052374c5
https://b10c.me/blog/006-evolution-of-the-bitcoin-signature-length/
113 views16:29