if '--iocp' in sys.argv:
from twisted.internet import iocpreactor
iocpreactor.install()
-from twisted.internet import defer, reactor, protocol, task, tcp
+from twisted.internet import defer, reactor, protocol, task
from twisted.web import server
from twisted.python import log
from nattraverso import portmapper, ipdiscover
factory = yield connect_p2p()
print 'Determining payout address...'
- if args.pubkey_hash is None:
- address_path = os.path.join(datadir_path, 'cached_payout_address')
-
- if os.path.exists(address_path):
- with open(address_path, 'rb') as f:
- address = f.read().strip('\r\n')
- print ' Loaded cached address: %s...' % (address,)
- else:
- address = None
-
- if address is not None:
- res = yield deferral.retry('Error validating cached address:', 5)(lambda: bitcoind.rpc_validateaddress(address))()
+ pubkey_path = os.path.join(datadir_path, 'cached_payout_pubkey')
+
+ if os.path.exists(pubkey_path):
+ with open(pubkey_path, 'rb') as f:
+ pubkey = f.read().strip('\r\n')
+ print ' Loaded cached pubkey, payout address: %s...' % (bitcoin_data.pubkey_to_address(pubkey.decode('hex'), net.PARENT),)
+ else:
+ pubkey = None
+
+ if pubkey is not None:
+ res = yield deferral.retry('Error validating cached pubkey:', 5)(lambda: bitcoind.rpc_validatepubkey(pubkey))()
if not res['isvalid'] or not res['ismine']:
- print ' Cached address is either invalid or not controlled by local bitcoind!'
+ print ' Cached pubkey is either invalid or not controlled by local bitcoind!'
address = None
+
+ if pubkey is None:
+ print ' Getting payout pubkey from bitcoind...'
+ pubkey = yield deferral.retry('Error getting payout pubkey from bitcoind:', 5)(lambda: bitcoind.rpc_getnewpubkey('p2pool'))()
- if address is None:
- print ' Getting payout address from bitcoind...'
- address = yield deferral.retry('Error getting payout address from bitcoind:', 5)(lambda: bitcoind.rpc_getaccountaddress('p2pool'))()
-
- with open(address_path, 'wb') as f:
- f.write(address)
-
- my_pubkey_hash = bitcoin_data.address_to_pubkey_hash(address, net.PARENT)
- else:
- my_pubkey_hash = args.pubkey_hash
+ with open(pubkey_path, 'wb') as f:
+ f.write(pubkey)
+
+ my_pubkey = pubkey.decode('hex')
+
+ address = bitcoin_data.pubkey_to_address(my_pubkey, net.PARENT)
+
+ my_pubkey_hash = bitcoin_data.address_to_pubkey_hash(address, net.PARENT)
print ' ...success! Payout address:', bitcoin_data.pubkey_hash_to_address(my_pubkey_hash, net.PARENT)
print
print 'Listening for workers on %r port %i...' % (worker_endpoint[0], worker_endpoint[1])
- wb = work.WorkerBridge(node, my_pubkey_hash, args.donation_percentage, merged_urls, args.worker_fee)
+ wb = work.WorkerBridge(node, my_pubkey, 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/'))
shares, stale_orphan_shares, stale_doa_shares,
math.format_binomial_conf(stale_orphan_shares + stale_doa_shares, shares, 0.95),
math.format_binomial_conf(stale_orphan_shares + stale_doa_shares, shares, 0.95, lambda x: (1 - x)/(1 - stale_prop)),
- node.get_current_txouts().get(bitcoin_data.pubkey_hash_to_script2(my_pubkey_hash), 0)*1e-8, net.PARENT.SYMBOL,
+ node.get_current_txouts().get(bitcoin_data.pubkey_to_script2(my_pubkey), 0) * 1e-6, net.PARENT.SYMBOL,
)
this_str += '\n Pool: %sH/s Stale rate: %.1f%% Expected time to block: %s' % (
math.format(int(real_att_s)),
log.err(None, 'Fatal error:')
def run():
- if not hasattr(tcp.Client, 'abortConnection'):
- print "Twisted doesn't have abortConnection! Upgrade to a newer version of Twisted to avoid memory leaks!"
- print 'Pausing for 3 seconds...'
- time.sleep(3)
-
realnets = dict((name, net) for name, net in networks.nets.iteritems() if '_testnet' not in name)
parser = fixargparse.FixedArgumentParser(description='p2pool (version %s)' % (p2pool.__version__,), fromfile_prefix_chars='@')
else:
addr, port = args.worker_endpoint.rsplit(':', 1)
worker_endpoint = addr, int(port)
-
- if args.address is not None:
- try:
- args.pubkey_hash = bitcoin_data.address_to_pubkey_hash(args.address, net.PARENT)
- except Exception, e:
- parser.error('error parsing address: ' + repr(e))
- else:
- args.pubkey_hash = None
-
+
def separate_url(url):
s = urlparse.urlsplit(url)
if '@' not in s.netloc: