Browse Source

lnaddr: add LnAddr.to_debug_json() method

master
SomberNight 3 years ago
parent
commit
e2ee79c378
No known key found for this signature in database
GPG Key ID: B33B5F232C6271E9
  1. 12
      electrum/invoices.py
  2. 21
      electrum/lnaddr.py

12
electrum/invoices.py

@ -290,17 +290,7 @@ class Invoice(BaseInvoice):
def to_debug_json(self) -> Dict[str, Any]: def to_debug_json(self) -> Dict[str, Any]:
d = self.to_json() d = self.to_json()
d.update({ d["lnaddr"] = self._lnaddr.to_debug_json()
'pubkey': self._lnaddr.pubkey.serialize().hex(),
'amount_BTC': str(self._lnaddr.amount),
'rhash': self._lnaddr.paymenthash.hex(),
'description': self._lnaddr.get_description(),
'exp': self._lnaddr.get_expiry(),
'time': self._lnaddr.date,
})
if ln_routing_info := self._lnaddr.get_routing_info('r'):
# show the last hop of routing hints. (our invoices only have one hop)
d['r_tags'] = [str((a.hex(),b.hex(),c,d,e)) for a,b,c,d,e in ln_routing_info[-1]]
return d return d

21
electrum/lnaddr.py

@ -6,7 +6,7 @@ import time
from hashlib import sha256 from hashlib import sha256
from binascii import hexlify from binascii import hexlify
from decimal import Decimal from decimal import Decimal
from typing import Optional, TYPE_CHECKING, Type from typing import Optional, TYPE_CHECKING, Type, Dict, Any
import random import random
import bitstring import bitstring
@ -354,6 +354,25 @@ class LnAddr(object):
# we treat it as 0 seconds here (instead of never) # we treat it as 0 seconds here (instead of never)
return now > self.get_expiry() + self.date return now > self.get_expiry() + self.date
def to_debug_json(self) -> Dict[str, Any]:
d = {
'pubkey': self.pubkey.serialize().hex(),
'amount_BTC': str(self.amount),
'rhash': self.paymenthash.hex(),
'payment_secret': self.payment_secret.hex() if self.payment_secret else None,
'description': self.get_description(),
'exp': self.get_expiry(),
'time': self.date,
'min_final_cltv_expiry': self.get_min_final_cltv_expiry(),
'features': self.get_features().get_names(),
'tags': self.tags,
'unknown_tags': self.unknown_tags,
}
if ln_routing_info := self.get_routing_info('r'):
# show the last hop of routing hints. (our invoices only have one hop)
d['r_tags'] = [str((a.hex(),b.hex(),c,d,e)) for a,b,c,d,e in ln_routing_info[-1]]
return d
class SerializableKey: class SerializableKey:
def __init__(self, pubkey): def __init__(self, pubkey):

Loading…
Cancel
Save