Реализация Gasless-транзакций (Paymaster) в мобильном криптоприложении

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Реализация Gasless-транзакций (Paymaster) в мобильном криптоприложении
Сложный
~3-5 дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Реализация Gasless-транзакций (Paymaster) в мобильном криптоприложении

Главный барьер для массового принятия крипто-приложений — газ. Новый пользователь установил приложение, создал кошелёк, получил USDC от друга. Хочет отправить — а ему говорят: «У вас 0 ETH для оплаты комиссии». Это конец воронки. Gasless-транзакции через Paymaster решают эту проблему: газ спонсируется приложением или оплачивается ERC-20 токеном вместо нативного.

Как работает ERC-4337 и Paymaster

Account Abstraction (ERC-4337) вводит UserOperation — структуру, которая заменяет обычную транзакцию. Bundler собирает UserOperations из mempool и отправляет их в EntryPoint контракт пакетом. Paymaster — отдельный смарт-контракт, который берёт на себя оплату газа при условии выполнения своей логики.

Два основных типа Paymaster:

  • Sponsoring Paymaster: приложение платит газ за пользователей бесплатно
  • Token Paymaster: пользователь платит в ERC-20 (USDC, USDT) вместо ETH
// UserOperation с Paymaster через Biconomy SDK
import { createSmartAccountClient } from "@biconomy/account";
import { createPaymaster } from "@biconomy/paymaster";

const paymaster = await createPaymaster({
    paymasterUrl: "https://paymaster.biconomy.io/api/v2/137/YOUR_API_KEY"
});

const smartAccount = await createSmartAccountClient({
    signer: walletSigner,
    bundlerUrl: "https://bundler.biconomy.io/api/v2/137/YOUR_API_KEY",
    paymaster: paymaster
});

// Отправка транзакции — пользователь не платит ETH
const tx = await smartAccount.sendTransaction({
    to: recipientAddress,
    data: encodeFunctionData({ ... }),
    value: 0n
});

На мобильном клиенте пользователь просто нажимает «Подтвердить» — биометрия (Face ID / Fingerprint), транзакция уходит. Никакого ETH-баланса, никакого вопроса «сколько поставить газа».

Интеграция в iOS/Android приложение

Для нативных приложений без React Native логика Account Abstraction переносится на серверную сторону — мобильный клиент отправляет запрос на бэкенд, бэкенд формирует UserOperation, подписывает через smart account пользователя и отправляет в Bundler. Мобильный клиент только передаёт данные транзакции и получает результат.

// iOS: запрос gasless-транзакции через свой бэкенд
struct GaslessTransactionRequest: Encodable {
    let action: String        // "transfer", "mint", "swap"
    let params: [String: Any]
    let userSmartAccount: String
}

class TransactionService {
    func sendGasless(request: GaslessTransactionRequest) async throws -> TransactionResult {
        let response = try await apiClient.post(
            "/transactions/gasless",
            body: request
        )
        // Polling или WebSocket для получения txHash
        return try await pollTransactionStatus(response.operationId)
    }
}

Бэкенд хранит ключи smart account в HSM или через Privy Server Wallets / Fireblocks API — никаких приватных ключей на мобильном устройстве.

Ограничения и защита от злоупотреблений

Спонсирование газа — это деньги. Без ограничений ботнет опустошит баланс Paymaster за часы. Необходимые меры:

Rate limiting. Максимум N gasless-транзакций в сутки на пользователя. На уровне Paymaster контракта — проверка через маппинг lastTxTime[sender] с минимальным интервалом.

Whitelist actions. Paymaster спонсирует только определённые вызовы — например, только transfer() конкретного токена, но не произвольные контракты.

App Check верификация. Проверяем что запрос идёт из легитимного приложения через Firebase App Check (использует DeviceCheck на iOS, Play Integrity на Android). Без валидного App Check токена бэкенд не формирует UserOperation.

// Paymaster контракт: whitelist функций
function _validatePaymasterUserOp(
    UserOperation calldata userOp,
    bytes32,
    uint256
) internal view override returns (bytes memory, uint256) {
    bytes4 selector = bytes4(userOp.callData[:4]);
    require(allowedSelectors[selector], "Function not sponsored");
    require(dailyUsage[userOp.sender] < MAX_DAILY_OPS, "Daily limit exceeded");
    return ("", 0);
}

Баланс Paymaster и мониторинг

Paymaster держит депозит на EntryPoint контракте. Когда депозит заканчивается — транзакции начинают падать с AA31 paymaster deposit too low. Нужен мониторинг баланса через EntryPoint.getDepositInfo(paymasterAddress) и автоматический топап через Chainlink Automation или простой cron-воркер.

Стоит завести дашборд: сколько транзакций в день, средний газ, общие расходы. Biconomy Dashboard, Alchemy Gas Manager Dashboard — готовые решения если используете их инфраструктуру.

Выбор провайдера

Провайдер Поддерживаемые сети Особенности
Biconomy 50+ сетей SDK для React Native, JS
ZeroDev Ethereum, Polygon, Arbitrum Kernel account, простой API
Alchemy Gas Manager 10+ сетей Интегрирован с Alchemy RPC
Pimlico Большинство EVM Хороший bundler, Token Paymaster
Собственный Любая EVM Полный контроль, выше сложность

Для продакшн-приложения с > 10K DAU — рекомендуем собственный Paymaster на Ethereum L2 (Base, Arbitrum, Optimism): газ дешевле на 90% по сравнению с mainnet, но контроль над логикой спонсирования полный.

Сроки

5–7 дней для интеграции через готового провайдера (Biconomy/ZeroDev) с серверной логикой UserOperation. 2–3 недели для собственного Paymaster с кастомными правилами спонсирования и мониторингом. Стоимость рассчитывается индивидуально после анализа требований.