Example #1
0
function get_block_info($block){
	require_once('/var/www/midas/root/private/class/jsonRPCClient.php');
	$darkcoin = new jsonRPCClient('http://*****:*****@127.0.0.1:9998/');
	$hash_block = $darkcoin->getblockhash(intval($block));
	
	$info_block = $darkcoin->getblock($hash_block);
	$tx = $info_block["tx"][0];
	$diff = round($info_block["difficulty"]);
	$last_block = $block_id = $info_block["height"];
	$block_time = $info_block["time"];
	return $info_block;
}
Example #2
0
$rpchost = 'localhost';
$rpcuser = '******';
$rpcpass = '******';
$rpcport = '3838';
////////////////////////////////////////////////////////////////////////////////
$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $database);
if ($mysqli->connect_errno) {
    throw new Exception("database connection error");
}
$r = $mysqli->query("select max(block_num) from outputs", MYSQLI_USE_RESULT);
$w = $r->fetch_assoc();
$blocknum = $w["max(block_num)"] + 0;
$r->close();
$r = $mysqli->query("select sum(balance) from outputs", MYSQLI_USE_RESULT);
$w = $r->fetch_assoc();
$moneysupply = $w["sum(balance)"] + 0;
$r->close();
$pts = new jsonRPCClient("http://" . $rpcuser . ":" . $rpcpass . "@" . $rpchost . ":" . $rpcport);
$blockhash = $pts->getblockhash($blocknum);
$blockinfo = $pts->getblock($blockhash);
$blocktime = $blockinfo['time'];
echo "{\"blocknum\":" . $blocknum . ",\"blocktime\":" . $blocktime . ",\"moneysupply\":" . $moneysupply . ",\"balances\":\n";
echo "    {\n";
$r = $mysqli->query("select * from outputs group by address order by balance desc", MYSQLI_USE_RESULT);
while ($w = $r->fetch_assoc()) {
    echo "        \"" . $w['address'] . "\":" . $w['balance'] . ",\n";
}
echo "    }\n";
echo "}";
$r->close();
////////////////////////////////////////////////////////////////////////////////
Example #3
0
<?php

