print '''Testing bitcoind P2P connection to '%s:%s'...''' % (args.bitcoind_address, args.bitcoind_p2p_port)
factory = bitcoin_p2p.ClientFactory(net.PARENT)
reactor.connectTCP(args.bitcoind_address, args.bitcoind_p2p_port, factory)
+ def long():
+ print ''' ...taking a while. Common reasons for this include all of bitcoind's connection slots being used...'''
+ long_dc = reactor.callLater(5, long)
yield factory.getProtocol() # waits until handshake is successful
+ if not long_dc.called: long_dc.cancel()
print ' ...success!'
print
defer.returnValue(factory)
print ' ...success! Payout address:', bitcoin_data.pubkey_hash_to_address(my_pubkey_hash, net.PARENT)
print
- ss = p2pool_data.ShareStore(os.path.join(datadir_path, 'shares.'), net)
+ print "Loading shares..."
shares = {}
known_verified = set()
- print "Loading shares..."
- for i, (mode, contents) in enumerate(ss.get_shares()):
- if mode == 'share':
- contents.time_seen = 0
- shares[contents.hash] = contents
- if len(shares) % 1000 == 0 and shares:
- print " %i" % (len(shares),)
- elif mode == 'verified_hash':
- known_verified.add(contents)
- else:
- raise AssertionError()
+ def share_cb(share):
+ share.time_seen = 0 # XXX
+ shares[share.hash] = share
+ if len(shares) % 1000 == 0 and shares:
+ print " %i" % (len(shares),)
+ ss = p2pool_data.ShareStore(os.path.join(datadir_path, 'shares.'), net, share_cb, known_verified.add)
print " ...done loading %i shares (%i verified)!" % (len(shares), len(known_verified))
print
for share_hash in known_verified:
if share_hash not in node.tracker.verified.items:
ss.forget_verified_share(share_hash)
- del shares, known_verified
node.tracker.removed.watch(lambda share: ss.forget_share(share.hash))
node.tracker.verified.removed.watch(lambda share: ss.forget_verified_share(share.hash))
addr_store=addrs,
connect_addrs=connect_addrs,
desired_outgoing_conns=args.p2pool_outgoing_conns,
+ advertise_ip=args.advertise_ip,
)
node.p2p_node.start()
wb = work.WorkerBridge(node, my_pubkey_hash, args.donation_percentage, merged_urls, args.worker_fee)
web_root = web.get_web_root(wb, datadir_path, bitcoind_warning_var)
caching_wb = worker_interface.CachingWorkerBridge(wb)
- worker_interface.WorkerInterface(caching_wb).attach_to(web_root, get_handler=lambda request: request.redirect('/static/'))
+ worker_interface.WorkerInterface(caching_wb).attach_to(web_root, get_handler=lambda request: request.redirect('static/'))
web_serverfactory = server.Site(web_root)
p2pool_group.add_argument('--outgoing-conns', metavar='CONNS',
help='outgoing connections (default: 6)',
type=int, action='store', default=6, dest='p2pool_outgoing_conns')
+ parser.add_argument('--disable-advertise',
+ help='''don't advertise local IP address as being available for incoming connections. useful for running a dark node, along with multiple -n ADDR's and --outgoing-conns 0''',
+ action='store_false', default=True, dest='advertise_ip')
worker_group = parser.add_argument_group('worker interface')
worker_group.add_argument('-w', '--worker-port', metavar='PORT or ADDR:PORT',