mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-08-27 15:31:31 +00:00
swaps: store fee_preimage
This commit is contained in:
parent
540dd73f3b
commit
c8506eaa39
3 changed files with 15 additions and 3 deletions
|
@ -632,6 +632,8 @@ class LNWallet(LNWorker):
|
||||||
}
|
}
|
||||||
# add txid to merge item with onchain item
|
# add txid to merge item with onchain item
|
||||||
swap = self.swap_manager.get_swap(payment_hash)
|
swap = self.swap_manager.get_swap(payment_hash)
|
||||||
|
if swap is None:
|
||||||
|
swap = self.swap_manager.get_swap_by_prepay(payment_hash)
|
||||||
if swap:
|
if swap:
|
||||||
if swap.is_reverse:
|
if swap.is_reverse:
|
||||||
item['txid'] = swap.spending_txid
|
item['txid'] = swap.spending_txid
|
||||||
|
|
|
@ -68,6 +68,7 @@ class SwapData(StoredObject):
|
||||||
lightning_amount = attr.ib(type=int)
|
lightning_amount = attr.ib(type=int)
|
||||||
redeem_script = attr.ib(type=bytes, converter=hex_to_bytes)
|
redeem_script = attr.ib(type=bytes, converter=hex_to_bytes)
|
||||||
preimage = 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)
|
||||||
privkey = attr.ib(type=bytes, converter=hex_to_bytes)
|
privkey = attr.ib(type=bytes, converter=hex_to_bytes)
|
||||||
lockup_address = attr.ib(type=str)
|
lockup_address = attr.ib(type=str)
|
||||||
funding_txid = attr.ib(type=str)
|
funding_txid = attr.ib(type=str)
|
||||||
|
@ -108,6 +109,7 @@ class SwapManager(Logger):
|
||||||
self.lnworker = wallet.lnworker
|
self.lnworker = wallet.lnworker
|
||||||
self.lnwatcher = self.wallet.lnworker.lnwatcher
|
self.lnwatcher = self.wallet.lnworker.lnwatcher
|
||||||
self.swaps = self.wallet.db.get_dict('submarine_swaps')
|
self.swaps = self.wallet.db.get_dict('submarine_swaps')
|
||||||
|
self.prepayments = {}
|
||||||
for swap in self.swaps.values():
|
for swap in self.swaps.values():
|
||||||
if swap.is_redeemed:
|
if swap.is_redeemed:
|
||||||
continue
|
continue
|
||||||
|
@ -154,6 +156,11 @@ class SwapManager(Logger):
|
||||||
def get_swap(self, payment_hash):
|
def get_swap(self, payment_hash):
|
||||||
return self.swaps.get(payment_hash.hex())
|
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())
|
||||||
|
|
||||||
def add_lnwatcher_callback(self, swap):
|
def add_lnwatcher_callback(self, swap):
|
||||||
callback = lambda: self._claim_swap(swap)
|
callback = lambda: self._claim_swap(swap)
|
||||||
self.lnwatcher.add_callback(swap.lockup_address, callback)
|
self.lnwatcher.add_callback(swap.lockup_address, callback)
|
||||||
|
@ -275,6 +282,9 @@ class SwapManager(Logger):
|
||||||
if fee_invoice:
|
if fee_invoice:
|
||||||
fee_lnaddr = self.lnworker._check_invoice(fee_invoice)
|
fee_lnaddr = self.lnworker._check_invoice(fee_invoice)
|
||||||
invoice_amount += fee_lnaddr.get_amount_sat()
|
invoice_amount += fee_lnaddr.get_amount_sat()
|
||||||
|
fee_preimage = fee_lnaddr.paymenthash
|
||||||
|
else:
|
||||||
|
fee_preimage = None
|
||||||
assert int(invoice_amount) == amount_sat, (invoice_amount, amount_sat)
|
assert int(invoice_amount) == amount_sat, (invoice_amount, amount_sat)
|
||||||
# save swap data to wallet file
|
# save swap data to wallet file
|
||||||
swap = SwapData(
|
swap = SwapData(
|
||||||
|
@ -282,7 +292,7 @@ class SwapManager(Logger):
|
||||||
locktime = locktime,
|
locktime = locktime,
|
||||||
privkey = privkey,
|
privkey = privkey,
|
||||||
preimage = preimage,
|
preimage = preimage,
|
||||||
# save the rhash of the mining fee invoice
|
fee_preimage = fee_preimage,
|
||||||
lockup_address = lockup_address,
|
lockup_address = lockup_address,
|
||||||
onchain_amount = onchain_amount,
|
onchain_amount = onchain_amount,
|
||||||
lightning_amount = amount_sat,
|
lightning_amount = amount_sat,
|
||||||
|
|
|
@ -840,8 +840,8 @@ class Abstract_Wallet(AddressSynchronizer, ABC):
|
||||||
if txid and txid in transactions_tmp:
|
if txid and txid in transactions_tmp:
|
||||||
item = transactions_tmp[txid]
|
item = transactions_tmp[txid]
|
||||||
item['label'] = tx_item['label']
|
item['label'] = tx_item['label']
|
||||||
item['type'] = tx_item['type']
|
item['type'] = tx_item['type'] # fixme: do we need this?
|
||||||
item['ln_value'] = Satoshis(ln_value)
|
item['ln_value'] = Satoshis(ln_value) # fixme: we need to add value
|
||||||
item['amount_msat'] = tx_item['amount_msat']
|
item['amount_msat'] = tx_item['amount_msat']
|
||||||
else:
|
else:
|
||||||
tx_item['lightning'] = True
|
tx_item['lightning'] = True
|
||||||
|
|
Loading…
Add table
Reference in a new issue