fbpx

Как протолкнуть и отменить транзакцию

21.03.2022 18.07.2022
4 мин
1553
16
Как протолкнуть и отменить транзакцию.

Совершая переводы может случиться так, что транзакция может зависнуть в состоянии “Pending” и в некоторых случаях ждать ее завершение можно до нескольких дней. Связано это может быть с ростом загруженности сети или низкими значениями газа, которые были выставлены для оплаты комиссии. Данная проблема является популярной в сети Ethereum, поскольку именно в ней комиссии за перевод могут варьироваться от 15$ до 200$ в зависимости от нагрузки. Далее мы поговорим о том как можно выгодно совершать переводы, а также как ускорить или отменить повисшую транзакцию.

Совершение транзакций

В сетях на основе EVM комиссии за любую операцию выражаются в газе и оплачиваются в основной валюте сети:

  • Ethereum — ETH
  • BSC — BNB
  • Polygon — Matic
  • Avalanche — AVAX
  • и др.

В случае с Ethereum блокчейн поддерживают майнеры, которые затратили вычислительные мощности для проверки и подтверждения (или неподтверждения) вашей транзакции. За это они получают вознаграждение в виде комиссионных, поскольку иначе у них не было бы стимула обеспечивать функционирование сети. Важно то, что комиссия выплачивается независимо от того, успешно или нет завершена операция, так как были затрачены мощности, которые должны быть оплачены.

Разберем пример осуществления транзакции в сети Ethereum при помощи Metamask. Желая осуществить перевод, нажимаем “Отправить” и в поле поиска вводим адрес получателя платежа, после чего выбираем монету для перевода, вводим необходимую сумму и нажимаем “Далее”. Важно, что если вы отправляете ETH, то комиссия за перевод учитывается сверх введенной суммы. Учитывайте это при выполнении операций.

Прежде чем подтвердить отправку, вы увидите окно с информацией о совершаемой операции где:

  • Estimated gas fee — предполагаемая плата за газ;
  • Max fee — максимальная плата за газ, которая может быть уплачена в рамках данной операции.
  • Max amount — максимальное суммарное значение транзакции (сумма перевода + max fee)

Нажимая редактировать вы можете выбрать размер уплачиваемой комиссии из трех предлагаемых вариантов, который рассчитывается автоматически на основе состояния сети в данный момент. “Расширенные опции” мы рассмотрим чуть ниже.

Выбираем нужный вариант, сохраняем и подтверждаем отправку средств. Во вкладке “Активность” можно получить информацию о статусе совершаемой операции. Чтобы получить больше данных, воспользуйтесь обозревателем блоков той сети, в которой вы совершали операцию.

Как выставить комиссию вручную?

Данная информация затрагивает преимущественно блокчейн Ethereum, поскольку в других сетях нет такого количества приложений и пользователей, а следовательно нагрузка на эти сети небольшая и комиссии за перевод не достигают запредельных значений. Стоит отметить, что методы ускорения и отмены транзакции будут работать и в них, например для участия в сейлах FCFS (кто первый того и тапки), в которых можно выставить большее значение комиссии для приоритетной обработки транзакции. Такой подход еще называют Gas War (газовые войны).

В Metamask можно указать собственные значения газа. Для этого в разделе редактирования комиссий необходимо выбрать “Расширенные опции”.

Теперь более детально разберем понятие газа. Говоря о нем нужно выделить два понятия:

  • Предел топлива (лимит газа) — это максимальное количество газа, которое мы готовы потратить;
  • Цена газа — цена за каждую единицу газа;

Чтобы было проще, представьте предел топлива как количество литров бензина, а цену газа как цену за один литр бензина, где GWEI — это единица измерения газа.

1GWEI = 0,000000001 ETH

Для транзакций ETH стандартное значение предела топлива составляет 21000. При совершении транзакций, не нужно уменьшать это значение, поскольку транзакция будет отменена из-за ошибки “Out of Gas”.

Чтобы посчитать общую стоимость комиссии необходимо умножить лимит газа на его цену. Итак, значение лимита газа остается неизменным — 21000, как определить, какую цену за газ необходимо выставить?

