def get_pool_attempts_per_second(tracker, previous_share_hash, net, dist=None):
if dist is None:
dist = net.TARGET_LOOKBEHIND
- # XXX could be optimized to use nth_parent and cumulative_weights
- chain = list(itertools.islice(tracker.get_chain_to_root(previous_share_hash), dist))
- attempts = sum(bitcoin_data.target_to_average_attempts(share.target) for share in chain[:-1])
- time = chain[0].timestamp - chain[-1].timestamp
+ near = tracker.shares[previous_share_hash]
+ far = tracker.shares[tracker.get_nth_parent_hash(previous_share_hash, dist - 1)]
+ attempts = tracker.get_work(near.hash) - tracker.get_work(far.hash)
+ time = near.timestamp - far.timestamp
if time == 0:
time = 1
return attempts//time