error_reporting(E_ALL);
include_once '/var/www/swork/dice/pr/inc/conf.php';
mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error() . " " . mysql_errno());
mysql_select_db(DATABASE) or die(mysql_error() . " " . mysql_errno());
//include json_rpc client
include_once JSON_RPC_CLIENT;
//connect to the wallet
$ftc = new jsonRPCClient('http://' . RPC_USER . ':' . RPC_PASS . '@' . RPC_HOST . ':' . RPC_PORT . '/');
$blockcount = $ftc->getblockcount();
while (true) {
    sleep(5);
    $txx = array();
    //scan last x=50 blocks for incomming but not processes transaction
    $transactions = $ftc->listsinceblock($ftc->getblockhash($blockcount - 50));
    if (is_array($transactions["transactions"]) && sizeof($transactions["transactions"]) > 0) {
        foreach ($transactions["transactions"] as $t) {
            if (array_key_exists($t["address"], $game_addresses) && $t["category"] == "receive") {
                //prevent transaction malleability
                $rawtx = $ftc->getrawtransaction($t["txid"], 1);
                $tprocessed = "";
                if (is_array($rawtx)) {
                    foreach ($rawtx["vin"] as $tinput) {
                        $tprocessed .= $tinput["txid"] . $tinput["vout"];
                    }
                } else {
                    die("grrr");
                }
                $tprocessed = md5($tprocessed);
                //end prevent transaction malleability
Example #4
0
         if ($unspents) {
             if (is_array($unspents) && count($unspents) > 0) {
                 $balance = 0;
                 foreach (array_reverse($unspents) as $tx) {
                     $balance = $balance + intval($tx['amount'] * 100000000);
                 }
                 $obj['balance'] = $balance;
             }
         }
     }
 } else {
     if ($call == 'block') {
         $obj = ["blockchain" => $blockchain, "height" => "N/A", "hash" => "N/A", "prev" => "N/A", "next" => "N/A", "tx_count" => 0, "time" => "N/A"];
         if (isset($_GET['id']) && $_GET['id']) {
             $height = intval($_GET['id']);
             $block_hash = $bitcoind->getblockhash($height);
             $block = $bitcoind->getblock($block_hash);
             $obj['raw'] = $block;
             if ($block_hash) {
                 $obj['height'] = $height;
                 $obj['hash'] = $block_hash;
             }
             if ($block) {
                 if (isset($block['previousblockhash']) && $block['previousblockhash']) {
                     $obj['prev'] = $block['previousblockhash'];
                 }
                 if (isset($block['nextblockhash']) && $block['nextblockhash']) {
                     $obj['next'] = $block['nextblockhash'];
                 }
                 if (isset($block['tx']) && is_array($block['tx'])) {
                     $obj['tx_count'] = count($block['tx']);
Example #5
0
$rpcport = '3838';
////////////////////////////////////////////////////////////////////////////////
$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $database);
if ($mysqli->connect_errno) {
    throw new Exception("database connection error");
}
$r = $mysqli->query("select max(block_num) from outputs", MYSQLI_USE_RESULT);
$w = $r->fetch_assoc();
$last_block_in_db = $w["max(block_num)"] + 0;
$r->close();
$pts = new jsonRPCClient("http://" . $rpcuser . ":" . $rpcpass . "@" . $rpchost . ":" . $rpcport);
$blocknum = $pts->getblockcount();
if ($last_block_in_db < $blocknum) {
    for ($i = $last_block_in_db + 1; $i <= $blocknum; $i++) {
        echo "block " . $i . "\n";
        $block = $pts->getblock($pts->getblockhash($i));
        foreach ($block["tx"] as $txid) {
            $tx = $pts->decoderawtransaction($pts->getrawtransaction($txid));
            foreach ($tx["vin"] as $tx_in) {
                if (!array_key_exists("coinbase", $tx_in)) {
                    $mysqli->query("delete from outputs where transaction_hash='" . $tx_in["txid"] . "' and sequence=" . $tx_in["vout"] . ";");
                }
            }
            foreach ($tx["vout"] as $tx_out) {
                $scripttype = $tx_out["scriptPubKey"]["type"];
                switch ($scripttype) {
                    case "pubkeyhash":
                    case "pubkey":
                    case "scripthash":
                        $mysqli->query("insert into outputs (block_num, block_hash, transaction_hash, sequence, address, balance) values (" . $i . ", '" . $block["hash"] . "', '" . $txid . "', " . $tx_out["n"] . ", '" . $tx_out["scriptPubKey"]["addresses"][0] . "', " . $tx_out["value"] . ")");
                        break;
Example #6
0
 /**
  * @param $blockID - Block ID to process
  * @return mixed
  * @throws \RedBeanPHP\RedException
  */
 private static function copyBlockToDB($blockID)
 {
     $wallet = new jsonRPCClient(HOTWALLET, true);
     $getBlockHash = $wallet->getblockhash($blockID);
     $getBlock = $wallet->getblock($getBlockHash);
     //$return['getBlockHash'] = $getBlockHash;
     //$return['getBlock']     = $getBlock;
     $findOne = R::findOne('blocks', 'height = ?', [$blockID]);
     if (!$findOne) {
         $dispense = R::dispense('blocks');
         foreach ($getBlock as $key => $value) {
             if ($key == "tx") {
                 $dispense->{$key} = json_encode($value);
                 $processTX = self::processTransactions($value);
                 $dispense->totalvalue = $processTX['totalValue'];
                 $dispense->transactioncount = $processTX['transactionCount'];
             } else {
                 $dispense->{$key} = $value;
             }
         }
         R::store($dispense);
     }
     //$return['processTX'] = $processTX;
     $return['data'] = "Processed";
     return $return;
 }