$miner_id = $db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, "\n\t\tSELECT `miner_id`\n\t\tFROM `" . DB_PREFIX . "miners_data`\n\t\tWHERE `user_id` = {$new_testblock['user_id']}\n\t\tLIMIT 1\n\t\t", 'fetch_one'); if (!$miner_id) { debug_print("[error] user_id", __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__); main_unlock(); die('[error] user_id'); } // проверим, точно ли отправитель с нашего уровня if (!in_array($miner_id, $nodes_ids)) { debug_print("[error] user_id", __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__); main_unlock(); die('[error] user_id'); } // получим допустимую погрешность во времени генерации блока $max_error_time = $db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, "\n\t\tSELECT `value`\n\t\tFROM `" . DB_PREFIX . "variables`\n\t\tWHERE `name` = 'error_time'\n\t\t", 'fetch_one'); // исключим тех, кто сгенерил блок слишком рано. if ($testBlock->block_info['time'] + $testBlock->getGenSleep() - $new_testblock['time'] > $max_error_time) { debug_print("[error] gate_testblock.php block time ({$testBlock->block_info['time']} + {$testBlock->getGenSleep()} - {$new_testblock['time']})", __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__); main_unlock(); die("[error] gate_testblock.php block time ({$testBlock->block_info['time']} + {$testBlock->getGenSleep()} - {$new_testblock['time']})"); } // исключим тех, кто сгенерил блок с бегущими часами if ($new_testblock['time'] > time()) { debug_print("[error] gate_testblock.php block time", __FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__); main_unlock(); die("[error] gate_testblock.php block time"); } // получим хэш заголовка $new_header_hash = hash('sha256', hash('sha256', "{$new_testblock['user_id']},{$new_testblock['block_id']},{$testBlock->block_info['user_id']}")); //testblock_lock(); $my_testblock = $db->query(__FILE__, __LINE__, __FUNCTION__, __CLASS__, __METHOD__, "\n\t\tSELECT `block_id`,\n\t\t\t\t\t `user_id`,\n\t\t\t\t\t LOWER(HEX(`mrkl_root`)) as `mrkl_root`,\n\t\t\t\t\t LOWER(HEX(`signature`)) as `signature`\n\t\tFROM `" . DB_PREFIX . "testblock`\n\t\tWHERE `status` = 'active'\n\t\t", 'fetch_array'); //testblock_unlock();