Пользователь отправляет ETH, а транзакция зависает на часы или списывается огромная комиссия. До внедрения EIP-1559 кошельки угадывали gasPrice и часто ошибались. Мы, как команда с 5-летним опытом разработки мобильных кошельков, внедряем этот стандарт, чтобы исключить переплаты и задержки. EIP-1559 делает комиссии предсказуемыми: пользователь задаёт максимальную цену газа (maxFeePerGas) и чаевые валидатору (maxPriorityFeePerGas), а протокол автоматически рассчитывает базовую комиссию (baseFee), которая сжигается. Результат — экономия до 40% по сравнению со старым форматом и никаких зависших транзакций. Официальная спецификация: EIP-1559. Сегодня поддержка EIP-1559 стала стандартом для современных кошельков — без неё пользователи уходят к конкурентам. Наше решение обеспечивает плавную интеграцию с минимальными доработками.
Как работают type-2 транзакции в мобильном кошельке?
Транзакция type 2 содержит три ключевых параметра вместо одного gasPrice:
- baseFee — автоматически рассчитывается протоколом, сжигается (не идёт майнеру). Увеличивается на 12.5% при заполненном блоке, уменьшается при пустом. Получить текущий:
eth_getBlockByNumber("pending", false)→ полеbaseFeePerGas. - maxPriorityFeePerGas (tip) — вознаграждение майнеру/валидатору. Минимальный tip для включения в блок — обычно 0.1–2 Gwei.
- maxFeePerGas — абсолютный максимум, который готов заплатить пользователь. Фактически списывается: min(maxFeePerGas, baseFee + maxPriorityFeePerGas). Разница возвращается.
// iOS — web3swift: построение EIP-1559 транзакции var transaction = CodableTransaction( type: .eip1559, to: recipientAddress, value: amount, data: Data() ) transaction.maxFeePerGas = baseFee + maxPriorityFee + buffer transaction.maxPriorityFeePerGas = maxPriorityFee transaction.chainID = BigUInt(1) // Ethereum Mainnet Как правильно отображать комиссии пользователю?
Пользователь видит maxFeePerGas = 50 Gwei, но если baseFee в момент майнинга равен 20 Gwei, а tip — 2 Gwei, заплатит 22 Gwei. Оставшиеся 28 Gwei вернутся. В UI лучше показывать ожидаемую комиссию (baseFee + tip) и максимально возможную (maxFeePerGas * gasLimit). Это снижает тревогу у пользователей, видящих большой максимум. Снижение затрат на комиссии достигает 30-50%.
Динамические подсказки комиссий: как настроить?
Рекомендуемые значения обновлять каждые 12 секунд (время блока Ethereum). Источники:
-
eth_feeHistory— расчёт percentile priority fee самостоятельно -
eth_maxPriorityFeePerGas— MetaMask-метод, поддерживается Infura, Alchemy, QuickNode - Blocknative Gas API — платный, но очень точный для Mainnet
// Android — получить рекомендованный priority fee val maxPriorityFeeResponse = web3j.send( Request("eth_maxPriorityFeePerGas", emptyList<Any>(), web3jService, EthMaxPriorityFeePerGas::class.java) ) val priorityFeeWei = maxPriorityFeeResponse.maxPriorityFeePerGas Сравнение legacy и EIP-1559 транзакций
| Параметр | Legacy (type 0) | EIP-1559 (type 2) |
|---|---|---|
| Цена газа | gasPrice (один параметр) | baseFee + maxPriorityFeePerGas + maxFeePerGas |
| Возврат переплаты | Нет | Да (разница между maxFee и фактической комиссией) |
| Предсказуемость | Низкая (зависит от аукциона) | Высокая (baseFee обновляется протоколом) |
| Поддержка сетей | Все EVM | Не все (BNB Chain, Arbitrum, Optimism) |
Сравнение источников динамических комиссий
| Источник | Бесплатный | Точность | Обновление |
|---|---|---|---|
| eth_feeHistory | Да | Средняя (зависит от percentile) | каждый блок |
| eth_maxPriorityFeePerGas | Да (Infura/Alchemy) | Высокая (MetaMask-алгоритм) | каждый блок |
| Blocknative Gas API | Нет | Очень высокая | real-time |
Как обрабатывать сети без поддержки EIP-1559?
BNB Chain использует legacy-формат с фиксированным gasPrice (по умолчанию 3 Gwei). Polygon поддерживает EIP-1559 с версии сети 26.x. Arbitrum и Optimism — собственные механизмы поверх EIP-1559. Приложение должно определять тип сети и выбирать соответствующий формат транзакции автоматически. Отправка type-2 транзакции в сеть без EIP-1559 вернёт ошибку unsupported transaction type. При получении такой ошибки приложение должно переключиться на legacy-формат: заменить type: .eip1559 на type: .legacy и указать gasPrice вместо maxFeePerGas и maxPriorityFeePerGas. Рекомендуется кэшировать тип сети после первой успешной отправки.
Пошаговая реализация EIP-1559 в мобильном кошельке
- Определите поддерживаемые сети по chainID и сохраните маппинг: для сетей с EIP-1559 используйте type-2, для остальных — legacy.
- Получайте baseFee через
eth_getBlockByNumber("pending", false)каждые 12 секунд и кэшируйте. - Вычислите рекомендованный priority fee через
eth_maxPriorityFeePerGasилиeth_feeHistory. - Сформируйте транзакцию type-2: задайте
maxFeePerGas= (baseFee + priorityFee) * 1.1 (буфер),maxPriorityFeePerGas= priorityFee. - В UI отобразите ожидаемую комиссию (baseFee + priorityFee) и максимальную (maxFeePerGas * gasLimit).
- При ошибке
unsupported transaction typeпереключитесь на legacy-формат и повторите отправку.
Почему стоит обновить кошелёк до EIP-1559?
Устаревшие кошельки с одним gasPrice заставляют пользователей переплачивать или ждать подтверждения часами. Внедрение EIP-1559 даёт предсказуемость, экономию до 40% на комиссиях и доверие пользователей. Большинство современных кошельков (MetaMask, Trust Wallet) уже поддерживают EIP-1559 — ваш кошелёк не должен отставать. Получите консультацию по интеграции EIP-1559 в ваш проект.
Что входит в реализацию
- Аудит текущего кошелька и выявление необходимых изменений.
- Реализация type-2 транзакций с корректным расчётом параметров.
- Интеграция динамических подсказок через RPC-методы.
- UI/UX: отображение ожидаемой и максимальной комиссии, автообновление.
- Поддержка множества EVM-сетей с автоопределением и fallback.
- Тестирование в mainnet и testnet с экстремальными сценариями.
- Документация, доступ к репозиторию, обучение команды и поддержка после внедрения.
Мы гарантируем корректную работу во всех популярных сетях, опираясь на проверенные методы и опыт более 50 реализованных проектов. Закажите аудит текущего кошелька — мы подготовим план перехода на EIP-1559.
Сроки и стоимость: 2–3 дня на базовую интеграцию, от 5 дней для сложных проектов с несколькими сетями. Стоимость работ составляет от $1.5k–4k в зависимости от сложности интеграции. Точная цена рассчитывается после аудита. Свяжитесь с нами для консультации и оценки вашего проекта.







