Что такое событие?

Что такое событие ?

Они используются только в Solidity?

Как определяются события?

Как инициируются события?

Существует ли стандартный термин для вызова события (вы говорите, что событие «произошло», «было вызвано», «было вызвано», «запущено»)?

Где в заголовке блока заканчивается событие?

Актуальны:

Как реализовать события в Solidity

Где в архитектуре Ethereum хранятся журналы событий контрактов?

см. также: media.consensys.net/…
используется термин «излучать»; Solidity.readthedocs.io/en/develop/…

Ответы (3)

Блокчейн — это список блоков, которые по сути являются списками транзакций. Каждая транзакция имеет прикрепленную квитанцию, содержащую ноль или более записей журнала. Записи в журнале представляют собой результат событий, инициированных смарт-контрактом.

В исходном коде Solidity, чтобы определить событие, вы помечаете его таким образом, вводя перед ним eventключевое слово (аналогично использованию functionключевого слова). Затем вы вызываете или запускаете событие в теле любой функции, которую вы хотите вызвать для генерации события. (Я сомневаюсь, что для этого есть стандартная формулировка). Вы можете запускать события из любой функции, используя emitключевое слово.

Вероятно, кто-то может добавить информацию о том, как «прослушивать» события в вашем DAPP. Он использует функции фильтрации Web 3.0 .

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

Это похоже на событие JavaScript, которое может быть вызвано чем-то, т.е. основанным на событии?
Да. Это. Наполнитель.
@FahadUddin В самой простой форме событие ТОЧНО печатает журнал. Поэтому это похоже на Javascript console.log. Вот и все, ни больше, ни меньше. В Solidity у него нет другой цели, кроме регистрации события в блокчейне. Однако вы можете прослушивать события в режиме реального времени из внешнего кода, чтобы использовать события в качестве своего рода push-уведомлений.
@slebetman возможно ли отменить () испускаемые события?
Если транзакция возвращается, события не генерируются. Если транзакция не возвращается, событие неизменно является частью цепочки. Вы не можете получить его обратно.
Извините, я все еще немного запутался. Так что же запускает запись транзакции в блокчейне? Это событие запускает процесс? или у EVM есть прослушиватель, когда вызывается функция передачи (требуемая протоколом)? Нужно ли вызывать функцию события?

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

Пример события из контракта кошелька:

event Deposit(address from, uint value);

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

Просто побочный вопрос, можно ли отменить отправленные события в журнал?
Все состояние цепочки откатывается при реорганизации или ни одно из них не откатывается. Отдельные события не могут быть отменены.
Я имею в виду, что если я использую revert()его, он будет откатывать события, как Transfer()правильно?
Да, откатится со всем остальным. Может быть только одна истина и транзакции либо полностью полные, либо никакие - атомарные.

Раздел 6.1 Подсостояние желтой бумаги (версия 7e819ec - 2019-10-20) включает описание:

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

Желтая книга предшествовала терминологии событий, но событие — это способ, с помощью которого DApps могут получать информацию в определенный момент во время выполнения кода смарт-контракта (EVM). Всякий раз, когда EVM встречает код операции LOG, узлы Ethereum генерируют событие, о котором DApps и внешние процессы могут быть уведомлены и доступны.

В Solidity коды emitопераций eventкомпилируются в LOG.