swaps: mapping of prepay_hash to payment_hash
This commit is contained in:
@@ -68,7 +68,7 @@ class SwapData(StoredObject):
|
||||
lightning_amount = attr.ib(type=int)
|
||||
redeem_script = attr.ib(type=bytes, converter=hex_to_bytes)
|
||||
preimage = attr.ib(type=bytes, converter=hex_to_bytes)
|
||||
fee_preimage = attr.ib(type=bytes, converter=hex_to_bytes)
|
||||
prepay_hash = attr.ib(type=bytes, converter=hex_to_bytes)
|
||||
privkey = attr.ib(type=bytes, converter=hex_to_bytes)
|
||||
lockup_address = attr.ib(type=str)
|
||||
funding_txid = attr.ib(type=str)
|
||||
@@ -109,8 +109,10 @@ class SwapManager(Logger):
|
||||
self.lnworker = wallet.lnworker
|
||||
self.lnwatcher = self.wallet.lnworker.lnwatcher
|
||||
self.swaps = self.wallet.db.get_dict('submarine_swaps')
|
||||
self.prepayments = {}
|
||||
for swap in self.swaps.values():
|
||||
self.prepayments = {} # fee_preimage -> preimage
|
||||
for k, swap in self.swaps.items():
|
||||
if swap.is_reverse and swap.prepay_hash is not None:
|
||||
self.prepayments[swap.prepay_hash] = bytes.fromhex(k)
|
||||
if swap.is_redeemed:
|
||||
continue
|
||||
self.add_lnwatcher_callback(swap)
|
||||
@@ -154,12 +156,10 @@ class SwapManager(Logger):
|
||||
return self.lnwatcher.config.estimate_fee(136, allow_fallback_to_static_rates=True)
|
||||
|
||||
def get_swap(self, payment_hash):
|
||||
return self.swaps.get(payment_hash.hex())
|
||||
|
||||
def get_swap_by_prepay(self, prepay_payment_hash):
|
||||
payment_hash = self.prepayments.get(prepay_payment_hash)
|
||||
if payment_hash:
|
||||
return self.swaps.get(payment_hash.hex())
|
||||
# for history
|
||||
swap = self.swaps.get(payment_hash.hex())
|
||||
if swap:
|
||||
return swap
|
||||
|
||||
def add_lnwatcher_callback(self, swap):
|
||||
callback = lambda: self._claim_swap(swap)
|
||||
@@ -222,6 +222,7 @@ class SwapManager(Logger):
|
||||
locktime = locktime,
|
||||
privkey = privkey,
|
||||
preimage = preimage,
|
||||
prepay_hash = None,
|
||||
lockup_address = lockup_address,
|
||||
onchain_amount = onchain_amount,
|
||||
lightning_amount = lightning_amount,
|
||||
@@ -282,9 +283,9 @@ class SwapManager(Logger):
|
||||
if fee_invoice:
|
||||
fee_lnaddr = self.lnworker._check_invoice(fee_invoice)
|
||||
invoice_amount += fee_lnaddr.get_amount_sat()
|
||||
fee_preimage = fee_lnaddr.paymenthash
|
||||
prepay_hash = fee_lnaddr.paymenthash
|
||||
else:
|
||||
fee_preimage = None
|
||||
prepay_hash = None
|
||||
assert int(invoice_amount) == amount_sat, (invoice_amount, amount_sat)
|
||||
# save swap data to wallet file
|
||||
swap = SwapData(
|
||||
@@ -292,7 +293,7 @@ class SwapManager(Logger):
|
||||
locktime = locktime,
|
||||
privkey = privkey,
|
||||
preimage = preimage,
|
||||
fee_preimage = fee_preimage,
|
||||
prepay_hash = prepay_hash,
|
||||
lockup_address = lockup_address,
|
||||
onchain_amount = onchain_amount,
|
||||
lightning_amount = amount_sat,
|
||||
|
||||
Reference in New Issue
Block a user