public function invalidateProvisionalTransactions($found_addresses, $parsed_tx, $confirmations, $block_seq, $block, $block_event_context) { if ($confirmations < self::CONFIRMATIONS_TO_INVALIDATE_PROVISIONAL_TRANSACTIONS) { return; } $invalidated_provisional_transactions = $this->provisional_transaction_invalidation_handler->findInvalidatedTransactions($parsed_tx, $block_event_context['provisional_txids_by_utxo']); if ($invalidated_provisional_transactions) { foreach ($invalidated_provisional_transactions as $invalidated_provisional_transaction) { // send notification $invalidated_parsed_tx = $invalidated_provisional_transaction->transaction['parsed_tx']; $invalidated_found_addresses = $this->findMonitoredAndPaymentAddressesByParsedTransaction($invalidated_parsed_tx); $this->sendNotificationsForInvalidatedProvisionalTransaction($invalidated_parsed_tx, $parsed_tx, $invalidated_found_addresses, $confirmations, $block_seq, $block); // remove the provisional transactions $this->provisional_transaction_repository->delete($invalidated_provisional_transaction); // update accounts AccountHandler::invalidate($invalidated_provisional_transaction); try { TXOHandler::invalidate($invalidated_provisional_transaction); } catch (Exception $e) { EventLog::logError('utxo.send.error', $e, ['txid' => $parsed_tx['txid'], 'confirmations' => $confirmations]); throw $e; } } } }