swapserver: support prepayment of fees
This commit is contained in:
@@ -317,19 +317,32 @@ class SwapManager(Logger):
|
||||
{1:ripemd(payment_hash), 4:our_pubkey, 6:locktime, 9:their_pubkey}
|
||||
)
|
||||
self.wallet.save_invoice(Invoice.from_bech32(invoice))
|
||||
prepay_invoice = None
|
||||
else:
|
||||
onchain_amount_sat = self._get_recv_amount(lightning_amount_sat, is_reverse=True)
|
||||
prepay_amount_sat = self.get_claim_fee() * 2
|
||||
main_amount_sat = lightning_amount_sat - prepay_amount_sat
|
||||
lnaddr, invoice = self.lnworker.get_bolt11_invoice(
|
||||
payment_hash=payment_hash,
|
||||
amount_msat=lightning_amount_sat * 1000,
|
||||
amount_msat=main_amount_sat * 1000,
|
||||
message='Submarine swap',
|
||||
expiry=3600 * 24,
|
||||
fallback_address=None,
|
||||
channels=None,
|
||||
)
|
||||
# add payment info to lnworker
|
||||
self.lnworker.add_payment_info_for_hold_invoice(payment_hash, lightning_amount_sat)
|
||||
self.lnworker.add_payment_info_for_hold_invoice(payment_hash, main_amount_sat)
|
||||
self.lnworker.register_callback_for_hold_invoice(payment_hash, self.hold_invoice_callback, 60*60*24)
|
||||
prepay_hash = self.lnworker.create_payment_info(amount_msat=prepay_amount_sat*1000)
|
||||
_, prepay_invoice = self.lnworker.get_bolt11_invoice(
|
||||
payment_hash=prepay_hash,
|
||||
amount_msat=prepay_amount_sat * 1000,
|
||||
message='prepay',
|
||||
expiry=3600 * 24,
|
||||
fallback_address=None,
|
||||
channels=None,
|
||||
)
|
||||
self.lnworker.bundle_payments([payment_hash, prepay_hash])
|
||||
redeem_script = construct_script(
|
||||
WITNESS_TEMPLATE_REVERSE_SWAP,
|
||||
{1:32, 5:ripemd(payment_hash), 7:their_pubkey, 10:locktime, 13:our_pubkey}
|
||||
@@ -354,7 +367,7 @@ class SwapManager(Logger):
|
||||
swap._payment_hash = payment_hash
|
||||
self._add_or_reindex_swap(swap)
|
||||
self.add_lnwatcher_callback(swap)
|
||||
return swap, payment_hash, invoice
|
||||
return swap, payment_hash, invoice, prepay_invoice
|
||||
|
||||
async def normal_swap(
|
||||
self,
|
||||
|
||||
Reference in New Issue
Block a user