Browse Source

Payment bundles: use lists of payment keys.

That way we don't need to special case trampoline outer onions
master
ThomasV 2 years ago
parent
commit
af27d5b95e
  1. 19
      electrum/lnworker.py

19
electrum/lnworker.py

@ -2039,12 +2039,13 @@ class LNWallet(LNWorker):
return payment_hash
def bundle_payments(self, hash_list):
self.payment_bundles.append(hash_list)
payment_keys = [self._get_payment_key(x) for x in hash_list]
self.payment_bundles.append(payment_keys)
def get_payment_bundle(self, payment_hash):
for hash_list in self.payment_bundles:
if payment_hash in hash_list:
return hash_list
def get_payment_bundle(self, payment_key):
for key_list in self.payment_bundles:
if payment_key in key_list:
return key_list
def save_preimage(self, payment_hash: bytes, preimage: bytes, *, write_to_disk: bool = True):
assert sha256(preimage) == payment_hash
@ -2093,13 +2094,9 @@ class LNWallet(LNWorker):
payment_key=payment_key, scid=short_channel_id, htlc=htlc, expected_msat=expected_msat)
mpp_resolution = self.received_mpp_htlcs[payment_key].resolution
if mpp_resolution == RecvMPPResolution.WAITING:
bundle = self.get_payment_bundle(payment_hash)
bundle = self.get_payment_bundle(payment_key)
if bundle:
payment_keys = [self._get_payment_key(h) for h in bundle]
if payment_key not in payment_keys:
# outer trampoline onion secret differs from inner onion
# the latter, not the former, might be part of a bundle
payment_keys = [payment_key]
payment_keys = bundle
else:
payment_keys = [payment_key]
first_timestamp = min([self.get_first_timestamp_of_mpp(pkey) for pkey in payment_keys])

Loading…
Cancel
Save