export($id); if($data===false||empty($data)) die("Could not export block"); $data=json_encode($data); // cache it to reduce the load $res=file_put_contents("tmp/$id",$data); if($res===false) die("Could not write the cachce file"); $r=$db->run("SELECT * FROM peers WHERE blacklisted < UNIX_TIMESTAMP() AND reserve=0"); foreach($r as $x) { $host=base58_encode($x['hostname']); system("php propagate.php $type $id $host &>/dev/null &"); } exit; } if($type=="block"){ $data=file_get_contents("tmp/$id"); if(empty($data)) { echo "Invalid Block data"; exit; } $data=json_decode($data,true); $hostname=base58_decode($peer); echo "Peer response - $hostname:\n"; $response= peer_post($hostname."/peer.php?q=submitBlock",$data); if($response=="block-ok") { echo "Block $i accepted. Exiting.\n"; exit;} elseif($response['request']=="microsync"){ echo "Microsync request\n"; $height=intval($response['height']); $bl=san($response['block']); $current=$block->current(); if($current['height']-$height>10) { echo "Height Differece too high\n"; exit; } $last_block=$block->get($height); if ($last_block['id'] != $bl ) { echo "Last block does not match\n"; exit; } echo "Sending the requested blocks\n"; for($i=$height+1;$i<=$current['height'];$i++){ $data=$block->export("",$i); $response = peer_post($hostname."/peer.php?q=submitBlock",$data); if($response!="block-ok") { echo "Block $i not accepted. Exiting.\n"; exit;} echo "Block\t$i\t accepted\n"; } } else echo "Block not accepted!\n"; } if($type=="transaction"){ $trx=new Transaction; $data=$trx->export($id); if(!$data){ echo "Invalid transaction id\n"; exit; } if($data['peer']=="local") $r=$db->run("SELECT hostname FROM peers WHERE blacklisted < UNIX_TIMESTAMP()"); else $r=$db->run("SELECT hostname FROM peers WHERE blacklisted < UNIX_TIMESTAMP() AND reserve=0 ORDER by RAND() LIMIT ".$_config['transaction_propagation_peers']); foreach($r as $x){ $res= peer_post($x['hostname']."/peer.php?q=submitTransaction",$data); if(!$res) echo "Transaction not accepted\n"; else echo "Transaction accepted\n"; } } ?>