#!/usr/bin/php $vin) { if (!isset($vin['prevout'])) continue; scan_vin($no, $vin, $txid_id); } foreach ($tx['vout'] as $no => $vout) { scan_vout($no, $vout, $txid_id); } } $merkle = rpc_electrum('blockchain.transaction.get_merkle', $txinfo['tx_hash'], $txinfo['height']); db_exec('INSERT INTO txs ( txid_id, tx_fee, tx_blocktime, tx_height, tx_pos ) VALUES ( ?, ?, FROM_UNIXTIME( ? ), ?, ? ) ON DUPLICATE KEY UPDATE tx_blocktime = FROM_UNIXTIME( ? ), tx_height = ?, tx_pos = ?', $txid_id, (isset($tx['fee'])?$tx['fee']:0), $tx['blocktime'], $merkle['block_height'], $merkle['pos'], $tx['blocktime'], $merkle['block_height'], $merkle['pos']); } function scan_scriptpubkey_info($scriptpubkey_info) { $scriptpubkey_status = rpc_electrum('blockchain.scripthash.subscribe', $scriptpubkey_info['reverse_scriptpubkey_hash']); if ($scriptpubkey_info['scriptpubkey_status'] == $scriptpubkey_status) { //echo("MATCH!\n"); return $scriptpubkey_status == ''?0:1; } //else echo("FAIL! \"$scriptpubkey_status\" \"{$scriptpubkey_info['scriptpubkey_status']}\"\n"); $txinfos = rpc_electrum('blockchain.scripthash.get_history', $scriptpubkey_info['reverse_scriptpubkey_hash']); foreach ($txinfos as $txinfo) { scan_transaction($txinfo); } db_exec("UPDATE scriptpubkeys SET scriptpubkey_status = ? WHERE scriptpubkey_id = ?", compute_scripthash_status($scriptpubkey_info['scriptpubkey_id']), $scriptpubkey_info['scriptpubkey_id']); return count($txinfos)?1:0; } function scan_scriptpubkey($scriptpubkey_id) { $scriptpubkey_info = db_single_row('SELECT * FROM scriptpubkeys WHERE scriptpubkey_id = ?', $scriptpubkey_id); return scan_scriptpubkey_info($scriptpubkey_info); /* $scriptpubkey_status = rpc_electrum('blockchain.scripthash.subscribe', $scriptpubkey_info['reverse_scriptpubkey_hash']); if ($scriptpubkey_info['scriptpubkey_status'] == $scriptpubkey_status) { //echo("MATCH!\n"); return $scriptpubkey_status == ''?0:1; } else echo("FAIL! \"$scriptpubkey_status\" \"{$scriptpubkey_info['scriptpubkey_status']}\"\n"); $txinfos = rpc_electrum('blockchain.scripthash.get_history', $scriptpubkey_info['reverse_scriptpubkey_hash']); foreach ($txinfos as $txinfo) { scan_transaction($txinfo); } db_exec("UPDATE scriptpubkeys SET scriptpubkey_status = ? WHERE scriptpubkey_id = ?", compute_scripthash_status($scriptpubkey_info['scriptpubkey_id']), $scriptpubkey_info['scriptpubkey_id']); return count($txinfos)?1:0; */ } $wallets = db_query(<<