Как проверить транзакцию в сети Ethereum

Как проверить транзакцию в сети Ethereum

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

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

Виды аккаунтов

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

Транзакции и блоки

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

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

  • Адрес получателя;
  • Подпись отправителя, созданную с помощью его ключа;
  • Сумму перевода в эфирах (может равняться нулю);
  • Цену, которую отправитель готов заплатить за единицу газа;
  • Лимит газа, выделенного на выполнение;
  • Сообщение, если нужно отправить данные в контракт.

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

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

Газ

Полные ноды тратят на подтверждение транзакций, вычисления и выполнение смарт контрактов свои мощности. Эфириум изначально задумывался как платформа для смарт контрактов. Чтобы обеспечить среду выполнения для них, эфириум использует EVM (децентрализованную виртуальную машину). Контракты запускаются в EVM на каждой ноде, и все вычисления по ним дублируются. Это делает их выполнение очень ресурсоемким.

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

Комиссия имеет собственную единицу измерения, называемую «газ» (от англ. gas — топливо, горючее). Отправитель сам назначает цену газа в эфириумах для каждой транзакции и указывает ее при отправке. Транзакции состоят из операций, каждая из которых подлежит отдельной оплате. Также указывает лимит газа, т.е. его максимальное количество, которое отправитель готов потратить.


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

Расчет стоимости

Каждая операция имеет цену. Перевести эфириум с одного аккаунта на другой стоит 21000 gas. С полным прайсом на операции можно ознакомиться в Yellow Paper (технический документ, описывающий работу Etherium).

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

Стоимость одного gas отправитель назначает самостоятельно. Стоимость комиссии будет равна количеству gas, умноженному на его стоимость в etc. Подобно биткоину у эфириума есть пул транзакций. При большой очереди время на их выполнение может возрастать. Майнеры могут выбирать, какие платежи они обработают в первую очередь. Естественно, это будут сделки с наибольшей стоимостью gas, потому что они дадут больше прибыли. Таким образом, операции с наибольшей комиссией будут проведены быстрее. Как проверить, является ли цена за единицу gas адекватной? Сервис Ethgasstation.info поможет сориентироваться по стоимости gas и выбрать оптимальную.

Как происходит транзакция

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

  • Она должна быть в формате RLP;
  • Должна быть подписана отправителем;
  • Количество операций, отправленных с аккаунта, должно совпадать с указанным количеством в теле самой транзакции;
  • Заданное количество топлива должно быть меньше или равно лимита топлива. В общее количество топлива обязательно должно быть включено:
    • обязательные 21 000 gas для выполнения перевода;
    • комиссия для отправки данных о платеже;
    • 32000 gas дополнительно для создания смарт контракта;
  • Баланс инициатора должен содержать сумму, которой хватит на оплату аванса. Аванс равняется лимиту газа, умноженному на цену газа, заданную отправителем, с прибавленным к этой сумме общим количеством топлива, пересылаемого от отправителя к получателю.

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

Где посмотреть результаты

Для каждого платежа создается журнал. Благодаря журналам существует возможность отследить платежи ethereum. Запись в журнале содержит:

  • Адрес регистратора журнала
  • Задачи, отображающие события, выполненные в ходе сделки;
  • Данные, относящиеся к событиям.

Хранение журналов организовано в заголовках блоков с помощью фильтров Блума, позволяющих хранить бесконечный объем данных. Благодаря данным, содержащимся в журналах, эфириум может создать чек для каждой из сделок.Чек предоставляет следующую информацию:

  • Номер блока;
  • Хэши блоков и платежей;
  • Количество использованного gas;
  • Записи журнала, сделанные в ходе выполнения.

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

  • Etherchain.org;
  • Etherscan.io;
  • Etherapps;
  • Ethercamp.

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

Ссылка на основную публикацию
Похожие публикации