예제 #1
0
function db_cache_balance($my_public_key)
{
    // Check server balance via custom memory index
    $my_server_balance = mysql_result(mysql_query("SELECT balance FROM `balance_index` WHERE `public_key_hash` = 'server_timekoin_balance' LIMIT 1"), 0, 0);
    $my_server_balance_last = mysql_result(mysql_query("SELECT block FROM `balance_index` WHERE `public_key_hash` = 'server_timekoin_balance' LIMIT 1"), 0, 0);
    if ($my_server_balance === FALSE) {
        // Does not exist, needs to be created
        mysql_query("INSERT INTO `balance_index` (`block` ,`public_key_hash` ,`balance`) VALUES ('0', 'server_timekoin_balance', '0')");
        // Update record with the latest balance
        $display_balance = check_crypt_balance($my_public_key);
        mysql_query("UPDATE `balance_index` SET `block` = '" . time() . "' , `balance` = '{$display_balance}' WHERE `balance_index`.`public_key_hash` = 'server_timekoin_balance' LIMIT 1");
    } else {
        if ($my_server_balance_last < transaction_cycle(0) && time() - transaction_cycle(0) > 25) {
            // Last generated balance is older than the current cycle, needs to be updated
            // Update record with the latest balance
            $display_balance = check_crypt_balance($my_public_key);
            mysql_query("UPDATE `balance_index` SET `block` = '" . time() . "' , `balance` = '{$display_balance}' WHERE `balance_index`.`public_key_hash` = 'server_timekoin_balance' LIMIT 1");
        } else {
            $display_balance = $my_server_balance;
        }
    }
    return $display_balance;
}
예제 #2
0
                     // Update DB to Disable Task When Finished
                     mysql_query("UPDATE `options` SET `field_data` = '{$new_string}' WHERE `options`.`field_name` = '{$tx_record_name}' LIMIT 1");
                     write_log("Auto Transfer Task ({$tx_name}) Has Completed.", "T");
                 }
             }
         }
         // One Shot Amount Match Transfer
         if ($tx_type == "repeatamount") {
             $tx_key3 = find_string("---key3=", "---amount", $sql_row["field_data"]);
             $tx_key3 = mysql_result(mysql_query("SELECT field_data FROM `my_keys` WHERE `field_name` = '{$tx_key3}' LIMIT 1"), 0, 0);
             $tx_amount = find_string("---amount=", "---amount_match", $sql_row["field_data"]);
             $amount_match = find_string("---amount_match=", "---end", $sql_row["field_data"]);
             // Only check once per transaction cycle or otherwise it will just make a transfer every time it scans
             // Check allowed 180 seconds before and 60 seconds after transaction cycle.
             if (transaction_cycle(1) - time() > 180 && time() - transaction_cycle(0) >= 60) {
                 if (check_crypt_balance($tx_key2) >= $amount_match) {
                     // Create Transaction
                     if (send_timekoins($tx_key1, $tx_key2, $tx_key3, $tx_amount, NULL) == TRUE) {
                         write_log("Auto Transfer Task ({$tx_name}) Has Completed.", "T");
                     }
                 }
             }
         }
         // Repeating Amount Match Transfer
     }
     // Check if enabled
 }
 // Looping through all task
 // Idle State
 mysql_query("UPDATE `main_loop_status` SET `field_data` = '2' WHERE `main_loop_status`.`field_name` = 'autotransfer.php' LIMIT 1");
 sleep(AUTOCHECK);
