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

Ethereum, впервые разработанный в 2013 году российско-канадским программистом Виталиком Бутериным, был разработан как платформа для самоисполняющихся, постоянных и неизменяемых DApps с различными вариантами использования, от финансов до игр и искусства.

DApps часто называют смарт-контрактами, которые представляют собой протоколы транзакций Ethereum, которые автоматически выполняют определенные функции и действия, такие как обработка транзакций, с заранее определенными условиями и соглашениями. Отправка транзакции, ее отмена или разрешение ожидающей транзакции Ethereum - это действия, связанные с функционированием смарт-контрактов.

Что такое транзакция Ethereum?

Транзакции - это криптографически подписанные инструкции со счетов.

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

Отправленная обычная транзакция Ethereum включает идентификатор отправителя или подпись, сгенерированную, когда закрытый ключ отправителя подписывает транзакцию и подтверждает, что отправитель авторизовал конкретную транзакцию Ethereum. Адрес получателя, количество ETH для перевода от отправителя к получателю, информация о комиссии за транзакцию Ethereum и необязательное поле для включения произвольных данных - все это часть отправленной обычной транзакции Ethereum.

Транзакции Ethereum должны быть добыты, чтобы стать действительными и требовать комиссии от отправителя.

Майнеры Ethereum проверяют законные транзакции, чтобы получить вознаграждение за свою работу по созданию нового ETH. Когда майнер решает криптографическую (математическую) головоломку, транзакция считается подтвержденной. Ethereum, как и Биткойн (BTC), имеет систему доказательства работы (PoW) для предотвращения кибератак со стороны одного человека или группы.

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

Жизненный цикл транзакции Ethereum

Транзакция Ethereum проходит через серию состояний, начиная с неизвестного состояния до тех пор, пока оно не будет подтверждено в блоке.

Неизвестно: неизвестное состояние относится к транзакции, которую сеть не видела или не обрабатывала.

Ожидание: когда транзакция находится в состоянии ожидания, она ожидает, пока майнеры заберут ее и обработают, что называется объединенной транзакцией, также называемой «пулом памяти». Поскольку майнеры отдают предпочтение более высоким ценам на газ, транзакции с более низкими ценами на газ могут задерживаться на стадии ожидания в течение длительного периода. Транзакции с самыми низкими ценами на газ могут никогда не быть выполнены, что приведет к тому, что они навсегда останутся «застрявшими» в состоянии ожидания.

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

Заменено: при возникновении любого из следующих обстоятельств транзакция может быть перемещена из состояния ожидания в состояние замены:

  • Новая транзакция с тем же одноразовым номером от того же отправителя переходит в состояние блокировки или
  • Другая транзакция с тем же значением nonce и ценой на газ выше на 12% переходит в стадию ожидания, на этот раз от того же отправителя.

Подтверждения транзакций Ethereum

Подтверждения транзакции Ethereum - это количество блоков, созданных с момента первого блока, который включал эту транзакцию.

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

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

Подтверждения транзакций Ethereum

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

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

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

Что такое одноразовый номер?

Одноразовый номер - это аббревиатура от «числа, используемого только один раз», относящаяся к общему количеству подтвержденных транзакций, отправленных с данного адреса Ethereum.

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

Как отменить транзакцию Ethereum?

Существует два основных метода отмены ожидающей транзакции Ethereum: отмена внутри приложения и установка пользовательского одноразового номера.

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

Решая эту проблему, пользователи должны помнить, что отмена может быть предпринята только в том случае, если транзакция еще не завершена в сети. Первый шаг, который им нужно сделать, - это проверить в обозревателе блоков, ожидает ли транзакция. В основном, чтобы вставить хэш транзакции, также известный как идентификатор транзакции Ethereum, и если обозреватель блоков говорит «ожидает», пользователи все равно могут попытаться отменить его.

Самый простой способ отменить застрявшую транзакцию Ethereum - это отмена внутри приложения, при которой пользователи должны выйти из приложения кошелька Ethereum и закрыть свой браузер, снова открыть его и снова войти в приложение.

Если эти действия не решают проблему, на помощь придет второй способ.

Отмена ожидающей транзакции Ethereum путем установки пользовательского одноразового номера означает создание транзакции 0 ETH с высокой ценой на газ на собственный адрес пользователя, чтобы предотвратить застревание предыдущей транзакции. Перед отправкой этой второй транзакции пользователи должны отметить одноразовый номер, используемый исходной ожидающей транзакцией, а затем повторно использовать тот же одноразовый номер, который они отметили.

Если у пользователей есть несколько ожидающих транзакций Ethereum, они предпочтительно начинают с самой старой или наименьшего значения nonce.

Как ускорить транзакцию Ethereum?

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

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

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

Если предыдущий шаг не сработал, пользователи могли перейти на вкладку «Дополнительно», чтобы установить цену на газ вручную.

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

Можно ли отменить транзакции Ethereum?

Кошельки Ethereum не могут отменить уже завершенные транзакции Ethereum.

Когда пользователи Ethereum случайно отправляют средства на неправильный адрес или отправляют неправильную сумму ETH, они могут отменить транзакцию, пока она еще не завершена. Когда транзакция подтверждена и отображается как «Успешная», что означает, что она была добавлена ​​в следующий блок, ее нельзя отменить. Блокчейн Ethereum спроектирован как неизменный, поэтому вводимые блоки данных необратимы. Зная это, важно убедиться, что данные транзакции верны, прежде чем нажимать кнопку отправки.

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

Источник