Скидка свидетеля почему некоторые байты дешевле других
Причина скидки для некоторых байтов
В этом году мы наблюдаем огромный рост спроса на ограниченное пространство в блоках биткоина, что приводит к повышению комиссий за транзакции на цепи. Основная часть спроса приходится на транзакции с указаниями inscriptions. Содержимое этих указаний раскрывается как часть witness data1 биткоин-транзакции. Witness data1 стоит в четверть от стоимости других данных транзакции. Почему мы предоставляем скидку на эти указания? Может быть, стоит убрать скидку на witness?
Почему некоторые байты дешевле других байтов?
Деньги вообще и биткоин в частности работают на основе стимулов людей. Биткоин выстраивает стимулы для майнеров и транзакций, используя биткоин-токен для оплаты майнеров за включение определенных транзакций в создаваемые ими блоки. То же самое нельзя сказать о выстраивании стимулов для операторов узла, майнеров и пользователей транзакций, а также для отправителей и получателей средств.
К настоящему времени в биткоине было внесено 3 основных улучшения для выстраивания стимулов:
- 2024 Год компромиссов в регулировании
- Законодательство по наблюдению Воррена создано на заказ, чтобы помочь крупным банкам
- Под капотом 2023 год был весьма конструктивным для криптовалюты
1. Ограничение размера блока
2. Перенос стоимости сложных скриптов с отправителя на получателя (P2SH)
3. Выстраивание стоимости данных между операторами узлов и пользователями транзакций (SegWit)
Ограничение Размера Блока
Транзакции хотят делать как можно больше, а майнеры хотят получить как можно больше комиссий за транзакции; но операторам узлов приходится пересылать, проверять и хранить все эти данные транзакций, и им не компенсируется за это, как майнерам. В ранние годы истории биткоина Сатоши работал над решением этой проблемы, добавив ограничение на размер блока (настраиваемое узлами). Лимит составлял 1 миллион байтов на блок и устанавливал верхнюю границу объема данных, которые узлы должны были скачать и проверить. В то время Сатоши написал: “[Мы] можем провести изменение позже, если мы приблизимся к необходимости этого”. Позднее, относительно патча, увеличивающего лимит, он отметил: “[Н]е используйте этот патч, он сделает вас несовместимыми с сетью”, что означает, что увеличение лимита размера блока – это хардфорковое изменение и требует большей координации, даже чем мягкое разветвление. В последующие годы биткоин сознательно избегал подобных несовместимых хардфорковых изменений, что также означало сохранение ограничения размера блока в 1 миллион байтов.
Перенос Стоимости Сложных Скриптов С Отправителя На Получателя
Поскольку биткоин защищен скриптами блокировки, всегда была возможность использовать в нем продвинутые скрипты, включая мультиподпись. В оригинальном дизайне отправитель биткоин-транзакции размещал полный скрипт блокировки получателя в своей транзакции и оплачивал любые комиссии за включение этого скрипта блокировки в блок. Разработчики поняли, что с ростом комиссий отправители могут стать неохотно платить пользователям с более сложными скриптами блокировки из-за увеличенной стоимости платежа. Эти сложные скрипты блокировки также вызывали проблемы при кодировании в адреса и обмене через механизмы с низкой пропускной способностью, такие как QR-коды.
Чтобы решить эту проблему, к биткоину был добавлен soft fork P2SH. Согласно правилам этого разветвления, вместо того чтобы помещать полный скрипт блокировки получателя в выходе транзакции, отправитель просто включает хеш этого скрипта. Когда получатель неизбежно тратит этот выход, он включает полный скрипт в транзакцию, которая проверяется на соответствие хешу скрипта, к которому монета блокирована, перед тем, как быть проверенной. Благодаря этому изменению скрипт освобождения любого размера может быть представлен скриптом блокировки фиксированной длины, и отправители больше не нуждаются (или неспособны) различать получателей на основе их условий траты.
Выстраивание Стоимости Данных Между Операторами Узлов и Пользователями Транзакций
Самая важная проверка, которую узлы выполняют для биткоин-транзакций, – это проверка, существует ли действительно биткоин, который они пытаются потратить. Для этого каждый узел поддерживает индекс каждого блокированного биткоина (непотраченный выход транзакции, UTXO). Чем больше этот индекс, тем больше стоит работа узла и проверка будущих транзакций2. В результате транзакция, которая увеличивает размер этого индекса (имеющая больше выходов, чем входов), со временем обходится дороже, чем транзакция с таким же количеством байтов, которая уменьшает размер индекса.
Наибольшая часть скриптов разблокировки биткоинов – это криптографические подписи. Эти подписи в два раза больше по размеру, чем соответствующие им публичные ключи, что делает скрипты разблокировки (даже без P2SH) больше по размеру, чем скрипты блокировки.
Значительно более высокие затраты на потребление по сравнению с созданием UTXO создают конфликт интересов между участниками узлов и транзакциями. Транзакции не стимулируются к трате своих маленьких UTXO (особенно во время высоких комиссий), предпочитая вместо этого тратить большие UTXO и создавать больше маленьких UTXO для сдачи. В то же время участники узлов платят за это накопление маленьких UTXO более высокую стоимость валидации всех транзакций.
Как это ни странно, проверка того, что каждый UTXO, потраченный транзакцией в историческом блокчейне, удовлетворяет своему скрипту блокировки, является значительно менее фундаментальной. Дело в том, что узел биткойна, работающий по умолчанию на биткойн-ядру версии 26.x, не будет проверять полное выполнение скрипта блокировки для транзакций до блока 804000 (19 августа 2023 года).
Все это означает, что на узлы биткойна накладываются различные затраты различных частей блокчейна. Данные, необходимые для определения влияния каждой транзакции, должны быть проверены каждым узлом с синхронизации от блока начала (genesis block3), выходы транзакций обычно обходятся дороже, чем входы в долгосрочной перспективе (особенно если они существуют длительное время), и большая часть свидетельских данных даже не проверяется, за исключением самых последних транзакций.
Вхождение в отдельные свидетели
Отдельный свидетель (SegWit) – это самое амбициозное изменение, внесенное в биткойн до сегодняшнего дня. Главная мотивация для этого изменения заключалась в устранении длительной проблемы изменяемости TXID4 malleability5 в биткойне. Для устранения этой изменяемости скрипт блокировки заменяется вновь созданным “свидетелем”. Удалением авторизационных данных (которые часто можно изменять третьими сторонами, не изменяя при этом эффекты транзакции) из TXID становятся возможными протоколы (например, Lightning), которые зависят от неизменных TXID.
Смещение авторизационных данных из исходной структуры транзакции больше не учитывается в пределах 1-миллионного байтового лимита блока. Требуется новый лимит. В то время было обсуждено много вариантов ограничения данных отдельных свидетелей: отдельный лимит байтов6, общий лимит < 1 миллиона байтов7 или взвешенный общий лимит. В итоге был выбран взвешенный общий лимит, при котором данные отдельных свидетелей взвешиваются в 1 единицу, данные транзакции взвешиваются в 4 единицы и лимит блока весом 4 миллиона весовых единиц. Каждая весовая единица рассматривается как 1/4 виртуального байта (vByte) для расчета комиссий.
Почему эти веса? Давайте посмотрим на стоимость входов и выходов транзакций с отдельными свидетелями и без них:
Тип8 | Байты выхода | Байты ввода | Байты свидетеля | vBytes ввода |
P2PK | 44 | 112 | 0 | 112 |
Bare 2-of-3 | 106 | 186 | 0 | 186 |
P2PKH | 34 | 146 | 0 | 146 |
P2SH(2-of-3) | 32 | 293 | 0 | 293 |
P2WPKH | 31 | 41 | 107 | 67,75 |
P2WSH(2-of-3) | 43 | 41 | 252 | 104 |
Первое, что стоит отметить в этой таблице, это то, как типы свидетельства скрипта (P2WPKH, P2WSH) имеют примерно одинаковое количество входных и выходных байтов (которые облагаются полным vByte за каждый). Затраты на использование свидетельства скрипта зарегистрированы в размере 1/4 vByte за данные, авторизующие расходы, большая часть которых не проверяется, кроме наиболее последних транзакций, и у которых нет постоянных затрат в индексе UTXO. Другая вещь, которую стоит отметить здесь, это то, как стоимость использования более безопасной мультиподписи 2 из 3 по сравнению с одной подписью снижается с 147 vBytes до 36.25 vBytes.
Taproot и надписи меняют всё (или ничего)
Как я сказал в начале, биткоин основан на человеческих стимулах, и здесь мы можем видеть, каким образом в течение многих лет в биткоин вносятся изменения для улучшения соответствия интересов сторон, использующих сеть.
Taproot сам по себе является “просто” альтернативным способом блокировки биткоинов с использованием отдельного свидетеля. Это не изменяет эти стимулы существенно. Одним из изменений, которые произошли вместе с Taproot, было удаление определенных ограничений на размер сценария. Это было сделано для упрощения разработки инструментов анализа для сценариев биткоина и в признании относительной стоимости различных типов данных. Удаление этих ограничений сделало надписи более простыми, чем они были до появления Taproot, но не изменило фундаментальную структуру стимулов сети.
Теперь к самой сути дела. Надписи раскрываются в свидетельстве, поэтому за каждый байт данных надписи на них начисляется только 1/4 vByte. Является ли это злоупотреблением скидкой на свидетельство? Правда в том, что данные надписей являются некоторыми из самых дешевых данных для узлов в сети, которые их проверяют. Структура скрипта, используемая надписями, явно пропускает выполнение данных надписи, поэтому единственная проверка, которая на них выполняется, – это проверка хэша (уверяющая, что раскрытая надпись соответствует тому, что планировал раскрыть надписавший). Эти данные хэшируются один раз, а затем узлы никогда не смотрят на них снова. Они имеют очень низкую вычислительную стоимость (на порядок ниже, чем у скрипта с эквивалентным размером мультиподписи).
Но надписи поднимают комиссии и выталкивают других пользователей.
Да! С текущим программным обеспечением, доступным для взаимодействия с сетью биткоин, у надписавших есть больший экономический стимул сделать свои надписи, чем у многих, кто хочет сделать другие транзакции.
Это ярко выделяет ценность увеличения экономической плотности транзакций биткоина. Молниеносная сеть делает огромный шаг в этом направлении, позволяя упаковывать сотни, тысячи или миллионы экономических транзакций в одну транзакцию биткоина. Чем выше экономическая плотность каждого байта в транзакции, тем ниже комиссия, уплачиваемая за эту экономическую активность. По мере увеличения экономической плотности транзакций биткоина, прочие использования блокового пространства будут и продолжают вытесняться.
Стоит отметить, что если протоколы мультиподписи вне цепочки, такие как MuSig2 или FROST, или адаптивные подписи станут распространенными, то может быть разумным снизить или устранить скидку на свидетельство. Эти протоколы могут позволить представить иначе большие условия расходов одной подписью. Это, в сочетании с эффективным ключевым путем траты Taproot, может снизить стоимость ввода с почти произвольными сложными условиями до всего лишь 105 байтов.
Вывод
Ответ на высокие комиссии, вызванные надписями, такой же, как и в случае любой другой предполагаемой ситуации “небо падает” в истории биткоина: Терпеливо строить, терпеливо строить. У нас многое, что мы можем сделать, чтобы увеличить экономическую плотность транзакций биткоина, начиная от создания лучших кошельков Lightning до Ark, до дискретных контрактов журнала и далее. Удаление скидки на свидетельство (преждевременно), откат назад к taproot или аналогичные контрпродуктивные действия только приведут к снижению экономической плотности текущих транзакций биткоина и усугубят ситуацию.
Оставайтесь скромными, складывайте сатоши и стройте.
Примечания
- Термин свидетель был заимствован в биткоине из криптографической терминологии, где он означает данные, необходимые для эффективной проверки криптографического утверждения. BIP141 определяет его как любые “данные, необходимые для проверки действительности транзакции, но необходимые для определения ее последствий”. Криптографы могли взять этот термин из применения свидетельских марок, используемых для эффективной проверки совмещения компонентов.
- Проект Utreexo стремится изменить это для части узлов биткоина, позволяя им эффективно накапливать корни включения UTXO, а затем получать пути включения вместе с расходами этих UTXO. Если это станет обычным способом использования биткоинов, это перекладывает стоимость большего количества UTXO с нод на владельцев этих UTXO.
- Проект ZeroSync стремится изменить это для некоторых узлов в некоторых контекстах.
- ID транзакции: Обратный порядок байтов двойного хэша SHA256 транзакции формата сети до SegWit.
- У различных действительных транзакций с одинаковыми входами и выходами разные идентификаторы транзакций, если они подписаны разными способами или их подписи изменяются третьей стороной.
- Может быть любым значением без хардфорка, потому что старые узлы не знают о свидетельстве данных.
- 1 миллион или меньше для поддержания совместимости и предотвращения хардфорка.
- При условии использования компактных открытых ключей и 71-байтовых подписей DER с низким значениями R и S.
- Кто-нибудь помнит <a href=”https://www.bilee.com/bitcoin-2008-satoshi-nakamotos-busy-months-building-the-revolutionary-p2<p>Это гостевой пост от Брэндона Блэка. Мнения, выраженные здесь, полностью принадлежат автору и не обязательно отражают взгляды BTC Inc или Bitcoin Magazine.
We will continue to update BiLee; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- Криптовалюта не получит долгожданные правила в США в 2024 году, но суды могут повлиять на ее будущее.
- Год институциональных инвестиций в реальные активы
- Как прогнозируют предсказательные рынки для криптовалюты в 2024 году
- 5 Прогнозов для Реальных Активов в 2024 году
- Мгновенная оплата строительная индустрия.
- «Coinbase попыталась прикротить беззаконную SEC, которая пытается прикротить беззаконную индустрию»
- Майнинг биткоина может помочь борьбе с выбросами метана