Solving Bitcoin’s gas issue (without a fork) | Opinion
Решение проблемы "газа" в Bitcoin (без форка) | Мнение
Отказ от ответственности: Мнения и взгляды, изложенные здесь, принадлежат исключительно автору и не отражают мнения редакционной коллегии crypto.news.
Каждая платформа для смарт-контрактов имеет встроенный актив для оплаты комиссий. Например, Ethereum ($ETH) использует $ETH, Solana ($SOL) использует $SOL, но в случае с Bitcoin ($BTC) все становится сложнее. Если вы хотите создавать сложные приложения, вам обычно приходится использовать экономику другой сети.
Краткое содержание:
- Bitcoin не оценивает вычислительные ресурсы, а только место в блоке. В отличие от Ethereum или Solana, рыночная стоимость комиссий в $BTC основана на sat/vB для включения транзакций в блок, а не на измерении выполнения смарт-контрактов.
- Выполнение может происходить вне сети, в то время как расчеты остаются в Bitcoin. Системы, такие как OpNet, выполняют логику контрактов в виртуальной машине Wasm, одновременно фиксируя платежи и окончательные изменения состояния через обычные транзакции $BTC.
- $BTC может функционировать как актив для оплаты "газа" без выпуска новых токенов. Оценивая стоимость выполнения в сатоши и осуществляя расчеты через транзакции Bitcoin, приложения избегают создания отдельной системы комиссий.
Например, в Stacks комиссии оплачиваются в $STX. В слоях Bitcoin, имитирующих EVM, вам могут сказать, что $BTC является токеном для оплаты "газа", но обычно это локальная для второго уровня реализация с соглашениями, аналогичными EVM (включая 18 десятичных знаков), и вы все равно работаете в этой среде второго уровня. Сам Bitcoin, тем временем, уже имеет четкий рынок комиссий, где пользователи делают ставки за место в блоке в сатоши/vB, а майнеры отдают приоритет транзакциям с более высокими комиссиями.
Учитывая это, что если бы взаимодействие со смарт-контрактом можно было инициировать и оплачивать как обычную транзакцию Bitcoin, с комиссиями в терминах $BTC (без дополнительных токенов "газа" или форка), при этом вычислительная часть выполнялась в другом месте и оставалась надежно привязанной к Bitcoin? OpNet стремится предложить решение.
Возможно, вам будет интересно: Решения второго уровня для Bitcoin не работают, потому что они не являются настоящими решениями второго уровня | Мнение
Bitcoin не измеряет вычислительные ресурсы (это проблема)
Рыночная стоимость комиссий в Bitcoin отлично справляется с одной задачей: ценообразованием места в блоке. Вы конкурируете в сатоши/vB, майнеры выбирают транзакции с самыми высокими комиссиями, и сеть остается простой и устойчивой к злоупотреблениям. Bitcoin не предоставляет универсальную среду выполнения, в которой цепочка могла бы измерять и взимать плату за произвольные вычисления. Bitcoin Script намеренно является безсостоятельным и не является полной системой, в частности, не поддерживает циклы или операторы перехода, чтобы каждый узел мог предсказуемо проверять скрипты, не открывая двери для неограниченных вычислений.
Именно поэтому большинство подходов к смарт-контрактам для Bitcoin размещают выполнение на отдельной системе, которая может измерять вычислительные ресурсы и иметь свою собственную систему комиссий (например, Stacks взимает комиссии в $STX).
Это не идеально, и система, в которой оплата могла бы оставаться в нативной системе комиссий Bitcoin, в то время как выполнение происходило бы в другом месте, была бы предпочтительнее.
Выполнение - это не то, что Bitcoin должен делать.
Как только вы осознаете, что Bitcoin Script намеренно ограничен (не имеет состояния и не предназначен для неограниченных вычислений), вы начинаете думать о том, как заставить Bitcoin фиксировать результаты и осуществлять платежи.
Действительно, выполнение может происходить в специальной виртуальной машине, предназначенной для детерминированного выполнения логики смарт-контрактов, в то время как Bitcoin остается базовым уровнем, который фиксирует время, определяет порядок и устанавливает цены для взаимодействий с помощью существующего рынка комиссий. В архитектуре OpNet логика контрактов выполняется виртуальной машиной, ориентированной на Wasm (OP-VM), в то время как вся остальная часть узла разработана для управления и выполнения смарт-контрактов с использованием существующих механизмов транзакций и UTXO Bitcoin.
Важно отметить, что это не связано с новым активом для комиссий. Bitcoin не нуждается в измерении вычислительных ресурсов для того, чтобы быть валютой для комиссий. Ему необходимо быть конечным уровнем расчетов, в который все в конечном итоге поступает и к которому привязано.
Как выглядит вызов контракта, оплаченный в $BTC
Наша модель взаимодействия следует схеме "симуляция-выполнение" вместо традиционной модели выполнения смарт-контрактов, при этом окончательный этап выполнения происходит в виде фактической транзакции Bitcoin. Сначала ваше приложение вызывает метод контракта в режиме симуляции. Этот запрос проходит через провайдера к узлу OpNet, который выполняет контракт в своей виртуальной машине и возвращает результат вызова (включая оценки стоимости газа/комиссии) без отправки каких-либо данных в сеть Bitcoin.
Если вызов изменяет состояние, вы берете этот результат вызова и отправляете его как выполнение. В этот момент библиотека создает транзакцию Bitcoin, подписывает ее и отправляет в сеть Bitcoin. Есть два момента, которые стоит помнить:
- Комиссии майнерам являются нативными для Bitcoin. Вы выбираете комиссию
feeRateв сатоши за байт (sat/vB), при желании добавляете приоритетную комиссию в сатоши и устанавливаете жесткий лимит на расходы комиссий с помощью параметраmaximumAllowedSatToSpend(параметр буквально называетсяmaximumAllowedSatToSpend). - Целевой контракт выражается как адрес контракта в стиле P2OP. Экземпляр контракта предоставляет формат адреса p2op, и транзакции ссылаются на "адрес контракта p2op" в качестве адреса назначения контракта.
Тем временем, собственная система учета вычислительных ресурсов OpNet все еще существует. Но она оценивается в сатоши (оцениваемый газ в сатоши, возврат в сатоши и т.д.), поэтому единица измерения никогда не переходит в отдельную токеновую экономику.
Меньше трений, более чистые стимулы
Пользователям больше не нужно принимать вторую экономику комиссий, чтобы взаимодействовать с приложениями. В Bitcoin комиссии уже являются аукционом за место в блоке, цена устанавливается за байт и выплачивается майнерам. Когда вызовы контрактов являются просто транзакциями Bitcoin, вы возвращаетесь к привычной среде (с комиссиями sat/vB, загруженности mempool и стимулах для майнеров), не нужно изучать отдельный рынок токенов для газа.
Кроме того, инструменты используют стандартные рабочие процессы Bitcoin, такие как обработка UTXO, подключение к провайдерам и даже автономная/холодная подпись. Контракты работают во время выполнения Wasm и написаны на AssemblyScript, стремясь к выразительности, подобной Solidity, не притворяясь, что Bitcoin Script внезапно стал виртуальной машиной.
Bitcoin как газ, без второго токена
Утверждение, что $BTC не может функционировать в качестве "газа", обычно основывается на предположении, что базовый слой должен измерять вычислительные ресурсы для определения цены. Bitcoin не измеряет вычислительные ресурсы; он измеряет пространство блока и фиксирует стоимость.
Решение заключается в том, чтобы позволить виртуальной машине выполнять операции детерминированно, а затем направлять каждое взаимодействие, изменяющее состояние, через стандартную транзакцию Bitcoin, где комиссии выражаются в привычных терминах, таких как сатоши/vB, и ограничены в сатоши. В нашем случае это реализовано на уровне клиента с помощью параметров, таких как feeRate и maximumAllowedSatToSpend.
Таким образом, возможно, что $BTC в качестве "газа" действительно является жизнеспособным решением. Комиссии остаются "родными" для $BTC на всех этапах, в то время как время выполнения контракта остается основанным на WebAssembly (AssemblyScript → Wasm), что сохраняет выразительность логики, не меняя валюту комиссии.
Подробнее: DeFi убил токенизацию, но ProFi возвращает ее | Мнение
Frederic Fosco
Frederic Fosco, также известный как Danny Plainview, является соучредителем OP_NET и занимается Bitcoin с 2013 года. Он запустил OP_NET, чтобы сделать Bitcoin нативно программируемым, открывая возможности для смарт-контрактов и DeFi-примитивов непосредственно на уровне 1. Его цель - создавать реальные функции в цепочке без мостов, хранителей, оберток или синтетического Bitcoin, сохраняя само custody и децентрализацию как неприкосновенные.