События (events)
Last updated
Last updated
События генерируются во время выполнения транзакции. Каждый модуль Move может определять свои собственные события и выбирать, когда генерировать события при выполнении модуля. Например, во время перевода монет обе учетные записи отправителя и получателя будут генерировать события SentEvent
и ReceivedEvent
, соответственно. Эти данные хранятся в реестре и могут быть запрошены через интерфейс REST .
Предположив, что учетная запись 0xcaa60eb4a01756955ab9b2d1caca52ed
отправила монеты другой учетной записи, то к интерфейсу REST можно было бы сделать следующий запрос:https://fullnode.devnet.aptoslabs.com/accounts/caa60eb4a01756955ab9b2d1caca52ed/events/0x1::Coin::CoinStore<0x1::TestCoin::TestCoin>/withdraw_events
. Вы получите все события WithdrawEvent,
хранящиеся в этой учетной записи, это будет выглядеть так:
Каждое зарегистрированное событие имеет уникальный ключ key
. Ключ 0x0000000000000000caa60eb4a01756955ab9b2d1caca52ed
соответствует событию 0x1::Coin::CoinStore<0x1::TestCoin::TestCoin>/sent_events
, зарегистрированному в учетной записи 0xcaa60eb4a01756955ab9b2d1caca52ed
. Затем этот ключ можно использовать для прямого запроса событий, например: https://fullnode.devnet.aptoslabs.com/events/0000000000000000caa60eb4a01756955ab9b2d1caca52ed
.
Они представляют собой потоки событий или список событий, каждая запись которого содержит последовательно увеличивающийся sequence_number
начиная с 0
, type
и data
. Каждое событие должно быть определено некоторым типом type
. Может быть несколько событий, определенных одним и тем же или подобными типами type
s, особенно при использовании дженериков. События имеют связанные данные data
. Общий принцип заключается в том, чтобы включить все данные, необходимые для понимания изменений базовых ресурсов до и после выполнения транзакции, которая изменила данные и вызвала событие.