Могу ли я вызвать событие только для одного адреса в сети Ethereum? - PullRequest
0 голосов
/ 28 февраля 2020

Я работаю над 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 Ответ

0 голосов
/ 29 февраля 2020

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

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

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