События

События генерируются во время выполнения транзакции. Каждый модуль Move может определять свои собственные события и выбирать, когда генерировать эти события при выполнении модуля. Например, во время перевода coin учетные записи отправителя и получателя будут выдавать SentEvent и ReceivedEvent соответственно. Эти данные хранятся в реестре и могут быть запрошены через функцию Get events by event handle интерфейса REST.

Если предположить, что учетная запись 0xc40f1c9b9fdc204cf77f68c9bb7029b0abbe8ad9e5561f7794964076a4fbdcfd отправила coins на другую учетную запись, можно сделать следующий запрос к REST-интерфейсу: https://fullnode.devnet.aptoslabs.com/accounts/c40f1c9b9fdc204cf77f68c9bb7029b0abbe8ad9e5561f7794964076a4fbdcfd/events/0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>/withdraw_events. В результате будут получены все WithdrawEvents средств, хранящиеся на этой учетной записи, это будет выглядеть следующим образом

[{
  "key":"0x0000000000000000caa60eb4a01756955ab9b2d1caca52ed",
  "sequence_number":"0",
  "type":"0x1::coin::WithdrawEvent",
  "data":{
    "amount":"1000"
  }
}]

Каждое зарегистрированное событие имеет уникальный ключ. Ключ 0x0000000000000000c40f1c9b9fdc204cf77f68c9bb7029b0abbe8ad9e5561f7794964076a4fbdcfd отображает событие 0x1::coin::CoinStore<0x1: :aptos_coin::AptosCoin>/sent_events зарегистрированный на учетной записи 0xc40f1c9b9fdc204cf77f68c9bb7029b0abbe8ad9e5561f7794964076a4fbdcfd. Затем этот ключ можно использовать для прямого запроса событий, например, https://fullnode.devnet.aptoslabs.com/events/0000000000000000c40f1c9b9fdc204cf77f68c9bb7029b0abbe8ad9e5561f7794964076a4fbdcfd.

Они представляют собой потоки событий, или список событий, каждая запись которого содержит последовательно возрастающий номер sequence_number, начинающийся с 0, type и data. Каждое событие должно быть определено каким-либо type. Может быть несколько событий, определенных одним и тем же или похожими type, особенно при использовании generics. События имеют ассоциированные data. Общий принцип заключается в том, чтобы включать все data, необходимые для понимания изменений в базовых ресурсах до и после выполнения транзакции, которая изменила данные и вызвала событие.

Last updated