print 'Got duplicate share, ignoring. Hash: %x' % (share.hash,)
elif res == 'orphan':
print 'Got share referencing unknown share, requesting past shares from peer. Hash: %x' % (share.hash,)
+ if peer is None:
+ raise ValueError()
peer.getsharesbychain(
chain_id=p2pool.chain_id_type.unpack(share.chain_id_data),
have=chain.highest.value[1].hash() if chain.highest.value[1] is not None else None
w['highest_p2pool_share2'] = w['current_chain'].get_highest_share2()
current_work.set(w)
+ def p2pCallback2(chain_id_data, hash, peer):
+ chain = get_chain(chain_id_data)
+ if chain is current_work.value['current_chain']:
+ if hash not in chain.shares:
+ if hash not in chain.requesting:
+ peer.send_getshares(hashes=[hash])
+ chain.requesting.add(hash)
+ reactor.callLater(5, chain.requesting.remove, hash)
+ else:
+ chain.
+
@defer.inlineCallbacks
def getBlocksCallback2(chain_id_data, highest, contact):
chain = get_chain(chain_id_data)
port=args.p2pool_port,
testnet=args.testnet,
addr_store=gdbm.open(os.path.join(os.path.dirname(__file__), 'peers.dat'), 'cs'),
- mode=1 if args.low_bandwidth else 0,
+ mode=0 if args.low_bandwidth else 1,
preferred_addrs=map(parse, args.p2pool_nodes) + nodes,
)
p2p_node.handle_share = p2pCallback
+ p2p_node.handle_share_hash = p2pCallback2
p2p_node.handle_get_blocks = getBlocksCallback
p2p_node.start()
def handle_share0s(self, chains):
for chain in chains:
for hash_ in chain['hashes']:
- self.node.handle_share_hash(p2pool.chain_id_type.pack(chain['chain_id']), hash_)
+ self.node.handle_share_hash(p2pool.chain_id_type.pack(chain['chain_id']), hash_, self)
def handle_share1s(self, share1s):
for share1 in share1s:
hash_ = bitcoin_p2p.block_hash(share1['header'])
self.addr_store[host, port] = services, timestamp, timestamp
- def handle_share_hash(self, chain_id_data, hash):
- print (chain_id_data, hash)
+ def handle_share_hash(self, chain_id_data, hash, peer):
+ pass
if __name__ == '__main__':
p = random.randrange(2**15, 2**16)