Запуск функции, когда транзакции Элронда имеют статус «успешно»
Я не нахожу способа автоматически запускать функцию, когда транзакции Элронда имеют статус «успешно».
Я жду некоторое время, пока транзакция не завершится (или я запрашиваю контракт, пока статус не станет «успешным»), но я хочу запустить какой-то код именно в тот момент, когда он завершится.
1 ответ
Я решил это, запрашивая API Элронда до тех пор, пока транзакция не достигнет состояния «успешно» (не очень эффективно).
def waiting_for_results(proxy, start_time, hashes):
i = 0
found = []
found_data = []
while len(found) < NUM_TRANS:
try:
data = proxy.get_transaction(hashes[str(i)], with_results=True)
dictio = data.to_dictionary()
print(i, end = "\r")
if dictio['status'] == 'success' and not found.__contains__(hashes[str(i)]):
ti, st, ep, ro, so, de = itemgetter('timestamp', 'status', 'epoch', 'round', 'sourceShard', 'destinationShard')(dictio)
obj = {
'hash': hashes[str(i)],
'start_time': start_time,
'end_time': current_milli_time(),
'timestamp': ti,
'status': st,
'epoch': ep,
'round': ro,
'sourceShard': so,
'destinationShard': de
}
found_data.append(obj)
found.append(hashes[str(i)])
except:
pass
finally:
i = (i+1)%NUM_TRANS
return found_data