int main(int argc, char *argv[]) { std::istream &in = input_file(argv[1]); unsigned int blocknum, overhead; txmap block; std::unordered_map<bitcoin_txid, tx *> knowns; while (read_blockline(in, &blocknum, &overhead, &block, &knowns, NULL)) { u64 seed; size_t ibltslices; raw_iblt *theirs = read_iblt(in, &ibltslices, &seed); txmap mempool; std::string peername; while (read_mempool(in, &peername, &mempool, &knowns, NULL)) { if (!theirs) { std::cout << blocknum << "," << overhead << ",0," << peername << "," << true << std::endl; } else { // Create our equivalent iblt. raw_iblt ours(theirs->size(), seed, mempool); std::cout << blocknum << "," << overhead << "," << ibltslices << "," << peername << "," << recover_block(*theirs, ours, seed, mempool, block) << std::endl; } } } }
void CurrentBlockchainStatus::start_monitor_blockchain_thread() { bool testnet = CurrentBlockchainStatus::testnet; TxSearch::set_search_thread_life(search_thread_life_in_seconds); if (!import_payment_address_str.empty() && !import_payment_viewkey_str.empty()) { if (!xmreg::parse_str_address( import_payment_address_str, import_payment_address, testnet)) { cerr << "Cant parse address_str: " << import_payment_address_str << endl; return; } if (!xmreg::parse_str_secret_key( import_payment_viewkey_str, import_payment_viewkey)) { cerr << "Cant parse the viewkey_str: " << import_payment_viewkey_str << endl; return; } } if (!is_running) { m_thread = std::thread{[]() { while (true) { update_current_blockchain_height(); read_mempool(); cout << "Check block height: " << current_height << " no of mempool txs: " << mempool_txs.size(); cout << endl; clean_search_thread_map(); std::this_thread::sleep_for( std::chrono::seconds( refresh_block_status_every_seconds)); } }}; is_running = true; } }