Запуск функции, когда транзакции Элронда имеют статус «успешно»

Я не нахожу способа автоматически запускать функцию, когда транзакции Элронда имеют статус «успешно».

Я жду некоторое время, пока транзакция не завершится (или я запрашиваю контракт, пока статус не станет «успешным»), но я хочу запустить какой-то код именно в тот момент, когда он завершится.

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
Другие вопросы по тегам