|
@ -13,6 +13,8 @@ from .bitcoin import hash160_to_b58_address, b58_address_to_hash160 |
|
|
from .segwit_addr import bech32_encode, bech32_decode, CHARSET |
|
|
from .segwit_addr import bech32_encode, bech32_decode, CHARSET |
|
|
from . import constants |
|
|
from . import constants |
|
|
from . import ecc |
|
|
from . import ecc |
|
|
|
|
|
from .util import PR_TYPE_LN |
|
|
|
|
|
from .bitcoin import COIN |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# BOLT #11: |
|
|
# BOLT #11: |
|
@ -307,6 +309,11 @@ class LnAddr(object): |
|
|
|
|
|
|
|
|
class LnDecodeException(Exception): pass |
|
|
class LnDecodeException(Exception): pass |
|
|
|
|
|
|
|
|
|
|
|
class SerializableKey: |
|
|
|
|
|
def __init__(self, pubkey): |
|
|
|
|
|
self.pubkey = pubkey |
|
|
|
|
|
def serialize(self): |
|
|
|
|
|
return self.pubkey.get_public_key_bytes(True) |
|
|
|
|
|
|
|
|
def lndecode(invoice: str, *, verbose=False, expected_hrp=None) -> LnAddr: |
|
|
def lndecode(invoice: str, *, verbose=False, expected_hrp=None) -> LnAddr: |
|
|
if expected_hrp is None: |
|
|
if expected_hrp is None: |
|
@ -460,11 +467,22 @@ def lndecode(invoice: str, *, verbose=False, expected_hrp=None) -> LnAddr: |
|
|
|
|
|
|
|
|
return addr |
|
|
return addr |
|
|
|
|
|
|
|
|
class SerializableKey: |
|
|
|
|
|
def __init__(self, pubkey): |
|
|
|
|
|
self.pubkey = pubkey |
|
|
|
|
|
def serialize(self): |
|
|
def parse_lightning_invoice(invoice): |
|
|
return self.pubkey.get_public_key_bytes(True) |
|
|
lnaddr = lndecode(invoice, expected_hrp=constants.net.SEGWIT_HRP) |
|
|
|
|
|
amount = int(lnaddr.amount * COIN) if lnaddr.amount else None |
|
|
|
|
|
return { |
|
|
|
|
|
'type': PR_TYPE_LN, |
|
|
|
|
|
'invoice': invoice, |
|
|
|
|
|
'amount': amount, |
|
|
|
|
|
'message': lnaddr.get_description(), |
|
|
|
|
|
'time': lnaddr.date, |
|
|
|
|
|
'exp': lnaddr.get_expiry(), |
|
|
|
|
|
'pubkey': lnaddr.pubkey.serialize().hex(), |
|
|
|
|
|
'rhash': lnaddr.paymenthash.hex(), |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
if __name__ == '__main__': |
|
|
if __name__ == '__main__': |
|
|
# run using |
|
|
# run using |
|
|