encapsulate get_routing_info in lnaddr
This commit is contained in:
@@ -8,6 +8,7 @@ from binascii import hexlify
|
||||
from decimal import Decimal
|
||||
from typing import Optional
|
||||
|
||||
import random
|
||||
import bitstring
|
||||
|
||||
from .bitcoin import hash160_to_b58_address, b58_address_to_hash160
|
||||
@@ -282,6 +283,16 @@ class LnAddr(object):
|
||||
return None
|
||||
return self.amount * COIN
|
||||
|
||||
def get_routing_info(self, tag):
|
||||
# note: tag will be 't' for trampoline
|
||||
r_tags = list(filter(lambda x: x[0] == tag, self.tags))
|
||||
# strip the tag type, it's implicitly 'r' now
|
||||
r_tags = list(map(lambda x: x[1], r_tags))
|
||||
# if there are multiple hints, we will use the first one that works,
|
||||
# from a random permutation
|
||||
random.shuffle(r_tags)
|
||||
return r_tags
|
||||
|
||||
def get_amount_msat(self) -> Optional[int]:
|
||||
if self.amount is None:
|
||||
return None
|
||||
|
||||
@@ -1144,15 +1144,8 @@ class LNWallet(LNWorker):
|
||||
# TODO: return multiples routes if we know that a single one will not work
|
||||
# initially, try with less htlcs
|
||||
invoice_pubkey = decoded_invoice.pubkey.serialize()
|
||||
# use 'r' field from invoice
|
||||
r_tags = decoded_invoice.get_routing_info('r')
|
||||
route = None # type: Optional[LNPaymentRoute]
|
||||
# only want 'r' tags
|
||||
r_tags = list(filter(lambda x: x[0] == 'r', decoded_invoice.tags))
|
||||
# strip the tag type, it's implicitly 'r' now
|
||||
r_tags = list(map(lambda x: x[1], r_tags))
|
||||
# if there are multiple hints, we will use the first one that works,
|
||||
# from a random permutation
|
||||
random.shuffle(r_tags)
|
||||
channels = list(self.channels.values())
|
||||
scid_to_my_channels = {chan.short_channel_id: chan for chan in channels
|
||||
if chan.short_channel_id is not None}
|
||||
|
||||
Reference in New Issue
Block a user