예제 #3
0
 $crypt1 = $sql_row["crypt_data1"];
 $crypt2 = $sql_row["crypt_data2"];
 $crypt3 = $sql_row["crypt_data3"];
 // How much is this public key trying to send to another public key?
 $transaction_info = tk_decrypt($public_key, base64_decode($crypt3));
 $transaction_amount_sent = find_string("AMOUNT=", "---TIME", $transaction_info);
 $transaction_amount_sent_test = intval($transaction_amount_sent);
 if ($transaction_amount_sent_test == $transaction_amount_sent) {
     // Is a valid integer
     $amount_valid = TRUE;
 } else {
     // Is NOT a valid integer
     $amount_valid = FALSE;
 }
 // Validate transaction against known public key balance
 if (check_crypt_balance($public_key) >= $transaction_amount_sent && $transaction_amount_sent > 0 && $amount_valid == TRUE) {
     // Balance checks out
     // Check hash value for tampering of crypt1, crypt2, or crypt3 fields
     if (hash('sha256', $crypt1 . $crypt2 . $crypt3) == $hash_check) {
         // Find destination public key
         $public_key_to_1 = tk_decrypt($public_key, base64_decode($crypt1));
         $public_key_to_2 = tk_decrypt($public_key, base64_decode($crypt2));
         $public_key_to = $public_key_to_1 . $public_key_to_2;
         if (strlen($public_key) > 300 && strlen($public_key_to) > 300 && $public_key !== $public_key_to) {
             // Public key not found, insert into final transaction history
             $sql = "INSERT INTO `transaction_history` (`timestamp` ,`public_key_from` , `public_key_to` , `crypt_data1` ,`crypt_data2` ,`crypt_data3` ,`hash` ,`attribute`)\n\t\t\t\t\t\t\t\tVALUES ({$time_created}, '{$public_key}', '{$public_key_to}' , '{$crypt1}', '{$crypt2}', '{$crypt3}', '{$hash_check}', 'T');";
             if (mysql_query($sql) == FALSE) {
                 //Something didn't work
                 write_log("Transaction Database Insert Failed for this Key:" . base64_encode($public_key), "T");
             }
         } else {
예제 #4
0
파일: api.php 프로젝트: LoveLeAnon/timekoin
}
//***********************************************************************************
//***********************************************************************************
// Open persistent connection to database
mysql_connect(MYSQL_IP, MYSQL_USERNAME, MYSQL_PASSWORD);
mysql_select_db(MYSQL_DATABASE);
// Check for banned IP address
if (ip_banned($_SERVER['REMOTE_ADDR']) == TRUE) {
    // Sorry, your IP address has been banned :(
    exit;
}
//***********************************************************************************
//***********************************************************************************
// Answer public key balance request that match our hash code
if ($_GET["action"] == "key_balance") {
    $hash_code = substr($_GET["hash"], 0, 256);
    $server_hash_code = mysql_result(mysql_query("SELECT * FROM `options` WHERE `field_name` = 'server_hash_code' LIMIT 1"), 0, "field_data");
    if ($hash_code == $server_hash_code && $server_hash_code != "0") {
        // Grab balance for public key and return back
        $public_key = substr($_POST["public_key"], 0, 500);
        $public_key = filter_sql(base64_decode($public_key));
        echo check_crypt_balance($public_key);
    }
    // Log inbound IP activity
    log_ip("AP");
    exit;
}
//***********************************************************************************
//***********************************************************************************
// Log IP even when not using any functions
log_ip("AP");
예제 #5
0
} else {
    // Loop called while still working
    exit;
}
//***********************************************************************************
//***********************************************************************************
$current_transaction_cycle = transaction_cycle(0);
$next_transaction_cycle = transaction_cycle(1);
$foundation_active = intval(mysql_result(mysql_query("SELECT * FROM `main_loop_status` WHERE `field_name` = 'foundation_heartbeat_active' LIMIT 1"), 0, "field_data"));
// Can we work on the key balances in the database?
// Not allowed 120 seconds before and 45 seconds after transaction cycle.
if ($next_transaction_cycle - time() > 120 && time() - $current_transaction_cycle > 45 && $foundation_active == 0) {
    // 2000 Transaction Cycles Back in time to index
    $time_2000 = time() - 600000;
    $sql = "SELECT public_key_to FROM `transaction_history` WHERE `timestamp` > {$time_2000} GROUP BY `public_key_to` ORDER BY RAND() LIMIT 1";
    $sql_result = mysql_query($sql);
    $sql_row = mysql_fetch_array($sql_result);
    $public_key_hash = hash('md5', $sql_row["public_key_to"]);
    // Run a balance index if one does not already exist
    $balance_index = mysql_result(mysql_query("SELECT public_key_hash FROM `balance_index` WHERE `public_key_hash` = '{$public_key_hash}' LIMIT 1"), 0, 0);
    if (empty($balance_index) == TRUE) {
        // No index balance, go ahead and create one
        check_crypt_balance($sql_row["public_key_to"]);
    }
}
//***********************************************************************************
//***********************************************************************************
// Script finished, set status to 0
mysql_query("UPDATE `main_loop_status` SET `field_data` = 0 WHERE `main_loop_status`.`field_name` = 'balance_heartbeat_active' LIMIT 1");
// Record when this script finished
mysql_query("UPDATE `main_loop_status` SET `field_data` = " . time() . " WHERE `main_loop_status`.`field_name` = 'balance_last_heartbeat' LIMIT 1");
예제 #6
0
                 break;
                 // Break from loop early
             }
         }
     }
     if ($queue_index_created == FALSE) {
         // 1000 Transaction Cycles Back in time to index
         $time_back = time() - 300000;
         $public_key_from = mysql_result(mysql_query("SELECT public_key_to FROM `transaction_history` WHERE `timestamp` > {$time_back} AND `attribute` = 'T' GROUP BY `public_key_to` ORDER BY RAND() LIMIT 1"), 0, 0);
         $public_key_hash = hash('md5', $public_key_from);
         // Run a balance index if one does not already exist
         $balance_index = mysql_result(mysql_query("SELECT block FROM `balance_index` WHERE `public_key_hash` = '{$public_key_hash}' AND `block` = {$cache_block} LIMIT 1"), 0, 0);
         if ($balance_index === FALSE) {
             // No index balance, go ahead and create one
             write_log("Updating Balance Index From Transaction History", "BA");
             check_crypt_balance($public_key_from);
         }
     }
 }
 //***********************************************************************************
 //***********************************************************************************
 $loop_active = mysql_result(mysql_query("SELECT field_data FROM `main_loop_status` WHERE `field_name` = 'balance_heartbeat_active' LIMIT 1"), 0, 0);
 // Check script status
 if ($loop_active == 3) {
     // Time to exit
     mysql_query("DELETE FROM `main_loop_status` WHERE `main_loop_status`.`field_name` = 'balance_heartbeat_active'");
     exit;
 }
 // Script finished, set standby status to 2
 mysql_query("UPDATE `main_loop_status` SET `field_data` = '2' WHERE `main_loop_status`.`field_name` = 'balance_heartbeat_active' LIMIT 1");
 // Record when this script finished
예제 #7
0
function db_cache_balance($my_public_key)
{
    $cache_refresh_time = 30;
    // Refresh TTL in seconds
    // Check server balance via cache
    $billfold_balance = mysql_result(mysql_query("SELECT * FROM `data_cache` WHERE `field_name` = 'billfold_balance' LIMIT 1"), 0, "field_data");
    $timestamp_cache = intval(find_string("---time=", "---data", $billfold_balance));
    if (time() - $cache_refresh_time <= $timestamp_cache) {
        // Return Cache Data
        return intval(find_string("---data=", "---end", $billfold_balance));
    }
    $balance = check_crypt_balance($my_public_key);
    // Cache stale, refresh and update cache
    mysql_query("UPDATE `data_cache` SET `field_data` = '---time=" . time() . "---data={$balance}---end' WHERE `data_cache`.`field_name` = 'billfold_balance' LIMIT 1");
    return $balance;
}