В этом году наблюдался огромный рост спроса на ограниченное пространство внутри блоков биткойна, что привело к повышению платы за транзакции в цепи. Большую часть спроса составляют транзакции, раскрывающие надписи. Содержимое этих надписей раскрывается как часть данных свидетелей1 транзакции биткойна. Эти данные свидетелей1 дисконтируются до четверти стоимости других данных транзакций. Почему мы предоставляем скидку на эти надписи? Должны ли мы сделать скидку на свидетелей мягкой?
Почему одни байты дешевле других?
Деньги в целом и биткойн в частности работают на основе человеческих стимулов. Биткойн выравнивает стимулы майнеров и транзакционеров благодаря использованию собственного токена биткойн для оплаты майнерам за включение определенных транзакций в создаваемые ими блоки. То же самое нельзя сказать о выравнивании стимулов бегунов узлов с майнерами и транзакторами, а также о выравнивании стимулов между отправителями и получателями.
На сегодняшний день в системе стимулирования биткойна произошло 3 крупных усовершенствования:
Ограничение размера блока
Перенос стоимости сложных сценариев с отправителя на получателя (P2SH)
Выравнивание стоимости данных между узловыми бегунами и транзакторами (SegWit)
Транзакторы хотят совершать много транзакций, а майнеры - собирать много комиссионных за транзакции; но исполнители узлов должны передавать, проверять и хранить все эти данные о транзакциях, и они не получают за это вознаграждения, как майнеры. В самом начале истории биткойна Сатоши решил эту проблему, добавив фиксированное ограничение на размер блока (вводимое узлами). Ограничение составляло 1 миллион байт на блок и устанавливало верхнюю границу на объем данных, которые узлы должны были загружать и проверять. В то время Сатоши написал: "Мы можем ввести изменения позже, если они нам понадобятся". Позже, говоря о патче для увеличения лимита, он отметил: "Не используйте этот патч, он сделает Вас несовместимым с сетью", что означает, что увеличение лимита размера блока является жестким форком и требует большей координации даже по сравнению с мягким форком. В последующие годы биткойн намеренно избегал таких несовместимых изменений в хард форках, что также означало сохранение ограничения на размер блока в 1 миллион байт.
Поскольку биткойн защищен скриптами блокировки, его всегда можно было заблокировать с помощью продвинутых скриптов, включая multisig. Согласно первоначальному проекту, отправитель биткойн-транзакции должен был поместить полный скрипт блокировки получателя в свою транзакцию и заплатить любые сборы, чтобы этот скрипт блокировки был включен в блок. Разработчики понимали, что с увеличением платы отправители могут начать колебаться в пользу пользователей более крупных скриптов блокировки из-за более высокой стоимости оплаты этих пользователей. Эти сложные сценарии блокировки также представляют собой проблему для кодирования в адреса и обмена через механизмы с низкой пропускной способностью, такие как QR Code.
Чтобы решить эту проблему, P2SH был добавлен в биткойн в качестве мягкого форка. Согласно правилам этого форка, вместо того, чтобы помещать весь скрипт блокировки получателя в выходные данные транзакции, отправитель просто включает его хэш. Когда получатель неизбежно тратит эти деньги, он включает полный скрипт в транзакцию по расходованию средств, который перед проверкой сверяется с хэшем скрипта, к которому привязана монета. Благодаря этому изменению сценарий погашения любого размера мог быть представлен сценарием блокировки фиксированной длины, и у отправителей больше не было необходимости (или возможности) различать получателей в зависимости от условий их расходования.
Самая главная проверка, которую узлы выполняют при транзакциях биткойнов, заключается в том, что биткойн, который они пытаются потратить, действительно существует. Для этого каждый узел хранит индекс каждой единицы биткойна, которую можно потратить (unspent transaction output, UTXO). Чем больше этот показатель, тем выше стоимость работы узла и проверки будущих транзакций2. В результате транзакция, увеличивающая размер этого индекса (имеющая больше выходов, чем входов), со временем обходится дороже, чем транзакция с тем же количеством байт, уменьшающая размер индекса.
Самая большая часть большинства скриптов для разблокировки биткоинов - это криптографические подписи. Эти подписи примерно в два раза больше соответствующих им открытых ключей, что делает скрипты разблокировки (даже без P2SH) более крупными, чем скрипты блокировки.
Значительно более высокая стоимость потребления по сравнению с созданием UTXO создает конфликт стимулов между исполнителями узлов и транзакторами. Транзакторы лишены стимула тратить свои мелкие UTXO (особенно в периоды высоких комиссий), предпочитая вместо этого тратить крупные UTXO и создавать больше мелких UTXO. В то же время узловые бегуны платят за это накопление небольших UTXO в виде более высоких затрат на проверку всех транзакций.
Как ни странно, проверка того, что для каждого UTXO, потраченного транзакцией в историческом блокчейне, скрипт блокировки удовлетворен соответствующим скриптом разблокировки, гораздо менее фундаментальна. В связи с этим, биткойн-узел, работающий на стандартном bitcoin core 26.x, не будет подтверждать выполнение скрипта полной блокировки для транзакций до блока 804000 (19 августа 2023 года).
Все вышесказанное означает, что разные части блокчейна накладывают на биткойн-узлы разные издержки. Данные, необходимые для определения последствий каждой транзакции, должны быть проверены каждым узлом, синхронизирующимся с блоком генезиса3 , выходы транзакций, как правило, в долгосрочной перспективе обходятся дороже входов транзакций (особенно если они долгоживущие), а большая часть данных свидетелей даже не проверяется, за исключением самых последних транзакций.
Софт-форк Segregated witness (SegWit) - это самое масштабное изменение, внесенное в биткойн на сегодняшний день. Самым главным мотивом для внесения изменений было решение давней проблемы податливости TXID45в биткойне. Чтобы устранить эту нестабильность, скрипт разблокировки заменяется вновь созданным "свидетелем". Удалив авторизационные данные (которые часто могут быть изменены третьими лицами без изменения последствий транзакции) из TXID, становится возможным использование протоколов (таких как Lightning), которые зависят от неизменных TXID.
Поскольку данные авторизации вынесены за пределы исходной структуры транзакции, они больше не учитываются в ограничении на блоки размером 1 миллион байт. Необходимо установить новый лимит. В то время обсуждалось множество подходов к ограничению разделенных данных свидетелей: Ограничение на отдельные байты свидетелей6, комбинированное ограничение < 1 миллион байт7 или взвешенное комбинированное ограничение. В итоге было выбрано взвешенное комбинированное ограничение, при котором данные об отдельных свидетелях взвешиваются на 1 единицу, данные о транзакциях - на 4 единицы, а ограничение по блокам составляет 4 миллиона. Каждая единица веса рассматривается как 1/4 виртуального байта (vByte) для целей расчета платы.
Почему именно эти веса? Давайте посмотрим на стоимость входов и выходов транзакций с раздельным свидетельством и без него:
Первое, что можно отметить в этой таблице, это то, что типы сценариев-свидетелей (P2WPKH, P2WSH) имеют почти одинаковое количество входных и выходных байтов (за каждый из которых взимается по полному vByte). За данные, санкционирующие трату, которые не проверяются ни по одной из транзакций, кроме самых последних, и ни одна из которых не имеет постоянной стоимости в индексе UTXO, с расходующего скрипт свидетеля взимается 1/4 vByte. Еще один момент, который стоит отметить, - это то, что стоимость использования более безопасной мультисигмы 2 из 3 по сравнению с одиночной подписью сократилась со 147 до 36,25 виртуальных байт.
Как я уже сказал в самом начале, биткойн держится на человеческих стимулах, и здесь мы видим, как с годами в биткойн вносились изменения, чтобы улучшить выравнивание стимулов между сторонами, использующими сеть.
Сам по себе Taproot - это "всего лишь" альтернативный способ блокировки биткойна с помощью сегрегированного свидетеля. Это не сильно меняет эти стимулы. Одним из изменений, которое произошло с Taproot, было снятие некоторых ограничений на размер скриптов. Это было сделано для того, чтобы уменьшить сложность разработки инструментов анализа для биткоин-скриптов, а также в качестве признания относительной стоимости различных типов данных. Устранение этих ограничений сделало надписи более простыми, чем они были до появления Taproot, но не изменило коренным образом структуру стимулов в сети.
Теперь перейдем к сути вопроса. Надписи раскрываются при свидетелях, поэтому за каждый байт данных о надписях взимается только 1/4 vByte. Является ли это злоупотреблением скидкой для свидетелей? Правда в том, что данные о надписях - это одни из самых дешевых данных, которые узлы сети могут подтвердить. Скриптовая структура, используемая в надписях, явно пропускает выполнение данных надписи, поэтому единственная проверка, выполняемая в ней, - это единственная проверка хэша (гарантирующая, что раскрытая надпись - это то, что планировал раскрыть автор надписи). Эти данные хэшируются один раз и больше никогда не просматриваются узлами. Он имеет очень низкую вычислительную стоимость (на порядок ниже, чем мультисигмальный скрипт эквивалентного размера).
Но подписка повышает плату и вытесняет других пользователей.
Да! При нынешнем программном обеспечении, доступном для взаимодействия с сетью биткойн, у инскрипторов есть больше экономических стимулов для совершения инскрипций, чем у многих людей для совершения других транзакций.
Это делает очевидным значение повышения экономической плотности транзакций с биткоинами. Сеть Lightning Network делает огромный шаг в этом направлении, позволяя упаковывать сотни, тысячи или миллионы экономических операций в одну транзакцию биткойна. Чем выше экономическая плотность каждого байта в транзакции, тем ниже плата за эту экономическую деятельность. По мере того, как экономическая плотность транзакций биткоина возрастает, другие виды использования пространства блока вытесняются и будут продолжать вытесняться9.
Стоит отметить, что если многозначные протоколы, такие как MuSig2 или FROST, или адаптерные подписи получат широкое распространение, возможно, имеет смысл уменьшить или отменить скидку на свидетелей. Эти протоколы могут позволить представлять большие условия расходования средств одной подписью. Это, в сочетании с эффективным расходованием ключевого пути Taproot, может снизить стоимость ввода с практически произвольно сложными условиями всего до 105 байт.
Реакция на высокие комиссии, вызванные надписями, такая же, как и на любой другой предполагаемый сценарий падения неба в истории биткойна: терпеливо строить, терпеливо строить. Мы можем многое сделать для повышения экономической плотности транзакций биткоина, начиная от создания более совершенных кошельков Lightning и заканчивая переходом на дискретные лог-контракты и т.д. Отмена скидки на свидетелей (преждевременная), откат taproot или подобные контрпродуктивные действия только уменьшат экономическую плотность текущих транзакций биткоина и усугубят ситуацию.
Оставайтесь скромными, накапливайте саты и стройте.
Это гостевой пост Брэндона Блэка. Высказанные мнения являются исключительно их собственными и не обязательно отражают точку зрения BTC Inc или Bitcoin Magazine.
В этом году наблюдался огромный рост спроса на ограниченное пространство внутри блоков биткойна, что привело к повышению платы за транзакции в цепи. Большую часть спроса составляют транзакции, раскрывающие надписи. Содержимое этих надписей раскрывается как часть данных свидетелей1 транзакции биткойна. Эти данные свидетелей1 дисконтируются до четверти стоимости других данных транзакций. Почему мы предоставляем скидку на эти надписи? Должны ли мы сделать скидку на свидетелей мягкой?
Почему одни байты дешевле других?
Деньги в целом и биткойн в частности работают на основе человеческих стимулов. Биткойн выравнивает стимулы майнеров и транзакционеров благодаря использованию собственного токена биткойн для оплаты майнерам за включение определенных транзакций в создаваемые ими блоки. То же самое нельзя сказать о выравнивании стимулов бегунов узлов с майнерами и транзакторами, а также о выравнивании стимулов между отправителями и получателями.
На сегодняшний день в системе стимулирования биткойна произошло 3 крупных усовершенствования:
Ограничение размера блока
Перенос стоимости сложных сценариев с отправителя на получателя (P2SH)
Выравнивание стоимости данных между узловыми бегунами и транзакторами (SegWit)
Транзакторы хотят совершать много транзакций, а майнеры - собирать много комиссионных за транзакции; но исполнители узлов должны передавать, проверять и хранить все эти данные о транзакциях, и они не получают за это вознаграждения, как майнеры. В самом начале истории биткойна Сатоши решил эту проблему, добавив фиксированное ограничение на размер блока (вводимое узлами). Ограничение составляло 1 миллион байт на блок и устанавливало верхнюю границу на объем данных, которые узлы должны были загружать и проверять. В то время Сатоши написал: "Мы можем ввести изменения позже, если они нам понадобятся". Позже, говоря о патче для увеличения лимита, он отметил: "Не используйте этот патч, он сделает Вас несовместимым с сетью", что означает, что увеличение лимита размера блока является жестким форком и требует большей координации даже по сравнению с мягким форком. В последующие годы биткойн намеренно избегал таких несовместимых изменений в хард форках, что также означало сохранение ограничения на размер блока в 1 миллион байт.
Поскольку биткойн защищен скриптами блокировки, его всегда можно было заблокировать с помощью продвинутых скриптов, включая multisig. Согласно первоначальному проекту, отправитель биткойн-транзакции должен был поместить полный скрипт блокировки получателя в свою транзакцию и заплатить любые сборы, чтобы этот скрипт блокировки был включен в блок. Разработчики понимали, что с увеличением платы отправители могут начать колебаться в пользу пользователей более крупных скриптов блокировки из-за более высокой стоимости оплаты этих пользователей. Эти сложные сценарии блокировки также представляют собой проблему для кодирования в адреса и обмена через механизмы с низкой пропускной способностью, такие как QR Code.
Чтобы решить эту проблему, P2SH был добавлен в биткойн в качестве мягкого форка. Согласно правилам этого форка, вместо того, чтобы помещать весь скрипт блокировки получателя в выходные данные транзакции, отправитель просто включает его хэш. Когда получатель неизбежно тратит эти деньги, он включает полный скрипт в транзакцию по расходованию средств, который перед проверкой сверяется с хэшем скрипта, к которому привязана монета. Благодаря этому изменению сценарий погашения любого размера мог быть представлен сценарием блокировки фиксированной длины, и у отправителей больше не было необходимости (или возможности) различать получателей в зависимости от условий их расходования.
Самая главная проверка, которую узлы выполняют при транзакциях биткойнов, заключается в том, что биткойн, который они пытаются потратить, действительно существует. Для этого каждый узел хранит индекс каждой единицы биткойна, которую можно потратить (unspent transaction output, UTXO). Чем больше этот показатель, тем выше стоимость работы узла и проверки будущих транзакций2. В результате транзакция, увеличивающая размер этого индекса (имеющая больше выходов, чем входов), со временем обходится дороже, чем транзакция с тем же количеством байт, уменьшающая размер индекса.
Самая большая часть большинства скриптов для разблокировки биткоинов - это криптографические подписи. Эти подписи примерно в два раза больше соответствующих им открытых ключей, что делает скрипты разблокировки (даже без P2SH) более крупными, чем скрипты блокировки.
Значительно более высокая стоимость потребления по сравнению с созданием UTXO создает конфликт стимулов между исполнителями узлов и транзакторами. Транзакторы лишены стимула тратить свои мелкие UTXO (особенно в периоды высоких комиссий), предпочитая вместо этого тратить крупные UTXO и создавать больше мелких UTXO. В то же время узловые бегуны платят за это накопление небольших UTXO в виде более высоких затрат на проверку всех транзакций.
Как ни странно, проверка того, что для каждого UTXO, потраченного транзакцией в историческом блокчейне, скрипт блокировки удовлетворен соответствующим скриптом разблокировки, гораздо менее фундаментальна. В связи с этим, биткойн-узел, работающий на стандартном bitcoin core 26.x, не будет подтверждать выполнение скрипта полной блокировки для транзакций до блока 804000 (19 августа 2023 года).
Все вышесказанное означает, что разные части блокчейна накладывают на биткойн-узлы разные издержки. Данные, необходимые для определения последствий каждой транзакции, должны быть проверены каждым узлом, синхронизирующимся с блоком генезиса3 , выходы транзакций, как правило, в долгосрочной перспективе обходятся дороже входов транзакций (особенно если они долгоживущие), а большая часть данных свидетелей даже не проверяется, за исключением самых последних транзакций.
Софт-форк Segregated witness (SegWit) - это самое масштабное изменение, внесенное в биткойн на сегодняшний день. Самым главным мотивом для внесения изменений было решение давней проблемы податливости TXID45в биткойне. Чтобы устранить эту нестабильность, скрипт разблокировки заменяется вновь созданным "свидетелем". Удалив авторизационные данные (которые часто могут быть изменены третьими лицами без изменения последствий транзакции) из TXID, становится возможным использование протоколов (таких как Lightning), которые зависят от неизменных TXID.
Поскольку данные авторизации вынесены за пределы исходной структуры транзакции, они больше не учитываются в ограничении на блоки размером 1 миллион байт. Необходимо установить новый лимит. В то время обсуждалось множество подходов к ограничению разделенных данных свидетелей: Ограничение на отдельные байты свидетелей6, комбинированное ограничение < 1 миллион байт7 или взвешенное комбинированное ограничение. В итоге было выбрано взвешенное комбинированное ограничение, при котором данные об отдельных свидетелях взвешиваются на 1 единицу, данные о транзакциях - на 4 единицы, а ограничение по блокам составляет 4 миллиона. Каждая единица веса рассматривается как 1/4 виртуального байта (vByte) для целей расчета платы.
Почему именно эти веса? Давайте посмотрим на стоимость входов и выходов транзакций с раздельным свидетельством и без него:
Первое, что можно отметить в этой таблице, это то, что типы сценариев-свидетелей (P2WPKH, P2WSH) имеют почти одинаковое количество входных и выходных байтов (за каждый из которых взимается по полному vByte). За данные, санкционирующие трату, которые не проверяются ни по одной из транзакций, кроме самых последних, и ни одна из которых не имеет постоянной стоимости в индексе UTXO, с расходующего скрипт свидетеля взимается 1/4 vByte. Еще один момент, который стоит отметить, - это то, что стоимость использования более безопасной мультисигмы 2 из 3 по сравнению с одиночной подписью сократилась со 147 до 36,25 виртуальных байт.
Как я уже сказал в самом начале, биткойн держится на человеческих стимулах, и здесь мы видим, как с годами в биткойн вносились изменения, чтобы улучшить выравнивание стимулов между сторонами, использующими сеть.
Сам по себе Taproot - это "всего лишь" альтернативный способ блокировки биткойна с помощью сегрегированного свидетеля. Это не сильно меняет эти стимулы. Одним из изменений, которое произошло с Taproot, было снятие некоторых ограничений на размер скриптов. Это было сделано для того, чтобы уменьшить сложность разработки инструментов анализа для биткоин-скриптов, а также в качестве признания относительной стоимости различных типов данных. Устранение этих ограничений сделало надписи более простыми, чем они были до появления Taproot, но не изменило коренным образом структуру стимулов в сети.
Теперь перейдем к сути вопроса. Надписи раскрываются при свидетелях, поэтому за каждый байт данных о надписях взимается только 1/4 vByte. Является ли это злоупотреблением скидкой для свидетелей? Правда в том, что данные о надписях - это одни из самых дешевых данных, которые узлы сети могут подтвердить. Скриптовая структура, используемая в надписях, явно пропускает выполнение данных надписи, поэтому единственная проверка, выполняемая в ней, - это единственная проверка хэша (гарантирующая, что раскрытая надпись - это то, что планировал раскрыть автор надписи). Эти данные хэшируются один раз и больше никогда не просматриваются узлами. Он имеет очень низкую вычислительную стоимость (на порядок ниже, чем мультисигмальный скрипт эквивалентного размера).
Но подписка повышает плату и вытесняет других пользователей.
Да! При нынешнем программном обеспечении, доступном для взаимодействия с сетью биткойн, у инскрипторов есть больше экономических стимулов для совершения инскрипций, чем у многих людей для совершения других транзакций.
Это делает очевидным значение повышения экономической плотности транзакций с биткоинами. Сеть Lightning Network делает огромный шаг в этом направлении, позволяя упаковывать сотни, тысячи или миллионы экономических операций в одну транзакцию биткойна. Чем выше экономическая плотность каждого байта в транзакции, тем ниже плата за эту экономическую деятельность. По мере того, как экономическая плотность транзакций биткоина возрастает, другие виды использования пространства блока вытесняются и будут продолжать вытесняться9.
Стоит отметить, что если многозначные протоколы, такие как MuSig2 или FROST, или адаптерные подписи получат широкое распространение, возможно, имеет смысл уменьшить или отменить скидку на свидетелей. Эти протоколы могут позволить представлять большие условия расходования средств одной подписью. Это, в сочетании с эффективным расходованием ключевого пути Taproot, может снизить стоимость ввода с практически произвольно сложными условиями всего до 105 байт.
Реакция на высокие комиссии, вызванные надписями, такая же, как и на любой другой предполагаемый сценарий падения неба в истории биткойна: терпеливо строить, терпеливо строить. Мы можем многое сделать для повышения экономической плотности транзакций биткоина, начиная от создания более совершенных кошельков Lightning и заканчивая переходом на дискретные лог-контракты и т.д. Отмена скидки на свидетелей (преждевременная), откат taproot или подобные контрпродуктивные действия только уменьшат экономическую плотность текущих транзакций биткоина и усугубят ситуацию.
Оставайтесь скромными, накапливайте саты и стройте.
Это гостевой пост Брэндона Блэка. Высказанные мнения являются исключительно их собственными и не обязательно отражают точку зрения BTC Inc или Bitcoin Magazine.