Могу ли я инициировать событие только для одного адреса в сети Ethereum?

Я работаю над смарт-контрактом Ethereum, чтобы создать рынок между продавцами и покупателями. Когда кто-то (y) спрашивает продукт у (x), могу ли я инициировать событие, чтобы ТОЛЬКО (x) он получил новый запрос на его продукт??

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

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

def handle_event(event):
    if (event.args['_new_req'] == True ):
        print(' New request for the product ')
    else:
        print (' The request has been failed ')

def log_loop(event_filter, poll_interval):
    while True:
        for event in event_filter.get_new_entries():
            handle_event(event)
        time.sleep(poll_interval)
def _new_req_listen():
    block_filter = contract.events._new_req.createFilter(fromBlock = 'latest')

    worker1 = Thread(target=log_loop, args=(block_filter, 2))
    worker1.start()

Могу ли я отфильтровать одно и то же событие, которое будет запускаться в разных случаях или для разных людей в сети?

заранее спасибо

1 ответ

Решение

Я бы рекомендовал вам подумать об этом с точки зрения высокого уровня (алгоритма), не сразу переходя к коду.

Для вашего требования инициировать событие для конкретного человека (продавца), способ сделать это:

  • Один список событий. Структура данных события содержит свойство адреса "назначения". Вы можете установить "пункт назначения" на уникальное значение (например, 0x000000), чем означает "все", или вы можете установить "пункт назначения" для одного человека (например, адрес продавца).
  • Или создайте уникальный список событий для каждого продавца. Обработка событий должна иметь внешний цикл для перебора всех списков событий. У вас также может быть "глобальный" список событий, что означает, что событие отправляется каждому продавцу.
Другие вопросы по тегам