Транзакции без газа в Solana: полное руководство
Learn how gasless transactions work on Solana using fee payer architecture. Explore implementation, costs, security, and real-world use cases.
Транзакции без газа в Solana позволяют спонсору оплачивать сетевую комиссию за пользователя. Они не отменяют комиссию, не делают каждую транзакцию бесплатной и не гарантируют, что подпись спонсируемой транзакции не может переместить активы пользователя.
Последнее обновление: январь 2025 г.
Транзакции без газа в Solana — это блокчейн-транзакции, в которых конечный пользователь не платит сетевую комиссию, поскольку ее стоимость от его имени покрывает назначенный сторонний участник, называемый спонсором комиссии. Слово "без газа" заимствовано из терминологии комиссий Ethereum, где комиссии называются "газом". Сама Solana использует "комиссии за транзакции", а не "газ". Но в разговорной речи "без газа" стало означать одно и то же на разных блокчейнах: пользователь ничего не платит, а кто-то другой оплачивает счет.
Solana не является без газа по умолчанию. Каждая транзакция в сети требует оплаты комиссии в SOL. Многие dApp (децентрализованные приложения) оплачивают эти комиссии от вашего имени, позволяя вам начать работу, не имея никакого SOL. Нужен ли вам SOL, зависит от конкретного dApp: dApp с поддержкой транзакций без газа покрывают комиссию за вас, а другие требуют, чтобы вы оплачивали ее сами. Данное руководство охватывает архитектуру плательщика комиссии, кто и почему платит, реальные примеры использования, пути реализации, анализ затрат и соображения безопасности.
Оглавление
- Основная концепция: как работает архитектура плательщика комиссии в Solana
- Без газа против бесплатно: устраняем самое распространенное заблуждение
- Solana против Ethereum: чем транзакции без газа отличаются от абстракции учетных записей
- Как реализовать транзакции без газа в Solana
- Реальные примеры использования: где транзакции без газа уже развернуты в Solana
- Стоимость спонсорства транзакций: сколько на самом деле стоят транзакции без газа для разработчиков?
- Соображения безопасности: что разработчикам нужно знать о рисках ретрансляторов
- Выбор правильного подхода: нативная реализация против управляемой службы
- Часто задаваемые вопросы о транзакциях без газа в Solana
- Резюме: что вам нужно знать о транзакциях без газа в Solana
Основная концепция: как работает архитектура плательщика комиссии в Solana
Каждая транзакция Solana включает поле feePayer, которое определяет, с какого счета будет списан SOL для покрытия сетевой комиссии, и этот счет не обязательно должен принадлежать тому, кто инициирует транзакцию.
Модель комиссий Solana
Solana взимает базовую комиссию за подпись, а также может взимать приоритетные комиссии. Параметр базовой комиссии и ее сумма в SOL должны быть проверены в актуальной документации; общая стоимость транзакции может варьироваться в зависимости от подписей, настроек вычислений, приоритетных комиссий и сетевых условий. Валидаторы, сетевые узлы, которые обрабатывают и проверяют транзакции, собирают эти комиссии в качестве вознаграждение за свою вычислительную работу. Proof of History — это компонент хронометража, используемый с Proof of Stake и Tower BFT. Часто упоминаемая цифра в 65 000 TPS является теоретическим ориентиром, а не гарантированной пропускной способностью приложения.
Полную структуру комиссий см. в документации по комиссиям за транзакции Solana.
Что такое плательщик комиссии в Solana?
Плательщик комиссии в Solana — это счет, назначенный для оплаты комиссии за транзакцию. В стандартной транзакции плательщик комиссии и подписант транзакции — это один и тот же счет (кошелек пользователя). В транзакции без газа это намеренно разные счета. Оба счета должны подписать транзакцию, но только баланс SOL плательщика комиссии списывается для покрытия сетевой комиссии.
Это разделение встроено в базовую структуру транзакций Solana через поле feePayer. Это не обходной путь, отдельная ончейн программа или дополнение на уровне приложения. Любая транзакция Solana может назначить другого плательщика комиссии, установив это поле. Техническую спецификацию см. в документации Solana по плательщику комиссии.
Как транзакция без газа проходит через сеть, шаг за шагом:
- Пользователь инициирует действие в dApp (минтинг NFT, обмен токенами или любое другое ончейн действие).
- dApp конструирует объект транзакции и устанавливает поле
feePayerдля отдельного спонсорского счета, а не кошелька пользователя. - Пользователь подписывает транзакцию через свой кошелек, авторизуя инструкцию (действие). Его подпись не списывает средства с его баланса.
- Частично подписанная транзакция отправляется на сервер ретранслятора (relayer), который владеет парой ключей спонсора.
- Ретранслятор проверяет содержимое транзакции, чтобы подтвердить, что оно соответствует ожидаемым данным программы и инструкции.
- Ретранслятор добавляет подпись плательщика комиссии, используя пару ключей спонсора.
- Ретранслятор отправляет полностью подписанную транзакцию в сеть Solana, которая списывает комиссию с баланса плательщика комиссии, а не с пользователя.
Представьте это как счет в ресторане. Пользователь делает заказ (подписывает инструкцию), а приложение оплачивает счет (оплачивает комиссию).
Что такое ретранслятор транзакций (Transaction Relayer)?
Ретранслятор транзакций — это серверная служба, которая обеспечивает работу транзакций без газа. Ретранслятор получает частично подписанную транзакцию от пользователя (который подписал ее для авторизации инструкции, но не оплатил комиссию), добавляет подпись плательщика комиссии и отправляет полностью подписанную транзакцию в сеть Solana. Существуют две модели: ретранслятор, размещенный самостоятельно, где разработчик dApp запускает свой собственный сервер, и управляемая служба ретранслятора, где сторонний поставщик, такой как Helius, занимается инфраструктурой.
В стандартной транзакции ваш кошелек выполняет две функции: он авторизует действие и оплачивает комиссию. В транзакции без газа ваш кошелек выполняет только первую функцию. Когда вы используете dApp с поддержкой транзакций без газа, ваш кошелек Phantom (или Solflare, Backpack или любой другой кошелек Solana) запрашивает подпись транзакции, как обычно. Вы подтверждаете ее. Подпись авторизует инструкцию: минт этого NFT, выполнение этого обмена, обновление этой записи. Баланс SOL вашего кошелька не меняется после этого подтверждения. Комиссия оплачивается с учетной записи плательщика комиссии dApp, которая контролируется ретранслятором. Совместимый кошелек не должен раскрывать свой приватный ключ, а спонсор оплачивает сетевую комиссию. Однако инструкции, которые подписывает пользователь, по-прежнему могут разрешать перевод токенов или другие изменения состояния, поэтому полная транзакция должна быть рассмотрена.
Полную техническую реализацию каждого подхода с ретранслятором см. в руководстве по реализации.
Ключевые термины
- Плательщик комиссии (Fee Payer): Счет, баланс SOL которого покрывает комиссию за транзакцию. В процессе без газа он контролируется dApp, а не пользователем.
- Ретранслятор транзакций (Transaction Relayer): Серверная служба, которая получает частично подписанную транзакцию, добавляет подпись плательщика комиссии и отправляет ее в сеть.
- Спонсор комиссии (Fee Sponsor): Сущность (разработчик dApp, протокол или управляемая служба), которая финансирует счет плательщика комиссии и покрывает расходы на транзакцию.
[ДИАГРАММА: Трех узловой блок-схема, показывающая «Кошелек пользователя подписывает инструкцию» со стрелкой с подписью «Частично подписанная транзакция», ведущей к «Ретранслятор / Плательщик комиссии подписывает + оплачивает комиссию» со стрелкой с подписью «Полностью подписанная транзакция», ведущей к «Сеть Solana подтверждает» и финальной стрелкой к «Действие завершено в кошельке пользователя». Команда дизайнеров: узлы слева направо с обозначенными направленными стрелками.]
Без комиссии vs. Бесплатно: Разъяснение самого распространенного заблуждения
"Без комиссии" — сокращение от «с оплаченной комиссией»: сетевая комиссия существует и всегда оплачивается, но конечный пользователь не является тем, кто ее оплачивает.
На Solana существует три сценария оплаты комиссий, и только один из них действительно «без комиссии»:
- Стандартная транзакция: Пользователь оплачивает комиссию со своего баланса SOL. Комиссия составляет 0,000005 SOL за подпись.
- Транзакция без комиссии (спонсируемая): dApp, протокол или управляемый сервис ретрансляции оплачивают комиссию от имени пользователя. Баланс SOL пользователя не затрагивается.
- Транзакция с низкой комиссией: Пользователь оплачивает настолько малую комиссию, что едва ее замечает. Это не «без комиссии»; пользователю все равно нужен SOL.
Спонсирование транзакций — это термин, ориентированный на бизнес, объясняющий, как работают транзакции без комиссии. С точки зрения продукта, покрытие комиссий за транзакции является затратами на привлечение пользователей, аналогично предложению бесплатной пробной версии или оплате показов рекламы.
Логичный вопрос: если я не плачу, в чем подвох? Ответ прозрачен. Стоимость для спонсора незначительна при текущих уровнях комиссий Solana. Спонсирование 100 000 транзакций обходится в 0,5 SOL в виде базовых комиссий. Платформа, выполняющая чеканку NFT без комиссии, многократно окупает эти затраты за счет комиссий маркетплейса, доходов от первичной продажи или удержания пользователей. Некоторые платформы окупают затраты за счет уровней подписки или токеномики протокола.
Комиссия всегда куда-то идет. Она идет валидаторам Solana. Вопрос только в том, кто ее отправляет.
| Кто платит | Почему платит | Распространенный сценарий использования |
|---|---|---|
| Разработчик dApp | Привлечение пользователей и удобство онбординга | Платформы чеканки NFT без комиссии |
| Казначейство протокола | Субсидирование активности ранних пользователей | Протоколы DeFi |
| Управляемый сервис ретрансляции | Поставщик инфраструктуры взимает плату с dApp, а не с пользователя | Корпоративные и крупномасштабные dApp |
Полное обсуждение рисков, связанных со спонсированием комиссий, см. в разделе соображения безопасности.
Solana против Ethereum: Как транзакции без комиссии отличаются от абстракции учетных записей
Модель комиссий Ethereum является источником концепции «без комиссии», и сравнение нативной архитектуры плательщика комиссий Solana с абстракцией учетных записей Ethereum EIP-4337 показывает, почему два подхода достигают схожего пользовательского опыта различными техническими средствами.
Ethereum взимает «газ» за вычисления. Комиссии за газ переменны, зависят от рынка и оплачиваются в ETH (деноминированы в gwei). Во время пиковой загрузки сети комиссии за транзакции Ethereum исторически достигали 50 долларов США или более за транзакцию. Эта волатильность является именно той причиной, по которой удобный пользовательский интерфейс без комиссии стал значимой целью проектирования. При сравнении комиссий Solana с комиссиями Ethereum, разница в базовой комиссии объясняет, почему спонсирование комиссий экономически незначительно на Solana и действительно дорого на Ethereum. Комиссии за газ Ethereum по сравнению с комиссиями за транзакции Solana представляют собой разницу в несколько порядков стоимости при типичных расходах.
Решение Ethereum для удобного пользовательского интерфейса без комиссии — это EIP-4337, стандарт уровня приложений (не изменение уровня протокола), который вводит «paymasters» (плательщиков). Плательщики — это смарт-контракты, которые спонсируют комиссии за газ от имени пользователей. Развертывание плательщика требует пакетного обработчика (UserOperation bundler), контракта EntryPoint и самого контракта плательщика. Это значительные инвестиции в инфраструктуру, прежде чем какой-либо пользователь сможет получить выгоду. Полную спецификацию см. в спецификации EIP-4337.).
До EIP-4337 Ethereum использовал мета-транзакции (стандартизированные в ERC-2771) в качестве обходного пути. Пользователь подписывал сообщение, выражающее намерение, а ретранслятор упаковывал это сообщение в полную транзакцию и оплачивал комиссию за газ. Подход Solana архитектурно более чист, поскольку разделение плательщика комиссии является первоклассной функцией протокола, а не шаблоном упаковки сообщений уровня приложений.
Слово «без комиссии» применительно к Solana является заимствованным термином. Документация Solana использует термин «комиссии за транзакции», а не «газ». Колликвальное использование термина «без комиссии» отражает то, как Ethereum сформировал лексику этого шаблона пользовательского интерфейса на разных блокчейнах.
| Функция | Собственный плательщик комиссии Solana | Абстракция учетных записей Ethereum EIP-4337 |
|---|---|---|
| Терминология комиссий | Комиссии за транзакции (лампорты) | Комиссии за газ (gwei) |
| Изменчивость комиссий | Детерминированная / фиксированная за подпись | Переменная / рыночная в зависимости от загруженности |
| Архитектурный подход | Встроенное поле транзакции протокола | Стандарт уровня приложений, наложенный на EVM |
| Зависимость от программы/контракта | Не требуется | Требуется контракт плательщика + контракт EntryPoint |
| Сложность реализации | Низкая: установить поле feePayer и запустить ретранслятор | Выше: развернуть плательщика, настроить пакетный обработчик |
| Валюта комиссии | SOL | ETH |
| Типичная стоимость спонсируемой транзакции | Переменные комиссии SOL-деноминированные базовые и приоритетные | Переменные комиссии за газ и услуги провайдера; результаты L2 отличаются |
| Зрелость внедрения | Встроенная с момента запуска Solana | Стандартизирована в 2023 году через EIP-4337 |
Решения уровня 2 Ethereum снизили стоимость газа в основной сети, и это замечание принадлежит любому сравнению. Таблица выше отражает исторические диапазоны основной сети Ethereum. Структурная разница остается: плательщик комиссии Solana — это функция протокола, не требующая дополнительного развертывания контракта, в то время как EIP-4337 — это стандарт уровня приложений, требующий развертывания стека плательщиков.
Как реализовать транзакции без комиссии на Solana
Существует три подхода к реализации добавления спонсирования комиссий в приложение Solana. Правильный выбор зависит от объема транзакций, доступных ресурсов для разработки, требований безопасности и толерантности к сторонним зависимостям. Все три подхода используют собственное поле feePayer Solana в качестве основного механизма протокола.
Подход 1: Установка плательщика комиссии в поддерживаемом SDK
Нативный подход устанавливает поле «fee-payer» в объекте транзакции и использует безопасно управляемый аккаунт спонсора, пополненный SOL. Команды должны использовать поддерживаемый SDK, соответствующий их утвержденной инженерной среде, и проверять поведение в соответствии с текущей спецификацией транзакций Solana.
Предварительные условия: пополненный аккаунт спонсора, хранящийся в утвержденной системе управления секретами или подписания, RPC-соединение, правила проверки транзакций, мониторинг и поддерживаемая клиентская библиотека.
Шаги:
- Создайте новый объект
Transaction. - Добавьте соответствующую инструкцию (чеканка, обмен, перевод или другой вызов программы).
- Установите
transaction.feePayer = sponsorKeypair.publicKey, чтобы указать аккаунт спонсора. - Получите
recentBlockhashи присвойте его транзакции. Блокхэш истекает примерно через 150 слотов (примерно 60–90 секунд); отправляйте оперативно или реализуйте надежные nonce для потоков с неизбежными задержками. См. документацию Solana по надежным nonce) для этого шаблона. - Получите подпись от кошелька пользователя для инструкций транзакции. Спонсор оплачивает сетевую комиссию, но инструкции все равно могут перемещать активы пользователя или создавать другие изменения состояния.
- Отправьте частично подписанную, сериализованную транзакцию на конечную точку сервера ретранслятора.
- Ретранслятор проверяет содержимое транзакции, добавляет подпись ключевой пары спонсора и отправляет полностью подписанную транзакцию через RPC.
Точные API SDK и типы транзакций со временем меняются. Реализация должна создавать предполагаемые инструкции, устанавливать спонсора в качестве плательщика комиссии, получать текущий блокхэш или поддерживаемый nonce, собирать необходимые подписи без изменения подписанного содержимого, проверять сериализованную транзакцию на ретрансляторе и отправлять ее через одобренного поставщика RPC. Проверяйте каждый шаг в соответствии с текущей документацией SDK и протокола.
Пара ключей спонсора должна всегда храниться на стороне сервера. Раскрытие её на стороне клиента позволяет любому пользователю опустошить баланс SOL спонсора. Для полного анализа рисков ознакомьтесь с полным обсуждением безопасности.
Для получения официальной спецификации полей см. документацию Solana по плательщику комиссий.\n\n### Подход 2: Использование управляемого сервиса ретрансляции
Управляемые сервисы ретрансляции берут на себя управление инфраструктурой плательщика комиссий от имени разработчика, позволяя интегрировать спонсирование комиссий через API-вызов без создания или обслуживания сервера-ретранслятора.
Предложения управляемых провайдеров могут включать функции спонсируемых транзакций или ретрансляции. Helius, QuickNode и Alchemy — примеры, упомянутые в источнике; текущую поддержку Solana и условия использования продуктов необходимо проверять напрямую. Типичный шаблон интеграции выглядит так:
- Получите учетные данные от выбранного провайдера, используя утвержденный процесс управления секретами.\n2. Создайте транзакцию на стороне клиента, добавив инструкции и установив
transaction.feePayerв значение назначенного публичного ключа провайдера.\n3. Попросите кошелек пользователя частично подписать транзакцию.\n4. Сериализуйте и отправьте транзакцию на эндпоинт провайдера для работы без газа через HTTP POST.\n5. Провайдер валидирует транзакцию, подписывает её как плательщик комиссии и отправляет в сеть Solana.
Управляемый сервис может снизить объем прямых операционных работ, но он вносит зависимости от поставщика, учетных данных, доступности, политик, конфиденциальности и ценообразования. Ответственность за хранение ключей зависит от архитектуры и контракта провайдера. Документация провайдера является отправной точкой, а не заменой аудита безопасности.
Компромисс заключается в зависимости от вендора. Если в работе управляемого сервиса произойдет сбой, спонсируемые транзакции не пройдут. Пользователи не смогут вернуться к самостоятельной оплате комиссий без дополнительной логики фронтенда для обнаружения доступности ретранслятора и создания стандартной транзакции вместо этого. Оцените это с точки зрения толерантности вашего продукта к рискам доступности сторонних сервисов. Структура принятия решения «создать или купить» в разделе «Выбор правильного подхода» полностью охватывает этот вопрос.
QuickNode и Alchemy предлагают инфраструктуру Solana с функциями спонсирования комиссий или сопутствующими ретрансляции функциями. Проверяйте текущую доступность функций в документации каждого провайдера, так как предложения управляемых сервисов развиваются.\n\n### Подход 3: Создание собственного ретранслятора транзакций
Собственный ретранслятор транзакций целесообразен, когда приложению требуется кастомная логика проверки прав на спонсирование, оно работает в больших масштабах со строгими требованиями к локализации данных или нуждается в полном контроле над парой ключей плательщика комиссий.
Архитектура собственного ретранслятора состоит из пяти компонентов:
- API-эндпоинт: принимает частично подписанные сериализованные транзакции от фронтенда dApp через HTTP.\n2. Слой валидации: десериализует транзакцию и проверяет ID программ, данные инструкций и списки аккаунтов на соответствие белому списку. Это самый чувствительный с точки зрения безопасности компонент. Ретранслятор подписывает всё, что получает; поэтому он должен проверять полученные данные перед подписанием.\n3. Подписание плательщиком комиссий: использует пару ключей, хранящуюся в переменной окружения или менеджере секретов. Никогда не храните пару ключей в исходном коде и не фиксируйте её в репозитории.\n4. Отправка RPC: отправляет полностью подписанную транзакцию в Solana через RPC с логикой повторных попыток при сбоях подтверждения и обработкой ответов об ограничении частоты запросов.\n5. Мониторинг баланса: кошелек спонсора должен поддерживать достаточный баланс SOL для ожидаемого объема транзакций. Внедрите автоматические оповещения и механизмы пополнения, чтобы предотвратить простой ретранслятора из-за исчерпания баланса.
Для инженерной среды, использующей только Python, используйте поддерживаемый Python-клиент Solana только после подтверждения того, что он поддерживает требуемый формат транзакций и процесс подписания. Собственный ретранслятор всё равно требует мониторинга, обработки лимитов запросов, очередей повторных попыток, контроля баланса, тестирования и реагирования на инциденты.
---\n\n## Реальные кейсы использования: где транзакции без газа уже внедрены в Solana
Транзакции без газа находятся в промышленной эксплуатации в нескольких категориях dApps (децентрализованных приложений) на Solana, каждая из которых имеет свои бизнес-обоснования для покрытия расходов на транзакционные комиссии пользователей.
Платформы для минта NFT — один из вариантов использования безгазовых транзакций. Когда платформа спонсирует сетевую комиссию, совместимый кошелек может подписать транзакцию минта, не оплачивая эту комиссию в SOL. Минт без газа может по-прежнему включать цену минта, политику приоритетных комиссий, сборы платформы, роялти или последующие расходы, связанные с аккаунтом, поэтому пользователи должны проверять транзакцию и цену полностью.
Протоколы DeFi сталкиваются со структурной проблемой онбординга, которую спонсирование комиссий решает напрямую. Пользователи, приходящие с USDC или другим токеном, отличным от SOL, не могут инициировать обмен, внести в стейкинг или внести депозит без предварительного приобретения SOL для оплаты комиссии за транзакцию. Это создает циклическую зависимость: вам нужен SOL для взаимодействия с протоколом, который мог бы дать вам SOL, но вы не можете взаимодействовать без наличия SOL. Спонсирование первых одной-трех транзакций для новых пользователей устраняет этот барьер. DEX, потоки прибытия через кроссчейн-мосты и лендинговые платформы — все используют этот паттерн. После спонсируемого периода пользователи, получившие SOL через обмен, могут оплачивать собственные комиссии в последующих транзакциях.
Web3-игры генерируют высокую частоту транзакций, что делает спонсирование комиссий экономически привлекательным для студий. Каждое игровое действие, затрагивающее блокчейн (покупка предмета, минт достижения, обновление таблицы лидеров), без спонсирования вызывало бы запрос кошелька и списание комиссии. При базовых комиссиях Solana спонсирование 1000 игровых транзакций стоит примерно 0,005 SOL. Игровая студия берет это на себя как операционные расходы, аналогично серверной инфраструктуре, и в результате игровой процесс становится похожим на стандартную Web2-игру, а не на блокчейн-приложение.
Онбординг в потребительские dApp расширяет эту модель на любое приложение. dApp на Solana может спонсировать первые N транзакций пользователя, чтобы снизить барьер для первого ончейн-действия, а затем перевести пользователей на самооплату после того, как они приобретут SOL. Solana Pay (открытый платежный протокол Solana) предоставляет аналогичную модель для торговых контекстов: продавец может выступать в качестве плательщика комиссии, позволяя клиентам инициировать платежи без наличия SOL для комиссий.
Нужен ли мне SOL для использования этих приложений?\n> Нет, пока платформа активно спонсирует комиссии за транзакции. Отсутствие газа — это продуктовое решение каждого конкретного dApp, а не сетевая гарантия. Всегда проверяйте текущую политику комиссий платформы, прежде чем предполагать, что комиссии спонсируются. Программы спонсирования могут быть ограничены по времени, объему или конкретным действиям.
Функционал без газа — это в первую очередь особенность dApp и ретранслятора, но совместимость кошельков и поддержка формата транзакций всё равно требуют проверки. Phantom, Solflare и Backpack приведены в источнике в качестве примеров, а не рекомендаций. Пользователь подписывает инструкции транзакции, в то время как спонсор санкционирует оплату комиссии.
---\n\n## Стоимость спонсирования транзакций: во сколько на самом деле обходится «безгазовый» режим разработчикам?
Источник моделирует базовую комиссию в 5000 лампортов за подпись, используя документацию по комиссиям за транзакции Solana. Рассматривайте это как вводные данные для проверки, а не как окончательную котировку. Общая стоимость спонсирования также зависит от количества подписей, приоритетных комиссий, повторных попыток, создания аккаунтов, сборов провайдера, инфраструктуры и цены SOL.
Приведенные ниже оценки стоимости носят иллюстративный характер и основаны на общедоступных данных о комиссиях. Данный контент не является финансовым советом. Цена SOL волатильна; фактические затраты в USD будут варьироваться.
Один SOL равен 1 000 000 000 лампортов. Базовая комиссия в 5000 лампортов за подпись является сетевым минимумом. Приоритетные комиссии являются необязательными и контролируются спонсором.
| Спонсируемые транзакции в месяц | Иллюстрация базовой комиссии | Иллюстрация в USD при $150/SOL |
|---|---|---|
| 1 000 | 0,005 SOL | ~$0,75 |
| 10 000 | 0,05 SOL | ~$7,50 |
| 100 000 | 0,5 SOL | ~$75,00 |
| 1 000 000 | 5 SOL | ~$750,00 |
| Формула | Транзакции × расчетная базовая комиссия 0,000005 SOL | Умножается на расчетную цену SOL; исключая приоритетные и сервисные расходы |
Приоритетные комиссии — это необязательная инструкция computeUnitPrice, которая перемещает транзакцию в начало очереди во время периодов сетевой нагрузки. Добавление приоритетных комиссий увеличивает стоимость каждой транзакции и вносит вариативность. Планируйте бюджет с запасом, если ваше приложение спонсирует транзакции в периоды перегрузки сети.
Расходы на управляемые сервисы добавляют уровень сверх сетевой комиссии Solana. При использовании Helius или другого управляемого ретранслятора разработчик оплачивает как базовую комиссию Solana, так и стоимость подписки на API провайдера или сервисную комиссию за транзакцию. Ознакомьтесь с текущей документацией по ценам каждого провайдера для получения конкретной информации.
Таблица является иллюстрацией с использованием расчетной базовой комиссии и цены SOL из источника. Фактическая стоимость зависит от подписей, приоритетных комиссий, неудачных или повторных транзакций, создания аккаунтов, цен провайдера, инфраструктуры и цены токена. Командам следует оценивать собственную рабочую нагрузку, а не экстраполировать гарантированную стоимость из таблицы.
Для выбора между управляемыми сервисами и пользовательскими ретрансляторами на основе стоимости и операционных факторов см. раздел «Выбор правильного подхода».
Рекомендации по безопасности: что разработчикам нужно знать о рисках ретрансляторов
Внедрение транзакций без газа накладывает обязанности по обеспечению безопасности на разработчиков, операторов инфраструктуры и пользователей. Подпись пользователя разрешает выполнение инструкций транзакции, представленных кошельком; спонсорство комиссии не делает вредоносные или вводящие в заблуждение инструкции безопасными.
Безопасность пользователей: легитимный процесс спонсирования комиссии не должен требовать передачи приватного ключа, однако пользователям все равно необходимо проверять домен, запросы кошелька, ID программ, одобрения токенов, аккаунты и суммы. Вредоносное dApp может попросить пользователя подписать опасные инструкции, даже если другой аккаунт оплачивает сетевую комиссию.
Перечисленные ниже риски затрагивают разработчиков и операторов, в то время как риски, связанные с подписанием транзакций, фишингом, кошельками и авторизацией активов, также затрагивают конечных пользователей.
Риск 1: Манипулирование содержимым транзакции. Вредоносный клиент может создать транзакцию, содержащую опасные инструкции, и отправить ее ретранслятору, надеясь, что тот подпишет ее без проверки содержимого. Смягчение последствий: ретранслятор должен десериализовать и валидировать транзакцию перед подписанием. Проверяйте ID программ, данные инструкций и списки аккаунтов на соответствие списку разрешенных (allowlist) ожидаемых значений. Подписывайте только те транзакции, которые соответствуют ожидаемой структуре вашего приложения.
Риск 2: Атаки повторного воспроизведения (Replay attacks). Механизм recentBlockhash в Solana нативно предотвращает атаки повторного воспроизведения. Хеш блока истекает примерно через 150 слотов (от 60 до 90 секунд), и любая транзакция, отправленная после истечения срока действия хеша блока, отклоняется сетью. Ретрансляторы не должны повторно подписывать транзакции с истекшим сроком действия хеша блока. Для процессов, где задержки отправки неизбежны, внедряйте долговечные нонсы (durable nonces), используя функцию nonceAccount Solana; см. документацию по долговечным нонсам Solana.).
Риск 3: Отказ в обслуживании ретранслятора. Если сторонний управляемый ретранслятор выходит из строя, пользователи не могут отправлять спонсируемые транзакции, даже если они готовы оплатить комиссию самостоятельно. Смягчение последствий: внедрите резервный путь во фронтенде, который создает стандартную транзакцию (оплачиваемую пользователем), если эндпоинт ретранслятора недоступен. Это сохраняет функциональность во время сбоев.
Риск 4: Опустошение кошелька спонсора. Без ограничения частоты запросов (rate limiting) злоумышленник может генерировать большие объемы внешне валидных транзакций, чтобы истощить баланс SOL спонсора. Смягчение последствий: применяйте ограничения частоты запросов на адрес кошелька, IP-адрес и временное окно. Установите ежедневный лимит расходов. Внедрите автоматический прерыватель (circuit breaker), который приостанавливает спонсорство, когда объем превышает пороговое значение. Отслеживайте баланс кошелька спонсора с помощью автоматических оповещений и триггеров пополнения.
Риск 5: Фронтраннинг и MEV. Ретранслятор транслирует транзакцию и видит ее содержимое до ончейн-подтверждения. Для приложений DeFi, связанных со свопами или арбитражем, недобросовестный ретранслятор может совершить фронтраннинг транзакции. Смягчение последствий: используйте собственный ретранслятор для приложений DeFi, обрабатывающих конфиденциальные финансовые транзакции. Оцените репутацию и операционную прозрачность любого стороннего провайдера перед его интеграцией в продукт DeFi.
В контексте нормативно-правового регулирования: в некоторых юрисдикциях спонсирование транзакций пользователей может иметь последствия для правового статуса dApp, особенно если спонсируемые комиссии характеризуются как передача ценности. Это не является юридической консультацией; обратитесь к юристу для анализа применительно к конкретной юрисдикции.
Уровень валидации в руководстве по внедрению описывает, где именно в архитектуре ретранслятора применяются эти меры по смягчению рисков.
Контрольный список безопасности для внедрения ретранслятора
- Валидируйте и десериализуйте содержимое транзакции перед подписанием
- Никогда не подписывайте повторно транзакции с истекшим сроком действия хеша блока
- Внедрите резервный вариант с оплатой пользователем на случай простоя ретранслятора
- Применяйте ограничения частоты запросов на кошелек, IP и временное окно с ежедневным лимитом расходов
- Используйте собственный или доверенный ретранслятор для приложений DeFi, обрабатывающих конфиденциальные транзакции
Выбор правильного подхода: нативное внедрение против управляемого сервиса
Выбор между нативным внедрением feePayer, управляемым сервисом ретрансляции и специально созданным ретранслятором зависит от четырех факторов: сроков разработки, объема транзакций, требований к безопасности и бюджета на текущие операционные расходы.
| Критерии | Нативный feePayer (Прямой) | Управляемый сервис (напр., Helius) | Пользовательский ретранслятор |
|---|---|---|---|
| Сложность настройки | Требуется доверенный сервис подписи и валидация | Интеграция провайдера и настройка политик | Создание и развертывание выделенного сервиса |
| Операционное обслуживание | Безопасность ключей, баланс, валидация, мониторинг | Надзор за провайдером и внутренний контроль | Безопасность ключей, мониторинг, повторы и лимиты частоты |
| Структура затрат | Только сетевая комиссия | Сетевая комиссия + подписка на сервис | Сетевая комиссия + расходы на хостинг |
| Зависимость от вендора | Нет | Высокая | Нет |
| Контроль безопасности | Зависит от реализации и архитектуры ключей | Разделение ответственности в рамках дизайна провайдера | Зависит от реализации и архитектуры ключей |
| Типичное применение | Доверенный бэкенд с четкими правилами спонсорства | Команды, допускающие зависимость от вендора | Индивидуальные требования к допуску, комплаенсу или хранению данных |
Не существует универсального порога объема транзакций для выбора управляемого сервиса. Прежде чем выбирать подход, сравните хранение ключей, средства контроля валидации, доступность, конфиденциальность, соответствие требованиям (комплаенс), место хранения данных, цены, переносимость и реагирование на инциденты.
Создавайте собственный ретранслятор, когда вашему приложению требуется индивидуальная логика соответствия (например, спонсирование только первых пяти транзакций для каждого пользователя или ограничение спонсорства определенными типами инструкций), когда объем транзакций и требования к безопасности оправдывают операционные инвестиции, или когда требования к хранению данных исключают использование стороннего провайдера.
Нативный подход feePayer без выделенного сервера-ретранслятора подходит для простых приложений с доверенным бэкендом и предсказуемым низким объемом транзакций.
Команды, использующие управляемый сервис, должны сохранять возможность перехода на собственный ретранслятор, если провайдер изменит цены или прекратит обслуживание. Документируйте точки интеграции так, чтобы миграция была сменой конфигурации, а не переписыванием кода.
Для моделирования стоимости каждого варианта см. раздел анализа затрат.
Часто задаваемые вопросы о транзакциях без газа на Solana
Что такое транзакции без газа в криптовалюте?
Безгазовые транзакции в криптовалюте — это блокчейн-транзакции, за которые конечный пользователь не платит сетевую комиссию. Третья сторона, например разработчик dApp, протокол или сервис ретрансляции, покрывает комиссию от имени пользователя. Термин возник в экосистеме Ethereum, где комиссии за транзакции называются «газом», и с тех пор распространился на другие цепочки, включая Solana, как общий термин для пользовательского опыта со спонсируемыми комиссиями.
Взимает ли Solana комиссии за газ?
Solana использует транзакционные комиссии, а не термин «газ». Источник указывает на базовую комиссию в размере 5 000 лампортов за подпись, но текущие параметры следует проверять, а общая стоимость может включать несколько подписей и дополнительные приоритетные комиссии. «Безгазовый» (Gasless) означает, что комиссию сети оплачивает другой аккаунт.
Как работает плательщик комиссий на Solana?
Плательщиком комиссий (fee payer) на Solana является аккаунт, назначенный для оплаты комиссии за транзакцию. Каждая транзакция имеет поле feePayer в объекте транзакции. В стандартной транзакции плательщик комиссии и лицо, подписывающее транзакцию, являются одним и тем же аккаунтом. В безгазовой транзакции это разные аккаунты: кошелек пользователя подписывает разрешение на выполнение инструкции, а отдельный аккаунт плательщика комиссии (контролируемый dApp) подписывает авторизацию и оплачивает комиссию. Списывается только баланс SOL плательщика комиссии.
Кто платит за безгазовые транзакции на Solana?
За безгазовые транзакции на Solana платит разработчик dApp, казначейство протокола или управляемый сервис ретрансляции (релейер). Эти организации пополняют аккаунт плательщика комиссии в SOL и запускают ретранслятор, который соподписывает транзакции от имени пользователей. С точки зрения бизнеса, это спонсирование транзакций: dApp рассматривает комиссию как стоимость привлечения пользователя. См. таблицу плательщиков в разделе о заблуждениях для подробного разбора.
Можно ли отправить SOL без оплаты комиссий?
Ни одна транзакция на Solana не может быть совершена без выплаты комиссии валидаторам. Комиссия является требованием протокола. Возможно лишь то, что комиссию оплатит сторона, отличная от отправителя. В безгазовой транзакции комиссия все равно существует; просто пользователь не является тем, кто ее платит. Аналогия: ресторан может угостить вас обедом бесплатно, но еда все равно имеет свою стоимость.
Что такое спонсирование комиссий за транзакции?
Спонсирование комиссий за транзакции — это практика, при которой разработчик dApp, протокол или сервис покрывает сетевую комиссию за транзакцию от имени конечного пользователя, позволяя пользователю взаимодействовать с Solana, не имея SOL для оплаты комиссий. Это механизм, который делает возможным безгазовый пользовательский опыт. С точки зрения продукта спонсирование комиссий обычно рассматривается как стоимость привлечения пользователя, аналогично модели freemium или отмене комиссии за регистрацию.
Как создать безгазовое приложение (dApp) на Solana?
Чтобы создать безгазовое dApp на Solana: (1) создайте на стороне сервера пару ключей плательщика комиссии, пополненную SOL; (2) создавайте транзакции с полем transaction.feePayer, установленным на публичный ключ плательщика комиссии; (3) обеспечьте подписание транзакций пользователями через их кошельки; (4) отправьте частично подписанную транзакцию на ваш сервер-ретранслятор; (5) обеспечьте проверку содержимого транзакции ретранслятором, добавление подписи плательщика комиссии и отправку в сеть. Подробные технические детали по всем трем подходам см. в руководстве по внедрению.
В чем разница между комиссиями Solana и газом Ethereum?
Ethereum и Solana используют разные архитектуры комиссий и спонсорства. В Solana есть нативное поле плательщика комиссии и могут использоваться приоритетные комиссии; Ethereum поддерживает абстракцию аккаунта и дизайн мета-транзакций с другими компонентами. Сравнивайте эквивалентные рабочие нагрузки, политики подтверждения, затраты провайдеров и средства контроля безопасности, а не полагайтесь на одну фиксированную цифру комиссии.
Можно ли сминтить NFT на Solana бесплатно?
Да, многие платформы NFT на Solana спонсируют комиссию за транзакцию минта, что означает, что пользователи ничего не платят в качестве сетевой комиссии. Однако «бесплатный минт» (free mint) и «безгазовый минт» (gasless mint) — это не одно и то же. Бесплатный минт означает отсутствие комиссии за транзакцию и отсутствие цены минта. Безгазовый минт означает, что комиссия за транзакцию спонсируется, но цена минта все равно может взиматься. Ярлык «безгазовый» относится именно к спонсированию сетевой комиссии, а не к тому, имеет ли сам NFT цену покупки.
Какие кошельки поддерживают безгазовые транзакции на Solana?
Безгазовый функционал в основном реализуется dApp и ретранслятором, однако совместимость кошельков и поддержка формата транзакций все же требуют тестирования. Спонсор может покрыть сетевую комиссию, даже если подписанные инструкции могут перемещать активы пользователя или создавать другие расходы.
Безопасны ли безгазовые транзакции на Solana?
Они могут быть реализованы безопасно, но спонсорство не является гарантией безопасности. Пользователи должны проверять dApp и подписанные инструкции, в то время как разработчики обязаны валидировать транзакции, защищать ключи спонсора, ограничивать злоупотребления, мониторить ретрансляторы и обеспечивать обработку сбоев. Легитимный сервис никогда не должен запрашивать приватный ключ пользователя.
Что произойдет, если сервис ретрансляции выйдет из строя?
Если управляемый сервис ретрансляции выйдет из строя, спонсируемые транзакции не смогут быть отправлены до восстановления сервиса. Пользователи, готовые сами оплачивать комиссии, не смогут этого сделать, если dApp не реализовал резервный путь. Грамотно построенное безгазовое dApp определяет доступность ретранслятора и переходит к созданию стандартной транзакции, где пользователь платит комиссию, когда ретранслятор недоступен. Это один из ключевых операционных рисков использования управляемого сервиса ретрансляции вместо собственного.
Связанные руководства по экономике сети Solana
Изучите SOL на Bybit
Читатели могут просмотреть текущую рыночную информацию о SOL или спот рынок SOL/USDT.. Доступность не подтверждает протокол, стейблкоин, ретранслятор, программу обратного выкупа или инвестиционный тезис.
Резюме: Что вам нужно знать о безгазовых транзакциях на Solana
Безгазовые транзакции на Solana обеспечивают конечным пользователям опыт без комиссий, перекладывая оплату на назначенный аккаунт плательщика комиссии — поле высшего порядка в нативной модели транзакций Solana.
Ключевые моменты:
- Поле
feePayerвстроено в базовую структуру транзакций Solana. Для спонсирования комиссий не требуются дополнительные программы или контракты. - Комиссия существует всегда и всегда уходит валидаторам. «Безгазовый» означает, что платит не пользователь, а не то, что комиссии не существует.
- Обсуждаются три пути реализации: нативный поток плательщика комиссий с использованием утвержденного SDK, управляемый сервис ретрансляции и самостоятельно созданный ретранслятор. Каждый из них имеет свои компромиссы в области безопасности, доступности, стоимости и контроля.
- Ответственность за безопасность разделена: пользователи проверяют то, что они подписывают, а разработчики проверяют содержимое транзакций, защищают ключи спонсора, ограничивают злоупотребления и следят за доступностью ретранслятора.
- Пример базовой комиссии в источнике предполагает, что спонсорство может быть недорогим, но производственная экономика требует учета текущих комиссий, настроек приоритета, частоты сбоев, сборов провайдеров и тестирования эквивалентных нагрузок.
Следующие шаги для аудиторий:
Для пользователей: Ищите явное подтверждение того, что dApp спонсирует комиссии, прежде чем предполагать, что ваш баланс SOL не будет затронут. Вы можете участвовать, не покупая SOL заранее, когда спонсорство активно, но всегда проверяйте текущую политику каждой платформы.
Для разработчиков: Сравните нативную модель плательщика комиссий, несколько управляемых провайдеров и самостоятельно управляемый ретранслятор. Проверьте текущую документацию, допущения безопасности, условия обслуживания и затраты перед выбором реализации.
Для продуктовых стратегов: Смоделируйте стоимость спонсорства, используя формулу в разделе анализа затрат, и оцените подходы к реализации с помощью таблицы принятия решений в разделе выбора правильного подхода.
По мере созревания потребительских dApps на Solana спонсирование комиссий становится стандартным паттерном онбординга. Архитектура для его поддержки была частью протокола Solana с первого дня.