run("DELETE FROM {$table}"); echo "\n The database has been cleared\n"; } elseif($cmd=='pop'){ $no=intval($argv[2]); $block=new Block; $block->pop($no); } elseif($cmd=='block-time'){ $t=time(); $r=$db->run("SELECT * FROM blocks ORDER by height DESC LIMIT 100"); $start=0; foreach($r as $x){ if($start==0) $start=$x['date']; $time=$t-$x['date']; $t=$x['date']; echo "$x[height] -> $time\n"; $end=$x['date']; } echo "Average block time: ".ceil(($start-$end)/100)." seconds\n"; } elseif($cmd=="peer"){ $res=peer_post($argv[2]."/peer.php?q=peer",array("hostname"=>$_config['hostname'])); if($res!==false) echo "Peering OK\n"; else echo "Peering FAIL\n"; } elseif ($cmd=="current") { $block=new Block; var_dump($block->current()); } elseif($cmd=="blocks"){ $height=intval($argv[2]); $limit=intval($argv[3]); if($limit<1) $limit=100; $r=$db->run("SELECT * FROM blocks WHERE height>:height ORDER by height ASC LIMIT $limit",array(":height"=>$height)); foreach($r as $x){ echo "$x[height]\t$x[id]\n"; } } elseif($cmd=="recheck-blocks"){ $blocks=array(); $block=new Block(); $r=$db->run("SELECT * FROM blocks ORDER by height ASC"); foreach($r as $x){ $blocks[$x['height']]=$x; $max_height=$x['height']; } for($i=2;$i<=$max_height;$i++){ $data=$blocks[$i]; $key=$db->single("SELECT public_key FROM accounts WHERE id=:id",array(":id"=>$data['generator'])); if(!$block->mine($key,$data['nonce'], $data['argon'], $data['difficulty'], $blocks[$i-1]['id'])) { _log("Invalid block detected. We should delete everything after $data[height] - $data[id]"); break; } } } elseif($cmd=="peers"){ $r=$db->run("SELECT * FROM peers ORDER by reserve ASC LIMIT 100"); foreach($r as $x){ echo "$x[hostname]\t$x[reserve]\n"; } } elseif($cmd=="mempool"){ $res=$db->single("SELECT COUNT(1) from mempool"); echo "Mempool size: $res\n"; } else { echo "Invalid command\n"; } ?>