Перед тем как совершать транзакции обратитесь к ресурсам по отслеживанию комиссий в сети. Для сети Ethereum можете воспользоваться ethergasstation или установить расширение для Google.

Если мы возьмем цену за газ 46 GWEI, тогда комиссия за совершение транзакции составит:

21000*46GWEI=966000,

а учитывая, что 1GWEI = 0,000000001 ETH, тогда комиссия за совершение транзакции составляет 0,000966 ETH.

Возвращаясь к Metamask, можно увидеть два поля для ввода значений цены за газ, где:

  • Max priority fee — это чаевые майнеру, чем выше данное значение, тем приоритетнее ваша транзакция для обработки;
  • Max fee — это максимальная сумма, которую вы готовы заплатить (базовая плата + priority fee).

Комиссии за совершение транзакций, уплачиваемые пользователями, идут непосредственно майнеру, который добавляет эти транзакции в блоки. Очевидно, что майнеру выгоднее сперва добавлять транзакции с более высокой комиссией. Установив более высокую цену за газ, ваша транзакция будет обработана быстрее.

Отменить транзакцию

В большинстве случаев отправленную транзакцию невозможно отменить, поскольку одно из основных свойств блокчейна — это его неизменность. Если перевод завершен успешно, отменить или как-то повлиять на совершение операции невозможно. Но отменить транзакцию можно до момента ее включения в цепочку блоков, пока она находится в мемпуле и дожидается своей очереди. Отменять транзакцию можно по разным причинам, например если цена за газ выставлена слишком низкая и транзакция повисла в ожидании.

1. Итак, если вы хотите отменить транзакцию, сперва убедитесь, что ее статус находится в состоянии “Pending”. Для этого скопируйте хэш транзакции и вставьте его в поле поиска обозревателя блокчейна.

2. Если транзакция в ожидании, то чтобы отменить ее вам необходимо отправить пустую транзакцию на свой же адрес, но указав при этом то же значение “nonce” транзакции. Значение “nonce” можно найти деталях о транзакции в Metamask или по хэшу транзакции в обозревателе кликнув “Click to see More”.

3. Далее переходим в настройки Metamask и во вкладке “Дополнительно” включаем функцию “Настроить одноразовый номер транзакции”.

4. Копируем адрес собственного кошелька и создаем новую транзакцию на этот же адрес. Выбираем нужный актив и выставляем количество 0 для отправки.

5. В поле “индивидуальный одноразовый номер” вставляем то же значение “nonce”, что и у повисшей транзакции.

6. В новой транзакции укажите равное или большее значение газа необходимое для данного состояния сети, чтобы она прошла быстрее предыдущей транзакции, тем самым отменив ее.

Как протолкнуть транзакцию?

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

  1. Вставьте в поиск обозревателя блокчейна хэш транзакции и убедитесь, что транзакция находится в статусе “Pending”.
  2. Также нам понадобиться значение “nonce”, которое можно найти деталях о транзакции в Metamask или по хэшу транзакции в обозревателе блокчейна кликнув “Click to see More”.

3. Далее переходим в настройки Metamask и во вкладке “Дополнительно” включаем функцию “Настроить одноразовый номер транзакции”.

4. Создаем новую транзакцию, указываем адрес получателя, выбираем нужный актив и вводим сумму для отправки.

5. В поле “индивидуальный одноразовый номер” вставляем то же значение “nonce”, что и у повисшей транзакции.

6. Далее идем на ethgasstation и смотрим актуальные комиссии в сети. Выставляем приоритетный размер комиссии и подтверждаем транзакцию. После успешного завершения новой транзакции, старая будет отменена.

Материал подготовлен автором канала The Wolf Of Your Street. Поддержите автора подпиской!

Как вам статья?

16
0

статьи на эту же тему

Proof of Work vs. Proof of Stake
avatar Макс Гришко
17.08.2022
Подключение аккаунта Metamask к сети Kucoin...
avatar Артем Падалкин
30.05.2022
Social Media
avatar Макс Гришко
12.04.2022