Payment bundles: use lists of payment keys.
That way we don't need to special case trampoline outer onions
This commit is contained in:
@@ -2039,12 +2039,13 @@ class LNWallet(LNWorker):
|
|||||||
return payment_hash
|
return payment_hash
|
||||||
|
|
||||||
def bundle_payments(self, hash_list):
|
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):
|
def get_payment_bundle(self, payment_key):
|
||||||
for hash_list in self.payment_bundles:
|
for key_list in self.payment_bundles:
|
||||||
if payment_hash in hash_list:
|
if payment_key in key_list:
|
||||||
return hash_list
|
return key_list
|
||||||
|
|
||||||
def save_preimage(self, payment_hash: bytes, preimage: bytes, *, write_to_disk: bool = True):
|
def save_preimage(self, payment_hash: bytes, preimage: bytes, *, write_to_disk: bool = True):
|
||||||
assert sha256(preimage) == payment_hash
|
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)
|
payment_key=payment_key, scid=short_channel_id, htlc=htlc, expected_msat=expected_msat)
|
||||||
mpp_resolution = self.received_mpp_htlcs[payment_key].resolution
|
mpp_resolution = self.received_mpp_htlcs[payment_key].resolution
|
||||||
if mpp_resolution == RecvMPPResolution.WAITING:
|
if mpp_resolution == RecvMPPResolution.WAITING:
|
||||||
bundle = self.get_payment_bundle(payment_hash)
|
bundle = self.get_payment_bundle(payment_key)
|
||||||
if bundle:
|
if bundle:
|
||||||
payment_keys = [self._get_payment_key(h) for h in bundle]
|
payment_keys = 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]
|
|
||||||
else:
|
else:
|
||||||
payment_keys = [payment_key]
|
payment_keys = [payment_key]
|
||||||
first_timestamp = min([self.get_first_timestamp_of_mpp(pkey) for pkey in payment_keys])
|
first_timestamp = min([self.get_first_timestamp_of_mpp(pkey) for pkey in payment_keys])
|
||||||
|
|||||||
Reference in New Issue
Block a user