События смарт-контракта

Я разрабатываю Dapp, который содержит уведомление между двумя пользователями. например :

  • Пользователь 1 (Студент): отправьте транзакцию, содержащую данные для подтверждения.

  • Пользователь 2 (профессор): получите уведомление для проверки данных студента.

  • Пользователь 1 (Студент): получить уведомление об ответе профессора.

невозможно реализовать этот вариант использования с помощью событий смарт-контракта? Я взглянул на web3.shh, но похоже, что в нем отсутствует документация.

Ответы (1)

Вы можете сделать это, создав свое событие в своем смарт-контракте, например:

event StudentData(address indexed _professorAddr, string indexed _studentData)

Затем, используя web3 API, вы можете смотреть/прослушивать эти события, фильтруя адрес профессора по экземпляру и инициируя любое действие, например уведомление, когда событие реализуется.

См. документацию о прослушивании событий.

Спасибо за быстрый ответ. но сколько времени может жить событие? скажем, профессор откроет приложение через 3 недели после отправки студентом?
Согласно документации Solidity о событиях, кажется, что журналы событий хранятся в блокчейне, поэтому я думаю, что события сохраняются долгое время, пока жив блокчейн. Итак, в вашем случае, когда профессор открывает Dapp, функция отслеживания событий начинает слушать от первого блока до последнего и показывает вам их все.
Цитируя документы Solidity: «Эти журналы связаны с адресом контракта, включены в цепочку блоков и остаются там до тех пор, пока блок доступен (на данный момент навсегда, но это может измениться с Serenity)».