#!/usr/bin/env python import util, json from collections import defaultdict def analyze(results): out = {} dd = {} for k, v in results.items(): height = v.get('block_height') merkle = v.get('merkle_root') utxo = v.get('utxo_root') d = dd.get(merkle, defaultdict(int)) d[utxo] += 1 dd[merkle] = d refs = {} for merkle, d in dd.items(): v = d.values() m = max(v) ref = d.keys()[v.index(m)] refs[merkle] = ref, m for k, v in results.items(): height = v.get('block_height') merkle = v.get('merkle_root') utxo = v.get('utxo_root') ref_utxo, num = refs.get(merkle) if ref_utxo != utxo and num > 1: out[k] = height, merkle, utxo return out peers = util.get_peers() results = util.send_request(peers, 'blockchain.headers.subscribe', []) errors = analyze(results).keys() for n,v in sorted(results.items(), key=lambda x:x[1].get('block_height')): print "%40s"%n, v.get('block_height'), v.get('utxo_root'), "error" if n in errors else "ok"