0

我正在研究以太坊智能合约,以在买卖双方之间建立一个市场。当某人 (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()

我可以过滤在不同情况下或为网络中的不同人触发的相同事件吗?

提前致谢

4

1 回答 1

0

我建议您从高级(算法)的角度考虑这一点,而不是立即下降到代码。

对于您为特定人(卖家)提出活动的要求,执行此操作的方法是:

  • 一份活动清单。事件数据结构包含一个“目的地”地址属性。您可以将“目的地”设置为一个唯一值(例如 0x000000)而不是“所有人”,或者您可以将“目的地”设置为一个人(例如卖家的地址)。
  • 或者,为每个卖家提供一个独特的活动列表。您的事件处理需要有一个外部循环来遍历所有事件列表。您还可以拥有一个“全球”事件列表,这意味着每个卖家都会收到该事件。
于 2020-02-29T03:21:48.713 回答