Beispiel #1
0
                if ($detail['category'] == 'send') {
                    $detail['fee'] = abs($detail['fee']);
                    if ($detail['fee'] > 0) {
                        $transfer_fees += $detail['fee'];
                        db_insert('fees', array('fee' => $detail['fee'], 'date' => date('Y-m-d H:i:s')));
                    }
                }
            }
            Status::sumFields(array('hot_wallet_btc' => 0 - $transferred - $transfer_fees, 'warm_wallet_btc' => $transferred, 'total_btc' => 0 - $transfer_fees));
            echo 'Transferred ' . $reserve_surplus . ' to warm wallet. TX: ' . $response . PHP_EOL;
        }
    }
} elseif ($reserve['hot_wallet_btc'] > $CFG->bitcoin_reserve_min && $warm_wallet && $reserve_surplus > 0) {
    //$warm_wallet_a = BitcoinAddresses::getWarmWallet();
    $warm_wallet_a['address'] = $warm_wallet;
    $hot_wallet_a = BitcoinAddresses::getHotWallet();
    $bitcoin->walletpassphrase($CFG->bitcoin_passphrase, 3);
    $response = $bitcoin->sendfrom($CFG->bitcoin_accountname, $warm_wallet_a['address'], floatval($reserve_surplus));
    $transferred = 0;
    echo $bitcoin->error;
    if ($response && !$bitcoin->error) {
        $transferred = $reserve_surplus;
        $transfer_fees = 0;
        $transaction = $bitcoin->gettransaction($response);
        foreach ($transaction['details'] as $detail) {
            if ($detail['category'] == 'send') {
                $detail['fee'] = abs($detail['fee']);
                if ($detail['fee'] > 0) {
                    $transfer_fees += $detail['fee'];
                    db_insert('fees', array('fee' => $detail['fee'], 'date' => date('Y-m-d H:i:s')));
                }
Beispiel #2
0
    exit;
}
$bitcoin = new Bitcoin($CFG->bitcoin_username, $CFG->bitcoin_passphrase, $CFG->bitcoin_host, $CFG->bitcoin_port, $CFG->bitcoin_protocol);
$status = DB::getRecord('status', 1, 0, 1);
$available = $status['hot_wallet_btc'];
$deficit = $status['deficit_btc'];
$bitcoin->settxfee($CFG->bitcoin_sending_fee);
$users = array();
$transactions = array();
$user_balances = array();
$addresses = array();
if ($result) {
    $pending = 0;
    foreach ($result as $row) {
        // check if user sending to himself
        $addr_info = BitcoinAddresses::getAddress($row['send_address']);
        if (!empty($addr_info['site_user']) && $addr_info['site_user'] == $row['site_user']) {
            db_update('requests', $row['id'], array('request_status' => $CFG->request_completed_id));
            continue;
        }
        // check if sending to another wlox user
        if (!empty($addr_info['site_user'])) {
            if (empty($user_balances[$addr_info['site_user']])) {
                $bal_info = User::getBalance($addr_info['site_user'], $CFG->btc_currency_id, true);
                $user_balances[$addr_info['site_user']] = $bal_info['balance'];
            }
            User::updateBalances($row['site_user'], array('btc' => -1 * $row['amount']), true);
            User::updateBalances($addr_info['site_user'], array('btc' => $row['amount']), true);
            db_update('requests', $row['id'], array('request_status' => $CFG->request_completed_id));
            $rid = db_insert('requests', array('date' => date('Y-m-d H:i:s'), 'site_user' => $addr_info['site_user'], 'currency' => $CFG->btc_currency_id, 'amount' => $row['amount'], 'description' => $CFG->deposit_bitcoin_desc, 'request_status' => $CFG->request_completed_id, 'request_type' => $CFG->request_deposit_id));
            if ($rid) {