lightning: merge 81b6d657..c3f3843c
This commit is contained in:
parent
402ecf66d5
commit
7a113fb954
@ -40,9 +40,11 @@ import traceback
|
|||||||
from . import util
|
from . import util
|
||||||
from . import bitcoin
|
from . import bitcoin
|
||||||
from .bitcoin import *
|
from .bitcoin import *
|
||||||
|
from . import constants
|
||||||
from .interface import Interface
|
from .interface import Interface
|
||||||
from . import blockchain
|
from . import blockchain
|
||||||
from .version import ELECTRUM_VERSION, PROTOCOL_VERSION
|
from .version import ELECTRUM_VERSION, PROTOCOL_VERSION
|
||||||
|
from .i18n import _
|
||||||
|
|
||||||
|
|
||||||
NODES_RETRY_INTERVAL = 60
|
NODES_RETRY_INTERVAL = 60
|
||||||
@ -63,7 +65,7 @@ def parse_servers(result):
|
|||||||
for v in item[2]:
|
for v in item[2]:
|
||||||
if re.match("[st]\d*", v):
|
if re.match("[st]\d*", v):
|
||||||
protocol, port = v[0], v[1:]
|
protocol, port = v[0], v[1:]
|
||||||
if port == '': port = bitcoin.NetworkConstants.DEFAULT_PORTS[protocol]
|
if port == '': port = constants.net.DEFAULT_PORTS[protocol]
|
||||||
out[protocol] = port
|
out[protocol] = port
|
||||||
elif re.match("v(.?)+", v):
|
elif re.match("v(.?)+", v):
|
||||||
version = v[1:]
|
version = v[1:]
|
||||||
@ -97,7 +99,7 @@ def filter_protocol(hostmap, protocol = 's'):
|
|||||||
|
|
||||||
def pick_random_server(hostmap = None, protocol = 's', exclude_set = set()):
|
def pick_random_server(hostmap = None, protocol = 's', exclude_set = set()):
|
||||||
if hostmap is None:
|
if hostmap is None:
|
||||||
hostmap = bitcoin.NetworkConstants.DEFAULT_SERVERS
|
hostmap = constants.net.DEFAULT_SERVERS
|
||||||
eligible = list(set(filter_protocol(hostmap, protocol)) - exclude_set)
|
eligible = list(set(filter_protocol(hostmap, protocol)) - exclude_set)
|
||||||
return random.choice(eligible) if eligible else None
|
return random.choice(eligible) if eligible else None
|
||||||
|
|
||||||
@ -326,8 +328,10 @@ class Network(util.DaemonThread):
|
|||||||
await self.queue_request('blockchain.scripthash.subscribe', [h])
|
await self.queue_request('blockchain.scripthash.subscribe', [h])
|
||||||
|
|
||||||
async def request_fee_estimates(self):
|
async def request_fee_estimates(self):
|
||||||
|
from .simple_config import FEE_ETA_TARGETS
|
||||||
self.config.requested_fee_estimates()
|
self.config.requested_fee_estimates()
|
||||||
for i in bitcoin.FEE_TARGETS:
|
await self.queue_request("mempool.get_fee_histogram", [])
|
||||||
|
for i in FEE_ETA_TARGETS:
|
||||||
await self.queue_request('blockchain.estimatefee', [i])
|
await self.queue_request('blockchain.estimatefee', [i])
|
||||||
|
|
||||||
def get_status_value(self, key):
|
def get_status_value(self, key):
|
||||||
@ -337,6 +341,8 @@ class Network(util.DaemonThread):
|
|||||||
value = self.banner
|
value = self.banner
|
||||||
elif key == 'fee':
|
elif key == 'fee':
|
||||||
value = self.config.fee_estimates
|
value = self.config.fee_estimates
|
||||||
|
elif key == "fee_histogram":
|
||||||
|
value = self.config.mempool_fees
|
||||||
elif key == 'updated':
|
elif key == 'updated':
|
||||||
value = (self.get_local_height(), self.get_server_height())
|
value = (self.get_local_height(), self.get_server_height())
|
||||||
elif key == 'servers':
|
elif key == 'servers':
|
||||||
@ -364,7 +370,7 @@ class Network(util.DaemonThread):
|
|||||||
return list(self.interfaces.keys())
|
return list(self.interfaces.keys())
|
||||||
|
|
||||||
def get_servers(self):
|
def get_servers(self):
|
||||||
out = bitcoin.NetworkConstants.DEFAULT_SERVERS
|
out = constants.net.DEFAULT_SERVERS
|
||||||
if self.irc_servers:
|
if self.irc_servers:
|
||||||
out.update(filter_version(self.irc_servers.copy()))
|
out.update(filter_version(self.irc_servers.copy()))
|
||||||
else:
|
else:
|
||||||
@ -571,6 +577,11 @@ class Network(util.DaemonThread):
|
|||||||
elif method == 'server.donation_address':
|
elif method == 'server.donation_address':
|
||||||
if error is None:
|
if error is None:
|
||||||
self.donation_address = result
|
self.donation_address = result
|
||||||
|
elif method == "mempool.get_fee_histogram":
|
||||||
|
if error is None:
|
||||||
|
self.print_error("fee_histogram", result)
|
||||||
|
self.config.mempool_fees = result
|
||||||
|
self.notify("fee_histogram")
|
||||||
elif method == 'blockchain.estimatefee':
|
elif method == 'blockchain.estimatefee':
|
||||||
if error is None and result > 0:
|
if error is None and result > 0:
|
||||||
i = params[0]
|
i = params[0]
|
||||||
@ -771,21 +782,22 @@ class Network(util.DaemonThread):
|
|||||||
error = response.get('error')
|
error = response.get('error')
|
||||||
result = response.get('result')
|
result = response.get('result')
|
||||||
params = response.get('params')
|
params = response.get('params')
|
||||||
|
blockchain = interface.blockchain
|
||||||
if result is None or params is None or error is not None:
|
if result is None or params is None or error is not None:
|
||||||
interface.print_error(error or 'bad response')
|
interface.print_error(error or 'bad response')
|
||||||
return
|
return
|
||||||
index = params[0]
|
index = params[0]
|
||||||
connect = interface.blockchain.connect_chunk(index, result)
|
connect = blockchain.connect_chunk(index, result)
|
||||||
if not connect:
|
if not connect:
|
||||||
await self.connection_down(interface.server, "could not connect chunk")
|
await self.connection_down(interface.server, "could not connect chunk")
|
||||||
return
|
return
|
||||||
# If not finished, get the next chunk
|
# If not finished, get the next chunk
|
||||||
if interface.blockchain.height() < interface.tip:
|
if index >= len(blockchain.checkpoints) and interface.blockchain.height() < interface.tip:
|
||||||
await self.request_chunk(interface, index+1)
|
await self.request_chunk(interface, index+1)
|
||||||
else:
|
else:
|
||||||
interface.mode = 'default'
|
interface.mode = 'default'
|
||||||
interface.print_error('catch up done', interface.blockchain.height())
|
interface.print_error('catch up done', blockchain.height())
|
||||||
interface.blockchain.catch_up = None
|
blockchain.catch_up = None
|
||||||
self.notify('updated')
|
self.notify('updated')
|
||||||
|
|
||||||
async def request_header(self, interface, height):
|
async def request_header(self, interface, height):
|
||||||
@ -978,7 +990,7 @@ class Network(util.DaemonThread):
|
|||||||
def init_headers_file(self):
|
def init_headers_file(self):
|
||||||
b = self.blockchains[0]
|
b = self.blockchains[0]
|
||||||
filename = b.path()
|
filename = b.path()
|
||||||
length = 80 * len(bitcoin.NetworkConstants.CHECKPOINTS) * 2016
|
length = 80 * len(constants.net.CHECKPOINTS) * 2016
|
||||||
if not os.path.exists(filename) or os.path.getsize(filename) < length:
|
if not os.path.exists(filename) or os.path.getsize(filename) < length:
|
||||||
with open(filename, 'wb') as f:
|
with open(filename, 'wb') as f:
|
||||||
if length>0:
|
if length>0:
|
||||||
@ -1243,7 +1255,7 @@ class Network(util.DaemonThread):
|
|||||||
try:
|
try:
|
||||||
r = q.get(True, timeout)
|
r = q.get(True, timeout)
|
||||||
except queue.Empty:
|
except queue.Empty:
|
||||||
raise BaseException('Server did not answer')
|
raise util.TimeoutException(_('Server did not answer'))
|
||||||
if r.get('error'):
|
if r.get('error'):
|
||||||
raise BaseException(r.get('error'))
|
raise BaseException(r.get('error'))
|
||||||
return r.get('result')
|
return r.get('result')
|
||||||
@ -1265,7 +1277,7 @@ class Network(util.DaemonThread):
|
|||||||
f.write(json.dumps(cp, indent=4))
|
f.write(json.dumps(cp, indent=4))
|
||||||
|
|
||||||
def max_checkpoint(self):
|
def max_checkpoint(self):
|
||||||
return max(0, len(bitcoin.NetworkConstants.CHECKPOINTS) * 2016 - 1)
|
return max(0, len(constants.net.CHECKPOINTS) * 2016 - 1)
|
||||||
|
|
||||||
async def send_async(self, messages, callback=None):
|
async def send_async(self, messages, callback=None):
|
||||||
""" if callback is None, it returns the result """
|
""" if callback is None, it returns the result """
|
||||||
|
|||||||
@ -29,6 +29,7 @@ import traceback
|
|||||||
import urllib
|
import urllib
|
||||||
import threading
|
import threading
|
||||||
import hmac
|
import hmac
|
||||||
|
import asyncio
|
||||||
|
|
||||||
from .i18n import _
|
from .i18n import _
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user