Транзакция — метод взаимодействия между аккаунтами, вследствие которого происходит обновления состояния сети Ethereum. Например меняются балансы ETH отправителя и получателя.
Транзакция представляет собой криптографически-подписанное сообщение, которое содержит информацию о том, кто отправитель, кто получатель, какую сумму необходимо отправить, а также дополнительные данные, необходимые для выполнения операции.
Для исполнения транзакции или взаимодействия со смарт контрактом требуется оплата Gas. Выполняются транзакции в EVM (Ethereum Virtual Machine), которая обеспечивает исполнение смарт-контрактов и других операций в блокчейне Ethereum.
Что содержит в себе транзакция?
Как правило транзакция включает в себя следующую информацию:
recipient
— адрес получателя или адрес смарт контракта в сети Ethereum. (или нулевой адрес)signature
— подпись, которая генерируется в процессе подтверждения транзакции закрытым ключем отправителя. Представляет собой идентификатор отправителя и подтверждение того, что отправитель авторизовал транзакцию.value
— сумма ETH для перевода на адрес получателя или смарт контракта.data
— произвольные данные, зависящие от вызорва конкретного контракта.maxPriorityFeePerGas
— максимальная цена за газ, которая может быть использована.gasLimit
— максимальное количество единиц газа, которое может быть использовано.maxFeePerGas
— максимальное количество денег, который пользователь готов потратить на gas.
Типы транзакций в Ethereum
В сети Ethereum существует несколько типов транзакций:
- Обычные транзакции - самый простой тип транзакий в сети Ethereum. Подрозумивает собой перевод средств с одной аккаунта на другой. Например: Боб переводит 0.01 ETH на счет Кати.
- Транзакции развертывания - применяются для развертывания смарт контрактов в сети Ethereum, в таком случае адрес «to» отсутствует.
- Транзакция вызова - применяется для взаимодействия со смарт-контрактом, в таком слшучае адрес «to» является адресом самого контракта.
- Транзакция самоуничтожения (Self-destruct contract transactions) - применяется для удаление смарт контракта с сети Ethereum.
Жизненный цикл транзакции
Как же проходит весь жизненный цикл транзакции от момента ее инициализации до внесения изменений в блокчейне? Все очень просто (нет)!
После подтверждения отправки транзакции генерируется хэш, который включается в пул с другими, пока ещё невыполненными транзакциями. Чтобы транзакция перешла в статус выполнения нужно подождать... Подождать пока выполняться более приоритетные транзакции, ведь Ethereum имеет механизм выбора транзакций для включения в блоки на основе цены газа. Дальше транзакция получает подтверждение и создается новый блок в который она включается.
Способы вызова транзакции
В Ethereum есть разные способы вызова транзакций. Рассмотрим наиболее распространенные из них:
- Кошельки и биржи. Самый простой и популярный способ, обычно биржи и кошельки предоставляют пользовательский интерфейс для выполнения транзакций. Пользователь должен ввести адрес, сумму, возможно настроить газ, несколько раз нажать "Подтвердить" и вуаля! ETH улетает на другую часть земного шара.
- Программные интерфейсы (API). Существует множество программных интерфейсов, которые позволяют разработчикам и компаниям интегрировать Ethereum в свои приложения. API обычно предоставляют функции для вызова транзакций, отправки и получения эфира, а также для выполнения других операций.
- Командная строка (CLI). С помощью CLI (Comand Line Interface) можно вызывать транзакции напрямую через терминал. Например,
geth
позволяет выполнить транзакцию командойsendTransaction
. - DApps. Многие смарт-контракты написанные на языке программирования Solidity имеют веб-интерфейсы позволяющие пользователям взаимодействовать с контрактом и вызывать транзакции напрямую через браузер.
- Автоматические контракты. Контракты настраиваются так, чтобы они вызывали транзакции автоматически при определенных условиях. Например, контракт переводит NFT в ответ на получение определенной информации или изменения какого-то стейта.
Каждый из этих способов имеет свои преимущества и недостатки и используется в самых разных целях.
Итог
Теперь вы знаете что такое транзакции в сети Ethereum, как они устроены, из чего состоят и как вызываются. Похожим образом транзакции работают и в других сетях. Не эфиром едины!
Подпишись и получи доступ к бесплатным курсам и обучающим материалам от Solidity University! Изучай Solidity и Блокчейн Разработку вместе с нами!