Транзакции Ethereum: как работают и как проверить

6 лет назад
Транзакции Ethereum

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

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

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

Транзакции Ethereum — это операция по отправке подписанного пакета с данными, инициированная участником сети (аккаунтом). Под операцией имеется в виду пересылка какого-то количества ETH, запуск записанного в контракте кода (программы) или же создание нового контракта.

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

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

Содержимое транзакций Эфириума

Транзакции в сети Эфириум

Каждая операция по переводу Ethereum содержит стандартный набор данных:

  • transaction hash (хеш транзакции) — уникальный номер, состоящий из цифр и букв латинского алфавита, использующийся для идентификации;
  • номер блока, в котором записаны данные о транзакции;
  • адрес кошелька (аккаунта), который является получателем;
  • цифровая подпись, подтверждающая намерение отправителя провести транзакцию;
  • value — количество эфира, которое пересылается (может равняться 0);
  • gas limit — предельное количество газа, разрешенное для расходования на выполнение транзакции;
  • gas price — установленная пользователем цена за единицу газа;
  • gas Used — фактически использованное на обработку транзакции количество газа;
  • transaction fee — плата за проведение операции;
  • data — необязательное для заполнения поле, в котором можно указать сообщение для получателя.
Содержимое транзакций Ethereum // Источник: Etherescan.io

Понятие газа и его функция в сети Ethereum

За проведение транзакции Ethereum отправитель должен оплатить комиссию майнерам, которые ее подтверждают и записывают в блокчейн. Эта оплата производится в единицах, которые называются «gas».

Gas (газ) — динамический показатель, выражающий объем вычислительных операций в блокчейне, выполняемых во время проведения транзакции. По сути это внутренняя валюта сети Эфириума, расходуемая на выполнение операций. Также можно провести аналогию с топливом, обеспечивающим движение пакетов данных внутри блокчейна эфира.

Значение лимита газа в транзакциях эфира

Как работает блокчейн Эфириум

При отправке транзакции Эфириум пользователь указывает максимально возможное количество газа (gas limit), которое он готов потратить на ее проведение. Таким образом, он страхуется от чрезмерных комиссионных расходов в случае сбоев в сети.

Минимально необходимое значение газа для проведения транзакции эфира — 21000. Однако рекомендуется выставлять большее значение gas limit, с запасом, который даст уверенность в том, что транзакция завершится успешно.

Неизрасходованное количество газа всегда возвращается на баланс отправителя. Но если указанного лимита не хватит на успешное выполнение транзакции, она будет возвращена отправителю со статусом «failed» (неудачная). При этом он все равно заплатит комиссию майнерам, так как они расходуют определенные вычислительные ресурсы на обработку операции, независимо от ее результата.

Стоимость газа и ее влияние на скорость проведения транзакций

Цена газа (gas price) исчисляется в wei — самой маленькой неделимой частице Ethereum. Однако большинство веб-сервисов, кошельков и бирж отображают этот показатель в gwei (1 млрд wei) или непосредственно в ETH.

Комиссия, которая в итоге оплачивается за проведение транзакции рассчитывается путем умножения стоимости газа на его фактически использованное количество.

Цена газа не имеет фиксированных значений и устанавливается на усмотрение пользователя. При этом от указанного значения gas price будет зависеть скорость подтверждения транзакций: майнеры обрабатывают их в порядке очереди, которая формируется по принципу ценовой приоритетности — сначала самые выгодные, потом более дешевые.

Узнать актуальную стоимость газа и примерное время подтверждения Эфириум-транзакций при выборе разных вариантов можно на сайте ethgasstation.info.

Рекомендуемые варианты цены газа для ETH-транзакций // Источник: Ethgasstation.info

Нюансы проведения транзакций в сети Эфириум

Транзакции Эфириум

Для того чтобы Эфириум-транзакция прошла проверку со стороны сети и была исполнена, она должна соответствовать ряду требований:

  • Транзакция проводится в формате RPL и содержит цифровую подпись отправителя;
  • Статистика по числу исходящих операций, указанная в транзакции, совпадает с аналогичными данными в аккаунте;
  • Количество газа, требующегося для проведения операции по пересылке средств, меньше или равно установленному пользователем лимиту;
  • На балансе отправителя, кроме отправляемого количества ETH, имеется достаточно средств для оплаты авансовых комиссионных сборов (лимит газа умноженный на указанную пользователем стоимость).

Если все эти условия соблюдены, транзакция признается валидной (корректной) и принимается в обработку, которая состоит из следующих этапов:

  1. С баланса отправителя снимается аванс, а количество исходящих транзакций увеличивается на 1.
  2. Подсчитывается остаток эфира на счету аккаунта.
  3. Начинается непосредственная операция по переводу средств.
  4. Происходит обработка (подтверждение) транзакции майнерами.
  5. Транзакция завершается и ей присваивается статус «Success» (успешно).
  6. Отправитель получает обратно неиспользованный газ, а баланс аккаунта получателя пополняется пересылаемыми в рамках обработанного перевода средствами.

Также советуем вам посмотреть наше интересное видео о том, что планируют разработчики Ethereum:

Будущее масштабное обновление Эфириума

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

Что проверить транзакцию Эфириум нужно: 

  1. Знать хеш транзакции;
  2. Зайти на сайт обозреватель блоков;
  3. Ввести хеш транзакции. 

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

Чтобы проверить транзакцию Эфириума, нужно воспользоваться специальным обозревателем блоков (эксплорером), такими как:

Детали любого перевода отобразятся в выбранном для этой цели эксплорере сразу же после ввода хеша (tx hash).

Детали транзакции по переводу Ethereum // Источник: Etherescan.io

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

Получение хеша транзакции при выводе средств с биржи // Источник: Bittrex.com

Если в эксплорере указать хеш зависшей ETH-транзакции, которая долго не достигает адресата, в строке ее статуса будет отображаться «Pending» (обрабатывается). Там же можно будет увидеть предположительное время до ее завершения.

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

  • Хеш;
  • Номер блока, в который она включена;
  • Возраст транзакции;
  • Адрес аккаунта отправителя и получателя;
  • Вид транзакции (исходящая/входящая);
  • Количество переведенных средств;
  • Комиссия.
Просмотр ETH-аккаунта в Etherscan // Источник: Etherscan.io

Способ отмены транзакции Ethereum

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

Для этого нужно получить доступ к кошельку, из которого были отправлены средства, с помощью веб-сервиса MyEtherWallet (MEW), зайти в меню «Отправить», выбрать «Отправить офлайн» и сформировать транзакцию, которая отменит зависший Ethereum-перевод.

При этом указывается сумма отправки, равная 0 ETH, а в поле «Цена газа» вводится более высокое, чем в зависшем переводе, значение, рекомендуемое сервисом ethgasstation.info.

Ключевым моментом является правильное заполнение строки «Nonce» — сюда нужно вставить соответствующее значение из аналогичной строки в данных зависшего перевода. Этот параметр отображает порядковый номер ETH-транзакции, которую необходимо отменить. Если до этого в аккаунте было, например, 37 успешно завершенных переводов средств, Nonce зависшего будет равняться 38 (37+1).

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

Пример отмены транзакции через MEW // Источник: Myetherwallet.com

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

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

Читайте также:

Блокчейн Ethereum: принцип работы, экосистема, перспективы

Хардфорки Ethereum: история развития сети эфира

Бутерин против всех. За что борется создатель Ethereum?