我可以在以太坊网络中只触发一个地址的事件吗?
Can I trigger an event for only one address in Ethereum network?
我正在研究以太坊智能合约,以在买卖双方之间建立市场。当某人 (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()
我可以过滤在不同情况下或针对网络中不同人触发的同一事件吗??
提前致谢
我建议您从高层次(算法)的角度考虑这个问题,而不是立即下降到代码。
对于为特定人(卖家)发起事件的要求,执行此操作的方法是:
- 一个事件列表。事件数据结构包含一个 "destination" 地址 属性。您可以将 "destination" 设置为一个唯一值(例如 0x000000)而不是 "everyone",或者您可以将 "destination" 设置为一个人(例如卖家的地址)。
- 或者,为每个卖家准备一个唯一的活动列表。您的事件处理将需要有一个外部循环来遍历所有事件列表。您还可以有一个 'global' 事件列表,这意味着每个卖家都会收到事件。
我正在研究以太坊智能合约,以在买卖双方之间建立市场。当某人 (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()
我可以过滤在不同情况下或针对网络中不同人触发的同一事件吗??
提前致谢
我建议您从高层次(算法)的角度考虑这个问题,而不是立即下降到代码。
对于为特定人(卖家)发起事件的要求,执行此操作的方法是:
- 一个事件列表。事件数据结构包含一个 "destination" 地址 属性。您可以将 "destination" 设置为一个唯一值(例如 0x000000)而不是 "everyone",或者您可以将 "destination" 设置为一个人(例如卖家的地址)。
- 或者,为每个卖家准备一个唯一的活动列表。您的事件处理将需要有一个外部循环来遍历所有事件列表。您还可以有一个 'global' 事件列表,这意味着每个卖家都会收到事件。