Beispiel #1
0
$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();