Добавить в корзинуПозвонить
Найти в Дзене
Codder

Ethereum Solidity, смарт-контракты - Event; Tutorial

Событие - встроенный в язык смарт-контрактов(Solidity) инструмент позволяющий особым образом вести журнал событий EVM. Благодоря событиям блокчейн может передавать информацию другим сервисам/приложениям в реальном времени. Переменные для статьи: event = событие При разработки RTA(real time application) принято использовать различные брокеры/диспетчеры сообщений такие как redis или kafka, в мире смарт-контрактов и блокчейна для этой задачи популярны события. Путь: Шаг 1 | написать смарт-контракт Разбор кода: Наш смарт-контракт готов, осталось выгрузить его в testnet, я буду использовать remix ide и goerli test network. Показывать процесс выгрузки я не буду, это тема для отдельной статьи, пока можно посмотреть подробное видео. Шаг 2 | написать скрипт для прослушивания событий Для взаимодействия с testnet нам нужно подключиться к blockchain node, тут подойдет сервис alchemy, это провайдер для подключения node. Разбор кода: Запускаем слушатель событий и вызываем функцию greet в смарт-к
Событие - встроенный в язык смарт-контрактов(Solidity) инструмент позволяющий особым образом вести журнал событий EVM. Благодоря событиям блокчейн может передавать информацию другим сервисам/приложениям в реальном времени.

Переменные для статьи:

event = событие

При разработки RTA(real time application) принято использовать различные брокеры/диспетчеры сообщений такие как redis или kafka, в мире смарт-контрактов и блокчейна для этой задачи популярны события.

Путь:

  1. написать смарт-контракт - solidity
  2. написать скрипт для прослушивания событий - js/ts

Шаг 1 | написать смарт-контракт

-2

Разбор кода:

  • Событие Greeted определяется с помощью ключевого слова event, затем нужно придумать название для события, название может быть любым, но его принято писать с большой буквы. В скобках мы определяем атрибуты события: sender - адрес вызвавший функцию, greeting - приветствие.
  • Фунцкия greet принимает параметр greeting, затем вызывает событие Greeted и передает в него адрес вызвавший функцию и параметр greeting.

Наш смарт-контракт готов, осталось выгрузить его в testnet, я буду использовать remix ide и goerli test network. Показывать процесс выгрузки я не буду, это тема для отдельной статьи, пока можно посмотреть подробное видео.

Шаг 2 | написать скрипт для прослушивания событий

Для взаимодействия с testnet нам нужно подключиться к blockchain node, тут подойдет сервис alchemy, это провайдер для подключения node.

-4

Разбор кода:

  • Библиотека ethers js, импортируем ее в самом началае, она нужна для взаимодействия с нашим контрактом.
  • ABI бывает разных типов, здесь мы используем human readable интерфейс для взаимодействия с контрактом, в нем мы прописываем нашу функцию и событие.
  • Функция main создает instance нашего контракта c помощью функции Contract, которая на вход принимает адрес контракта, url провайдера и abi интрефейс. Теперь, мы можем обращаться к контракту. с помощью метода .on мы подписываемся на событие Greeted, берем атрибуты события и информацию о самом событии и затем логируем.

Запускаем слушатель событий и вызываем функцию greet в смарт-контракте. После отправки транзакции слушатель распечатает следующую информацию:

  • sender - адрес вызвавший функцию
  • greeting - текст приветсвия
  • event - подробная информация о событие
-5

Краткий экскурс в solidity events завершен, если что то было непонятно - жду ваши вопросы в комментариях.

Спасибо за внимание!